瀏覽代碼

Check{Compiler,Linker}Flag: Add possibility to retrieve check outputs

Marc Chevrier 3 年之前
父節點
當前提交
4fa105d34e

+ 8 - 0
Modules/Internal/CheckCompilerFlag.cmake

@@ -7,6 +7,9 @@ include(Internal/CheckSourceCompiles)
 include(CMakeCheckCompilerFlagCommonPatterns)
 
 function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
+  # Parse extra arguments
+  cmake_parse_arguments(PARSE_ARGV 3 CHECK_COMPILER_FLAG "" "OUTPUT_VARIABLE" "")
+
   cmake_check_flag_common_init("check_compiler_flag" ${_lang} _lang_src _lang_fail_regex)
 
   set(CMAKE_REQUIRED_DEFINITIONS ${_flag})
@@ -17,7 +20,12 @@ function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
     ${_var}
     ${_lang_fail_regex}
     ${_common_patterns}
+    OUTPUT_VARIABLE _output
     )
 
+  if (CHECK_COMPILER_FLAG_OUTPUT_VARIABLE)
+    set(${CHECK_COMPILER_FLAG_OUTPUT_VARIABLE} "${_output}" PARENT_SCOPE)
+  endif()
+
   cmake_check_flag_common_finish()
 endfunction()

+ 8 - 0
Modules/Internal/CheckLinkerFlag.cmake

@@ -17,6 +17,9 @@ function(CMAKE_CHECK_LINKER_FLAG _lang _flag _var)
     return()
   endif()
 
+  # Parse extra arguments
+  cmake_parse_arguments(PARSE_ARGV 3 CHECK_LINKER_FLAG "" "OUTPUT_VARIABLE" "")
+
   cmake_check_flag_common_init("check_linker_flag" ${_lang} _lang_src _lang_fail_regex)
 
   set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
@@ -27,8 +30,13 @@ function(CMAKE_CHECK_LINKER_FLAG _lang _flag _var)
     ${_var}
     ${_lang_fail_regex}
     ${_common_patterns}
+    OUTPUT_VARIABLE _output
     )
 
+  if (CHECK_LINKER_FLAG_OUTPUT_VARIABLE)
+    set(${CHECK_LINKER_FLAG_OUTPUT_VARIABLE} "${_output}" PARENT_SCOPE)
+  endif()
+
   cmake_check_flag_common_finish()
 endfunction()
 

+ 8 - 1
Modules/Internal/CheckSourceCompiles.cmake

@@ -49,13 +49,16 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
     set(_SRC_EXT)
     set(_key)
     foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
+      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT|OUTPUT_VARIABLE)$")
         set(_key "${arg}")
       elseif(_key STREQUAL "FAIL_REGEX")
         list(APPEND _FAIL_REGEX "${arg}")
       elseif(_key STREQUAL "SRC_EXT")
         set(_SRC_EXT "${arg}")
         set(_key "")
+      elseif(_key STREQUAL "OUTPUT_VARIABLE")
+        set(_OUTPUT_VARIABLE "${arg}")
+        set(_key "")
       else()
         message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
       endif()
@@ -105,6 +108,10 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
       endif()
     endforeach()
 
+    if (_OUTPUT_VARIABLE)
+      set(${_OUTPUT_VARIABLE} "${OUTPUT}" PARENT_SCOPE)
+    endif()
+
     if(${_var})
       set(${_var} 1 CACHE INTERNAL "Test ${_var}")
       if(NOT CMAKE_REQUIRED_QUIET)