summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-03-15 14:20:27 (GMT)
committerBrad King <brad.king@kitware.com>2023-03-15 14:50:26 (GMT)
commit98e319a88f0be4fdc5d374cdf5a3d5c0e295699d (patch)
treef11356225de33b5bf02abc201dec43703b1b6652 /Tests/RunCMake
parent43e973eba2681788c7acf7a4fcdf261bcf6a622a (diff)
downloadCMake-98e319a88f0be4fdc5d374cdf5a3d5c0e295699d.zip
CMake-98e319a88f0be4fdc5d374cdf5a3d5c0e295699d.tar.gz
CMake-98e319a88f0be4fdc5d374cdf5a3d5c0e295699d.tar.bz2
macOS: Suppress default '-arch arm64' with CMAKE_<LANG>_COMPILER_TARGET
Since commit b6c60f14b6 (macOS: Default to arm64 architecture on Apple Silicon hosts, 2020-09-28, v3.19.0-rc1~63^2) we add `-arch arm64` by default on Apple Silicon hosts if `CMAKE_OSX_ARCHITECTURES` is not set. This is necessary to prevent the toolchain from selecting its own default architecture based on that of the build tool (e.g., `x86_64`). If `CMAKE_<LANG>_COMPILER_TARGET` is set, its `-target` flag tells the compiler what architecture to use, so do not add `-arch arm64`. Fixes: #24599
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r--Tests/RunCMake/AppleSilicon/RunCMakeTest.cmake8
-rw-r--r--Tests/RunCMake/AppleSilicon/default-target-arm64-build-check.cmake5
-rw-r--r--Tests/RunCMake/AppleSilicon/default-target-arm64.cmake5
-rw-r--r--Tests/RunCMake/AppleSilicon/default-target-x86_64-build-check.cmake5
-rw-r--r--Tests/RunCMake/AppleSilicon/default-target-x86_64.cmake5
5 files changed, 27 insertions, 1 deletions
diff --git a/Tests/RunCMake/AppleSilicon/RunCMakeTest.cmake b/Tests/RunCMake/AppleSilicon/RunCMakeTest.cmake
index 39e462e..58c50e0 100644
--- a/Tests/RunCMake/AppleSilicon/RunCMakeTest.cmake
+++ b/Tests/RunCMake/AppleSilicon/RunCMakeTest.cmake
@@ -10,11 +10,17 @@ function(run_arch case)
run_cmake(${case})
unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_NO_CLEAN 1)
- run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug)
+ set(RunCMake_TEST_OUTPUT_MERGE 1)
+ run_cmake_command(${case}-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
endfunction()
run_arch(default)
+if(RunCMake_GENERATOR MATCHES "Makefiles|Ninja")
+ run_arch(default-target-arm64 -DCMAKE_C_COMPILER_TARGET=arm64-apple-macosx)
+ run_arch(default-target-x86_64 -DCMAKE_C_COMPILER_TARGET=x86_64-apple-macosx)
+endif()
+
run_arch(arm64-var -DCMAKE_APPLE_SILICON_PROCESSOR=arm64)
run_arch(x86_64-var -DCMAKE_APPLE_SILICON_PROCESSOR=x86_64)
diff --git a/Tests/RunCMake/AppleSilicon/default-target-arm64-build-check.cmake b/Tests/RunCMake/AppleSilicon/default-target-arm64-build-check.cmake
new file mode 100644
index 0000000..33ad931
--- /dev/null
+++ b/Tests/RunCMake/AppleSilicon/default-target-arm64-build-check.cmake
@@ -0,0 +1,5 @@
+if(NOT actual_stdout MATCHES "[ -]-target=arm64-apple-macosx ")
+ set(RunCMake_TEST_FAILED "No -target=arm64-apple-macosx flag found!")
+elseif(actual_stdout MATCHES " (-arch +[^ ]*)")
+ set(RunCMake_TEST_FAILED "'${CMAKE_MATCH_1}' flag incorrectly found!")
+endif()
diff --git a/Tests/RunCMake/AppleSilicon/default-target-arm64.cmake b/Tests/RunCMake/AppleSilicon/default-target-arm64.cmake
new file mode 100644
index 0000000..8c94020
--- /dev/null
+++ b/Tests/RunCMake/AppleSilicon/default-target-arm64.cmake
@@ -0,0 +1,5 @@
+enable_language(C)
+if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")
+ message(FATAL_ERROR "CMAKE_OSX_ARCHITECTURES is '${CMAKE_OSX_ARCHITECTURES}', not empty ''")
+endif()
+add_library(arm64 arm64.c)
diff --git a/Tests/RunCMake/AppleSilicon/default-target-x86_64-build-check.cmake b/Tests/RunCMake/AppleSilicon/default-target-x86_64-build-check.cmake
new file mode 100644
index 0000000..9116ef4
--- /dev/null
+++ b/Tests/RunCMake/AppleSilicon/default-target-x86_64-build-check.cmake
@@ -0,0 +1,5 @@
+if(NOT actual_stdout MATCHES "[ -]-target=x86_64-apple-macosx ")
+ set(RunCMake_TEST_FAILED "No -target=x86_64-apple-macosx flag found!")
+elseif(actual_stdout MATCHES " (-arch +[^ ]*)")
+ set(RunCMake_TEST_FAILED "'${CMAKE_MATCH_1}' flag incorrectly found!")
+endif()
diff --git a/Tests/RunCMake/AppleSilicon/default-target-x86_64.cmake b/Tests/RunCMake/AppleSilicon/default-target-x86_64.cmake
new file mode 100644
index 0000000..ded46b7
--- /dev/null
+++ b/Tests/RunCMake/AppleSilicon/default-target-x86_64.cmake
@@ -0,0 +1,5 @@
+enable_language(C)
+if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "")
+ message(FATAL_ERROR "CMAKE_OSX_ARCHITECTURES is '${CMAKE_OSX_ARCHITECTURES}', not empty ''")
+endif()
+add_library(x86_64 x86_64.c)