1
0
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:
Alexander Grund
2019-12-09 15:49:31 +01:00
committed by Brad King
parent d806263578
commit cb984c6627
2 changed files with 25 additions and 35 deletions

View File

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

View File

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