TOPDIR = ./
include Make.in

BINDIR = bin/
DEPSDIR = deps/

OBJECT=setup1.o apm1.o interrupt1.o lib_i386.o reboot1.o $(subst .c,.o,$(wildcard *.c))

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


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


all: compile_driver compile_net deps $(BINDIR)$(SETUP) compile_boot


compile_driver:
	cd $(DRIVERDIR); make

compile_net:
	cd $(NETDIR); make

compile_boot:
	cd $(BOOTDIR); make

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

$(BINDIR)$(SETUP): $(addprefix $(BINDIR),$(OBJECT)) $(NETOBJ) $(DRIVEROBJ) $(LIBGCC)
	$(LD) -Ttext $(START_ADDRESS) -o $@ $^ -Map $(BINDIR)link.map


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


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

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

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

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


fd:make_boot
	cp $(BINDIR)boot.img /dev/fd0

floppy:make_boot
	rawwritewin $(BINDIR)boot.img

make_boot:
	$(TOOLSBINDIR)elfload $(BINDIR)setup $(BINDIR)setup.img
	$(TOOLSDIR)check_size $(BOOTDIR)$(BINDIR)$(BOOT)
	dd if=$(BOOTDIR)$(BINDIR)$(BOOT) of=$(BINDIR)boot.img
	$(TOOLSBINDIR)boot_sign $(BINDIR)boot.img
	dd if=$(BINDIR)setup.img of=$(BINDIR)boot.img seek=1


clean:
	cd $(BOOTDIR);make clean
	cd $(NETDIR);make clean
	cd $(DRIVERDIR);make clean
	rm -f $(BINDIR)*
	rm -f $(DEPSDIR)*
