ifndef KERNEL_SRC $(error KERNEL_SRC undefined) endif ifndef KERNEL_ELF $(error KERNEL_ELF undefined) endif ifndef BUILD $(error BUILD undefined) endif CC := x86_64-elf-gcc CFLAGS += \ -mno-red-zone -mgeneral-regs-only \ -Iarch/x86_64/include LDFLAGS += \ -Tarch/x86_64/linker.ld ARCH_SRC := \ arch/x86_64/entry.S SRC := $(KERNEL_SRC) $(ARCH_SRC) OBJ := $(patsubst %,$(BUILD)/%.o,$(SRC)) $(KERNEL_ELF): $(OBJ) @mkdir -p $(dir $@) $(CC) $(LDFLAGS) -o $@ $^ $(BUILD)/%.o: % @mkdir -p $(dir $@) $(CC) $(CFLAGS) -o $@ -c $<