On Tue, Apr 09, 2024 at 02:58:28PM -0700, Josh Steadmon wrote: > > It would have been easier on the eyes if we had the fuzz things > > together, perhaps like this simplified version? We build FUZZ_OBJS > > either way, and when the LINK_FUZZ_PROGRAMS is requested, we follow > > the fuzz-all recipe, too. > > We need the LINK_FUZZ_PROGRAMS conditional to happen after we import > config.mak.uname (line 1434 in my V1). We also need to define FUZZ_OBJS > prior to adding it to OBJECTS (line 2698 in V1). I can move all of the > fuzz-definition within that range, keeping everything in one place at > the cost of a larger diff. I'll do that for V2, but if you prefer > otherwise please let me know. > > Although I'm not 100% sure that we even need to add FUZZ_OBJS to > OBJECTS, so let me check that tomorrow. If not, then I can move > everything to the bottom of the Makefile where we also define fuzz-all > and the build rules for FUZZ_PROGRAMS. The conditional has to be read handled while reading the Makefile, but as a "simple" variable, OBJECTS isn't expanded until the whole Makefile has been read. So for example this out-of-order definition works: diff --git a/Makefile b/Makefile index 533eaae612..5dbf1935a1 100644 --- a/Makefile +++ b/Makefile @@ -755,6 +755,7 @@ ETAGS_TARGET = TAGS # If you add a new fuzzer, please also make sure to run it in # ci/run-build-and-minimal-fuzzers.sh so that we make sure it still links and # runs in the future. +OBJECTS += $(FUZZ_OBJS) FUZZ_OBJS += oss-fuzz/dummy-cmd-main.o FUZZ_OBJS += oss-fuzz/fuzz-commit-graph.o FUZZ_OBJS += oss-fuzz/fuzz-config.o @@ -2695,7 +2696,6 @@ OBJECTS += $(SCALAR_OBJS) OBJECTS += $(PROGRAM_OBJS) OBJECTS += $(TEST_OBJS) OBJECTS += $(XDIFF_OBJS) -OBJECTS += $(FUZZ_OBJS) OBJECTS += $(REFTABLE_OBJS) $(REFTABLE_TEST_OBJS) OBJECTS += $(UNIT_TEST_OBJS) Now whether that is useful for organizing the Makefile, I don't know, but I thought I'd throw it out there in case it helps you. -Peff