mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
LinkerId: Fix detection of linker tool for MSVC
Previously we matched an entire build system output line and then extracted the relevant portion in a separate brittle step. Match it directly. Use the `CMAKE_LINKER` value directly if available.
This commit is contained in:
@@ -97,6 +97,8 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
if("${line}" MATCHES " --with-ld=([^ ]+/${linker})( |$)")
|
||||
set(linker_tool_fallback "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
elseif("${line}" MATCHES "vs_link.*-- +([^\"]*[/\\](${linker})) ") # cmake -E vs_link_exe
|
||||
set(linker_tool "${CMAKE_MATCH_1}")
|
||||
elseif("${line}" MATCHES "${linker_tool_regex}")
|
||||
set(linker_tool "${CMAKE_MATCH_2}")
|
||||
endif()
|
||||
@@ -270,9 +272,7 @@ function(cmake_parse_implicit_link_info2 text log_var obj_regex)
|
||||
endif()
|
||||
if(linker_tool)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
# pick-up last path
|
||||
string(REGEX REPLACE "^.*([A-Za-z]:[/\\][^:]+)$" "\\1" linker_tool "${linker_tool}")
|
||||
cmake_path(SET linker_tool "${linker_tool}")
|
||||
cmake_path(NORMAL_PATH linker_tool)
|
||||
endif()
|
||||
string(APPEND log " linker tool for '${EXTRA_PARSE_LANGUAGE}': ${linker_tool}\n")
|
||||
endif()
|
||||
|
||||
@@ -173,9 +173,9 @@ foreach(t ${targets})
|
||||
# File format
|
||||
# file(WRITE ${outfile} "libs=${implicit_libs}\ndirs=${idirs}\nlibrary_arch=${library_arch}\nlinker_tool=${linker_tool}\n")
|
||||
|
||||
if(NOT CMAKE_HOST_WIN32)
|
||||
if(t MATCHES "windows" AND NOT CMAKE_HOST_WIN32)
|
||||
string(REPLACE "\\" "/" linker_tool "${linker_tool}")
|
||||
cmake_path(SET linker_tool "${linker_tool}")
|
||||
cmake_path(NORMAL_PATH linker_tool)
|
||||
endif()
|
||||
|
||||
if(t MATCHES "-empty$") # empty isn't supposed to parse
|
||||
|
||||
Reference in New Issue
Block a user