xref: /llvm-project/cmake/Modules/GetDarwinLinkerVersion.cmake (revision 3bc71c2abfa00413fd15cf0e5c08af6ec0d4768b)
1# Get the linker version on Darwin
2function(get_darwin_linker_version variable)
3  set(LINK_VERSION)
4  set(LD_V_OUTPUT)
5  execute_process(
6    COMMAND sh -c "${CMAKE_LINKER} -v 2>&1 | head -1"
7    RESULT_VARIABLE HAD_ERROR
8    OUTPUT_VARIABLE LD_V_OUTPUT
9    )
10  if (HAD_ERROR)
11    message(FATAL_ERROR "${CMAKE_LINKER} failed with status ${HAD_ERROR}")
12  endif()
13  if ("${LD_V_OUTPUT}" MATCHES ".*ld64-([0-9.]+).*")
14    string(REGEX REPLACE ".*ld64-([0-9.]+).*" "\\1" LINK_VERSION ${LD_V_OUTPUT})
15  elseif ("${LD_V_OUTPUT}" MATCHES "[^0-9]*([0-9.]+).*")
16    string(REGEX REPLACE "[^0-9]*([0-9.]+).*" "\\1" LINK_VERSION ${LD_V_OUTPUT})
17  endif()
18  set(${variable} ${LINK_VERSION} PARENT_SCOPE)
19endfunction()
20