mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 20:16:46 +00:00

The HOST_LINK_VERSION is a hardcoded string in Darwin clang that detects the linker version at configure time. The driver uses this information to build the correct set of arguments for the linker. This patch detects the linker version again during compiler-rt configuration and passes it to the tests. This allows a clang built on a machine with a new linker to run compiler-rt tests on a machine with an old linker. rdar://125198603
20 lines
706 B
CMake
20 lines
706 B
CMake
# Get the linker version on Darwin
|
|
function(get_darwin_linker_version variable)
|
|
set(LINK_VERSION)
|
|
set(LD_V_OUTPUT)
|
|
execute_process(
|
|
COMMAND sh -c "${CMAKE_LINKER} -v 2>&1 | head -1"
|
|
RESULT_VARIABLE HAD_ERROR
|
|
OUTPUT_VARIABLE LD_V_OUTPUT
|
|
)
|
|
if (HAD_ERROR)
|
|
message(FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR}")
|
|
endif()
|
|
if ("${LD_V_OUTPUT}" MATCHES ".*ld64-([0-9.]+).*")
|
|
string(REGEX REPLACE ".*ld64-([0-9.]+).*" "\\1" LINK_VERSION ${LD_V_OUTPUT})
|
|
elseif ("${LD_V_OUTPUT}" MATCHES "[^0-9]*([0-9.]+).*")
|
|
string(REGEX REPLACE "[^0-9]*([0-9.]+).*" "\\1" LINK_VERSION ${LD_V_OUTPUT})
|
|
endif()
|
|
set(${variable} ${LINK_VERSION} PARENT_SCOPE)
|
|
endfunction()
|