@@ -30,6 +30,10 @@ endif()
3030########################################################
3131
3232project (ledger-polkadot VERSION 0.0.0)
33+
34+ # Include common fuzzing configuration
35+ include (deps/ledger-zxlib/fuzzing/FuzzingCommon.cmake )
36+
3337set (CMAKE_CXX_STANDARD 17)
3438cmake_policy (SET CMP0025 NEW )
3539cmake_policy (SET CMP0144 NEW )
@@ -39,10 +43,6 @@ set(HUNTER_TLS_VERIFY OFF)
3943
4044enable_testing ()
4145
42- option (ENABLE_FUZZING "Enable fuzzing instrumentation and build fuzz targets" OFF )
43- option (ENABLE_COVERAGE "Enable source code coverage instrumentation" OFF )
44- option (ENABLE_SANITIZERS "Enable ASAN and UBSAN" OFF )
45-
4646string (APPEND CMAKE_C_FLAGS " -fno-omit-frame-pointer -g" )
4747string (APPEND CMAKE_CXX_FLAGS " -fno-omit-frame-pointer -g" )
4848string (APPEND CMAKE_LINKER_FLAGS " -fno-omit-frame-pointer -g" )
@@ -64,46 +64,7 @@ FetchContent_MakeAvailable(nlohmann_json)
6464hunter_add_package (GTest )
6565find_package (GTest CONFIG REQUIRED )
6666
67- if (ENABLE_FUZZING)
68- add_definitions (-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1 )
69- SET (ENABLE_SANITIZERS ON CACHE BOOL "Sanitizer automatically enabled" FORCE )
70- SET (CMAKE_BUILD_TYPE Debug)
71-
72- if (DEFINED ENV{FUZZ_LOGGING})
73- add_definitions (-DFUZZING_LOGGING )
74- message (FATAL_ERROR "Fuzz logging enabled" )
75- endif ()
76-
77- set (CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,bugprone-*,cert-*,clang-analyzer-*,-cert-err58-cpp,misc-*)
78-
79- if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "Clang" )
80- if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
81- message (FATAL_ERROR "Clang version must be at least 10.0!" )
82- endif ()
83- else ()
84- message (FATAL_ERROR
85- "Unsupported compiler! Fuzzing requires Clang 10.\n "
86- "1. Install clang-10 \n "
87- "2. Use -DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clang++-10" )
88- endif ()
89-
90- string (APPEND CMAKE_C_FLAGS " -fsanitize=fuzzer-no-link" )
91- string (APPEND CMAKE_CXX_FLAGS " -fsanitize=fuzzer-no-link" )
92- string (APPEND CMAKE_LINKER_FLAGS " -fsanitize=fuzzer-no-link" )
93- endif ()
94-
95- if (ENABLE_COVERAGE)
96- string (APPEND CMAKE_C_FLAGS " -fprofile-instr-generate -fcoverage-mapping" )
97- string (APPEND CMAKE_CXX_FLAGS " -fprofile-instr-generate -fcoverage-mapping" )
98- string (APPEND CMAKE_LINKER_FLAGS " -fprofile-instr-generate -fcoverage-mapping" )
99- endif ()
100-
101- if (ENABLE_SANITIZERS)
102- string (APPEND CMAKE_C_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined" )
103- string (APPEND CMAKE_CXX_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined" )
104- string (APPEND CMAKE_LINKER_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined" )
105- endif ()
106-
67+ # Fuzzing configuration is now handled by FuzzingCommon.cmake
10768set (RETRIEVE_MAJOR_CMD
10869 "cat ${CMAKE_CURRENT_SOURCE_DIR} /app/Makefile.version | grep APPVERSION_M | cut -b 14- | tr -d '\n '"
10970)
@@ -171,25 +132,24 @@ target_include_directories(app_lib PUBLIC
171132##############################################################
172133##############################################################
173134# Fuzz Targets
174- if (ENABLE_FUZZING)
175- set (FUZZ_TARGETS
176- parser_parse
177- metadata_parser_array
178- metadata_parser_composite
179- metadata_parser_primitives
180- metadata_parser_sequence
181- metadata_parser_variant
182- )
183-
184- foreach (target ${FUZZ_TARGETS} )
185- add_executable (fuzz-${target} ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/${target}.cpp )
186- target_link_libraries (fuzz-${target} PRIVATE app_lib )
187- target_link_options (fuzz-${target} PRIVATE "-fsanitize=fuzzer" )
188- endforeach ()
135+ if (ENABLE_FUZZING) # Fuzz Targets
136+ # Setup fuzzing directories
137+ setup_fuzz_directories ()
138+
139+ # Add fuzz targets using the common macro
140+ add_fuzz_target (parser_parse ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/parser_parse.cpp app_lib )
141+ add_fuzz_target (metadata_parser_composite ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_composite.cpp app_lib )
142+ add_fuzz_target (metadata_parser_sequence ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_sequence.cpp app_lib )
143+ add_fuzz_target (metadata_parser_array ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_array.cpp app_lib )
144+ add_fuzz_target (metadata_parser_tuple ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_tuple.cpp app_lib )
145+ add_fuzz_target (metadata_parser_primitives ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_primitives.cpp app_lib )
146+ add_fuzz_target (metadata_parser_variant ${CMAKE_CURRENT_SOURCE_DIR} /fuzz/metadata_parser_variant.cpp app_lib )
147+
189148else ()
190- #############################################################
191- # Tests
192- file (GLOB_RECURSE TESTS_SRC
149+ # #############################################################
150+ # #############################################################
151+ # Tests
152+ file (GLOB_RECURSE TESTS_SRC
193153 ${CMAKE_CURRENT_SOURCE_DIR} /tests/*.cpp )
194154
195155 add_executable (unittests ${TESTS_SRC} )
@@ -208,4 +168,4 @@ else()
208168 add_compile_definitions (TESTVECTORS_DIR= "${CMAKE_CURRENT_SOURCE_DIR} /tests/" )
209169 add_test (NAME unittests COMMAND unittests )
210170 set_tests_properties (unittests PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /tests )
211- endif ()
171+ endif ()
0 commit comments