TOPDIR = ./
include Make.in
BINDIR = bin/


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


all: link_machine compile_setup compile_kern compile_i386 compile_isa compile_pci compile_driver compile_net $(BINDIR)setup compile_boot


link_machine:
	rm machine;
	ln -s i386 machine;

compile_setup:
	cd $(SETUPDIR); make

compile_kern:
	cd $(KERNDIR); make

compile_i386:
	cd $(I386DIR); make

compile_isa:
	cd $(ISADIR); make

compile_pci:
	cd $(PCIDIR); make

compile_driver:
	cd $(DRIVERDIR); make

compile_net:
	cd $(NETDIR); make

compile_boot:
	cd $(BOOTDIR); make

$(BINDIR)setup: $(SETUPOBJ) $(KERNOBJ) $(I386OBJ) $(ISAOBJ) $(PCIOBJ) $(DRIVEROBJ) $(NETOBJ) $(LIBGCC)
	$(LD) -Ttext $(START_ADDRESS) -o $@ $^ -Map $(BINDIR)link.map


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

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


# Linuxboot᡼եåԡ˥ԡ
fd:make_boot
	cp $(BINDIR)boot.img /dev/fd0

# Cygwinboot᡼եåԡ˥ԡ
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
	cd $(PCIDIR);make clean
	cd $(ISADIR);make clean
	cd $(I386DIR);make clean
	cd $(KERNDIR);make clean
	cd $(SETUPDIR);make clean
	rm -f $(BINDIR)*
