Skip to content

Commit b81902b

Browse files
committed
Merge branch 'v37-bugfix'
2 parents 88de5e5 + 37b9baa commit b81902b

7 files changed

+58
-18
lines changed

CMakePresets.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
},
5656
{
5757
"name": "gcg-debug-nm",
58-
"inherits": "gcg-default",
58+
"inherits": "gcg-debug",
5959
"displayName": "GCG Default Debug Config (native memory)",
6060
"description": "Default GCG development debug build configuration with native memory handling",
6161
"hidden": true,

cmake/Modules/FindASan.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,9 @@ function (add_sanitize_address TARGET)
5757

5858
sanitizer_add_flags(${TARGET} "AddressSanitizer" "ASan")
5959
endfunction ()
60+
61+
include(FindPackageHandleStandardArgs)
62+
find_package_handle_standard_args(ASan
63+
REQUIRED_VARS
64+
ASan_FLAG_DETECTED
65+
)

cmake/Modules/FindSanitizers.cmake

+34-13
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,29 @@
2626
# link against the sanitizers.
2727
option(SANITIZE_LINK_STATIC "Try to link static against sanitizers." Off)
2828

29-
30-
31-
3229
set(FIND_QUIETLY_FLAG "")
3330
if (DEFINED Sanitizers_FIND_QUIETLY)
3431
set(FIND_QUIETLY_FLAG "QUIET")
3532
endif ()
3633

37-
find_package(ASan ${FIND_QUIETLY_FLAG})
38-
find_package(TSan ${FIND_QUIETLY_FLAG})
39-
find_package(MSan ${FIND_QUIETLY_FLAG})
40-
find_package(UBSan ${FIND_QUIETLY_FLAG})
41-
42-
34+
list(APPEND REQUIRED_SANITIZERS "")
4335

36+
if(SANITIZE_ADDRESS)
37+
find_package(ASan ${FIND_QUIETLY_FLAG})
38+
list(APPEND REQUIRED_SANITIZERS "ASan_FOUND")
39+
endif()
40+
if(SANITIZE_THREAD)
41+
find_package(TSan ${FIND_QUIETLY_FLAG})
42+
list(APPEND REQUIRED_SANITIZERS "TSan_FOUND")
43+
endif()
44+
if(SANITIZE_MEMORY)
45+
find_package(MSan ${FIND_QUIETLY_FLAG})
46+
list(APPEND REQUIRED_SANITIZERS "MSan_FOUND")
47+
endif()
48+
if(SANITIZE_UNDEFINED)
49+
find_package(UBSan ${FIND_QUIETLY_FLAG})
50+
list(APPEND REQUIRED_SANITIZERS "UBSan_FOUND")
51+
endif()
4452

4553
function(sanitizer_add_blacklist_file FILE)
4654
if(NOT IS_ABSOLUTE ${FILE})
@@ -79,9 +87,22 @@ function(add_sanitizers ...)
7987
endif ()
8088

8189
# Add sanitizers for target.
82-
add_sanitize_address(${TARGET})
83-
add_sanitize_thread(${TARGET})
84-
add_sanitize_memory(${TARGET})
85-
add_sanitize_undefined(${TARGET})
90+
if(SANITIZE_ADDRESS)
91+
add_sanitize_address(${TARGET})
92+
endif()
93+
if(SANITIZE_THREAD)
94+
add_sanitize_thread(${TARGET})
95+
endif()
96+
if(SANITIZE_MEMORY)
97+
add_sanitize_memory(${TARGET})
98+
endif()
99+
if(SANITIZE_UNDEFINED)
100+
add_sanitize_undefined(${TARGET})
101+
endif()
86102
endforeach ()
87103
endfunction(add_sanitizers)
104+
105+
include(FindPackageHandleStandardArgs)
106+
find_package_handle_standard_args(Sanitizers
107+
REQUIRED_VARS
108+
${REQUIRED_SANITIZERS})

cmake/Modules/FindTSan.cmake

+6
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,9 @@ function (add_sanitize_thread TARGET)
6363

6464
sanitizer_add_flags(${TARGET} "ThreadSanitizer" "TSan")
6565
endfunction ()
66+
67+
include(FindPackageHandleStandardArgs)
68+
find_package_handle_standard_args(TSan
69+
REQUIRED_VARS
70+
TSan_FLAG_DETECTED
71+
)

cmake/Modules/FindUBSan.cmake

+6-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ function (add_sanitize_undefined TARGET)
4141
if (NOT SANITIZE_UNDEFINED)
4242
return()
4343
endif ()
44-
4544
sanitizer_add_flags(${TARGET} "UndefinedBehaviorSanitizer" "UBSan")
4645
endfunction ()
46+
47+
include(FindPackageHandleStandardArgs)
48+
find_package_handle_standard_args(UBSan
49+
REQUIRED_VARS
50+
UBSan_FLAG_DETECTED
51+
)

cmake/Modules/sanitize-helpers.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ function (sanitizer_check_compiler_flags FLAG_CANDIDATES NAME PREFIX)
117117
if (${PREFIX}_FLAG_DETECTED)
118118
# If compiler is a GNU compiler, search for static flag, if
119119
# SANITIZE_LINK_STATIC is enabled.
120-
if (SANITIZE_LINK_STATIC AND ("${COMPILER}" STREQUAL "GNU"))
120+
if (SANITIZE_LINK_STATIC AND (${COMPILER} STREQUAL "GNU"))
121121
string(TOLOWER ${PREFIX} PREFIX_lower)
122122
sanitizer_check_compiler_flag(
123123
"-static-lib${PREFIX_lower}" ${LANG}

src/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,10 @@ generate_export_header(libgcg BASE_NAME gcg EXPORT_FILE_NAME ${PROJECT_BINARY_DI
491491
target_compile_definitions(gcg PRIVATE GCG_STATIC_DEFINE)
492492

493493
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
494-
find_package(Sanitizers)
495-
add_sanitizers(gcg)
494+
if (SANITIZE_ADDRESS OR SANITIZE_MEMORY OR SANITIZE_THREAD OR SANITIZE_UNDEFINED)
495+
find_package(Sanitizers)
496+
add_sanitizers(gcg)
497+
endif()
496498
endif()
497499

498500
target_link_libraries(gcg

0 commit comments

Comments
 (0)