UEFI-helloworld/Makefile
2020-02-20 19:02:16 +00:00

41 lines
929 B
Makefile

ASM = nasm
ASMFLAGS = -f win64
LINKER = clang
LLD-FLAGS = --target=x86_64-unknown-windows -nostdlib -Wl,-entry:_start -Wl,-subsystem:efi_application -fuse-ld=lld
SRC_DIR = src
OBJ_DIR = obj
EFI_DIR = efi
INC_DIR = inc
SRC = $(wildcard $(SRC_DIR)/*.asm)
OBJ = $(SRC:$(SRC_DIR)/%.asm=$(OBJ_DIR)/%.obj)
EFI = $(EFI_DIR)/uefi.efi
BIOS = $(wildcard $(INC_DIR)/*.bios)
BOOT_DRIVE = uefi.img
.PHONY: clean qemu all img
all: $(OBJ)
$(LINKER) $(LLD-FLAGS) -o $(EFI) $<
make img
clean:
rm -f $(OBJ) $(BOOT_DRIVE) $(EFI)
qemu:
qemu-system-x86_64 -bios $(BIOS) -drive file=$(BOOT_DRIVE),format=raw
# needs dosfstools and mtools
img:
dd if=/dev/zero of=$(BOOT_DRIVE) bs=1M count=1
mkfs.vfat $(BOOT_DRIVE)
mmd -i $(BOOT_DRIVE) ::EFI
mmd -i $(BOOT_DRIVE) ::EFI/BOOT
mcopy -i $(BOOT_DRIVE) $(EFI) ::EFI/BOOT/BOOTX64.EFI
$(OBJ_DIR)/%.obj: $(SRC_DIR)/%.asm
$(ASM) $(ASMFLAGS) -o $@ $<