diff options
| author | Billy Robert O'Neal III <bion@microsoft.com> | 2020-03-10 23:58:58 -0700 |
|---|---|---|
| committer | Billy Robert O'Neal III <bion@microsoft.com> | 2020-03-10 23:58:58 -0700 |
| commit | 52214665b200f6ff66a77d0454708438fb60317e (patch) | |
| tree | 5549682ad552b1967ab5daedeea4795338175abb | |
| parent | 347d8ef530aaf39ca6d89043ca9ce9a8bac9a70f (diff) | |
| download | vcpkg-52214665b200f6ff66a77d0454708438fb60317e.tar.gz vcpkg-52214665b200f6ff66a77d0454708438fb60317e.zip | |
Add "vcvarsall" support.
| -rw-r--r-- | toolsrc/src/vcpkg-test/system.cpp | 24 | ||||
| -rw-r--r-- | toolsrc/src/vcpkg/base/system.cpp | 14 |
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; } } |
