diff options
| author | Nathan Lee <me@nwlee.tech> | 2026-09-13 17:46:26 -0500 |
|---|---|---|
| committer | Nathan Lee <me@nwlee.tech> | 2026-09-13 17:46:26 -0500 |
| commit | 09be8ace254a7f8bb69542d09a6b2013636123a2 (patch) | |
| tree | 928011aa958624369cefeb46f9e206093a55e0a2 /Makefile | |
| parent | 11501f6f0c82712ea5f172f9177f2375c87d06e9 (diff) | |
EFI boot header support
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 24 |
1 files changed, 20 insertions, 4 deletions
@@ -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) |
