diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-07-31 03:55:45 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-02 19:39:04 +0200 |
| commit | 132510156e1b907498dd83724f12ca101ae32f88 (patch) | |
| tree | e91a8b79fd3f090db0523fc78f308d81652693e8 /Makefile | |
long mode multiboot2
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 54 |
1 files changed, 54 insertions, 0 deletions
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 |
