PRODUCT=nucleus CC=i686-orion-gcc CFLAGS=-Iinclude/ AS=i686-orion-as AFLAGS= LD=i686-orion-gcc LFLAGS=-T linker.ld -ffreestanding -nostdlib AS_SRC := $(shell find . -name '*.S') OBJS = $(sort $(subst ./,build/,$(subst .S,.o,$(AS_SRC)))) C_SRC := $(shell find . -name '*.c') OBJS += $(sort $(subst ./,build/,$(subst .c,.o,$(C_SRC)))) .PHONY: install-headers clean all install all: $(PRODUCT) clean: $(info Removing object files) @mkdir -p build @rm -rf build @touch $(PRODUCT) @rm $(PRODUCT) install-headers: $(info INSTALL KERNEL HEADERS) @mkdir -p ${SYSROOT}/usr/include/ @cp -r include/* ${SYSROOT}/usr/include/ install: $(PRODUCT) $(info INSTALL $^) @install -Dm 755 $(PRODUCT) -t ${SYSROOT}/boot/ $(PRODUCT): $(OBJS) $(info LD $@) @$(LD) -o $@ $^ $(LFLAGS) build/%.o: %.c $(info CC $<) @mkdir -p $(@D) @$(CC) -c $< -o $@ $(CFLAGS) build/%.o: %.S $(info AS $<) @mkdir -p $(@D) @$(AS) -c $< -o $@ $(AFLAGS) # Overrides build/lib/object/%.o: lib/object/%.c $(info CC $<) @mkdir -p $(@D) @$(CC) -c $< -o $@ $(CFLAGS) -O3