mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-11 09:39:49 -06:00
In commit 7b19531291 (macOS: Do not pass any SDK/-isysroot to compilers
by default, 2024-11-06, v4.0.0-rc1~511^2) we broke support for using
upstream LLVM/Clang to build for macOS because the compiler has no
default sysroot. Handle empty `CMAKE_OSX_SYSROOT` with LLVM/Clang by
falling back to the macOS SDK reported by `xcrun --show-sdk-path` .
Fixes: #26863
48 lines
1.4 KiB
CMake
48 lines
1.4 KiB
CMake
include(RunCMake)
|
|
|
|
# Isolate from caller's environment.
|
|
unset(ENV{CMAKE_OSX_ARCHITECTURES})
|
|
unset(ENV{CMAKE_OSX_DEPLOYMENT_TARGET})
|
|
unset(ENV{SDKROOT})
|
|
|
|
function(run_xcode_cc)
|
|
set(RunCMake_TEST_VARIANT_DESCRIPTION "-xcode")
|
|
if(EXISTS "/usr/include/AvailabilityMacros.h")
|
|
run_cmake(SDK)
|
|
else()
|
|
run_cmake(NoSDK)
|
|
endif()
|
|
endfunction()
|
|
|
|
if(RunCMake_GENERATOR STREQUAL "Xcode")
|
|
run_xcode_cc()
|
|
else()
|
|
set(system_cc "/usr/bin/cc")
|
|
set(system_cxx "/usr/bin/c++")
|
|
if(EXISTS "${system_cc}" AND EXISTS "${system_cxx}")
|
|
set(ENV{CC} "${system_cc}")
|
|
set(ENV{CXX} "${system_cxx}")
|
|
set(ENV{OBJC} "${system_cc}")
|
|
set(ENV{OBJCXX} "${system_cxx}")
|
|
set(RunCMake_TEST_VARIANT_DESCRIPTION "-system")
|
|
run_cmake(SDK)
|
|
endif()
|
|
|
|
execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE xcode_cc OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE xcode_cxx OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
execute_process(COMMAND xcrun --show-sdk-path OUTPUT_VARIABLE xcode_sdk OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
if(EXISTS "${xcode_cc}" AND EXISTS "${xcode_cxx}")
|
|
set(ENV{CC} "${xcode_cc}")
|
|
set(ENV{CXX} "${xcode_cxx}")
|
|
set(ENV{OBJC} "${xcode_cc}")
|
|
set(ENV{OBJCXX} "${xcode_cxx}")
|
|
run_xcode_cc()
|
|
if(EXISTS "${xcode_sdk}")
|
|
set(RunCMake_TEST_VARIANT_DESCRIPTION "-xcode-SDKROOT")
|
|
set(ENV{SDKROOT} "${xcode_sdk}")
|
|
run_cmake(SDK)
|
|
unset(ENV{SDKROOT})
|
|
endif()
|
|
endif()
|
|
endif()
|