blob: 15cf6dc479def295f4e9d7c9de1eb84cda185a75 [file] [log] [blame] [edit]
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
# Developer options for quicker runs
# Run algorithm, but only a small number of iterations
QUICK=N
# Skip metadata steps like tile and part generation
# Ex: FUZZONLY=N: 30 min, FUZZONLY=Y: 6 min
FUZZONLY=N
# 074 fuzzer isn't changed often and is slow
# Allow building without it
BITONLY=N
all:
clean: clean_fuzzers clean_logs clean_locks
clean_locks:
rm -rf /tmp/segbits_*.db.lock
define fuzzer
# $(1) - Fuzzer name/directory
# $(2) - Space seperated list of dependencies for the fuzzer.
# Make the all target depend on the run.ok file for the fuzzer.
all: $(1)/run.ok
# Make the clean target run `make clean` in the fuzzer's directory.
clean_fuzzers::
$$(MAKE) -C $(1) clean
clean_logs::
rm -rf $(1)/logs
# Describe how to create the fuzzer's run.ok file.
# This command must start with a + to tell make to pass the jobserver
# parameters downwards.
ifeq ($(VERBOSE),Y)
# When verbose we just call make directory
$(1)/run.ok: $(addsuffix /run.ok,$(2))
$$(MAKE) -C $(1) run
else
# When not verbose, we use the run_fuzzer wrapper which will save the results
# to log files.
$(1)/run.ok: $(addsuffix /run.ok,$(2))
+@$(SELF_DIR)/run_fuzzer.py $(1)
endif
endef
$(eval $(call fuzzer,000-init-db,))
ifneq ($(FUZZONLY),Y)
$(eval $(call fuzzer,001-part-yaml,000-init-db))
$(eval $(call fuzzer,002-tilegrid,001-part-yaml))
else
all:: 002-tilegrid/run.ok
touch 002-tilegrid/run.ok
endif
# part_only runs the fuzzers required for supporting additional parts.
# Note: In theory this includes 002-tilegrid, but there isn't support for
# multiple tilegrid's per family at this time.
part_only:
+$(MAKE) -C 001-part-yaml run
.PHONY: all clean clean_fuzzers clean_logs quick part_only