Browse Source

Merge topic 'fix-cmake_determine_linker_id-error-handling' into release-4.2

69e2f3f8ea Linker: Tolerate CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL set to ANY
576e63f28d Compilers: Use -print-sysroot output only with successful exit code

Acked-by: Kitware Robot <[email protected]>
Merge-request: !11313
Brad King 1 month ago
parent
commit
32485cd7e2

+ 6 - 2
Modules/CMakeDetermineCompiler.cmake

@@ -137,9 +137,13 @@ function(_cmake_find_compiler_sysroot lang)
     execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -print-sysroot
       OUTPUT_STRIP_TRAILING_WHITESPACE
       OUTPUT_VARIABLE _cmake_sysroot_run_out
-      ERROR_VARIABLE _cmake_sysroot_run_err)
+      ERROR_VARIABLE _cmake_sysroot_run_err
+      RESULT_VARIABLE _cmake_sysroot_run_res
+    )
 
-    if(_cmake_sysroot_run_out AND NOT _cmake_sysroot_run_err
+    if(_cmake_sysroot_run_res EQUAL 0
+        AND _cmake_sysroot_run_out
+        AND NOT _cmake_sysroot_run_err
         AND NOT _cmake_sysroot_run_out STREQUAL "/"
         AND IS_DIRECTORY "${_cmake_sysroot_run_out}/usr")
       file(TO_CMAKE_PATH "${_cmake_sysroot_run_out}/usr" _cmake_sysroot_run_out_usr)

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