Nucleus
Barry Preemptive and lockless scheduler a1eaf26 (3 years, 1 month ago)
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