aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include/PostBuildLint_BuildInfo.h
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-02-01 13:24:06 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2017-02-01 17:54:48 -0800
commit9086fcebdf43ad01892c8f96afc5e676f9b72135 (patch)
tree5f7b295e1f260fdcefa9d68c0fcadb272e354aa0 /toolsrc/include/PostBuildLint_BuildInfo.h
parenta3eaed8f1faacc03dc5abb56d2117096d3413735 (diff)
downloadvcpkg-9086fcebdf43ad01892c8f96afc5e676f9b72135.tar.gz
vcpkg-9086fcebdf43ad01892c8f96afc5e676f9b72135.zip
Rename files in PostBuildLint namespace
Diffstat (limited to 'toolsrc/include/PostBuildLint_BuildInfo.h')
-rw-r--r--toolsrc/include/PostBuildLint_BuildInfo.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/toolsrc/include/PostBuildLint_BuildInfo.h b/toolsrc/include/PostBuildLint_BuildInfo.h
new file mode 100644
index 000000000..cf444ce90
--- /dev/null
+++ b/toolsrc/include/PostBuildLint_BuildInfo.h
@@ -0,0 +1,133 @@
+#pragma once
+
+#include <unordered_map>
+#include "Paragraphs.h"
+#include <regex>
+#include "PostBuildLint_BuildPolicies.h"
+#include "opt_bool.h"
+
+namespace vcpkg::PostBuildLint
+{
+ enum class LinkageType
+ {
+ DYNAMIC,
+ STATIC,
+ UNKNOWN
+ };
+
+ LinkageType linkage_type_value_of(const std::string& as_string);
+
+ std::string to_string(const LinkageType& build_info);
+
+ enum class ConfigurationType
+ {
+ DEBUG = 1,
+ RELEASE = 2
+ };
+
+ std::string to_string(const ConfigurationType& conf);
+
+ struct BuildType
+ {
+ static BuildType value_of(const ConfigurationType& config, const LinkageType& linkage);
+
+ static const BuildType DEBUG_STATIC;
+ static const BuildType DEBUG_DYNAMIC;
+ static const BuildType RELEASE_STATIC;
+ static const BuildType RELEASE_DYNAMIC;
+
+ static const std::vector<BuildType>& values()
+ {
+ static const std::vector<BuildType> v = {DEBUG_STATIC, DEBUG_DYNAMIC, RELEASE_STATIC, RELEASE_DYNAMIC};
+ return v;
+ }
+
+ BuildType() = delete;
+
+ const ConfigurationType& config() const;
+ const LinkageType& linkage() const;
+ std::regex crt_regex() const;
+ std::string toString() const;
+
+ private:
+ BuildType(const ConfigurationType& config, const LinkageType& linkage, const std::string& crt_regex_as_string)
+ : m_config(config), m_linkage(linkage), m_crt_regex_as_string(crt_regex_as_string)
+ {
+ }
+
+ ConfigurationType m_config;
+ LinkageType m_linkage;
+ std::string m_crt_regex_as_string;
+ };
+
+ bool operator ==(const BuildType& lhs, const BuildType& rhs);
+
+ bool operator !=(const BuildType& lhs, const BuildType& rhs);
+
+ struct OutdatedDynamicCrt
+ {
+ // Old CPP
+ static const OutdatedDynamicCrt MSVCP100_DLL;
+ static const OutdatedDynamicCrt MSVCP100D_DLL;
+ static const OutdatedDynamicCrt MSVCP110_DLL;
+ static const OutdatedDynamicCrt MSVCP110_WIN_DLL;
+ static const OutdatedDynamicCrt MSVCP120_DLL;
+ static const OutdatedDynamicCrt MSVCP120_CLR0400_DLL;
+ static const OutdatedDynamicCrt MSVCP60_DLL;
+ static const OutdatedDynamicCrt MSVCP_WIN_DLL;
+
+ // Old C
+ static const OutdatedDynamicCrt MSVCR100_DLL;
+ static const OutdatedDynamicCrt MSVCR100D_DLL;
+ static const OutdatedDynamicCrt MSVCR100_CLR0400_DLL;
+ static const OutdatedDynamicCrt MSVCR110_DLL;
+ static const OutdatedDynamicCrt MSVCR120_DLL;
+ static const OutdatedDynamicCrt MSVCR120_CLR0400_DLL;
+ static const OutdatedDynamicCrt MSVCRT_DLL;
+ static const OutdatedDynamicCrt MSVCRT20_DLL;
+ static const OutdatedDynamicCrt MSVCRT40_DLL;
+
+ static const std::vector<OutdatedDynamicCrt>& values()
+ {
+ static const std::vector<OutdatedDynamicCrt> v = {
+ MSVCP100_DLL, MSVCP100D_DLL,
+ MSVCP110_DLL,MSVCP110_WIN_DLL,
+ MSVCP120_DLL, MSVCP120_CLR0400_DLL,
+ MSVCP60_DLL,
+ MSVCP_WIN_DLL,
+
+ MSVCR100_DLL, MSVCR100D_DLL, MSVCR100_CLR0400_DLL,
+ MSVCR110_DLL,
+ MSVCR120_DLL, MSVCR120_CLR0400_DLL,
+ MSVCRT_DLL, MSVCRT20_DLL,MSVCRT40_DLL
+ };
+ return v;
+ }
+
+ OutdatedDynamicCrt() = delete;
+
+ std::regex crt_regex() const;
+ const std::string& toString() const;
+
+ private:
+ explicit OutdatedDynamicCrt(const std::string& dll_name, const std::string& crt_regex_as_string)
+ : m_dll_name(dll_name), m_crt_regex_as_string(crt_regex_as_string)
+ {
+ }
+
+ std::string m_dll_name;
+ std::string m_crt_regex_as_string;
+ };
+
+ struct BuildInfo
+ {
+ static BuildInfo create(std::unordered_map<std::string, std::string> pgh);
+
+ std::string crt_linkage;
+ std::string library_linkage;
+
+ std::map<BuildPolicies::type, opt_bool_t> policies;
+ };
+
+ BuildInfo read_build_info(const fs::path& filepath);
+}