summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-07-19 13:28:24 (GMT)
committerBrad King <brad.king@kitware.com>2024-07-19 13:42:45 (GMT)
commit74beb6dba8531cc8a04e572864e88111dc46ab3d (patch)
tree053478420eb7a25af79d5545b17eb1b40c8a0718
parentcd386f6425f2558a5eb69de8a2265df52bdc5147 (diff)
downloadCMake-74beb6dba8531cc8a04e572864e88111dc46ab3d.zip
CMake-74beb6dba8531cc8a04e572864e88111dc46ab3d.tar.gz
CMake-74beb6dba8531cc8a04e572864e88111dc46ab3d.tar.bz2
Xcode: Restore support for CMAKE_OSX_ARCHITECTURES=$(ARCHS_STANDARD)
Skip the `CMAKE_OSX_ARCHITECTURES` validation added by commit db409e5e68 (APPLE: Check if compilers respect CMAKE_OSX_ARCHITECTURES, 2024-05-04, v3.30.0-rc1~15^2) if the value contains a placeholder, since we do not know the real value. Fixes: #26128
-rw-r--r--Modules/CMakeDetermineCompilerABI.cmake2
-rw-r--r--Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt1
-rw-r--r--Tests/RunCMake/XcodeProject/ArchsStandard.cmake4
-rw-r--r--Tests/RunCMake/XcodeProject/RunCMakeTest.cmake2
4 files changed, 8 insertions, 1 deletions
diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake
index 671a0b6..4a75e25 100644
--- a/Modules/CMakeDetermineCompilerABI.cmake
+++ b/Modules/CMakeDetermineCompilerABI.cmake
@@ -99,7 +99,7 @@ function(CMAKE_DETERMINE_COMPILER_ABI lang src)
# Load the resulting information strings.
if(CMAKE_${lang}_ABI_COMPILED)
message(CHECK_PASS "done")
- if(CMAKE_HOST_APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ if(CMAKE_HOST_APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT CMAKE_OSX_ARCHITECTURES MATCHES "\\$")
file(READ_MACHO "${BIN}" ARCHITECTURES archs CAPTURE_ERROR macho_error) # undocumented file() subcommand
if (NOT macho_error)
# sort and prune the list of found architectures
diff --git a/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt b/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt
new file mode 100644
index 0000000..460b33c
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject/ArchsStandard-stdout.txt
@@ -0,0 +1 @@
+-- Detecting C compiler ABI info - done
diff --git a/Tests/RunCMake/XcodeProject/ArchsStandard.cmake b/Tests/RunCMake/XcodeProject/ArchsStandard.cmake
new file mode 100644
index 0000000..56d9e64
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject/ArchsStandard.cmake
@@ -0,0 +1,4 @@
+if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "$(ARCHS_STANDARD)")
+ message(FATAL_ERROR "CMAKE_OSX_ARCHITECTURES is not $(ARCHS_STANDARD)")
+endif()
+enable_language(C)
diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
index c124950..5e22666 100644
--- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
+++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
@@ -9,6 +9,8 @@ function(RunClean)
endfunction()
RunClean()
+run_cmake_with_options(ArchsStandard "-DCMAKE_OSX_ARCHITECTURES=$(ARCHS_STANDARD)")
+
run_cmake(ExplicitCMakeLists)
run_cmake(ImplicitCMakeLists)
run_cmake(InterfaceLibSources)