mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 22:37:30 +08:00
Linker: Detect GNU push-state/pop-state flags more robustly
Try actually passing them to the linker to see whether it complains. Fixes: #26766
This commit is contained in:
@@ -21,10 +21,11 @@ function(__cmake_set_whole_archive_feature __linker)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT DEFINED CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED)
|
if(NOT DEFINED CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED)
|
||||||
execute_process(COMMAND "${__linker}" --help
|
# launch linker to check if push_state/pop_state options are supported
|
||||||
OUTPUT_VARIABLE __linker_help
|
execute_process(COMMAND "${__linker}" --push-state --pop-state
|
||||||
ERROR_VARIABLE __linker_help)
|
OUTPUT_VARIABLE __linker_log
|
||||||
if(__linker_help MATCHES "--push-state" AND __linker_help MATCHES "--pop-state")
|
ERROR_VARIABLE __linker_log)
|
||||||
|
if(__linker_log MATCHES "--push-state" OR __linker_log MATCHES "--pop-state")
|
||||||
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED FALSE)
|
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED FALSE)
|
||||||
else()
|
else()
|
||||||
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED TRUE)
|
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED TRUE)
|
||||||
|
Reference in New Issue
Block a user