aboutsummaryrefslogtreecommitdiffstats
path: root/ice40/regressions/Makefile
blob: 7e581ae652d6db21bb93e02dac2443e69d2088ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
NPNR = ../../../nextpnr-ice40
override NPNR := $(abspath $(NPNR))
JSON := $(wildcard */*.json)
SH := $(wildcard */*.sh)
SH_BASENAME := $(patsubst %.sh,%,$(SH))
JSON := $(filter-out $(addsuffix .json,$(SH_BASENAME)),$(JSON))
JSON_OUTPUT := $(patsubst %.json,%_postpnr.v,$(JSON))
SH_OUTPUT := $(patsubst %.sh,%_postpnr.v,$(SH))

all: $(JSON_OUTPUT) $(SH_OUTPUT)

ifeq ($(NPNR),)
	$(error "$$(NPNR) must point to a nextpnr-ice40 binary (currently: empty)")
endif

$(NPNR):
ifeq ($(wildcard $(NPNR)),)
	$(error "$$(NPNR) must point to a nextpnr-ice40 binary (currently: $@)")
endif

$(JSON_OUTPUT): %_postpnr.v: %.json $(wildcard %.pcf) $(wildcard %.npnr) $(NPNR)
	$(NPNR) --json $*.json --asc $*.asc $(if $(wildcard $*.pcf),--pcf $*.pcf,) $(if $(wildcard $*.npnr),$(shell cat $*.npnr),) > /dev/null 2>&1
	icebox_vlog $*.asc > $@

$(SH_OUTPUT): %_postpnr.v: %.sh $(NPNR)
	cd $(dir $@) && NPNR=$(NPNR) bash $(notdir $*.sh) > /dev/null 2>&1
	if [ -f "$*.asc" ]; then \
		icebox_vlog $*.asc > $@; \
	else \
		touch $@; \
	fi

clean:
	@rm -f */*.asc $(JSON_OUTPUT) $(SH_OUTPUT)