aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorAlexander Neumann <30894796+Neumann-A@users.noreply.github.com>2020-03-28 04:19:53 +0100
committerGitHub <noreply@github.com>2020-03-27 20:19:53 -0700
commitaeffa625e55eea41a86a728c14a95d05bc3de0e9 (patch)
treebac415cdf3679c1bf8122cd7a614af05302f9e96 /toolsrc/src
parentcd4c0661161bb14b1d401a378fc1326c400a454c (diff)
downloadvcpkg-aeffa625e55eea41a86a728c14a95d05bc3de0e9.tar.gz
vcpkg-aeffa625e55eea41a86a728c14a95d05bc3de0e9.zip
[vcpkg] Add the possibility to load vcvars.bat with external toolchain. (#10399)
* Add VCPKG_LOAD_VCVARS_ENV allow loading vcvars.bat if an external toolchain file is used. * add documentation
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg/build.cpp21
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp2
2 files changed, 21 insertions, 2 deletions
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index 81997e79c..c1e91adf9 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -274,7 +274,7 @@ namespace vcpkg::Build
std::string make_build_env_cmd(const PreBuildInfo& pre_build_info, const Toolset& toolset)
{
- if (pre_build_info.external_toolchain_file.has_value()) return "";
+ if (pre_build_info.external_toolchain_file.has_value() && !pre_build_info.load_vcvars_env) return "";
if (!pre_build_info.cmake_system_name.empty() && pre_build_info.cmake_system_name != "WindowsStore") return "";
const char* tonull = " >nul";
@@ -1052,6 +1052,25 @@ namespace vcpkg::Build
case VcpkgTripletVar::PUBLIC_ABI_OVERRIDE:
public_abi_override = variable_value.empty() ? nullopt : Optional<std::string>{variable_value};
break;
+ case VcpkgTripletVar::LOAD_VCVARS_ENV:
+ if (variable_value.empty())
+ {
+ load_vcvars_env = true;
+ if(external_toolchain_file)
+ load_vcvars_env = false;
+ }
+ else if (Strings::case_insensitive_ascii_equals(variable_value, "1") ||
+ Strings::case_insensitive_ascii_equals(variable_value, "on") ||
+ Strings::case_insensitive_ascii_equals(variable_value, "true"))
+ load_vcvars_env = true;
+ else if (Strings::case_insensitive_ascii_equals(variable_value, "0") ||
+ Strings::case_insensitive_ascii_equals(variable_value, "off") ||
+ Strings::case_insensitive_ascii_equals(variable_value, "false"))
+ load_vcvars_env = false;
+ else
+ Checks::exit_with_message(
+ VCPKG_LINE_INFO, "Unknown boolean setting for VCPKG_LOAD_VCVARS_ENV: %s", variable_value);
+ break;
}
}
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index 98be491e3..bf16f09f3 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -193,7 +193,7 @@ namespace vcpkg
const Toolset& VcpkgPaths::get_toolset(const Build::PreBuildInfo& prebuildinfo) const
{
- if (prebuildinfo.external_toolchain_file ||
+ if ((prebuildinfo.external_toolchain_file && !prebuildinfo.load_vcvars_env) ||
(!prebuildinfo.cmake_system_name.empty() && prebuildinfo.cmake_system_name != "WindowsStore"))
{
static Toolset external_toolset = []() -> Toolset {