SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) N ?= 1 CLB_DBFIXUP ?= # Fuzzer that can accept SLICEL data # ie set to N if only for SLICEM SLICEL ?= Y # This set of variables are used to store the increment # in the number of CLBs in case they are not enough and # the generated database is inconsistent CLBN ?= 0 INC ?= 50 VAR ?= "CLBN=$$(($(CLBN) + $(INC)))" ENV_VAR ?= "CLBN=$(CLBN)" ITER ?= 0 MAX_ITER ?= 10 FUZDIR = ${PWD} SEGMATCH_ARGS ?=-m 2 -M 2 include $(SELF_DIR)/fuzzer.mk database: build/segbits_clbx.db ifeq ($(SLICEL),Y) SEGDATAS=$(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) else SEGDATAS=$(addsuffix /segdata_clblm_[lr].txt,$(SPECIMENS)) endif build/segbits_clbx.rdb: $(SPECIMENS_OK) ${XRAY_SEGMATCH} $(SEGMATCH_ARGS) -o build/segbits_clbx.rdb $(SEGDATAS) build/segbits_clbx.db: build/segbits_clbx.rdb ifeq ($(CLB_DBFIXUP),Y) ${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@ else cp $^ $@ endif ${XRAY_MASKMERGE} build/mask_clbx.db $(SEGDATAS) checkdb: # If the database presents errors or is incomplete, the fuzzer is rerun. # When it reaches the maximum number of iterations it fails. @if [ $(ITER) -gt $(MAX_ITER) ]; then \ echo "Max Iterations reached. Fuzzer unsolvable."; \ exit 1; \ fi $(MAKE) parsedb || $(MAKE) $(VAR) ITER=$$(($(ITER) + 1)) run parsedb: ${XRAY_PARSEDB} --strict build/segbits_clbx.db pushdb: checkdb ifeq ($(SLICEL),Y) ${XRAY_MERGEDB} clbll_l build/segbits_clbx.db ${XRAY_MERGEDB} clbll_r build/segbits_clbx.db ${XRAY_MERGEDB} mask_clbll_l build/mask_clbx.db ${XRAY_MERGEDB} mask_clbll_r build/mask_clbx.db endif ${XRAY_MERGEDB} clblm_l build/segbits_clbx.db ${XRAY_MERGEDB} clblm_r build/segbits_clbx.db ${XRAY_MERGEDB} mask_clblm_l build/mask_clbx.db ${XRAY_MERGEDB} mask_clblm_r build/mask_clbx.db .PHONY: database pushdb checkdb parsedb