| 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 |
| |