aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-06-06 16:30:01 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-06-06 16:37:58 -0700
commit9a698d7088beb3fa32b1b9d0321781c0ba07e18e (patch)
tree1d666b3b6ab1975ec56cd507dd41b2a9fb8a5470 /toolsrc/src
parent831f0631f7eea7aebad5fcce95c0bbf0e0cdff68 (diff)
downloadvcpkg-9a698d7088beb3fa32b1b9d0321781c0ba07e18e.tar.gz
vcpkg-9a698d7088beb3fa32b1b9d0321781c0ba07e18e.zip
Convert BuildType/Configuration Type into simple enum classes
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/PostBuildLint.cpp15
-rw-r--r--toolsrc/src/PostBuildLint_BuildType.cpp12
-rw-r--r--toolsrc/src/PostBuildLint_ConfigurationType.cpp24
-rw-r--r--toolsrc/src/PostBuildLint_LinkageType.cpp39
-rw-r--r--toolsrc/src/vcpkg_Build.cpp31
5 files changed, 31 insertions, 90 deletions
diff --git a/toolsrc/src/PostBuildLint.cpp b/toolsrc/src/PostBuildLint.cpp
index 363346ab6..82d50a68f 100644
--- a/toolsrc/src/PostBuildLint.cpp
+++ b/toolsrc/src/PostBuildLint.cpp
@@ -777,7 +777,7 @@ namespace vcpkg::PostBuildLint
switch (build_info.library_linkage)
{
- case LinkageType::BackingEnum::DYNAMIC:
+ case Build::LinkageType::DYNAMIC:
{
std::vector<fs::path> debug_dlls = fs.get_files_recursive(debug_bin_dir);
Util::unstable_keep_if(debug_dlls, has_extension_pred(fs, ".dll"));
@@ -802,7 +802,7 @@ namespace vcpkg::PostBuildLint
error_count += check_outdated_crt_linkage_of_dlls(dlls, toolset.dumpbin, build_info);
break;
}
- case LinkageType::BackingEnum::STATIC:
+ case Build::LinkageType::STATIC:
{
std::vector<fs::path> dlls = fs.get_files_recursive(package_dir);
Util::unstable_keep_if(dlls, has_extension_pred(fs, ".dll"));
@@ -812,18 +812,17 @@ namespace vcpkg::PostBuildLint
if (!build_info.policies.is_enabled(BuildPolicy::ONLY_RELEASE_CRT))
{
- error_count += check_crt_linkage_of_libs(
- BuildType::value_of(ConfigurationTypeC::DEBUG, build_info.crt_linkage),
- debug_libs,
- toolset.dumpbin);
+ error_count +=
+ check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::DEBUG, build_info.crt_linkage),
+ debug_libs,
+ toolset.dumpbin);
}
error_count +=
- check_crt_linkage_of_libs(BuildType::value_of(ConfigurationTypeC::RELEASE, build_info.crt_linkage),
+ check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::RELEASE, build_info.crt_linkage),
release_libs,
toolset.dumpbin);
break;
}
- case LinkageType::BackingEnum::NULLVALUE:
default: Checks::unreachable(VCPKG_LINE_INFO);
}
diff --git a/toolsrc/src/PostBuildLint_BuildType.cpp b/toolsrc/src/PostBuildLint_BuildType.cpp
index e690036d2..649f0ccca 100644
--- a/toolsrc/src/PostBuildLint_BuildType.cpp
+++ b/toolsrc/src/PostBuildLint_BuildType.cpp
@@ -5,24 +5,24 @@
namespace vcpkg::PostBuildLint
{
- BuildType BuildType::value_of(const ConfigurationType& config, const LinkageType& linkage)
+ BuildType BuildType::value_of(const ConfigurationType& config, const Build::LinkageType& linkage)
{
- if (config == ConfigurationTypeC::DEBUG && linkage == LinkageTypeC::STATIC)
+ if (config == ConfigurationType::DEBUG && linkage == Build::LinkageType::STATIC)
{
return BuildTypeC::DEBUG_STATIC;
}
- if (config == ConfigurationTypeC::DEBUG && linkage == LinkageTypeC::DYNAMIC)
+ if (config == ConfigurationType::DEBUG && linkage == Build::LinkageType::DYNAMIC)
{
return BuildTypeC::DEBUG_DYNAMIC;
}
- if (config == ConfigurationTypeC::RELEASE && linkage == LinkageTypeC::STATIC)
+ if (config == ConfigurationType::RELEASE && linkage == Build::LinkageType::STATIC)
{
return BuildTypeC::RELEASE_STATIC;
}
- if (config == ConfigurationTypeC::RELEASE && linkage == LinkageTypeC::DYNAMIC)
+ if (config == ConfigurationType::RELEASE && linkage == Build::LinkageType::DYNAMIC)
{
return BuildTypeC::RELEASE_DYNAMIC;
}
@@ -32,7 +32,7 @@ namespace vcpkg::PostBuildLint
const ConfigurationType& BuildType::config() const { return this->m_config; }
- const LinkageType& BuildType::linkage() const { return this->m_linkage; }
+ const Build::LinkageType& BuildType::linkage() const { return this->m_linkage; }
const std::regex& BuildType::crt_regex() const
{
diff --git a/toolsrc/src/PostBuildLint_ConfigurationType.cpp b/toolsrc/src/PostBuildLint_ConfigurationType.cpp
deleted file mode 100644
index eeccb1804..000000000
--- a/toolsrc/src/PostBuildLint_ConfigurationType.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "pch.h"
-
-#include "PackageSpec.h"
-#include "PostBuildLint_ConfigurationType.h"
-#include "vcpkg_Enums.h"
-
-namespace vcpkg::PostBuildLint
-{
- static const std::string NULLVALUE_STRING = Enums::nullvalue_to_string(ConfigurationTypeC::ENUM_NAME);
-
- static const std::string NAME_DEBUG = "Debug";
- static const std::string NAME_RELEASE = "Release";
-
- const std::string& ConfigurationType::to_string() const
- {
- switch (this->backing_enum)
- {
- case ConfigurationTypeC::DEBUG: return NAME_DEBUG;
- case ConfigurationTypeC::RELEASE: return NAME_RELEASE;
- case ConfigurationTypeC::NULLVALUE: return NULLVALUE_STRING;
- default: Checks::unreachable(VCPKG_LINE_INFO);
- }
- }
-}
diff --git a/toolsrc/src/PostBuildLint_LinkageType.cpp b/toolsrc/src/PostBuildLint_LinkageType.cpp
deleted file mode 100644
index 43bdbed7b..000000000
--- a/toolsrc/src/PostBuildLint_LinkageType.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-#include "pch.h"
-
-#include "PostBuildLint_LinkageType.h"
-#include "vcpkg_Checks.h"
-#include "vcpkg_Enums.h"
-
-namespace vcpkg::PostBuildLint
-{
- static const std::string NULLVALUE_STRING = Enums::nullvalue_to_string(LinkageTypeC::ENUM_NAME);
-
- static const std::string NAME_DYNAMIC = "dynamic";
- static const std::string NAME_STATIC = "static";
-
- LinkageType LinkageType::value_of(const std::string& as_string)
- {
- if (as_string == NAME_DYNAMIC)
- {
- return LinkageTypeC::DYNAMIC;
- }
-
- if (as_string == NAME_STATIC)
- {
- return LinkageTypeC::STATIC;
- }
-
- return LinkageTypeC::NULLVALUE;
- }
-
- const std::string& LinkageType::to_string() const
- {
- switch (this->backing_enum)
- {
- case LinkageTypeC::DYNAMIC: return NAME_DYNAMIC;
- case LinkageTypeC::STATIC: return NAME_STATIC;
- case LinkageTypeC::NULLVALUE: return NULLVALUE_STRING;
- default: Checks::unreachable(VCPKG_LINE_INFO);
- }
- }
-}
diff --git a/toolsrc/src/vcpkg_Build.cpp b/toolsrc/src/vcpkg_Build.cpp
index 91e4552ec..0ca6dc243 100644
--- a/toolsrc/src/vcpkg_Build.cpp
+++ b/toolsrc/src/vcpkg_Build.cpp
@@ -13,11 +13,15 @@
#include "vcpkglib.h"
#include "vcpkglib_helpers.h"
-using vcpkg::PostBuildLint::LinkageType;
-namespace LinkageTypeC = vcpkg::PostBuildLint::LinkageTypeC;
-
namespace vcpkg::Build
{
+ Optional<LinkageType> to_linkage_type(const std::string& str)
+ {
+ if (str == "dynamic") return LinkageType::DYNAMIC;
+ if (str == "static") return LinkageType::STATIC;
+ return nullopt;
+ }
+
namespace BuildInfoRequiredField
{
static const std::string CRT_LINKAGE = "CRTLinkage";
@@ -217,19 +221,20 @@ namespace vcpkg::Build
BuildInfo build_info;
const std::string crt_linkage_as_string =
details::remove_required_field(&pgh, BuildInfoRequiredField::CRT_LINKAGE);
- build_info.crt_linkage = LinkageType::value_of(crt_linkage_as_string);
- Checks::check_exit(VCPKG_LINE_INFO,
- build_info.crt_linkage != LinkageTypeC::NULLVALUE,
- "Invalid crt linkage type: [%s]",
- crt_linkage_as_string);
+
+ auto crtlinkage = to_linkage_type(crt_linkage_as_string);
+ if (auto p = crtlinkage.get())
+ build_info.crt_linkage = *p;
+ else
+ Checks::exit_with_message(VCPKG_LINE_INFO, "Invalid crt linkage type: [%s]", crt_linkage_as_string);
const std::string library_linkage_as_string =
details::remove_required_field(&pgh, BuildInfoRequiredField::LIBRARY_LINKAGE);
- build_info.library_linkage = LinkageType::value_of(library_linkage_as_string);
- Checks::check_exit(VCPKG_LINE_INFO,
- build_info.library_linkage != LinkageTypeC::NULLVALUE,
- "Invalid library linkage type: [%s]",
- library_linkage_as_string);
+ auto liblinkage = to_linkage_type(library_linkage_as_string);
+ if (auto p = liblinkage.get())
+ build_info.library_linkage = *p;
+ else
+ Checks::exit_with_message(VCPKG_LINE_INFO, "Invalid library linkage type: [%s]", library_linkage_as_string);
auto it_version = pgh.find("Version");
if (it_version != pgh.end())