START_ADDRESS=0x1000

CC=gcc -c -O2 -Wall -ffreestanding
#CC=/home/bin/gcc/bin/gcc -c -O2 -Wall -ffreestanding
#CC=/home/bin/egcs/bin/gcc -c -O2 -Wall -ffreestanding
LD=ld -s -x --oformat binary
DEP=gcc -M

BINDIR=bin/
DEPSDIR=deps/
TOOLSDIR=tools/
TOOLSBINDIR=tools/bin/

OBJECT=setup1.o setup2.o lib1.o lib2.o except.o interrupt1.o interrupt2.o mp.o sp.o\
	mm.o time.o proc.o segment.o console.o fs.o floppy.o ata.o pci.o device.o serial.o\
	error.o elf.o miscdev.o ext2_fs.o signal.o apm1.o apm2.o reboot1.o reboot2.o\
#	ether.o rt8139.o

DEPS=$(OBJECT:.o=.d)


#********************************************* Make *****************************************************

all:deps bin/setup bin/bootload


deps:$(addprefix $(DEPSDIR),$(DEPS))

$(DEPSDIR)%.d:%.c
	(echo -n $(BINDIR);$(DEP) $<) > $@

$(DEPSDIR)%.d:%.S
	(echo -n $(BINDIR);$(DEP) $<) > $@

include $(addprefix $(DEPSDIR),$(DEPS))


bin/setup:$(addprefix $(BINDIR),$(OBJECT))
	$(LD) -Ttext $(START_ADDRESS) -o $@ $^ -Map bin/link.map

$(BINDIR)%.o:%.S
	$(CC) -o $@ $<

$(BINDIR)%.o:%.c
	$(CC) -o $@ $<


bin/bootload:bootload.S config.h bin/setup
	$(TOOLSBINDIR)size bin/setup | $(TOOLSBINDIR)/inputstr bootload.S SETUP_SIZE=		# setupΥbootload.S
	$(CC) -o bin/bootload.o bootload.S
	$(LD) -Ttext 0 -o bin/bootload bin/bootload.o


floppy:
	$(TOOLSDIR)copy


clean:
	rm -f $(BINDIR)*
	rm -f $(DEPSDIR)*
