From bd7d4366b6643b5c6cd04f40dd32f5d9c9575fd6 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Fri, 5 Aug 2022 14:33:51 +0200 Subject: organised files; switched to recursive make --- Makefile | 54 +++++++++++++++++++----------------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 7d3a97a..e9c8111 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +export + ARCH = x86_64-elf- CC = $(ARCH)gcc AS = $(ARCH)as @@ -5,51 +7,33 @@ LD = $(ARCH)ld OBJDUMP = $(ARCH)objcopy OBJCOPY = $(ARCH)objdump - CFLAGS = -Wall -Werror -Wno-error=infinite-recursion -O -fno-omit-frame-pointer # -mgeneral-regs-only disables SIMD instructions CFLAGS += -MD -O3 -mgeneral-regs-only CFLAGS += -ffreestanding -fno-common -nostdlib -CFLAGS += -I include 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 \ - $K/graphics.o \ - $K/multiboot2.o \ - $K/debug.o \ - $K/idt.o \ - $K/irq.o \ - $K/irq_stub.o \ - $K/io.o \ - $K/pic.o \ - $K/keyboard.o \ +MAKE:=$(MAKE) -s -kernel.iso: kernel.bin $K/grub.cfg - 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 +K = kernel -kernel.bin: $(OBJS) $K/kernel.ld Makefile - $(LD) $(LDFLAGS) -T $K/kernel.ld $(OBJS) -o kernel.bin +all: kernel.iso -%.o: %.c - $(CC) $(CFLAGS) -c $< -o $@ +$K/kernel.bin: FORCE + @$(MAKE) -C $(@D) +FORCE: +kernel.iso: $K/kernel.bin $K/src/grub.cfg Makefile + $(info [all] $@) + @mkdir -p isodir/boot/grub + @cp $K/kernel.bin isodir/boot/kernel.bin + @cp $K/src/grub.cfg isodir/boot/grub/grub.cfg + @grub-mkrescue -o kernel.iso isodir 2> /dev/null -%.o: %.S - $(CC) $(CFLAGS) -c $< -o $@ - -.PHONY: qemu bochs clean run +.PHONY: all build qemu bochs clean QEMU = qemu-system-x86_64 BOCHS = bochs -q @@ -61,7 +45,7 @@ bochs: kernel.iso $(BOCHS) -qf .bochsrc clean: - rm -f kernel.bin kernel.iso $K/*.o $K/*.d xbochs.log bx_enh_dbg.ini - rm -rf isodir - -run: qemu + @find -name "*.o" -exec rm {} \; + @find -name "*.d" -exec rm {} \; + @rm -f kernel.iso $K/kernel.bin xbochs.log bx_enh_dbg.ini + @rm -rf isodir -- cgit v1.2.3