aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/vcpkg_Build.cpp
diff options
context:
space:
mode:
authormmazaherit <m.mazaheri.t@gmail.com>2017-06-08 23:53:58 -0400
committermmazaherit <m.mazaheri.t@gmail.com>2017-06-08 23:53:58 -0400
commite544b742903ddceba71d4652f30a9df4baca598e (patch)
tree824fdf1bca936d845c20b51a140e9f60629653cb /toolsrc/src/vcpkg_Build.cpp
parent9b57ecbdd786113e33d8a149d240769682c7846e (diff)
parentff52016d018c9d346cd402e9cc98d24dff39d900 (diff)
downloadvcpkg-e544b742903ddceba71d4652f30a9df4baca598e.tar.gz
vcpkg-e544b742903ddceba71d4652f30a9df4baca598e.zip
Merge branch 'master' of https://github.com/mmazat/vcpkg
Diffstat (limited to 'toolsrc/src/vcpkg_Build.cpp')
-rw-r--r--toolsrc/src/vcpkg_Build.cpp55
1 files changed, 30 insertions, 25 deletions
diff --git a/toolsrc/src/vcpkg_Build.cpp b/toolsrc/src/vcpkg_Build.cpp
index d44a673fc..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";
@@ -128,21 +132,21 @@ namespace vcpkg::Build
const fs::path& git_exe_path = paths.get_git_exe();
const fs::path ports_cmake_script_path = paths.ports_cmake;
- const Toolset& toolset = paths.get_toolset();
auto pre_build_info = PreBuildInfo::from_triplet_file(paths, triplet);
+ const Toolset& toolset = paths.get_toolset(pre_build_info.platform_toolset);
const auto cmd_set_environment = make_build_env_cmd(pre_build_info, toolset);
- const std::wstring cmd_launch_cmake =
- make_cmake_cmd(cmake_exe_path,
- ports_cmake_script_path,
- {{L"CMD", L"BUILD"},
- {L"PORT", config.src.name},
- {L"CURRENT_PORT_DIR", config.port_dir / "/."},
- {L"TARGET_TRIPLET", triplet.canonical_name()},
- {L"VCPKG_PLATFORM_TOOLSET", toolset.version},
- {L"VCPKG_USE_HEAD_VERSION", config.use_head_version ? L"1" : L"0"},
- {L"_VCPKG_NO_DOWNLOADS", config.no_downloads ? L"1" : L"0"},
- {L"GIT", git_exe_path}});
+ const std::wstring cmd_launch_cmake = make_cmake_cmd(
+ cmake_exe_path,
+ ports_cmake_script_path,
+ {{L"CMD", L"BUILD"},
+ {L"PORT", config.src.name},
+ {L"CURRENT_PORT_DIR", config.port_dir / "/."},
+ {L"TARGET_TRIPLET", triplet.canonical_name()},
+ {L"VCPKG_PLATFORM_TOOLSET", toolset.version},
+ {L"VCPKG_USE_HEAD_VERSION", to_bool(config.build_package_options.use_head_version) ? L"1" : L"0"},
+ {L"_VCPKG_NO_DOWNLOADS", !to_bool(config.build_package_options.allow_downloads) ? L"1" : L"0"},
+ {L"GIT", git_exe_path}});
const std::wstring command = Strings::wformat(LR"(%s && %s)", cmd_set_environment, cmd_launch_cmake);
@@ -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())