BIN=	/usr/local/bin

todo:	tools images

MKB=	tools/MKrom
PST_BIN=	post/_o/post.arm
LDR_BIN=	load/_o/load.arm
MON_BIN=	mon/_o/mon.arm
TST_BIN=	os_test/_o/os_test.arm

#----------------- Rules for libraries
libBIOS.elf:
	cd libBIOS; make; cd ..

#----------------- Rules for binaries (ELF)
post.elf:	libBIOS.elf
	cd post; make; cd ..

load.elf:	libBIOS.elf
	cd load; make; cd ..

mon.elf:	libBIOS.elf
	cd mon; make; cd ..

ostest.elf:	libBIOS.elf
	cd os_test; make; cd ..

#----------------- Rules for ROM/DLOAD images
images:	fw16sh.rom os.rom

fw16.rom:		$(MKB) post.elf
	$(MKB) fw16.rom $(PST_BIN) 16

sh.rom:		$(MKB) load.elf mon.elf
	$(MKB) sh.rom $(LDR_BIN) $(MON_BIN) $(MAP_BIN) # $(LCA_BIN)
	
os.rom:	$(MKB) load.elf ostest.elf
	$(MKB) os.rom $(LDR_BIN) $(TST_BIN)

fw16sh.rom:	$(MKB) fw16.rom sh.rom
	@dd if=/dev/zero of=__k__ bs=1k count=16
	@cat fw16.rom __k__ >__q__
	@dd if=__q__ of=__k__ bs=1k count=16
	@cat __k__ sh.rom >fw16sh.rom
	@rm -f __?__

#----------------- Rules for TOOLS
tools:	$(MKA) $(MKB)

$(MKB):	tools/MKrom.c libBIOS/_i/libBIOS.h
	gcc -o $(MKB) -IlibBIOS/_i tools/MKrom.c

#----------------- Rules for CLEANING
clean:
	cd libBIOS; $(MAKE) clean; cd ..
	cd post; $(MAKE) clean; cd ..
	cd load; $(MAKE) clean; cd ..
	cd mon; $(MAKE) clean; cd ..
	cd os_test; $(MAKE) clean; cd ..
	$(RM) -f *.rom
