ASFLAGS = -mno-arch-attr -march=rv64gc
STRIP = strip
PYTHON = python3
AS = as
LD = ld
STRIP = strip
BODYOFFSET = 0


.PHONY: all clean
all: rel.zip
clean:
	git clean -fdX


rel.zip: \
	rel/FILE_ID.DIZ \
	rel/risc-vision \
	rel/risc-vision.png \
	rel/README \
	rel/LEESMIJ \
	rel/COPYING \
	rel/src.tar.gz

risc-vision.debug: risc-vision.o
risc-vision.release: BODYOFFSET = $$((0x82))


rel/%: %.release | rel/
	cp $< $@
rel/src.tar.gz: | rel/
	git archive --format tgz HEAD > $@

rel/%: % | rel/
	cp $< $@


%.zip: | %/
	cd $* && zip -r ../$*.zip -z < FILE_ID.DIZ $(patsubst $*/%,%,$^)

%/:
	mkdir -p $@

%.o: %.S
	$(CROSS_COMPILE)$(AS) $(ASFLAGS) -o $@ $<

%.debug:
	$(CROSS_COMPILE)$(LD) $(LDFLAGS) $^ -o $@

%.release: %.debug %.hdr.sh %.elfhdr.asm
	$(CROSS_COMPILE)$(STRIP) -s $*.debug -o $@.strip
	$(PYTHON) section-stripper.py $@.strip
	dd bs=1 skip=$(BODYOFFSET) if=$@.strip of=$@.body
	nasm $*.elfhdr.asm -o $@.elf
	pigz -mn -c11 -I8192 $@.elf > $@.body.gz
	cat $*.hdr.sh $@.body.gz > $@
	chmod +x $@
