From 132510156e1b907498dd83724f12ca101ae32f88 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Sun, 31 Jul 2022 03:55:45 +0200 Subject: long mode multiboot2 --- Makefile | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b16507e --- /dev/null +++ b/Makefile @@ -0,0 +1,54 @@ +ARCH = x86_64-elf- +CC = $(ARCH)gcc +AS = $(ARCH)as +LD = $(ARCH)ld +OBJDUMP = $(ARCH)objcopy +OBJCOPY = $(ARCH)objdump + + +CFLAGS = -Wall -Werror -Wno-error=infinite-recursion -O -fno-omit-frame-pointer -ggdb +CFLAGS += -MD +CFLAGS += -ffreestanding -fno-common -nostdlib +CFLAGS += -I. +CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector) +CFLAGS += -fno-pie -no-pie -fno-pic +LDFLAGS = -z max-page-size=4096 + +K=kernel + +OBJS = \ + $K/header.o \ + $K/boot.o \ + $K/boot64.o \ + $K/main.o \ + +kernel.iso: kernel.bin + mkdir -p isodir/boot/grub + cp kernel.bin isodir/boot/kernel.bin + cp $K/grub.cfg isodir/boot/grub/grub.cfg + grub-mkrescue -o kernel.iso isodir + +kernel.bin: $(OBJS) $K/kernel.ld Makefile + $(LD) $(LDFLAGS) -T $K/kernel.ld $(OBJS) -o kernel.bin + +%.o: %.c + $(CC) $(CFLAGS) -c $< -o $@ + + +%.o: %.S + $(CC) $(CFLAGS) -c $< -o $@ + + +.PHONY: qemu clean run + +QEMU = qemu-system-x86_64 +QEMUFLAGS = + +qemu: kernel.iso + $(QEMU) $(QEMUFLAGS) -cdrom kernel.iso + +clean: + rm -f kernel.bin kernel.iso $K/*.o $K/*.d xbochs.log bx_enh_dbg.ini + rm -rf isodir + +run: qemu -- cgit v1.2.3