mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-05 07:10:26 +00:00
Check{Compiler,Linker}Flag: Add possibility to retrieve check outputs
This commit is contained in:
@@ -7,6 +7,9 @@ include(Internal/CheckSourceCompiles)
|
|||||||
include(CMakeCheckCompilerFlagCommonPatterns)
|
include(CMakeCheckCompilerFlagCommonPatterns)
|
||||||
|
|
||||||
function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
|
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)
|
cmake_check_flag_common_init("check_compiler_flag" ${_lang} _lang_src _lang_fail_regex)
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_DEFINITIONS ${_flag})
|
set(CMAKE_REQUIRED_DEFINITIONS ${_flag})
|
||||||
@@ -17,7 +20,12 @@ function(CMAKE_CHECK_COMPILER_FLAG _lang _flag _var)
|
|||||||
${_var}
|
${_var}
|
||||||
${_lang_fail_regex}
|
${_lang_fail_regex}
|
||||||
${_common_patterns}
|
${_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()
|
cmake_check_flag_common_finish()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ function(CMAKE_CHECK_LINKER_FLAG _lang _flag _var)
|
|||||||
return()
|
return()
|
||||||
endif()
|
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)
|
cmake_check_flag_common_init("check_linker_flag" ${_lang} _lang_src _lang_fail_regex)
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
|
set(CMAKE_REQUIRED_LINK_OPTIONS "${_flag}")
|
||||||
@@ -27,8 +30,13 @@ function(CMAKE_CHECK_LINKER_FLAG _lang _flag _var)
|
|||||||
${_var}
|
${_var}
|
||||||
${_lang_fail_regex}
|
${_lang_fail_regex}
|
||||||
${_common_patterns}
|
${_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()
|
cmake_check_flag_common_finish()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|||||||
@@ -49,13 +49,16 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
|
|||||||
set(_SRC_EXT)
|
set(_SRC_EXT)
|
||||||
set(_key)
|
set(_key)
|
||||||
foreach(arg ${ARGN})
|
foreach(arg ${ARGN})
|
||||||
if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
|
if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT|OUTPUT_VARIABLE)$")
|
||||||
set(_key "${arg}")
|
set(_key "${arg}")
|
||||||
elseif(_key STREQUAL "FAIL_REGEX")
|
elseif(_key STREQUAL "FAIL_REGEX")
|
||||||
list(APPEND _FAIL_REGEX "${arg}")
|
list(APPEND _FAIL_REGEX "${arg}")
|
||||||
elseif(_key STREQUAL "SRC_EXT")
|
elseif(_key STREQUAL "SRC_EXT")
|
||||||
set(_SRC_EXT "${arg}")
|
set(_SRC_EXT "${arg}")
|
||||||
set(_key "")
|
set(_key "")
|
||||||
|
elseif(_key STREQUAL "OUTPUT_VARIABLE")
|
||||||
|
set(_OUTPUT_VARIABLE "${arg}")
|
||||||
|
set(_key "")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unknown argument:\n ${arg}\n")
|
message(FATAL_ERROR "Unknown argument:\n ${arg}\n")
|
||||||
endif()
|
endif()
|
||||||
@@ -105,6 +108,10 @@ function(CMAKE_CHECK_SOURCE_COMPILES _lang _source _var)
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
if (_OUTPUT_VARIABLE)
|
||||||
|
set(${_OUTPUT_VARIABLE} "${OUTPUT}" PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(${_var})
|
if(${_var})
|
||||||
set(${_var} 1 CACHE INTERNAL "Test ${_var}")
|
set(${_var} 1 CACHE INTERNAL "Test ${_var}")
|
||||||
if(NOT CMAKE_REQUIRED_QUIET)
|
if(NOT CMAKE_REQUIRED_QUIET)
|
||||||
|
|||||||
Reference in New Issue
Block a user