mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 00:11:07 -06:00
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.
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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})
|
||||
|
||||
Reference in New Issue
Block a user