Просмотр исходного кода

Linker: Tolerate CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL set to ANY

Tolerate expected failures of linkers invoked via `execute_process`.
Tristan Daifuku 3 месяцев назад
Родитель
Сommit
69e2f3f8ea

+ 3 - 1
Modules/Internal/CMakeDetermineLinkerId.cmake

@@ -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}")

+ 3 - 1
Modules/Platform/Linker/GNU.cmake

@@ -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()

+ 2 - 0
Tests/RunCMake/execute_process/ConfigureErrorANY.cmake

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

+ 2 - 0
Tests/RunCMake/execute_process/RunCMakeTest.cmake

@@ -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)