From 09be8ace254a7f8bb69542d09a6b2013636123a2 Mon Sep 17 00:00:00 2001 From: Nathan Lee Date: Sun, 13 Sep 2026 17:46:26 -0500 Subject: EFI boot header support --- Makefile | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 8ea760b..ad38c9a 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ VERSION = 0.1.0-alpha CC = clang LD = ld.lld +NM = llvm-nm OBJCOPY = llvm-objcopy COMPILER = $(shell $(CC) --version | head -n 1) @@ -99,20 +100,27 @@ KERNEL_OBJS = $(KERNEL_SRCS:.c=.o) KERNEL_OBJS := $(KERNEL_OBJS:.S=.o) KERNEL_BIN := $(KERNEL_TARGET)/kernel.bin KERNEL_ELF := $(KERNEL_TARGET)/kernel.elf +KERNEL_IMAGE := $(KERNEL_TARGET)/Image + +KASSEMBLE_BIN := misc/kassemble +KASSEMBLE_SRC := misc/kassemble.c GENERATED = \ $(KERNEL_OBJS) \ $(KERNEL_ELF) \ $(KERNEL_BIN) \ + $(KERNEL_IMAGE) \ $(foreach m,$(MODULES),$(m)/$(m).elf) \ $(foreach m,$(MODULES),$(m)/$(m).ko) \ - $(foreach m,$(MODULES),$($(m)_OBJS)) + $(foreach m,$(MODULES),$($(m)_OBJS)) \ + $(KASSEMBLE_BIN) -.PHONY: all kernel clean modules $(MODULES) +.PHONY: all kernel kassemble clean modules $(MODULES) $(V).SILENT: -all: kernel modules -kernel: $(KERNEL_BIN) +all: kassemble kernel modules +kernel: $(KERNEL_IMAGE) modules: $(MODULES) +kassemble: $(KASSEMBLE_BIN) $(MODULES): $(MODULE_OBJECTS) %.o: %.c @@ -122,6 +130,10 @@ $(MODULES): $(MODULE_OBJECTS) @echo " AS $<" $(CC) $(KERNEL_CFLAGS) -c $< -o $@ +$(KASSEMBLE_BIN): $(KASSEMBLE_SRC) + @echo " HOSTCC $<" + $(CC) -O2 $< -o $@ + $(KERNEL_ELF): $(KERNEL_OBJS) $(KERNEL_LD) | $(KERNEL_OUTDIR)/ @echo " LD $@" $(LD) $(KERNEL_LD_FLAG) $(KERNEL_OBJS) -o $@ @@ -130,6 +142,10 @@ $(KERNEL_BIN): $(KERNEL_ELF) | $(KERNEL_OUTDIR)/ @echo " OBJCOPY $@" $(OBJCOPY) $(KERNEL_OBJCOPY_FLAG) $(KERNEL_ELF) $(KERNEL_BIN) +$(KERNEL_IMAGE): $(KERNEL_BIN) | $(KERNEL_OUTDIR)/ + @echo " KASSEMBLE $@" + $(KASSEMBLE_BIN) $< $@ $$($(NM) $(KERNEL_ELF) | awk '/__image_size/{print $$1}') + clean: @echo " CLEAN $(GENERATED)" $(RM) $(GENERATED) -- cgit v1.2.3