diff options
author | Brad King <brad.king@kitware.com> | 2022-04-07 19:00:38 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2022-04-07 19:07:48 (GMT) |
commit | 9dd585d12c54f6d0768aea6526ea627f81f436ad (patch) | |
tree | eec63dd00ceee7b4b32a33d74f1fbac438d7eef7 | |
parent | e9236b6641d9279e353be8a08ffec3be6168c7df (diff) | |
download | CMake-9dd585d12c54f6d0768aea6526ea627f81f436ad.zip CMake-9dd585d12c54f6d0768aea6526ea627f81f436ad.tar.gz CMake-9dd585d12c54f6d0768aea6526ea627f81f436ad.tar.bz2 |
CheckCompilerFlag: Fix regression in locale environment preservation
Fix a typo from commit 660e0d80ae (internal/CheckCompilerFlag: rely on
common configuration, 2022-01-12, v3.23.0-rc1~124^2~1) that caused
locale environment variables to not be restored after they are set
during the check.
-rw-r--r-- | Modules/Internal/CheckFlagCommonConfig.cmake | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CheckCompilerFlag/CheckCCompilerFlag.cmake | 9 | ||||
-rw-r--r-- | Tests/RunCMake/CheckCompilerFlag/CheckCXXCompilerFlag.cmake | 9 |
3 files changed, 20 insertions, 2 deletions
diff --git a/Modules/Internal/CheckFlagCommonConfig.cmake b/Modules/Internal/CheckFlagCommonConfig.cmake index 3934c02..c011c24 100644 --- a/Modules/Internal/CheckFlagCommonConfig.cmake +++ b/Modules/Internal/CheckFlagCommonConfig.cmake @@ -59,8 +59,8 @@ macro(CMAKE_CHECK_FLAG_COMMON_INIT _FUNC _LANG _SRC _PATTERNS) return() endif() # Normalize locale during test compilation. - set(_locale_vars LC_ALL LC_MESSAGES LANG) - foreach(v IN LISTS _locale_vars) + set(_CFCC_locale_vars LC_ALL LC_MESSAGES LANG) + foreach(v IN LISTS _CFCC_locale_vars) set(_CMAKE_CHECK_FLAG_COMMON_CONFIG_locale_vars_saved_${v} "$ENV{${v}}") set(ENV{${v}} C) endforeach() diff --git a/Tests/RunCMake/CheckCompilerFlag/CheckCCompilerFlag.cmake b/Tests/RunCMake/CheckCompilerFlag/CheckCCompilerFlag.cmake index 79d67e5..276158c 100644 --- a/Tests/RunCMake/CheckCompilerFlag/CheckCCompilerFlag.cmake +++ b/Tests/RunCMake/CheckCompilerFlag/CheckCCompilerFlag.cmake @@ -4,6 +4,10 @@ include(CheckCompilerFlag) set(C 1) # test that this is tolerated +# test that the check uses an isolated locale +set(_env_LC_ALL "${LC_ALL}") +set(ENV{LC_ALL} "BAD") + check_compiler_flag(C "-_this_is_not_a_flag_" SHOULD_FAIL) if(SHOULD_FAIL) message(SEND_ERROR "invalid C compile flag didn't fail.") @@ -22,3 +26,8 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU") # LCC C compiler silently ignore -frtti i message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-frtti' check passed but should have failed") endif() endif() + +if(NOT "$ENV{LC_ALL}" STREQUAL "BAD") + message(SEND_ERROR "ENV{LC_ALL} was not preserved by check_compiler_flag") +endif() +set(ENV{LC_ALL} ${_env_LC_ALL}) diff --git a/Tests/RunCMake/CheckCompilerFlag/CheckCXXCompilerFlag.cmake b/Tests/RunCMake/CheckCompilerFlag/CheckCXXCompilerFlag.cmake index 4b20ebd..dec31ec 100644 --- a/Tests/RunCMake/CheckCompilerFlag/CheckCXXCompilerFlag.cmake +++ b/Tests/RunCMake/CheckCompilerFlag/CheckCXXCompilerFlag.cmake @@ -4,6 +4,10 @@ include(CheckCompilerFlag) set(CXX 1) # test that this is tolerated +# test that the check uses an isolated locale +set(_env_LC_ALL "${LC_ALL}") +set(ENV{LC_ALL} "BAD") + check_compiler_flag(CXX "-_this_is_not_a_flag_" SHOULD_FAIL) if(SHOULD_FAIL) message(SEND_ERROR "invalid CXX compile flag didn't fail.") @@ -15,3 +19,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ message(SEND_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed") endif() endif() + +if(NOT "$ENV{LC_ALL}" STREQUAL "BAD") + message(SEND_ERROR "ENV{LC_ALL} was not preserved by check_compiler_flag") +endif() +set(ENV{LC_ALL} ${_env_LC_ALL}) |