@@ -279,14 +279,16 @@ else()
279279endif ()
280280
281281set (CURL_STATIC_LIB ${CURL_INSTALL_DIR} /lib/libcurl.a)
282+ set (CURL_DEPS
283+ nghttp2_external
284+ ${OPENSSL_DEP}
285+ zlib_external
286+ zstd_external
287+ libidn2_external
288+ )
282289
283290# Add dependencies for curl
284- add_dependencies (curl_external
285- nghttp2_external
286- ${OPENSSL_DEP}
287- zlib_external
288- zstd_external
289- libidn2_external)
291+ add_dependencies (curl_external ${CURL_DEPS} )
290292
291293# Now it's time for the main targets!
292294#
@@ -338,23 +340,21 @@ set(COMMON_LINK_LIBS
338340)
339341set (COMMON_LINK_OPTIONS ${LIB_FUZZING_ENGINE_FLAG} )
340342
343+ # Ensure that curl and its dependencies are built before the fuzzers
344+ set (FUZZ_DEPS curl_external ${CURL_DEPS} ${LIB_FUZZING_ENGINE_DEP} )
345+
341346# Helper macro to define a fuzzer target
342347macro (add_curl_fuzzer name proto)
343348 add_executable (${name} ${COMMON_SOURCES} )
344349 target_compile_options (${name} PRIVATE ${COMMON_FLAGS} -DFUZZ_PROTOCOLS_${proto} )
345350 target_include_directories (${name} PRIVATE ${CURL_INCLUDE_DIRS} )
346- target_link_libraries (${name} PRIVATE ${COMMON_LINK_LIBS} ${LIB_FUZZING_ENGINE} )
351+ target_link_libraries (${name} PRIVATE ${COMMON_LINK_LIBS} )
347352 target_link_options (${name} PRIVATE ${COMMON_LINK_OPTIONS} )
353+ add_dependencies (${name} ${FUZZ_DEPS} )
348354endmacro ()
349355
350- # Main fuzzer (all protocols)
351- add_executable (curl_fuzzer ${COMMON_SOURCES} )
352- target_compile_options (curl_fuzzer PRIVATE ${COMMON_FLAGS} -DFUZZ_PROTOCOLS_ALL)
353- target_include_directories (curl_fuzzer PRIVATE ${CURL_INCLUDE_DIRS} )
354- target_link_libraries (curl_fuzzer PRIVATE ${COMMON_LINK_LIBS} ${LIB_FUZZING_ENGINE} )
355- target_link_options (curl_fuzzer PRIVATE ${COMMON_LINK_OPTIONS} )
356-
357- # Protocol-specific fuzzers
356+ # Main fuzzer and protocol-specific fuzzers
357+ add_curl_fuzzer(curl_fuzzer ALL )
358358add_curl_fuzzer(curl_fuzzer_dict DICT)
359359add_curl_fuzzer(curl_fuzzer_file FILE)
360360add_curl_fuzzer(curl_fuzzer_ftp FTP)
@@ -376,39 +376,22 @@ target_compile_options(curl_fuzzer_bufq PRIVATE ${COMMON_FLAGS})
376376target_include_directories (curl_fuzzer_bufq PRIVATE ${CURL_INCLUDE_DIRS} )
377377target_link_libraries (curl_fuzzer_bufq PRIVATE ${COMMON_LINK_LIBS} )
378378target_link_options (curl_fuzzer_bufq PRIVATE ${COMMON_LINK_OPTIONS} )
379+ add_dependencies (curl_fuzzer_bufq ${FUZZ_DEPS} )
379380
380381# URL fuzzer
381382add_executable (fuzz_url fuzz_url.cc)
382383target_compile_options (fuzz_url PRIVATE ${COMMON_FLAGS} )
383384target_include_directories (fuzz_url PRIVATE ${CURL_INCLUDE_DIRS} )
384385target_link_libraries (fuzz_url PRIVATE ${COMMON_LINK_LIBS} )
385386target_link_options (fuzz_url PRIVATE ${COMMON_LINK_OPTIONS} )
387+ add_dependencies (fuzz_url ${FUZZ_DEPS} )
386388
387389# Unit test fuzzer
388390add_executable (curl_fuzzer_fnmatch fuzz_fnmatch.cc)
389391target_compile_options (curl_fuzzer_fnmatch PRIVATE ${COMMON_FLAGS} )
390392target_include_directories (curl_fuzzer_fnmatch PRIVATE ${CURL_INCLUDE_DIRS} )
391393target_link_libraries (curl_fuzzer_fnmatch PRIVATE ${COMMON_LINK_LIBS} )
392394target_link_options (curl_fuzzer_fnmatch PRIVATE ${COMMON_LINK_OPTIONS} )
393-
394- set (FUZZ_DEPS curl_external ${LIB_FUZZING_ENGINE_DEP} zlib_external nghttp2_external ${OPENSSL_DEP} )
395- add_dependencies (curl_fuzzer ${FUZZ_DEPS} )
396- add_dependencies (curl_fuzzer_dict ${FUZZ_DEPS} )
397- add_dependencies (curl_fuzzer_file ${FUZZ_DEPS} )
398- add_dependencies (curl_fuzzer_ftp ${FUZZ_DEPS} )
399- add_dependencies (curl_fuzzer_gopher ${FUZZ_DEPS} )
400- add_dependencies (curl_fuzzer_http ${FUZZ_DEPS} )
401- add_dependencies (curl_fuzzer_https ${FUZZ_DEPS} )
402- add_dependencies (curl_fuzzer_imap ${FUZZ_DEPS} )
403- add_dependencies (curl_fuzzer_mqtt ${FUZZ_DEPS} )
404- add_dependencies (curl_fuzzer_pop3 ${FUZZ_DEPS} )
405- add_dependencies (curl_fuzzer_rtsp ${FUZZ_DEPS} )
406- add_dependencies (curl_fuzzer_smb ${FUZZ_DEPS} )
407- add_dependencies (curl_fuzzer_smtp ${FUZZ_DEPS} )
408- add_dependencies (curl_fuzzer_tftp ${FUZZ_DEPS} )
409- add_dependencies (curl_fuzzer_ws ${FUZZ_DEPS} )
410- add_dependencies (curl_fuzzer_bufq ${FUZZ_DEPS} )
411- add_dependencies (fuzz_url ${FUZZ_DEPS} )
412395add_dependencies (curl_fuzzer_fnmatch ${FUZZ_DEPS} )
413396
414397# Create a custom target for all fuzzers
0 commit comments