diff options
author | Brad King <brad.king@kitware.com> | 2020-12-11 18:05:12 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-12-11 18:05:34 (GMT) |
commit | 794aa36b1fe945c25822108dbf3bcaa4c89f26d7 (patch) | |
tree | 97d0622c5cd7ac0be8e137b7cd0ab52c494e0f79 /Modules/Platform | |
parent | 0d9c43281fa4e39b18f63af3619fb89280bde722 (diff) | |
parent | b7f0327dcd4032c6a118825adcfdc8dab6295e7f (diff) | |
download | CMake-794aa36b1fe945c25822108dbf3bcaa4c89f26d7.zip CMake-794aa36b1fe945c25822108dbf3bcaa4c89f26d7.tar.gz CMake-794aa36b1fe945c25822108dbf3bcaa4c89f26d7.tar.bz2 |
Merge topic 'apple-silicon-host-arch'
b7f0327dcd Tests: Cover macOS host architecture selection on Apple Silicon hosts
5f882f6ce5 macOS: Offer control over host architecture on Apple Silicon hosts
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5589
Diffstat (limited to 'Modules/Platform')
-rw-r--r-- | Modules/Platform/Darwin-Initialize.cmake | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/Modules/Platform/Darwin-Initialize.cmake b/Modules/Platform/Darwin-Initialize.cmake index 213f71b..c2f1851 100644 --- a/Modules/Platform/Darwin-Initialize.cmake +++ b/Modules/Platform/Darwin-Initialize.cmake @@ -22,13 +22,22 @@ set(CMAKE_OSX_ARCHITECTURES "$ENV{CMAKE_OSX_ARCHITECTURES}" CACHE STRING if(NOT CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND - CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64" AND - CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") - # When building on Apple Silicon (arm64), we need to explicitly specify + CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(arm64|x86_64)$") + execute_process(COMMAND sysctl -q hw.optional.arm64 + OUTPUT_VARIABLE _sysctl_stdout + ERROR_VARIABLE _sysctl_stderr + RESULT_VARIABLE _sysctl_result + ) + # When building on an Apple Silicon host, we need to explicitly specify # the architecture to the toolchain since it will otherwise guess the # architecture based on that of the build system tool. # Set an *internal variable* to tell the generators to do this. - set(_CMAKE_APPLE_ARCHS_DEFAULT "arm64") + if(_sysctl_result EQUAL 0 AND _sysctl_stdout MATCHES "hw.optional.arm64: 1") + set(_CMAKE_APPLE_ARCHS_DEFAULT "${CMAKE_HOST_SYSTEM_PROCESSOR}") + endif() + unset(_sysctl_result) + unset(_sysctl_stderr) + unset(_sysctl_stdout) endif() # macOS, iOS, tvOS, and watchOS should lookup compilers from |