aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/include/vcpkg_Build.h
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/vcpkg_Build.h
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/vcpkg_Build.h')
-rw-r--r--toolsrc/include/vcpkg_Build.h39
1 files changed, 35 insertions, 4 deletions
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);