# This is a bad Makefile
# So why does it exist?
# Because the alternative is worse
# NOTE: THIS DOESN'T ACTUALLY RUN ANY FLOW

VARIANT:=18T_ms
TRACKS:=$(firstword $(subst _, ,${VARIANT}))

ifeq (${TRACKS},18T)
SPACE:=6.05
endif
ifeq (${TRACKS},15T)
SPACE:=4.94
endif
ifeq (${TRACKS},12T)
SPACE:=3.83
endif

ifeq (${TRACKS},18T)
PITCH:=13.32
endif
ifeq (${TRACKS},15T)
PITCH:=11.10
endif
ifeq (${TRACKS},12T)
PITCH:=8.88
endif

change:
	@sed -i 's/18T_ms/${VARIANT}/g' pnr/innovus_config.tcl
	@sed -i 's/18T_ms/${VARIANT}/g' pnr/setup.tcl
	@sed -i 's/18T/${TRACKS}/g' pnr/setup.tcl
	@sed -i 's/6.05/${SPACE}/g' pnr/PLUG/INNOVUS/post_init.tcl
	@sed -i 's/13.32/${PITCH}/g' pnr/PLUG/INNOVUS/post_init.tcl

clean:
	@sed -i 's/${VARIANT}/18T_ms/g' pnr/innovus_config.tcl
	@sed -i 's/${VARIANT}/18T_ms/g' pnr/setup.tcl
	@sed -i 's/${TRACKS}/18T/g' pnr/setup.tcl
	@sed -i 's/${SPACE}/6.05/g' pnr/PLUG/INNOVUS/post_init.tcl
	@sed -i 's/${PITCH}/13.32/g' pnr/PLUG/INNOVUS/post_init.tcl
