@@ -409,6 +409,9 @@ include shared.mak
409
409
# to the "<name>" of the corresponding `compat/fsmonitor/fsm-settings-<name>.c`
410
410
# that implements the `fsm_os_settings__*()` routines.
411
411
#
412
+ # Define LINK_FUZZ_PROGRAMS if you want `make all` to also build the fuzz test
413
+ # programs in oss-fuzz/.
414
+ #
412
415
# === Optional library: libintl ===
413
416
#
414
417
# Define NO_GETTEXT if you don't want Git output to be translated.
@@ -752,23 +755,6 @@ SCRIPTS = $(SCRIPT_SH_GEN) \
752
755
753
756
ETAGS_TARGET = TAGS
754
757
755
- # If you add a new fuzzer, please also make sure to run it in
756
- # ci/run-build-and-minimal-fuzzers.sh so that we make sure it still links and
757
- # runs in the future.
758
- FUZZ_OBJS += oss-fuzz/dummy-cmd-main.o
759
- FUZZ_OBJS += oss-fuzz/fuzz-commit-graph.o
760
- FUZZ_OBJS += oss-fuzz/fuzz-config.o
761
- FUZZ_OBJS += oss-fuzz/fuzz-date.o
762
- FUZZ_OBJS += oss-fuzz/fuzz-pack-headers.o
763
- FUZZ_OBJS += oss-fuzz/fuzz-pack-idx.o
764
- .PHONY : fuzz-objs
765
- fuzz-objs : $(FUZZ_OBJS )
766
-
767
- # Always build fuzz objects even if not testing, to prevent bit-rot.
768
- all :: $(FUZZ_OBJS )
769
-
770
- FUZZ_PROGRAMS += $(patsubst % .o,% ,$(filter-out % dummy-cmd-main.o,$(FUZZ_OBJS ) ) )
771
-
772
758
# Empty...
773
759
EXTRA_PROGRAMS =
774
760
@@ -2373,6 +2359,29 @@ ifndef NO_TCLTK
2373
2359
endif
2374
2360
$(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1) SHELL_PATH='$(SHELL_PATH_SQ)' PERL_PATH='$(PERL_PATH_SQ)'
2375
2361
2362
+ # If you add a new fuzzer, please also make sure to run it in
2363
+ # ci/run-build-and-minimal-fuzzers.sh so that we make sure it still links and
2364
+ # runs in the future.
2365
+ FUZZ_OBJS += oss-fuzz/dummy-cmd-main.o
2366
+ FUZZ_OBJS += oss-fuzz/fuzz-commit-graph.o
2367
+ FUZZ_OBJS += oss-fuzz/fuzz-config.o
2368
+ FUZZ_OBJS += oss-fuzz/fuzz-date.o
2369
+ FUZZ_OBJS += oss-fuzz/fuzz-pack-headers.o
2370
+ FUZZ_OBJS += oss-fuzz/fuzz-pack-idx.o
2371
+ .PHONY : fuzz-objs
2372
+ fuzz-objs : $(FUZZ_OBJS )
2373
+
2374
+ # Always build fuzz objects even if not testing, to prevent bit-rot.
2375
+ all :: $(FUZZ_OBJS )
2376
+
2377
+ FUZZ_PROGRAMS += $(patsubst % .o,% ,$(filter-out % dummy-cmd-main.o,$(FUZZ_OBJS ) ) )
2378
+
2379
+ # Build fuzz programs when possible, even without the necessary fuzzing support,
2380
+ # to prevent bit-rot.
2381
+ ifdef LINK_FUZZ_PROGRAMS
2382
+ all :: $(FUZZ_PROGRAMS )
2383
+ endif
2384
+
2376
2385
please_set_SHELL_PATH_to_a_more_modern_shell :
2377
2386
@$$(: )
2378
2387
@@ -3858,22 +3867,22 @@ cover_db_html: cover_db
3858
3867
#
3859
3868
# An example command to build against libFuzzer from LLVM 11.0.0:
3860
3869
#
3861
- # make CC=clang CXX =clang++ \
3870
+ # make CC=clang FUZZ_CXX =clang++ \
3862
3871
# CFLAGS="-fsanitize=fuzzer-no-link,address" \
3863
3872
# LIB_FUZZING_ENGINE="-fsanitize=fuzzer,address" \
3864
3873
# fuzz-all
3865
3874
#
3875
+ FUZZ_CXX ?= $(CC )
3866
3876
FUZZ_CXXFLAGS ?= $(ALL_CFLAGS )
3867
3877
3868
3878
.PHONY : fuzz-all
3879
+ fuzz-all : $(FUZZ_PROGRAMS )
3869
3880
3870
3881
$(FUZZ_PROGRAMS ) : % : % .o oss-fuzz/dummy-cmd-main.o $(GITLIBS ) GIT-LDFLAGS
3871
- $(QUIET_LINK )$(CXX ) $(FUZZ_CXXFLAGS ) -o $@ $(ALL_LDFLAGS ) \
3882
+ $(QUIET_LINK )$(FUZZ_CXX ) $(FUZZ_CXXFLAGS ) -o $@ $(ALL_LDFLAGS ) \
3872
3883
-Wl,--allow-multiple-definition \
3873
3884
$(filter % .o,$^ ) $(filter % .a,$^ ) $(LIBS ) $(LIB_FUZZING_ENGINE )
3874
3885
3875
- fuzz-all : $(FUZZ_PROGRAMS )
3876
-
3877
3886
$(UNIT_TEST_PROGS ) : $(UNIT_TEST_BIN ) /% $X: $(UNIT_TEST_DIR ) /% .o $(UNIT_TEST_DIR ) /test-lib.o $(GITLIBS ) GIT-LDFLAGS
3878
3887
$(call mkdir_p_parent_template)
3879
3888
$(QUIET_LINK )$(CC ) $(ALL_CFLAGS ) -o $@ $(ALL_LDFLAGS ) \
0 commit comments