Skip to content

Commit eababf9

Browse files
committed
fix: use a multi-variable parser for check_sanitizers_support
1 parent 886f87b commit eababf9

File tree

3 files changed

+30
-24
lines changed

3 files changed

+30
-24
lines changed

src/Index.cmake

+4
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ macro(project_options)
151151
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
152152
ENABLE_SANITIZER_THREAD
153153
ENABLE_SANITIZER_MEMORY
154+
ENABLE_SANITIZER_POINTER_COMPARE
155+
ENABLE_SANITIZER_POINTER_SUBTRACT
154156
ENABLE_CONTROL_FLOW_PROTECTION
155157
ENABLE_STACK_PROTECTION
156158
ENABLE_OVERFLOW_PROTECTION
@@ -266,6 +268,8 @@ macro(project_options)
266268
${ProjectOptions_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR}
267269
${ProjectOptions_ENABLE_SANITIZER_THREAD}
268270
${ProjectOptions_ENABLE_SANITIZER_MEMORY}
271+
${ProjectOptions_ENABLE_SANITIZER_POINTER_COMPARE}
272+
${ProjectOptions_ENABLE_SANITIZER_POINTER_SUBTRACT}
269273
)
270274

271275
enable_hardening(

src/Sanitizers.cmake

+24-21
Original file line numberDiff line numberDiff line change
@@ -151,16 +151,19 @@ Output variables:
151151
# then pass the sanitizers (e.g. ${ENABLE_SANITIZER_ADDRESS}) to project_options(... ${ENABLE_SANITIZER_ADDRESS} ...)
152152
153153
]]
154-
function(
155-
check_sanitizers_support
156-
ENABLE_SANITIZER_ADDRESS
157-
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
158-
ENABLE_SANITIZER_LEAK
159-
ENABLE_SANITIZER_THREAD
160-
ENABLE_SANITIZER_MEMORY
161-
ENABLE_SANITIZER_POINTER_COMPARE
162-
ENABLE_SANITIZER_POINTER_SUBTRACT
163-
)
154+
function(check_sanitizers_support)
155+
156+
set(options
157+
ENABLE_SANITIZER_ADDRESS
158+
ENABLE_SANITIZER_UNDEFINED_BEHAVIOR
159+
ENABLE_SANITIZER_LEAK
160+
ENABLE_SANITIZER_THREAD
161+
ENABLE_SANITIZER_MEMORY
162+
ENABLE_SANITIZER_POINTER_COMPARE
163+
ENABLE_SANITIZER_POINTER_SUBTRACT
164+
)
165+
cmake_parse_arguments(_ "" "${options}" "" "")
166+
164167
set(SUPPORTED_SANITIZERS "")
165168
if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
166169
OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
@@ -209,24 +212,24 @@ function(
209212
endif()
210213

211214
if("address" IN_LIST SUPPORTED_SANITIZERS)
212-
set(${ENABLE_SANITIZER_ADDRESS} "ENABLE_SANITIZER_ADDRESS" PARENT_SCOPE)
213-
endif()
214-
if("pointer-compare" IN_LIST SUPPORTED_SANITIZERS)
215-
set(${ENABLE_SANITIZER_POINTER_COMPARE} "ENABLE_SANITIZER_POINTER_COMPARE" PARENT_SCOPE)
216-
endif()
217-
if("pointer-subtract" IN_LIST SUPPORTED_SANITIZERS)
218-
set(${ENABLE_SANITIZER_POINTER_SUBTRACT} "ENABLE_SANITIZER_POINTER_SUBTRACT" PARENT_SCOPE)
215+
set(${_ENABLE_SANITIZER_ADDRESS} "ENABLE_SANITIZER_ADDRESS" PARENT_SCOPE)
219216
endif()
220217
if("undefined" IN_LIST SUPPORTED_SANITIZERS)
221-
set(${ENABLE_SANITIZER_UNDEFINED_BEHAVIOR} "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR" PARENT_SCOPE)
218+
set(${_ENABLE_SANITIZER_UNDEFINED_BEHAVIOR} "ENABLE_SANITIZER_UNDEFINED_BEHAVIOR" PARENT_SCOPE)
222219
endif()
223220
if("leak" IN_LIST SUPPORTED_SANITIZERS)
224-
set(${ENABLE_SANITIZER_LEAK} "ENABLE_SANITIZER_LEAK" PARENT_SCOPE)
221+
set(${_ENABLE_SANITIZER_LEAK} "ENABLE_SANITIZER_LEAK" PARENT_SCOPE)
225222
endif()
226223
if("thread" IN_LIST SUPPORTED_SANITIZERS)
227-
set(${ENABLE_SANITIZER_THREAD} "ENABLE_SANITIZER_THREAD" PARENT_SCOPE)
224+
set(${_ENABLE_SANITIZER_THREAD} "ENABLE_SANITIZER_THREAD" PARENT_SCOPE)
228225
endif()
229226
if("memory" IN_LIST SUPPORTED_SANITIZERS)
230-
set(${ENABLE_SANITIZER_MEMORY} "ENABLE_SANITIZER_MEMORY" PARENT_SCOPE)
227+
set(${_ENABLE_SANITIZER_MEMORY} "ENABLE_SANITIZER_MEMORY" PARENT_SCOPE)
228+
endif()
229+
if("pointer-compare" IN_LIST SUPPORTED_SANITIZERS)
230+
set(${_ENABLE_SANITIZER_POINTER_COMPARE} "ENABLE_SANITIZER_POINTER_COMPARE" PARENT_SCOPE)
231+
endif()
232+
if("pointer-subtract" IN_LIST SUPPORTED_SANITIZERS)
233+
set(${_ENABLE_SANITIZER_POINTER_SUBTRACT} "ENABLE_SANITIZER_POINTER_SUBTRACT" PARENT_SCOPE)
231234
endif()
232235
endfunction()

src/StaticAnalyzers.cmake

+2-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,8 @@ macro(enable_cppcheck CPPCHECK_OPTIONS)
5454
elseif(CMAKE_C_STANDARD MATCHES [[99|11]])
5555
set(CMAKE_C_CPPCHECK ${CMAKE_C_CPPCHECK} --std=c${CMAKE_C_STANDARD})
5656
else()
57-
message(
58-
${WARNING_MESSAGE}
59-
"cppcheck doesn't support specified C standard ${CMAKE_C_STANDARD}. Using the cppcheck default C standard version."
57+
message(${WARNING_MESSAGE}
58+
"cppcheck doesn't support C ${CMAKE_C_STANDARD} standard. Using the cppcheck default"
6059
)
6160
endif()
6261
endif()

0 commit comments

Comments
 (0)