diff options
author | Usama Hameed <u_hameed@apple.com> | 2024-03-22 15:29:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-22 15:29:36 -0700 |
commit | 3bc71c2abfa00413fd15cf0e5c08af6ec0d4768b (patch) | |
tree | 7a8d5b213069a7cab3d74d25a00459754807a58d /cmake | |
parent | 51268a57fd4d7f67fe9fdb337f63ec390fa2379a (diff) | |
download | llvm-3bc71c2abfa00413fd15cf0e5c08af6ec0d4768b.zip llvm-3bc71c2abfa00413fd15cf0e5c08af6ec0d4768b.tar.gz llvm-3bc71c2abfa00413fd15cf0e5c08af6ec0d4768b.tar.bz2 |
Get the linker version and pass the it to compiler-rt tests on Darwin. (#86220)
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
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/Modules/GetDarwinLinkerVersion.cmake | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/cmake/Modules/GetDarwinLinkerVersion.cmake b/cmake/Modules/GetDarwinLinkerVersion.cmake new file mode 100644 index 0000000..c27e501 --- /dev/null +++ b/cmake/Modules/GetDarwinLinkerVersion.cmake @@ -0,0 +1,19 @@ +# 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() |