START_ADDRESS=0x1000

#CC=gcc -c -O2 -Wall -fomit-frame-pointer -fcall-used-ebx
CC=gcc -c -O2 -Wall -fcall-used-ebx -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 test.o test_program.o floppy.o\
	ata.o pci.o device.o serial.o error.o orig_fs.o mkfs.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)*
