Skip to content

Commit c88a46f

Browse files
authored
Merge pull request #39 from cpp-best-practices/detect-arch
2 parents 7e4b7c2 + f8b59b9 commit c88a46f

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

src/Index.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ macro(project_options)
6969

7070
# set warning message level
7171
if(${ProjectOptions_WARNINGS_AS_ERRORS})
72-
set(WARNINGS_AS_ERRORS ${ProjectOptions_WARNINGS_AS_ERRORS})
72+
set(WARNINGS_AS_ERRORS ${ProjectOptions_WARNINGS_AS_ERRORS})
7373
set(WARNING_MESSAGE SEND_ERROR)
7474
else()
7575
set(WARNING_MESSAGE WARNING)
@@ -114,7 +114,7 @@ macro(project_options)
114114
MSVC_WARNINGS=${ProjectOptions_MSVC_WARNINGS}
115115
CLANG_WARNINGS=${ProjectOptions_CLANG_WARNINGS}
116116
GCC_WARNINGS=${ProjectOptions_GCC_WARNINGS})
117-
117+
118118
include("${ProjectOptions_SRC_DIR}/Tests.cmake")
119119
if(${ProjectOptions_ENABLE_COVERAGE})
120120
enable_coverage(project_options)

src/VCEnvironment.cmake

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
11
include("${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
428
function(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

Comments
 (0)