From 93246685177fc3d64a6b5dc01904a4437e6c2a9e Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 12 Dec 2023 09:18:33 -0500 Subject: LinkerId: Fix detection of GNU linker id without parenthesis in version output --- Modules/Internal/CMakeDetermineLinkerId.cmake | 4 ++-- Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake | 1 + Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.bash | 2 ++ Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.txt | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100755 Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.bash create mode 100644 Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.txt diff --git a/Modules/Internal/CMakeDetermineLinkerId.cmake b/Modules/Internal/CMakeDetermineLinkerId.cmake index 05c83d2..b66053f 100644 --- a/Modules/Internal/CMakeDetermineLinkerId.cmake +++ b/Modules/Internal/CMakeDetermineLinkerId.cmake @@ -58,10 +58,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") diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake b/Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake index b6caf6c..73e5e1b 100644 --- a/Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake +++ b/Tests/RunCMake/ParseImplicitLinkInfo/DetermineLinkerId.cmake @@ -6,6 +6,7 @@ set(tools debian12-ld.gold debian12-ld.lld debian12-ld.mold + fedora39-ld.bfd fedora39-ld.gold fedora39-ld.lld fedora39-ld.mold diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.bash b/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.bash new file mode 100755 index 0000000..c74ea41 --- /dev/null +++ b/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.bash @@ -0,0 +1,2 @@ +#!/bin/sh +echo 'GNU ld version 2.40-13.fc39' diff --git a/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.txt b/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.txt new file mode 100644 index 0000000..802becd --- /dev/null +++ b/Tests/RunCMake/ParseImplicitLinkInfo/ld-v/fedora39-ld.bfd.txt @@ -0,0 +1,3 @@ +CMAKE_C_COMPILER_LINKER_ID='GNU' +CMAKE_C_COMPILER_LINKER_VERSION='2.40' +CMAKE_C_COMPILER_LINKER_FRONTEND_VARIANT='GNU' -- cgit v0.12