aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src
diff options
context:
space:
mode:
authorBilly Robert O'Neal III <bion@microsoft.com>2020-03-10 23:58:58 -0700
committerBilly Robert O'Neal III <bion@microsoft.com>2020-03-10 23:58:58 -0700
commit52214665b200f6ff66a77d0454708438fb60317e (patch)
tree5549682ad552b1967ab5daedeea4795338175abb /toolsrc/src
parent347d8ef530aaf39ca6d89043ca9ce9a8bac9a70f (diff)
downloadvcpkg-52214665b200f6ff66a77d0454708438fb60317e.tar.gz
vcpkg-52214665b200f6ff66a77d0454708438fb60317e.zip
Add "vcvarsall" support.
Diffstat (limited to 'toolsrc/src')
-rw-r--r--toolsrc/src/vcpkg-test/system.cpp24
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp14
2 files changed, 36 insertions, 2 deletions
diff --git a/toolsrc/src/vcpkg-test/system.cpp b/toolsrc/src/vcpkg-test/system.cpp
index c24064ad2..8a6990303 100644
--- a/toolsrc/src/vcpkg-test/system.cpp
+++ b/toolsrc/src/vcpkg-test/system.cpp
@@ -122,6 +122,11 @@ TEST_CASE ("[from_cpu_architecture]", "system")
TEST_CASE ("[guess_visual_studio_prompt]", "system")
{
environment_variable_resetter reset_VSCMD_ARG_TGT_ARCH{"VSCMD_ARG_TGT_ARCH"};
+ environment_variable_resetter reset_VCINSTALLDIR{"VCINSTALLDIR"};
+ environment_variable_resetter reset_Platform{"Platform"};
+
+ set_environment_variable("Platform", "x86"); // ignored if VCINSTALLDIR unset
+ set_environment_variable("VCINSTALLDIR", nullopt);
set_environment_variable("VSCMD_ARG_TGT_ARCH", nullopt);
CHECK(!guess_visual_studio_prompt_target_architecture().has_value());
set_environment_variable("VSCMD_ARG_TGT_ARCH", "x86");
@@ -134,6 +139,21 @@ TEST_CASE ("[guess_visual_studio_prompt]", "system")
CHECK(guess_visual_studio_prompt_target_architecture()
.value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM);
set_environment_variable("VSCMD_ARG_TGT_ARCH", "arm64");
- CHECK(guess_visual_studio_prompt_target_architecture().value_or_exit(VCPKG_LINE_INFO)
- == CPUArchitecture::ARM64);
+ CHECK(guess_visual_studio_prompt_target_architecture()
+ .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64);
+
+ // check that apparent "nested" prompts defer to "vsdevcmd"
+ set_environment_variable("VCINSTALLDIR", "anything");
+ CHECK(guess_visual_studio_prompt_target_architecture()
+ .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::ARM64);
+ set_environment_variable("VSCMD_ARG_TGT_ARCH", nullopt);
+ set_environment_variable("Platform", nullopt);
+ CHECK(guess_visual_studio_prompt_target_architecture()
+ .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86);
+ set_environment_variable("Platform", "x86");
+ CHECK(guess_visual_studio_prompt_target_architecture()
+ .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X86);
+ set_environment_variable("Platform", "x64");
+ CHECK(guess_visual_studio_prompt_target_architecture()
+ .value_or_exit(VCPKG_LINE_INFO) == CPUArchitecture::X64);
}
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index c41b80fdd..f49632cac 100644
--- a/toolsrc/src/vcpkg/base/system.cpp
+++ b/toolsrc/src/vcpkg/base/system.cpp
@@ -193,6 +193,20 @@ namespace vcpkg
return to_cpu_architecture(VSCMD_ARG_TGT_ARCH.value_or_exit(VCPKG_LINE_INFO));
}
+ // Check for the "vcvarsall" infrastructure used by Visual Studio 2015
+ if (System::get_environment_variable("VCINSTALLDIR"))
+ {
+ const auto Platform = System::get_environment_variable("Platform");
+ if (Platform)
+ {
+ return to_cpu_architecture(Platform.value_or_exit(VCPKG_LINE_INFO));
+ }
+ else
+ {
+ return CPUArchitecture::X86;
+ }
+ }
+
return nullopt;
}
}