11include ("${ProjectOptions_SRC_DIR} /Utilities.cmake" )
22
3+ macro (detect_architecture )
4+ # detect the architecture
5+ string (TOLOWER "${CMAKE_SYSTEM_PROCESSOR} " CMAKE_SYSTEM_PROCESSOR_LOWER)
6+ if (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL x86 OR CMAKE_SYSTEM_PROCESSOR_LOWER MATCHES "^i[3456]86$" )
7+ set (VCVARSALL_ARCH x86)
8+ elseif (
9+ CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL x64
10+ OR CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL x86_64
11+ OR CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL amd64)
12+ set (VCVARSALL_ARCH x64)
13+ elseif (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL arm)
14+ set (VCVARSALL_ARCH arm)
15+ elseif (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL arm64 OR CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL aarch64)
16+ set (VCVARSALL_ARCH arm64)
17+ else ()
18+ if (CMAKE_HOST_SYSTEM_PROCESSOR )
19+ set (VCVARSALL_ARCH ${CMAKE_HOST_SYSTEM_PROCESSOR} )
20+ else ()
21+ set (VCVARSALL_ARCH x64)
22+ message (STATUS "Unkown architecture CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR_LOWER} - using x64" )
23+ endif ()
24+ endif ()
25+ endmacro ()
26+
327# Run vcvarsall.bat and set CMake environment variables
428function (run_vcvarsall )
529 # if MSVC but VSCMD_VER is not set, which means vcvarsall has not run
@@ -19,18 +43,7 @@ function(run_vcvarsall)
1943
2044 if (EXISTS ${VCVARSALL_FILE} )
2145 # detect the architecture
22- string (TOLOWER "${CMAKE_SYSTEM_PROCESSOR} " CMAKE_SYSTEM_PROCESSOR_LOWER)
23- if (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL x86 OR CMAKE_SYSTEM_PROCESSOR_LOWER MATCHES "^i[3456]86$" )
24- set (VCVARSALL_ARCH x86)
25- elseif (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL amd64)
26- set (VCVARSALL_ARCH x64)
27- elseif (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL arm)
28- set (VCVARSALL_ARCH arm)
29- elseif (CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL arm64 OR CMAKE_SYSTEM_PROCESSOR_LOWER STREQUAL aarch64)
30- set (VCVARSALL_ARCH arm64)
31- else ()
32- message (WARNING "Unkown architecture: ${lowercase_CMAKE_HOST_SYSTEM_PROCESSOR} " )
33- endif ()
46+ detect_architecture ()
3447
3548 # run vcvarsall and print the environment variables
3649 message (STATUS "Running `${VCVARSALL_FILE} ${VCVARSALL_ARCH} ` to set up the MSVC environment" )
0 commit comments