diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-05 14:33:51 +0200 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-08-05 14:33:51 +0200 |
| commit | bd7d4366b6643b5c6cd04f40dd32f5d9c9575fd6 (patch) | |
| tree | 92429e897be007d46c8f063a39a986df2124111a /Makefile | |
| parent | be3274c49d0ca5e31daa855c4c109d830fdead67 (diff) | |
organised files; switched to recursive make
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 54 |
1 files changed, 19 insertions, 35 deletions
@@ -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 |
