Linker: Tolerate CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL set to ANY

Tolerate expected failures of linkers invoked via `execute_process`.
This commit is contained in:
Tristan Daifuku
2025-10-15 11:08:12 -07:00
committed by Brad King
parent 576e63f28d
commit 69e2f3f8ea
4 changed files with 10 additions and 2 deletions

View File

@@ -29,7 +29,9 @@ function(cmake_determine_linker_id lang linker)
OUTPUT_VARIABLE linker_desc
ERROR_VARIABLE linker_desc
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
ERROR_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL NONE
)
string(JOIN "\" \"" flags_string ${flags})
string(REGEX REPLACE "\n\n.*" "" linker_desc_head "${linker_desc}")

View File

@@ -21,7 +21,9 @@ function(__cmake_set_whole_archive_feature __linker)
# launch linker to check if push_state/pop_state options are supported
execute_process(COMMAND "${__linker}" --push-state --pop-state
OUTPUT_VARIABLE __linker_log
ERROR_VARIABLE __linker_log)
ERROR_VARIABLE __linker_log
COMMAND_ERROR_IS_FATAL NONE
)
if(__linker_log MATCHES "--push-state" OR __linker_log MATCHES "--pop-state")
set(CMAKE_${__lang}LINKER_PUSHPOP_STATE_SUPPORTED FALSE)
else()

View File

@@ -0,0 +1,2 @@
enable_language(C)
enable_language(CXX)

View File

@@ -1,5 +1,7 @@
include(RunCMake)
run_cmake_with_options(ConfigureErrorANY -DCMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL=ANY)
set(RunCMake_TEST_OUTPUT_MERGE 1)
run_cmake_command(MergeOutput ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR}/MergeOutput.cmake)
unset(RunCMake_TEST_OUTPUT_MERGE)