kornos/kernel/Makefile

34 lines
886 B
Makefile

ARCH ?= $(shell uname -m)
CC = zig cc -target $(ARCH)-freestanding
LD = ld -m elf_$(ARCH)
-include make.$(ARCH).config
CFLAGS ?= -O2
CFLAGS := $(CFLAGS) $(ARCH_CFLAGS) \
-Wall -Wextra -pedantic -Wno-language-extension-token -std=gnu11 -I../ext/limine/stivale -fPIE
LDFLAGS := $(LDFLAGS) -T linker.ld.$(ARCH)
TARGET := kernel
CFILES := $(shell find src -path src/arch -prune -o -type f -name '*.c' -print)
ARCHFILES := $(shell find src/arch/$(ARCH) -type f -name '*.c' -print)
HFILES := $(shell find src -type f -name '*.h')
OBJ := $(patsubst src/%.c,obj/%.o,$(CFILES) $(ARCHFILES))
.PHONY: all clean obj
all: $(TARGET)
$(TARGET): $(OBJ)
$(LD) $(LDFLAGS) $(OBJ) -o $@
obj/%.o: src/%.c $(HFILES)
@mkdir -p obj/arch/$(ARCH)
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -rf $(TARGET) obj zig-cache