# # Copyright (c) 2026, Apollo Telephone Laboratories. # Provided under the BSD-3 clause. # CFILES = $(shell find core/ -name "*.c") OFILES = $(CFILES:.c=.o) DFILES = $(CFILES:.c=.d) CC = gcc LD = ld CFLAGS = \ -Wall \ -MMD \ -pedantic \ -fpic \ -ffreestanding \ -fno-stack-protector \ -fno-stack-check \ -fshort-wchar \ -mno-red-zone \ -maccumulate-outgoing-args \ -Ihead \ -Ignu-efi/inc LDFLAGS = \ -shared \ -Bsymbolic \ -Lgnu-efi/x86_64/lib \ -Lgnu-efi/x86_64/gnuefi \ -Tgnu-efi/gnuefi/elf_x86_64_efi.lds \ gnu-efi/x86_64/gnuefi/crt0-efi-x86_64.o OBJCOPY_FLAGS = \ -j .text \ -j .sdata \ -j .data \ -j .rodata \ -j .dynamic \ -j .dynsym \ -j .rel \ -j .rela \ -j .rel.* \ -j .rela.* \ -j .reloc \ --output-target efi-app-x86_64 \ --subsystem=10 .PHONY: all all: prebuild gnu-efi $(OFILES) ld $(LDFLAGS) $(OFILES) -lgnuefi -lefi -o main.so objcopy $(OBJCOPY_FLAGS) main.so BOOTX64.EFI rm -f *.so .PHONY: prebuild prebuild: echo -e "/* Generated by build; DO NOT edit */\n" >head/sboot/config.h cat config.def.h >>head/sboot/config.h gnu-efi: git clone https://github.com/ncroxon/gnu-efi.git cd gnu-efi; make -include $(DFILES) %.o: %.c $(CC) -c $(CFLAGS) $< -o $@