mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-16 05:26:58 +08:00
Check*CompilerFlag: Modernize modules
- User lower-case names - Wrap in function instead of macro to avoid set-unset calls - Use IN LISTS for foreach
This commit is contained in:

committed by
Brad King

parent
d806263578
commit
cb984c6627
@@ -36,28 +36,23 @@ include_guard(GLOBAL)
|
|||||||
include(CheckCSourceCompiles)
|
include(CheckCSourceCompiles)
|
||||||
include(CMakeCheckCompilerFlagCommonPatterns)
|
include(CMakeCheckCompilerFlagCommonPatterns)
|
||||||
|
|
||||||
macro (CHECK_C_COMPILER_FLAG _FLAG _RESULT)
|
function(check_c_compiler_flag _flag _var)
|
||||||
set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
|
set(CMAKE_REQUIRED_DEFINITIONS "${_flag}")
|
||||||
set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
|
|
||||||
|
|
||||||
# Normalize locale during test compilation.
|
# Normalize locale during test compilation.
|
||||||
set(_CheckCCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
|
set(_locale_vars LC_ALL LC_MESSAGES LANG)
|
||||||
foreach(v ${_CheckCCompilerFlag_LOCALE_VARS})
|
foreach(v IN LISTS _locale_vars)
|
||||||
set(_CheckCCompilerFlag_SAVED_${v} "$ENV{${v}}")
|
set(_locale_vars_saved_${v} "$ENV{${v}}")
|
||||||
set(ENV{${v}} C)
|
set(ENV{${v}} C)
|
||||||
endforeach()
|
endforeach()
|
||||||
CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckCCompilerFlag_COMMON_PATTERNS)
|
check_compiler_flag_common_patterns(_common_patterns)
|
||||||
CHECK_C_SOURCE_COMPILES("int main(void) { return 0; }" ${_RESULT}
|
check_c_source_compiles("int main(void) { return 0; }" ${_var}
|
||||||
# Some compilers do not fail with a bad flag
|
# Some compilers do not fail with a bad flag
|
||||||
FAIL_REGEX "command line option .* is valid for .* but not for C" # GNU
|
FAIL_REGEX "command line option .* is valid for .* but not for C" # GNU
|
||||||
${_CheckCCompilerFlag_COMMON_PATTERNS}
|
${_common_patterns}
|
||||||
)
|
)
|
||||||
foreach(v ${_CheckCCompilerFlag_LOCALE_VARS})
|
foreach(v IN LISTS _locale_vars)
|
||||||
set(ENV{${v}} ${_CheckCCompilerFlag_SAVED_${v}})
|
set(ENV{${v}} ${_locale_vars_saved_${v}})
|
||||||
unset(_CheckCCompilerFlag_SAVED_${v})
|
|
||||||
endforeach()
|
endforeach()
|
||||||
unset(_CheckCCompilerFlag_LOCALE_VARS)
|
set(${_var} "${${_var}}" PARENT_SCOPE)
|
||||||
unset(_CheckCCompilerFlag_COMMON_PATTERNS)
|
endfunction()
|
||||||
|
|
||||||
set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
|
|
||||||
endmacro ()
|
|
||||||
|
@@ -36,28 +36,23 @@ include_guard(GLOBAL)
|
|||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
include(CMakeCheckCompilerFlagCommonPatterns)
|
include(CMakeCheckCompilerFlagCommonPatterns)
|
||||||
|
|
||||||
macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
|
function(check_cxx_compiler_flag _flag _var)
|
||||||
set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
|
set(CMAKE_REQUIRED_DEFINITIONS "${_flag}")
|
||||||
set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
|
|
||||||
|
|
||||||
# Normalize locale during test compilation.
|
# Normalize locale during test compilation.
|
||||||
set(_CheckCXXCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
|
set(_locale_vars LC_ALL LC_MESSAGES LANG)
|
||||||
foreach(v ${_CheckCXXCompilerFlag_LOCALE_VARS})
|
foreach(v IN LISTS _locale_vars)
|
||||||
set(_CheckCXXCompilerFlag_SAVED_${v} "$ENV{${v}}")
|
set(_locale_vars_saved_${v} "$ENV{${v}}")
|
||||||
set(ENV{${v}} C)
|
set(ENV{${v}} C)
|
||||||
endforeach()
|
endforeach()
|
||||||
CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckCXXCompilerFlag_COMMON_PATTERNS)
|
check_compiler_flag_common_patterns(_common_patterns)
|
||||||
CHECK_CXX_SOURCE_COMPILES("int main() { return 0; }" ${_RESULT}
|
check_cxx_source_compiles("int main() { return 0; }" ${_var}
|
||||||
# Some compilers do not fail with a bad flag
|
# Some compilers do not fail with a bad flag
|
||||||
FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
|
FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
|
||||||
${_CheckCXXCompilerFlag_COMMON_PATTERNS}
|
${_common_patterns}
|
||||||
)
|
)
|
||||||
foreach(v ${_CheckCXXCompilerFlag_LOCALE_VARS})
|
foreach(v IN LISTS _locale_vars)
|
||||||
set(ENV{${v}} ${_CheckCXXCompilerFlag_SAVED_${v}})
|
set(ENV{${v}} ${_locale_vars_saved_${v}})
|
||||||
unset(_CheckCXXCompilerFlag_SAVED_${v})
|
|
||||||
endforeach()
|
endforeach()
|
||||||
unset(_CheckCXXCompilerFlag_LOCALE_VARS)
|
set(${_var} "${${_var}}" PARENT_SCOPE)
|
||||||
unset(_CheckCXXCompilerFlag_COMMON_PATTERNS)
|
endfunction()
|
||||||
|
|
||||||
set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
|
|
||||||
endmacro ()
|
|
||||||
|
Reference in New Issue
Block a user