| # Speciment count | 
 | N ?= 1 | 
 |  | 
 | # A grep regex for SLICEM features to be skipped for SLICELs | 
 | SLICEM_FEATURES ?= "*" | 
 |  | 
 | # 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 | 
 |  | 
 | SEGDATAS=$(addsuffix /segdata_clbl[lm]_[lr].txt,$(SPECIMENS)) | 
 |  | 
 | include ../fuzzer.mk | 
 |  | 
 | build/segbits_clbx.rdb: $(SPECIMENS_OK) | 
 | 	${XRAY_SEGMATCH} $(SEGMATCH_ARGS) -o build/segbits_clbx.rdb $(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: | 
 | 	$(foreach file, $(wildcard build/*.db), ${XRAY_PARSEDB} --strict $(file);) | 
 |  | 
 | database: build/segbits_clbl.db build/segbits_clbm.db | 
 |  | 
 | build/segbits_clbm.rdb: build/segbits_clbx.rdb | 
 | 	cp $^ $@ | 
 | build/segbits_clbl.rdb: build/segbits_clbx.rdb | 
 | 	cat $^ | grep -E -v $(SLICEM_FEATURES) >$@ | 
 |  | 
 | build/%.db: build/%.rdb | 
 | 	${XRAY_DBFIXUP} --db-root build --zero-db bits.dbf --seg-fn-in $^ --seg-fn-out $@ | 
 | 	${XRAY_MASKMERGE} $(subst .rdb,.db,$(subst segbits,mask,$^)) $(SEGDATAS) | 
 |  | 
 | pushdb: checkdb | 
 | 	${XRAY_MERGEDB} clbll_l build/segbits_clbl.db | 
 | 	${XRAY_MERGEDB} clbll_r build/segbits_clbl.db | 
 | 	${XRAY_MERGEDB} mask_clbll_l build/mask_clbl.db | 
 | 	${XRAY_MERGEDB} mask_clbll_r build/mask_clbl.db | 
 | 	${XRAY_MERGEDB} clblm_l build/segbits_clbm.db | 
 | 	${XRAY_MERGEDB} clblm_r build/segbits_clbm.db | 
 | 	${XRAY_MERGEDB} mask_clblm_l build/mask_clbm.db | 
 | 	${XRAY_MERGEDB} mask_clblm_r build/mask_clbm.db | 
 |  | 
 | .PHONY: checkdb parsedb pushdb |