aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-05-24 00:44:00 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-05-24 00:44:00 -0700
commit6be01a12db23788c32ca8cc8e70b8467ae912d1d (patch)
tree20733eb131d185a917aa40a6b6830549dfa90a01 /toolsrc/include
parente9b561fa4809a027089da0a726ebcd80a0043294 (diff)
downloadvcpkg-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.h2
-rw-r--r--toolsrc/include/PostBuildLint_BuildPolicies.h47
-rw-r--r--toolsrc/include/pch.h1
-rw-r--r--toolsrc/include/vcpkg_Build.h39
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);