diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index 3e12213f6e6b5..bf1b110245bb2 100644 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -639,12 +639,25 @@ if(CMAKE_HOST_APPLE AND APPLE) if(NOT CMAKE_XCRUN) find_program(CMAKE_XCRUN NAMES xcrun) endif() + + # First, check if there's ld-classic, which is ld64 in newer SDKs. if(CMAKE_XCRUN) - execute_process(COMMAND ${CMAKE_XCRUN} -find ld + execute_process(COMMAND ${CMAKE_XCRUN} -find ld-classic OUTPUT_VARIABLE LD64_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE) else() - find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker") + find_program(LD64_EXECUTABLE NAMES ld-classic DOC "The ld64 linker") + endif() + + # Otherwise look for ld directly. + if(NOT LD64_EXECUTABLE) + if(CMAKE_XCRUN) + execute_process(COMMAND ${CMAKE_XCRUN} -find ld + OUTPUT_VARIABLE LD64_EXECUTABLE + OUTPUT_STRIP_TRAILING_WHITESPACE) + else() + find_program(LD64_EXECUTABLE NAMES ld DOC "The ld64 linker") + endif() endif() endif()