export LD := i586-elf-ld export CC := i586-elf-gcc export CXX := i586-elf-g++ export OBJDUMP := i586-elf-objdump export NASM := nasm WD := $(shell pwd) export HOS_TOPLEVEL := $(WD) LDSCRIPT := link.ld KERNEL := hos export CPPFLAGS := -I$(HOS_TOPLEVEL) -I$(HOS_TOPLEVEL)/include export CFLAGS := -Wall -O2 export CXXFLAGS := -Wall -O2 -fno-rtti -fno-exceptions export LDFLAGS := -T $(LDSCRIPT) -Map $(KERNEL).map export LDLIBS := `$(CC) -print-libgcc-file-name` SUBDIRS := boot mm lang isr SUBDIRS_clean := $(SUBDIRS:%=%.clean) .PHONY: all all: $(KERNEL).gz $(KERNEL).gz: $(KERNEL) gzip -c $< > $@ $(KERNEL): $(KERNEL).o $(LD) $(LDFLAGS) -o $@ $< $(LD) $(LDFLAGS) --oformat=elf32-i386 -o $@.elf $< $(OBJDUMP) --disassemble --source $@.elf > $@.dump $(KERNEL).o: $(SUBDIRS) $(LD) -r -o $@ $(foreach subdir,$(SUBDIRS),$(subdir)/$(subdir)_all.o) $(LDLIBS) .PHONY: $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ SUBDIR=$@ .PHONY: clean clean: $(SUBDIRS_clean) -rm -f *~ $(KERNEL) $(KERNEL).{gz,o,elf,dump,map} %.clean: $(MAKE) -C $* clean clean=1