diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-05-24 00:44:00 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-05-24 00:44:00 -0700 |
| commit | 6be01a12db23788c32ca8cc8e70b8467ae912d1d (patch) | |
| tree | 20733eb131d185a917aa40a6b6830549dfa90a01 /toolsrc/include | |
| parent | e9b561fa4809a027089da0a726ebcd80a0043294 (diff) | |
| download | vcpkg-6be01a12db23788c32ca8cc8e70b8467ae912d1d.tar.gz vcpkg-6be01a12db23788c32ca8cc8e70b8467ae912d1d.zip | |
[vcpkg] Refactored to simplify BuildPolicies into BuildPolicy.
Restrict policy consumers to a simpler interface than std::map.
Rename vcpkg::getMachineType -> vcpkg::to_machine_type.
Diffstat (limited to 'toolsrc/include')
| -rw-r--r-- | toolsrc/include/MachineType.h | 2 | ||||
| -rw-r--r-- | toolsrc/include/PostBuildLint_BuildPolicies.h | 47 | ||||
| -rw-r--r-- | toolsrc/include/pch.h | 1 | ||||
| -rw-r--r-- | toolsrc/include/vcpkg_Build.h | 39 |
4 files changed, 37 insertions, 52 deletions
diff --git a/toolsrc/include/MachineType.h b/toolsrc/include/MachineType.h index 2318c092b..6f61bbd53 100644 --- a/toolsrc/include/MachineType.h +++ b/toolsrc/include/MachineType.h @@ -32,5 +32,5 @@ namespace vcpkg WCEMIPSV2 = 0x169, // MIPS little-endian WCE v2 }; - MachineType getMachineType(const uint16_t value); + MachineType to_machine_type(const uint16_t value); } diff --git a/toolsrc/include/PostBuildLint_BuildPolicies.h b/toolsrc/include/PostBuildLint_BuildPolicies.h deleted file mode 100644 index 95e01d71c..000000000 --- a/toolsrc/include/PostBuildLint_BuildPolicies.h +++ /dev/null @@ -1,47 +0,0 @@ -#pragma once -#include "CStringView.h" -#include <array> -#include <string> - -namespace vcpkg::PostBuildLint -{ - struct BuildPolicies final - { - enum class BackingEnum - { - NULLVALUE = 0, - EMPTY_PACKAGE, - DLLS_WITHOUT_LIBS, - ONLY_RELEASE_CRT, - EMPTY_INCLUDE_FOLDER, - ALLOW_OBSOLETE_MSVCRT - }; - - static BuildPolicies parse(const std::string& s); - - constexpr BuildPolicies() : backing_enum(BackingEnum::NULLVALUE) {} - constexpr explicit BuildPolicies(BackingEnum backing_enum) : backing_enum(backing_enum) {} - constexpr operator BackingEnum() const { return backing_enum; } - - const std::string& to_string() const; - const std::string& cmake_variable() const; - - private: - BackingEnum backing_enum; - }; - - namespace BuildPoliciesC - { - static constexpr CStringView ENUM_NAME = "vcpkg::PostBuildLint::BuildPolicies"; - - static constexpr BuildPolicies NULLVALUE(BuildPolicies::BackingEnum::NULLVALUE); - static constexpr BuildPolicies EMPTY_PACKAGE(BuildPolicies::BackingEnum::EMPTY_PACKAGE); - static constexpr BuildPolicies DLLS_WITHOUT_LIBS(BuildPolicies::BackingEnum::DLLS_WITHOUT_LIBS); - static constexpr BuildPolicies ONLY_RELEASE_CRT(BuildPolicies::BackingEnum::ONLY_RELEASE_CRT); - static constexpr BuildPolicies EMPTY_INCLUDE_FOLDER(BuildPolicies::BackingEnum::EMPTY_INCLUDE_FOLDER); - static constexpr BuildPolicies ALLOW_OBSOLETE_MSVCRT(BuildPolicies::BackingEnum::ALLOW_OBSOLETE_MSVCRT); - - static constexpr std::array<BuildPolicies, 5> VALUES = { - EMPTY_PACKAGE, DLLS_WITHOUT_LIBS, ONLY_RELEASE_CRT, EMPTY_INCLUDE_FOLDER, ALLOW_OBSOLETE_MSVCRT}; - } -} diff --git a/toolsrc/include/pch.h b/toolsrc/include/pch.h index 2eee658c8..c58c30ea3 100644 --- a/toolsrc/include/pch.h +++ b/toolsrc/include/pch.h @@ -31,6 +31,7 @@ #include <sys/timeb.h> #include <system_error> #include <time.h> +#include <type_traits> #include <unordered_map> #include <unordered_set> #include <utility> diff --git a/toolsrc/include/vcpkg_Build.h b/toolsrc/include/vcpkg_Build.h index 4deb81900..45b3ff1e8 100644 --- a/toolsrc/include/vcpkg_Build.h +++ b/toolsrc/include/vcpkg_Build.h @@ -1,12 +1,13 @@ #pragma once +#include "CStringView.h" #include "PackageSpec.h" -#include "PostBuildLint_BuildPolicies.h" #include "PostBuildLint_LinkageType.h" #include "StatusParagraphs.h" #include "VcpkgPaths.h" #include "vcpkg_Files.h" #include "vcpkg_optional.h" + #include <map> #include <unordered_map> #include <vector> @@ -69,16 +70,46 @@ namespace vcpkg::Build const BuildPackageConfig& config, const StatusParagraphs& status_db); - struct BuildInfo + enum class BuildPolicy + { + EMPTY_PACKAGE, + DLLS_WITHOUT_LIBS, + ONLY_RELEASE_CRT, + EMPTY_INCLUDE_FOLDER, + ALLOW_OBSOLETE_MSVCRT, + // Must be last + COUNT, + }; + + Optional<BuildPolicy> to_build_policy(const std::string& str); + + const std::string& to_string(BuildPolicy policy); + CStringView to_cmake_variable(BuildPolicy policy); + + struct BuildPolicies { - static BuildInfo create(std::unordered_map<std::string, std::string> pgh); + BuildPolicies() {} + BuildPolicies(std::map<BuildPolicy, bool>&& map) : m_policies(std::move(map)) {} + inline bool is_enabled(BuildPolicy policy) const + { + auto it = m_policies.find(policy); + if (it != m_policies.cend()) return it->second; + return false; + } + + private: + std::map<BuildPolicy, bool> m_policies; + }; + + struct BuildInfo + { PostBuildLint::LinkageType crt_linkage; PostBuildLint::LinkageType library_linkage; Optional<std::string> version; - std::map<PostBuildLint::BuildPolicies, bool> policies; + BuildPolicies policies; }; BuildInfo read_build_info(const Files::Filesystem& fs, const fs::path& filepath); |
