diff options
Diffstat (limited to 'toolsrc/src/BuildInfo.cpp')
| -rw-r--r-- | toolsrc/src/BuildInfo.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/toolsrc/src/BuildInfo.cpp b/toolsrc/src/BuildInfo.cpp index dc8d90e2e..2e74eefc3 100644 --- a/toolsrc/src/BuildInfo.cpp +++ b/toolsrc/src/BuildInfo.cpp @@ -4,6 +4,21 @@ namespace vcpkg { + std::string BuildType::toString() const + { + return Strings::format("[%s,%s]", to_string(config), to_string(linkage)); + } + + bool operator==(const BuildType& lhs, const BuildType& rhs) + { + return lhs.config == rhs.config && lhs.linkage == rhs.linkage; + } + + bool operator!=(const BuildType& lhs, const BuildType& rhs) + { + return !(lhs == rhs); + } + // namespace BuildInfoRequiredField { @@ -20,6 +35,11 @@ namespace vcpkg return build_info; } + const BuildType BuildType::DEBUG_STATIC = BuildType(ConfigurationType::DEBUG, LinkageType::STATIC); + const BuildType BuildType::DEBUG_DYNAMIC = BuildType(ConfigurationType::DEBUG, LinkageType::DYNAMIC); + const BuildType BuildType::RELEASE_STATIC = BuildType(ConfigurationType::RELEASE, LinkageType::STATIC); + const BuildType BuildType::RELEASE_DYNAMIC = BuildType(ConfigurationType::RELEASE, LinkageType::DYNAMIC); + LinkageType linkage_type_value_of(const std::string& as_string) { @@ -36,6 +56,58 @@ namespace vcpkg return LinkageType::UNKNOWN; } + std::string to_string(const LinkageType& build_info) + { + switch (build_info) + { + case LinkageType::STATIC: + return "static"; + case LinkageType::DYNAMIC: + return "dynamic"; + default: + Checks::unreachable(); + } + } + + std::string to_string(const ConfigurationType& conf) + + { + switch (conf) + { + case ConfigurationType::DEBUG: + return "Debug"; + case ConfigurationType::RELEASE: + return "Release"; + default: + Checks::unreachable(); + } + } + + BuildType BuildType::value_of(const ConfigurationType& config, const LinkageType& linkage) + { + if (config == ConfigurationType::DEBUG && linkage == LinkageType::STATIC) + { + return DEBUG_STATIC; + } + + if (config == ConfigurationType::DEBUG && linkage == LinkageType::DYNAMIC) + { + return DEBUG_DYNAMIC; + } + + if (config == ConfigurationType::RELEASE && linkage == LinkageType::STATIC) + { + return RELEASE_STATIC; + } + + if (config == ConfigurationType::RELEASE && linkage == LinkageType::DYNAMIC) + { + return RELEASE_DYNAMIC; + } + + Checks::unreachable(); + } + BuildInfo read_build_info(const fs::path& filepath) { const std::vector<std::unordered_map<std::string, std::string>> pghs = Paragraphs::get_paragraphs(filepath); |
