summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-12-08 17:37:57 (GMT)
committerBrad King <brad.king@kitware.com>2023-12-08 21:32:20 (GMT)
commitdf025444b216f69f57a6bf060a75ca883f5ddce8 (patch)
treef47ea723dde51a5c18fd472bc5e6308863dfa280 /Modules
parentc1e48a19a5603565d8e691e62ff058ecce61d679 (diff)
downloadCMake-df025444b216f69f57a6bf060a75ca883f5ddce8.zip
CMake-df025444b216f69f57a6bf060a75ca883f5ddce8.tar.gz
CMake-df025444b216f69f57a6bf060a75ca883f5ddce8.tar.bz2
LinkerId: Identify AIX and SunOS system linkers
Populate `CMAKE_<LANG>_COMPILER_LINKER_{ID,VERSION}` on these platforms.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeParseImplicitLinkInfo.cmake2
-rw-r--r--Modules/Internal/CMakeDetermineLinkerId.cmake9
-rw-r--r--Modules/Platform/AIX-GNU.cmake1
3 files changed, 11 insertions, 1 deletions
diff --git a/Modules/CMakeParseImplicitLinkInfo.cmake b/Modules/CMakeParseImplicitLinkInfo.cmake
index 0c92634..f62de4c 100644
--- a/Modules/CMakeParseImplicitLinkInfo.cmake
+++ b/Modules/CMakeParseImplicitLinkInfo.cmake
@@ -75,7 +75,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
set(linker_regex "^( *|.*[/\\])(${linker}|${startfile}|([^/\\]+-)?ld|collect2)[^/\\]*( |$)")
set(linker_exclude_regex "collect2 version |^[A-Za-z0-9_]+=|/ldfe ")
set(linker_tool_regex "^[ \t]*(->|exec:|\")?[ \t]*(.*[/\\](${linker}))(\"|,| |$)")
- set(linker_tool_exclude_regex "cuda-fake-ld|-fuse-ld=")
+ set(linker_tool_exclude_regex "cuda-fake-ld|-fuse-ld=|--with-ld=")
set(linker_tool "NOTFOUND")
set(link_line_parsed 0)
string(APPEND log " link line regex: [${linker_regex}]\n")
diff --git a/Modules/Internal/CMakeDetermineLinkerId.cmake b/Modules/Internal/CMakeDetermineLinkerId.cmake
index 7311862..05c83d2 100644
--- a/Modules/Internal/CMakeDetermineLinkerId.cmake
+++ b/Modules/Internal/CMakeDetermineLinkerId.cmake
@@ -26,6 +26,7 @@ function(cmake_determine_linker_id lang linker)
# Compute the linker ID and version.
foreach(flags IN ITEMS
"-v" # AppleClang, GNU, GNUgold, MOLD
+ "-V" # AIX, Solaris
"--version" # LLD
)
execute_process(COMMAND "${linker}" ${flags}
@@ -72,6 +73,14 @@ function(cmake_determine_linker_id lang linker)
set(linker_frontend "MSVC")
set(linker_version "${CMAKE_MATCH_1}")
break()
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND linker_desc MATCHES "Solaris Link Editors: ([0-9.-]+)")
+ set(linker_id "Solaris")
+ set(linker_version "${CMAKE_MATCH_1}")
+ break()
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "AIX" AND linker_desc MATCHES " LD ([0-9.]+)")
+ set(linker_id "AIX")
+ set(linker_version "${CMAKE_MATCH_1}")
+ break()
endif()
endforeach()
if(NOT linker_id)
diff --git a/Modules/Platform/AIX-GNU.cmake b/Modules/Platform/AIX-GNU.cmake
index 106eaec..55a6680 100644
--- a/Modules/Platform/AIX-GNU.cmake
+++ b/Modules/Platform/AIX-GNU.cmake
@@ -14,6 +14,7 @@ macro(__aix_compiler_gnu lang)
string(APPEND CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS " -Wl,-bnoipath")
set(CMAKE_SHARED_LIBRARY_LINK_${lang}_FLAGS "-Wl,-bexpall") # CMP0065 old behavior
set(CMAKE_${lang}_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH 1)
+ set(CMAKE_${lang}_VERBOSE_LINK_FLAG "-Wl,-v")
set(CMAKE_${lang}_LINK_FLAGS "-Wl,-bnoipath")
set(CMAKE_${lang}_LINK_LIBRARIES_PROCESSING ORDER=REVERSE UNICITY=ALL)