@@ -3,7 +3,6 @@ include(cmake/LibFuzzer.cmake)
33include (CMakeDependentOption)
44include (CheckCXXCompilerFlag)
55
6-
76macro (myproject_setup_options)
87 option (myproject_ENABLE_HARDENING "Enable hardening" ON )
98 option (myproject_ENABLE_COVERAGE "Enable coverage reporting" OFF )
@@ -14,7 +13,6 @@ macro(myproject_setup_options)
1413 myproject_ENABLE_HARDENING
1514 OFF )
1615
17-
1816 if ((CMAKE_CXX_COMPILER_ID MATCHES ".*Clang.*" OR CMAKE_CXX_COMPILER_ID MATCHES ".*GNU.*" ) AND NOT WIN32 )
1917 set (SUPPORTS_UBSAN ON )
2018 else ()
@@ -27,10 +25,6 @@ macro(myproject_setup_options)
2725 set (SUPPORTS_ASAN ON )
2826 endif ()
2927
30- myproject_check_libfuzzer_support(LIBFUZZER_SUPPORTED)
31- option (myproject_BUILD_FUZZ_TESTS "Enable fuzz testing executable" ${LIBFUZZER_SUPPORTED} )
32-
33-
3428 if (NOT PROJECT_IS_TOP_LEVEL OR myproject_PACKAGING_MAINTAINER_MODE)
3529 option (myproject_ENABLE_IPO "Enable IPO/LTO" OFF )
3630 option (myproject_WARNINGS_AS_ERRORS "Treat Warnings As Errors" OFF )
@@ -78,6 +72,16 @@ macro(myproject_setup_options)
7872 myproject_ENABLE_PCH
7973 myproject_ENABLE_CACHE)
8074 endif ()
75+
76+ myproject_check_libfuzzer_support(LIBFUZZER_SUPPORTED)
77+ if (LIBFUZZER_SUPPORTED AND (myproject_ENABLE_SANITIZER_ADDRESS OR myproject_ENABLE_SANITIZER_THREAD OR myproject_ENABLE_SANITIZER_UNDEFINED))
78+ set (DEFAULT_FUZZER ON )
79+ else ()
80+ set (DEFAULT_FUZZER OFF )
81+ endif ()
82+
83+ option (myproject_BUILD_FUZZ_TESTS "Enable fuzz testing executable" ${DEFAULT_FUZZER} )
84+
8185endmacro ()
8286
8387macro (myproject_global_options)
@@ -88,13 +92,21 @@ macro(myproject_global_options)
8892
8993 if (myproject_ENABLE_HARDENING AND myproject_ENABLE_GLOBAL_HARDENING)
9094 include (cmake/Hardening.cmake)
91- set (ENABLE_UBSAN_MINIMAL_RUNTIME NOT myproject_ENABLE_SANITIZER_UNDEFINED)
95+ if (myproject_ENABLE_SANITIZER_UNDEFINED
96+ OR myproject_ENABLE_SANITIZER_ADDRESS
97+ OR myproject_ENABLE_SANITIZER_THREAD
98+ OR myproject_ENABLE_SANITIZER_LEAK)
99+ set (ENABLE_UBSAN_MINIMAL_RUNTIME FALSE )
100+ else ()
101+ set (ENABLE_UBSAN_MINIMAL_RUNTIME TRUE )
102+ endif ()
103+ message ("${myproject_ENABLE_HARDENING} ${ENABLE_UBSAN_MINIMAL_RUNTIME} ${myproject_ENABLE_SANITIZER_UNDEFINED} " )
92104 myproject_enable_hardening(myproject_options ON ${ENABLE_UBSAN_MINIMAL_RUNTIME} )
93105 endif ()
94106endmacro ()
95107
96108macro (myproject_local_options)
97- if (PROJECT_IS_TOP_LEVEL)
109+ if (PROJECT_IS_TOP_LEVEL)
98110 include (cmake/StandardProjectSettings.cmake)
99111 endif ()
100112
@@ -165,7 +177,11 @@ macro(myproject_local_options)
165177
166178 if (myproject_ENABLE_HARDENING AND NOT myproject_ENABLE_GLOBAL_HARDENING)
167179 include (cmake/Hardening.cmake)
168- set (ENABLE_UBSAN_MINIMAL_RUNTIME NOT myproject_ENABLE_SANITIZER_UNDEFINED)
180+ if (myproject_ENABLE_SANITIZER_UNDEFINED)
181+ set (ENABLE_UBSAN_MINIMAL_RUNTIME FALSE )
182+ else ()
183+ set (ENABLE_UBSAN_MINIMAL_RUNTIME TRUE )
184+ endif ()
169185 myproject_enable_hardening(myproject_options OFF ${ENABLE_UBSAN_MINIMAL_RUNTIME} )
170186 endif ()
171187
0 commit comments