#
# bios/Makefile
#
# Note!! This can only be built with ELF now

export	CROSS_COMPILE VERSION TOPDIR HPATH FINDHPATH CFLAGS LDFLAGS \
	HOSTCC HOSTCFLAGS CC LD AR STRIP GCCLIB ARCH_TYPE LOAD_ADDR \
	PARM_ADDR

#
# TEXTADDR := 0x410000c0 + (bank * 0x00040000)
# (This is set for bank 5)
#
TEXTADDR	=0x411400c0
DATAADDR	=0x1000
#
# The architecture number we pass to the kernel in r1
#
ARCH_TYPE	=4
#
# The address where we load the kernel image
#
LOAD_ADDR	=0x8000
#
# The address of the parameters for the kernel
#
PARM_ADDR	=0x0100
CROSS_COMPILE	=

VERSION		=1.11

TOPDIR		:=$(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi | sed s,.*users,/home/users,)
HPATH		:=$(TOPDIR)/include
FINDHPATH	:=$(HPATH)/bios

CFLAGS		:=-Wall -O2 -fomit-frame-pointer -fno-builtin -I$(HPATH)
CFLAGS		+=-mapcs-32 -mcpu=strongarm110
LDFLAGS		:=-p

HOSTCC		:=gcc
HOSTCFLAGS	:=-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer

CC		:=$(CROSS_COMPILE)gcc
LD		:=$(CROSS_COMPILE)ld
AR		:=$(CROSS_COMPILE)ar
NM		:=$(CROSS_COMPILE)nm
STRIP		:=$(CROSS_COMPILE)strip
GCCLIB		:=$(shell $(CC) $(CFLAGS) --print-libgcc-file-name)


SUBDIRS		=init lib drivers x86emu
BIOSOBJS	=init/crt0.o init/init.o
DRIVERS1	=drivers/drivers.o drivers/block/block.a drivers/net/net.a
DRIVERS2	=drivers/scsi/scsi.a drivers/char/char.a drivers/isa/isa.a
LIBS		=x86emu/x86emu.o lib/lib.a $(GCCLIB)

all:		bios scripts/mkboot

depend dep:	dep-files

bios.elf:	subdirs elfbios.lds
		$(LD) $(LDFLAGS) -T elfbios.lds -o $@ $(BIOSOBJS) \
		$(DRIVERS1) $(DRIVERS2) $(LIBS)
		$(NM) $@ | sort > $@.syms

elfbios.lds:	elfbios.lds.in Makefile
		@sed 's/TEXTADDR/$(TEXTADDR)/; s/DATAADDR/$(DATAADDR)/' <$< >$@

bios:		scripts/mkaif bios.elf
		$(RM) $@
		scripts/mkaif bios.elf $@

clean:
		$(RM) `find . -name '*.[oas]' -print`
		$(RM) `find . -name '.*.flags' -print`
		$(RM) bios bios.elf

mrproper:	clean
		$(RM) `find . -name '.depend' -print`
		$(RM) scripts/mkaif scripts/mkdep

subdirs:	$(patsubst %, _dir_%,$(SUBDIRS))

$(patsubst %, _dir_%, $(SUBDIRS)) : dummy
		@$(MAKE) -C $(patsubst _dir_%, %, $@)

dep-files: scripts/mkdep
		scripts/mkdep `find $(FINDHPATH) -follow -name \*.h -print` > .hdepend
		$(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS)) _FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"

scripts/mkdep: scripts/mkdep.c
		$(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep scripts/mkdep.c

scripts/mkaif: scripts/mkaif.c
		$(HOSTCC) $(HOSTCFLAGS) -o scripts/mkaif scripts/mkaif.c

scripts/mkboot: scripts/mkboot.c
		$(HOSTCC) $(HOSTCFLAGS) -o scripts/mkboot scripts/mkboot.c

tar:		mrproper
		@( cd ..; tar zcf bios-${VERSION}.tar.gz bios )

dummy:

.PHONY: dummy tar subdirs dep-files mrproper clean

include Rules.make
