TOOLCHAIN_PREFIX = /opt/riscv32ic/bin/riscv32-unknown-elf-

run: testbench.vvp firmware.hex
	vvp -N testbench.vvp

firmware.hex: firmware.S firmware.c firmware.lds
	$(TOOLCHAIN_PREFIX)gcc -Os -ffreestanding -nostdlib -o firmware.elf firmware.S firmware.c \
		 --std=gnu99 -Wl,-Bstatic,-T,firmware.lds,-Map,firmware.map,--strip-debug -lgcc
	$(TOOLCHAIN_PREFIX)objcopy -O binary firmware.elf firmware.bin
	python3 ../../firmware/makehex.py firmware.bin 4096 > firmware.hex

picorv32_presyn.v: picorv32_presyn.ys picorv32_regs.txt ../../picorv32.v
	yosys -v0 picorv32_presyn.ys

testbench.vvp: testbench.v picorv32_presyn.v
	iverilog -o testbench.vvp testbench.v picorv32_presyn.v

clean:
	rm -f firmware.bin firmware.elf firmware.hex firmware.map
	rm -f picorv32_presyn.v testbench.vvp testbench.vcd