CC = gcc
CFLAGS	= -fno-common -Wall -O2 -c\
	  -finhibit-size-directive -fno-ident\
	  -fomit-frame-pointer -fcall-used-ebx
TARGET  = pass-param
FIRST	= stage1
SECOND	= stage2
TOOL	= config

all :${FIRST} ${SECOND} ${TARGET}.bin ${TOOL}

${FIRST}: crt.o bios_fd.o ip1.o param.o ip1.ls
	ld -T ip1.ls -o $@ crt.o bios_fd.o ip1.o param.o\
	-Map ${FIRST}.map

crt.o: crt.S
	${CC} ${CFLAGS} $<

bios_tty.o: bios_tty.c realmode.h
	${CC} ${CFLAGS} $<

bios_fd.o: bios_fd.c realmode.h
	${CC} ${CFLAGS} $<

ip1.o: ip1.c realmode.h bios_fd.h
	${CC} ${CFLAGS} $<

param.o: param.c
	${CC} ${CFLAGS} $<

${SECOND}: setup.o bios_tty.o setup.ls
	ld -T setup.ls -o $@ setup.o bios_tty.o\
	-Map ${SECOND}.map

setup.o: setup.c realmode.h bios_tty.h
	${CC} ${CFLAGS} $<

${TARGET}.bin:	${FIRST} ${SECOND}
	dd if=/dev/zero of=${TARGET}.bin bs=512 count=2880
	dd if=${FIRST} of=${TARGET}.bin conv=notrunc
	dd if=${SECOND} of=${TARGET}.bin bs=512 seek=1 conv=notrunc

${TOOL}: config.c
	gcc -Wall -s -o $@ $<

clean:
	rm -f *.o *.map ${FIRST} ${SECOND} ${TARGET}.bin ${TOOL} 
