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 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