OSNAME = CustomOS GNUEFI = ../gnu-efi OVMFDIR = ../OVMFbin LDS = kernel.ld CC = gcc LD = ld CFLAGS = -ffreestanding -fshort-wchar LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib OSNAME = CustomOS GNUEFI = ../gnu-efi OVMFDIR = ../OVMFbin LDS = kernel.ld CC = gcc LD = ld CFLAGS = -ffreestanding -fshort-wchar LDFLAGS = -T $(LDS) -static -Bsymbolic -nostdlib SRCDIR := src OBJDIR := lib BUILDDIR = bin BOOTEFI := $(GNUEFI)/x86_64/bootloader/main.efi rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d)) SRC = $(call rwildcard,$(SRCDIR),*.cpp) OBJS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SRC)) DIRS = $(wildcard $(SRCDIR)/*) kernel: $(OBJS) link $(OBJDIR)/%.o: $(SRCDIR)/%.cpp @ echo !==== COMPILING $^ @ mkdir -p $(@D) $(CC) $(CFLAGS) -c $^ -o $@ link: @ echo !==== LINKING @echo $(OBJS) $(LD) $(LDFLAGS) -o $(BUILDDIR)/kernel.elf $(OBJS) setup: @mkdir $(BUILDDIR) @mkdir $(SRCDIR) @mkdir $(OBJDIR) buildimg: dd if=/dev/zero of=$(BUILDDIR)/$(OSNAME).img bs=512 count=93750 mformat -i $(BUILDDIR)/$(OSNAME).img :: mmd -i $(BUILDDIR)/$(OSNAME).img ::/EFI mmd -i $(BUILDDIR)/$(OSNAME).img ::/EFI/BOOT mcopy -i $(BUILDDIR)/$(OSNAME).img $(BOOTEFI) ::/EFI/BOOT mcopy -i $(BUILDDIR)/$(OSNAME).img startup.nsh :: mcopy -i $(BUILDDIR)/$(OSNAME).img $(BUILDDIR)/kernel.elf :: mcopy -i $(BUILDDIR)/$(OSNAME).img $(BUILDDIR)/zap-light18.psf :: run: qemu-system-x86_64 -drive file=$(BUILDDIR)/$(OSNAME).img -m 64M -cpu qemu64 -drive if=pflash,format=raw,unit=0,file="$(OVMFDIR)/OVMF_CODE-pure-efi.fd",readonly=on -drive if=pflash,format=raw,unit=1,file="$(OVMFDIR)/OVMF_VARS-pure-efi.fd" -net none