Skip to content

Commit ac6c7bc

Browse files
committed
fix: UNDEFINED_BEHAVIOR -> UNDEFINED
1 parent 5c4c355 commit ac6c7bc

File tree

9 files changed

+44
-19
lines changed

9 files changed

+44
-19
lines changed

src/DynamicProjectOptions.cmake

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,19 @@ macro(dynamic_project_options)
103103
)
104104
endif()
105105

106+
# Fallback for ENABLE_SANITIZER_UNDEFINED_BEHAVIOR option
107+
foreach(default_type IN ITEMS DEFAULT DEVELOPER_DEFAULT USER_DEFAULT)
108+
if(DEFINED ENABLE_SANITIZER_UNDEFINED_BEHAVIOR_${default_type})
109+
if(DEFINED ENABLE_SANITIZER_UNDEFINED_${default_type})
110+
message(WARNING "Don't set both ENABLE_SANITIZER_UNDEFINED_BEHAVIOR_${default_type} and ENABLE_SANITIZER_UNDEFINED_${default_type}. Use ENABLE_SANITIZER_UNDEFINED_${default_type} only.")
111+
else()
112+
message(DEPRECATION "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR_${default_type} is deprecated. Use ENABLE_SANITIZER_UNDEFINED_${default_type} instead.")
113+
endif()
114+
115+
set(ENABLE_SANITIZER_UNDEFINED_${default_type} ${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR_${default_type}})
116+
endif()
117+
endforeach()
118+
106119
# ccache, clang-tidy, cppcheck are only supported with Ninja and Makefile based generators
107120
# note that it is possible to use Ninja with cl, so this still allows clang-tidy on Windows
108121
# with CL.
@@ -143,7 +156,7 @@ macro(dynamic_project_options)
143156
"0\;ENABLE_UNITY\;OFF\;OFF\;Merge C++ files into larger C++ files, can speed up compilation sometimes"
144157
"0\;ENABLE_SANITIZER_ADDRESS\;OFF\;ON\;Make memory errors into hard runtime errors (windows/linux/macos)"
145158
"0\;ENABLE_SANITIZER_LEAK\;OFF\;OFF\;Make memory leaks into hard runtime errors"
146-
"0\;ENABLE_SANITIZER_UNDEFINED_BEHAVIOR\;OFF\;ON\;Make certain types (numeric mostly) of undefined behavior into runtime errors"
159+
"0\;ENABLE_SANITIZER_UNDEFINED\;OFF\;ON\;Make certain types (numeric mostly) of undefined behavior into runtime errors"
147160
"0\;ENABLE_SANITIZER_THREAD\;OFF\;OFF\;Make thread race conditions into hard runtime errors"
148161
"0\;ENABLE_SANITIZER_MEMORY\;OFF\;OFF\;Make other memory errors into runtime errors"
149162
"0\;ENABLE_CONTROL_FLOW_PROTECTION\;OFF\;OFF\;Enable control flow protection instrumentation"
@@ -255,7 +268,7 @@ macro(dynamic_project_options)
255268
${ENABLE_UNITY_VALUE}
256269
${ENABLE_SANITIZER_ADDRESS_VALUE}
257270
${ENABLE_SANITIZER_LEAK_VALUE}
258-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR_VALUE}
271+
${ENABLE_SANITIZER_UNDEFINED_VALUE}
259272
${ENABLE_SANITIZER_THREAD_VALUE}
260273
${ENABLE_SANITIZER_MEMORY_VALUE}
261274
${ENABLE_CONTROL_FLOW_PROTECTION_VALUE}

src/Index.cmake

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@ macro(project_options)
148148
ENABLE_UNITY
149149
ENABLE_SANITIZER_ADDRESS
150150
ENABLE_SANITIZER_LEAK
151-
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
151+
ENABLE_SANITIZER_UNDEFINED
152+
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR # deprecated, ENABLE_SANITIZER_UNDEFINED
152153
ENABLE_SANITIZER_THREAD
153154
ENABLE_SANITIZER_MEMORY
154155
ENABLE_SANITIZER_POINTER_COMPARE
@@ -260,12 +261,23 @@ macro(project_options)
260261
enable_coverage(${_options_target})
261262
endif()
262263

264+
# Fallback for deprecated ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
265+
if(ProjectOptions_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR)
266+
if(ProjectOptions_ENABLE_SANITIZER_UNDEFINED)
267+
message(WARNING "Don't switch on both ENABLE_SANITIZER_UNDEFINED_BEHAVIOR and ENABLE_SANITIZER_UNDEFINED. Use ENABLE_SANITIZER_UNDEFINED only.")
268+
else()
269+
message(DEPRECATION "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR is deprecated. Use ENABLE_SANITIZER_UNDEFINED instead.")
270+
endif()
271+
272+
set(ProjectOptions_ENABLE_SANITIZER_UNDEFINED ${ProjectOptions_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR})
273+
endif()
274+
263275
# sanitizer options if supported by compiler
264276
enable_sanitizers(
265277
${_options_target}
266278
${ProjectOptions_ENABLE_SANITIZER_ADDRESS}
267279
${ProjectOptions_ENABLE_SANITIZER_LEAK}
268-
${ProjectOptions_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
280+
${ProjectOptions_ENABLE_SANITIZER_UNDEFINED}
269281
${ProjectOptions_ENABLE_SANITIZER_THREAD}
270282
${ProjectOptions_ENABLE_SANITIZER_MEMORY}
271283
${ProjectOptions_ENABLE_SANITIZER_POINTER_COMPARE}

src/Sanitizers.cmake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ function(
88
_project_name
99
ENABLE_SANITIZER_ADDRESS
1010
ENABLE_SANITIZER_LEAK
11-
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
11+
ENABLE_SANITIZER_UNDEFINED
1212
ENABLE_SANITIZER_THREAD
1313
ENABLE_SANITIZER_MEMORY
1414
ENABLE_SANITIZER_POINTER_COMPARE
@@ -18,7 +18,7 @@ function(
1818
# check if the sanitizers are supported
1919
check_sanitizers_support(
2020
SUPPORTS_SANITIZER_ADDRESS
21-
SUPPORTS_SANITIZER_UNDEFINED_BEHAVIOR
21+
SUPPORTS_SANITIZER_UNDEFINED
2222
SUPPORTS_SANITIZER_LEAK
2323
SUPPORTS_SANITIZER_THREAD
2424
SUPPORTS_SANITIZER_MEMORY
@@ -161,7 +161,7 @@ Output variables:
161161
function(
162162
check_sanitizers_support
163163
ENABLE_SANITIZER_ADDRESS
164-
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
164+
ENABLE_SANITIZER_UNDEFINED
165165
ENABLE_SANITIZER_LEAK
166166
ENABLE_SANITIZER_THREAD
167167
ENABLE_SANITIZER_MEMORY

tests/install/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ project(anotherproj VERSION 0.1.0 LANGUAGES CXX C)
1111
option(FEATURE_TESTS "Enable the tests" ON)
1212
if(FEATURE_TESTS)
1313
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
14-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
14+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
1515
endif()
1616

1717
# Initialize project_options
@@ -33,7 +33,7 @@ project_options(
3333
# ENABLE_BUILD_WITH_TIME_TRACE
3434
# ENABLE_UNITY
3535
${ENABLE_SANITIZER_ADDRESS}
36-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
36+
${ENABLE_SANITIZER_UNDEFINED}
3737
# ${ENABLE_SANITIZER_LEAK}
3838
# ${ENABLE_SANITIZER_THREAD}
3939
# ${ENABLE_SANITIZER_MEMORY}

tests/minimal/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ if(ENABLE_TESTING)
4444
if(NOT DISABLE_SANITIZER)
4545
if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
4646
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
47-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
47+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
4848
else()
4949
# or it is MSVC and has run vcvarsall
5050
string(FIND "$ENV{PATH}" "$ENV{VSINSTALLDIR}" index_of_vs_install_dir)
@@ -64,7 +64,7 @@ project_options(
6464
ENABLE_VS_ANALYSIS
6565
${ENABLE_COVERAGE}
6666
${ENABLE_SANITIZER_ADDRESS}
67-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
67+
${ENABLE_SANITIZER_UNDEFINED}
6868
# DISABLE_EXCEPTIONS
6969
# DISABLE_RTTI
7070
# Note: PCH is disabled by default in developer mode because these headers become globally included and they can mask other errors

tests/myproj/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ option(FEATURE_TESTS "Enable the tests" ON)
3838
if(FEATURE_TESTS)
3939
# Enable sanitizers and static analyzers when running the tests
4040
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
41-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
41+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
4242
set(ENABLE_SANITIZER_POINTER_COMPARE "ENABLE_SANITIZER_POINTER_COMPARE")
4343
set(ENABLE_SANITIZER_POINTER_SUBTRACT "ENABLE_SANITIZER_POINTER_SUBTRACT")
4444
endif()
@@ -71,7 +71,7 @@ project_options(
7171
# ENABLE_UNITY
7272
${ENABLE_SANITIZER_ADDRESS}
7373
# ${ENABLE_SANITIZER_LEAK}
74-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
74+
${ENABLE_SANITIZER_UNDEFINED}
7575
${ENABLE_SANITIZER_POINTER_COMPARE}
7676
${ENABLE_SANITIZER_POINTER_SUBTRACT}
7777
# ${ENABLE_SANITIZER_THREAD}

tests/rpi3/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ if(ENABLE_TESTING)
6767
if(NOT DISABLE_SANITIZER)
6868
if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
6969
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
70-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
70+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
7171
else()
7272
# or it is MSVC and has run vcvarsall
7373
string(FIND "$ENV{PATH}" "$ENV{VSINSTALLDIR}" index_of_vs_install_dir)
@@ -90,7 +90,7 @@ project_options(
9090
ENABLE_VS_ANALYSIS
9191
${ENABLE_COVERAGE}
9292
${ENABLE_SANITIZER_ADDRESS}
93-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
93+
${ENABLE_SANITIZER_UNDEFINED}
9494
DISABLE_EXCEPTIONS
9595
DISABLE_RTTI
9696
# Note: PCH is disabled by default in developer mode because these headers become globally included and they can mask other errors

tests/rpi4-vcpkg/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ if(ENABLE_TESTING)
4444
if(NOT DISABLE_SANITIZER)
4545
if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
4646
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
47-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
47+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
4848
else()
4949
# or it is MSVC and has run vcvarsall
5050
string(FIND "$ENV{PATH}" "$ENV{VSINSTALLDIR}" index_of_vs_install_dir)
@@ -64,7 +64,7 @@ project_options(
6464
ENABLE_VS_ANALYSIS
6565
${ENABLE_COVERAGE}
6666
${ENABLE_SANITIZER_ADDRESS}
67-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
67+
${ENABLE_SANITIZER_UNDEFINED}
6868
# DISABLE_EXCEPTIONS
6969
# DISABLE_RTTI
7070
# Note: PCH is disabled by default in developer mode because these headers become globally included and they can mask other errors

tests/rpi4/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ if(ENABLE_TESTING)
6262
if(NOT DISABLE_SANITIZER)
6363
if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
6464
set(ENABLE_SANITIZER_ADDRESS "ENABLE_SANITIZER_ADDRESS")
65-
set(ENABLE_SANITIZER_UNDEFINED_BEHAVIOR "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR")
65+
set(ENABLE_SANITIZER_UNDEFINED "ENABLE_SANITIZER_UNDEFINED")
6666
else()
6767
# or it is MSVC and has run vcvarsall
6868
string(FIND "$ENV{PATH}" "$ENV{VSINSTALLDIR}" index_of_vs_install_dir)
@@ -82,7 +82,7 @@ project_options(
8282
ENABLE_VS_ANALYSIS
8383
${ENABLE_COVERAGE}
8484
${ENABLE_SANITIZER_ADDRESS}
85-
${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
85+
${ENABLE_SANITIZER_UNDEFINED}
8686
DISABLE_EXCEPTIONS
8787
DISABLE_RTTI
8888
# Note: PCH is disabled by default in developer mode because these headers become globally included and they can mask other errors

0 commit comments

Comments
 (0)