# Common definitions
include ../../common.mak

CFLAGS  += -I../include -D__ASSEMBLY__ -DVERSION=$(VERSION) \
	  -DRELEASE=$(RELEASE) -DPATCHLEVEL=$(PATCHLEVEL)
LDFLAGS = -O2
HEADERS = fba0.h fba2.h eckd0.h eckd1a.h eckd1b.h eckd2.h eckd2dump.h \
          tapedump.h stage3.h tape0.h fba2dump.h

all: data.c tape0.bin

# Prevent make from using some default rules...
%:	%.S

%.o:	%.S
	echo "$(CC) $(CFLAGS) -c -o $@ $<";                        \
	$(CC) $(CFLAGS) -c -o $@ $<

%.exec:	%.o
	@STAGE=$$(                                  \
		echo $@ | awk '                           \
			match($$0,/[0-9]+/){                    \
				print substr($$0,RSTART,RLENGTH)      \
			}                                       \
			/tapedump/{                             \
				print "2"                             \
			}'                                      \
	);                                          \
	case $$STAGE in                             \
		0) SFLAGS="-nostdlib -Wl,-Ttext,0";;      \
		1) SFLAGS="-nostdlib -Wl,-Ttext,0x218";;  \
		2) SFLAGS="-nostdlib -Wl,-Ttext,0x2000";; \
		3) SFLAGS="-nostdlib -Wl,-Ttext,0xA000";; \
	esac;                                       \
	echo "$(CC) $(LDFLAGS) -o $@ $$SFLAGS $<";  \
	$(CC) $(LDFLAGS) -o $@ $$SFLAGS $<

%.bin:	%.exec
	$(OBJCOPY) -O binary $< $@

%.h:	%.bin
	@( echo "const char boot_data_"$(basename $<)"[] = {";\
	hexdump -v -e '1/1 "0x%02x,"' $<;\
	echo "};";\
	echo ;\
	) >$@

data.c: $(HEADERS)
	cat $(HEADERS) >data.c

clean:
	rm -f *.o *.exec *.bin $(HEADERS) data.c tape0.bin

.PHONY: all clean


# Additional manual dependencies

eckd2.o: common.S menu.S sclp.S
fba2.o: common.S menu.S sclp.S
eckd2dump.o: dumpcommon.S
tapedump.o: dumpcommon.S
