diff --git a/Modules/CMakeDetermineCompilerABI.cmake b/Modules/CMakeDetermineCompilerABI.cmake index 671a0b6a5a..4a75e25a92 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 0000000000..460b33c45c --- /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 0000000000..56d9e644d2 --- /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 c124950eac..5e2266633b 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)