46 lines
1.1 KiB
Makefile
46 lines
1.1 KiB
Makefile
|
|
CROSS_COMPILE := i586-elf-
|
|
|
|
export LD := $(CROSS_COMPILE)ld
|
|
export CC := $(CROSS_COMPILE)gcc
|
|
export CXX := $(CROSS_COMPILE)g++
|
|
export OBJDUMP := $(CROSS_COMPILE)objdump
|
|
export NASM := nasm
|
|
|
|
export HOS_TOPLEVEL := $(shell pwd)
|
|
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 sys
|
|
SUBDIRS_clean := $(SUBDIRS:%=%.clean)
|
|
|
|
.PHONY: all
|
|
all: $(KERNEL).gz
|
|
|
|
$(KERNEL).gz: $(KERNEL)
|
|
gzip -c $< > $@
|
|
|
|
$(KERNEL): $(KERNEL).o
|
|
$(LD) $(LDFLAGS) -o $@ $<
|
|
$(OBJDUMP) --disassemble --source $@ > $@.dump
|
|
strip $@
|
|
|
|
$(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
|