diff options
author | Brad King <brad.king@kitware.com> | 2024-01-04 16:53:30 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-01-04 16:53:38 (GMT) |
commit | 5a61984088adb39de48f7d852c79e269f35c09f9 (patch) | |
tree | 51b163cd79ba39abfb69ef80657b34279bd46d0e /Modules/Internal | |
parent | d8d9b3f9e6a1acd74c95dfe6579aa976b45bae5a (diff) | |
parent | 459d1cc095f216170b9e3e0f28b58e58954607ad (diff) | |
download | CMake-5a61984088adb39de48f7d852c79e269f35c09f9.zip CMake-5a61984088adb39de48f7d852c79e269f35c09f9.tar.gz CMake-5a61984088adb39de48f7d852c79e269f35c09f9.tar.bz2 |
Merge topic 'compute-compiler-linker'
459d1cc095 Tests: Verify that linker tool is detected and identified where expected
6aec4739c1 LinkerId: Record detection steps to configure log
ba5f8dbba3 LinkerId: Use empty string for unknown linker id
6cbd0658c5 LinkerId: Match Apple linker on all Apple platforms
9324668517 LinkerId: Fix detection of GNU linker id without parenthesis in version output
37bc148870 LinkerId: Fix detection of linker tool without path
6e527c2d38 LinkerId: Fix detection of linker tool for Clang on OpenBSD
455aed3061 LinkerId: Fix detection of linker tool for MSVC
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9086
Diffstat (limited to 'Modules/Internal')
-rw-r--r-- | Modules/Internal/CMakeDetermineLinkerId.cmake | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Modules/Internal/CMakeDetermineLinkerId.cmake b/Modules/Internal/CMakeDetermineLinkerId.cmake index 05c83d2..45499a5 100644 --- a/Modules/Internal/CMakeDetermineLinkerId.cmake +++ b/Modules/Internal/CMakeDetermineLinkerId.cmake @@ -35,7 +35,14 @@ function(cmake_determine_linker_id lang linker) OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE) - if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND linker_desc MATCHES "@\\(#\\)PROGRAM:ld.+PROJECT:[a-z0-9]+-([0-9.]+).+") + string(JOIN "\" \"" flags_string ${flags}) + string(REGEX REPLACE "\n\n.*" "" linker_desc_head "${linker_desc}") + message(CONFIGURE_LOG + "Running the ${lang} compiler's linker: \"${linker}\" \"${flags_string}\"\n" + "${linker_desc_head}\n" + ) + + if(CMAKE_EFFECTIVE_SYSTEM_NAME STREQUAL "Apple" AND linker_desc MATCHES "@\\(#\\)PROGRAM:ld.+PROJECT:[a-z0-9]+-([0-9.]+).+") set(linker_id "AppleClang") set(linker_frontend "GNU") set(linker_version "${CMAKE_MATCH_1}") @@ -58,10 +65,10 @@ function(cmake_determine_linker_id lang linker) set(linker_frontend "MSVC") endif() break() - elseif(linker_desc MATCHES "GNU ld \\([^)]+\\) ([0-9.]+)") + elseif(linker_desc MATCHES "GNU ld (\\([^)]+\\)|version) ([0-9.]+)") set(linker_id "GNU") set(linker_frontend "GNU") - set(linker_version "${CMAKE_MATCH_1}") + set(linker_version "${CMAKE_MATCH_2}") break() elseif(linker_desc MATCHES "GNU gold \\([^)]+\\) ([0-9.]+)") set(linker_id "GNUgold") @@ -83,10 +90,6 @@ function(cmake_determine_linker_id lang linker) break() endif() endforeach() - if(NOT linker_id) - # unknown linker - set(linker_id "UNKNOWN") - endif() set(CMAKE_${lang}_COMPILER_LINKER_ID "${linker_id}" PARENT_SCOPE) if (linker_frontend) |