diff options
| -rw-r--r-- | .gitignore | 6 | ||||
| -rw-r--r-- | Makefile | 54 | ||||
| -rw-r--r-- | kernel/Makefile | 37 | ||||
| -rw-r--r-- | kernel/include/debug.h (renamed from include/debug.h) | 0 | ||||
| -rw-r--r-- | kernel/include/font.h (renamed from include/font.h) | 0 | ||||
| -rw-r--r-- | kernel/include/graphics.h (renamed from include/graphics.h) | 0 | ||||
| -rw-r--r-- | kernel/include/idt.h (renamed from include/idt.h) | 0 | ||||
| -rw-r--r-- | kernel/include/io.h (renamed from include/io.h) | 0 | ||||
| -rw-r--r-- | kernel/include/irq.h (renamed from include/irq.h) | 0 | ||||
| -rw-r--r-- | kernel/include/keyboard.h (renamed from include/keyboard.h) | 0 | ||||
| -rw-r--r-- | kernel/include/multiboot2.h (renamed from include/multiboot2.h) | 0 | ||||
| -rw-r--r-- | kernel/include/pic.h (renamed from include/pic.h) | 0 | ||||
| -rw-r--r-- | kernel/src/boot/boot.S (renamed from kernel/boot.S) | 0 | ||||
| -rw-r--r-- | kernel/src/boot/boot64.S (renamed from kernel/boot64.S) | 0 | ||||
| -rw-r--r-- | kernel/src/boot/header.S (renamed from kernel/header.S) | 0 | ||||
| -rw-r--r-- | kernel/src/boot/multiboot2.c (renamed from kernel/multiboot2.c) | 0 | ||||
| -rw-r--r-- | kernel/src/cpu/idt.c (renamed from kernel/idt.c) | 0 | ||||
| -rw-r--r-- | kernel/src/cpu/io.c (renamed from kernel/io.c) | 0 | ||||
| -rw-r--r-- | kernel/src/cpu/irq.c (renamed from kernel/irq.c) | 0 | ||||
| -rw-r--r-- | kernel/src/cpu/irq_stub.S (renamed from kernel/irq_stub.S) | 0 | ||||
| -rw-r--r-- | kernel/src/cpu/pic.c (renamed from kernel/pic.c) | 0 | ||||
| -rw-r--r-- | kernel/src/devices/keyboard.c (renamed from kernel/keyboard.c) | 0 | ||||
| -rw-r--r-- | kernel/src/grub.cfg (renamed from kernel/grub.cfg) | 0 | ||||
| -rw-r--r-- | kernel/src/kernel.ld (renamed from kernel/kernel.ld) | 0 | ||||
| -rw-r--r-- | kernel/src/main.c (renamed from kernel/main.c) | 0 | ||||
| -rw-r--r-- | kernel/src/misc/debug.c (renamed from kernel/debug.c) | 0 | ||||
| -rw-r--r-- | kernel/src/misc/graphics.c (renamed from kernel/graphics.c) | 0 |
27 files changed, 59 insertions, 38 deletions
@@ -1,7 +1,7 @@ -kernel.bin +kernel/kernel.bin kernel.iso -kernel/*.o -kernel/*.d +**/*.o +**/*.d isodir xbochs.log bx_enh_dbg.ini @@ -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 diff --git a/kernel/Makefile b/kernel/Makefile new file mode 100644 index 0000000..8bdb9f7 --- /dev/null +++ b/kernel/Makefile @@ -0,0 +1,37 @@ +CFLAGS += -I include + +OBJS = \ + src/boot/boot64.o \ + src/boot/boot.o \ + src/boot/header.o \ + src/boot/multiboot2.o \ + src/cpu/idt.o \ + src/cpu/io.o \ + src/cpu/irq.o \ + src/cpu/irq_stub.o \ + src/cpu/pic.o \ + src/devices/keyboard.o \ + src/main.o \ + src/misc/debug.o \ + src/misc/graphics.o \ + +all: kernel.bin + +kernel.bin: $(OBJS) src/kernel.ld ../Makefile Makefile + $(info [kernel] $@) + @$(LD) $(LDFLAGS) -T src/kernel.ld $(OBJS) -o kernel.bin + + +%.o: %.c + $(info [kernel] $@) + @$(CC) $(CFLAGS) -c $< -o $@ + + +%.o: %.S + $(info [kernel] $@) + @$(CC) $(CFLAGS) -c $< -o $@ + + +.PHONY: all + +-include $(OBJS:.o=.d) diff --git a/include/debug.h b/kernel/include/debug.h index ebe3a52..ebe3a52 100644 --- a/include/debug.h +++ b/kernel/include/debug.h diff --git a/include/font.h b/kernel/include/font.h index 678a6c2..678a6c2 100644 --- a/include/font.h +++ b/kernel/include/font.h diff --git a/include/graphics.h b/kernel/include/graphics.h index 84505d8..84505d8 100644 --- a/include/graphics.h +++ b/kernel/include/graphics.h diff --git a/include/idt.h b/kernel/include/idt.h index 9ca9c3a..9ca9c3a 100644 --- a/include/idt.h +++ b/kernel/include/idt.h diff --git a/include/io.h b/kernel/include/io.h index 76c401d..76c401d 100644 --- a/include/io.h +++ b/kernel/include/io.h diff --git a/include/irq.h b/kernel/include/irq.h index f0e38d6..f0e38d6 100644 --- a/include/irq.h +++ b/kernel/include/irq.h diff --git a/include/keyboard.h b/kernel/include/keyboard.h index 3a1b7f1..3a1b7f1 100644 --- a/include/keyboard.h +++ b/kernel/include/keyboard.h diff --git a/include/multiboot2.h b/kernel/include/multiboot2.h index f22fd8e..f22fd8e 100644 --- a/include/multiboot2.h +++ b/kernel/include/multiboot2.h diff --git a/include/pic.h b/kernel/include/pic.h index f1f4e44..f1f4e44 100644 --- a/include/pic.h +++ b/kernel/include/pic.h diff --git a/kernel/boot.S b/kernel/src/boot/boot.S index ee35eeb..ee35eeb 100644 --- a/kernel/boot.S +++ b/kernel/src/boot/boot.S diff --git a/kernel/boot64.S b/kernel/src/boot/boot64.S index be87412..be87412 100644 --- a/kernel/boot64.S +++ b/kernel/src/boot/boot64.S diff --git a/kernel/header.S b/kernel/src/boot/header.S index bbcb9be..bbcb9be 100644 --- a/kernel/header.S +++ b/kernel/src/boot/header.S diff --git a/kernel/multiboot2.c b/kernel/src/boot/multiboot2.c index e228ce1..e228ce1 100644 --- a/kernel/multiboot2.c +++ b/kernel/src/boot/multiboot2.c diff --git a/kernel/idt.c b/kernel/src/cpu/idt.c index bf285b7..bf285b7 100644 --- a/kernel/idt.c +++ b/kernel/src/cpu/idt.c diff --git a/kernel/io.c b/kernel/src/cpu/io.c index 6bf67d0..6bf67d0 100644 --- a/kernel/io.c +++ b/kernel/src/cpu/io.c diff --git a/kernel/irq.c b/kernel/src/cpu/irq.c index 1e02f23..1e02f23 100644 --- a/kernel/irq.c +++ b/kernel/src/cpu/irq.c diff --git a/kernel/irq_stub.S b/kernel/src/cpu/irq_stub.S index ddd197a..ddd197a 100644 --- a/kernel/irq_stub.S +++ b/kernel/src/cpu/irq_stub.S diff --git a/kernel/pic.c b/kernel/src/cpu/pic.c index 801556d..801556d 100644 --- a/kernel/pic.c +++ b/kernel/src/cpu/pic.c diff --git a/kernel/keyboard.c b/kernel/src/devices/keyboard.c index 105c3a8..105c3a8 100644 --- a/kernel/keyboard.c +++ b/kernel/src/devices/keyboard.c diff --git a/kernel/grub.cfg b/kernel/src/grub.cfg index 05a13f7..05a13f7 100644 --- a/kernel/grub.cfg +++ b/kernel/src/grub.cfg diff --git a/kernel/kernel.ld b/kernel/src/kernel.ld index da5c87c..da5c87c 100644 --- a/kernel/kernel.ld +++ b/kernel/src/kernel.ld diff --git a/kernel/main.c b/kernel/src/main.c index 96f3572..96f3572 100644 --- a/kernel/main.c +++ b/kernel/src/main.c diff --git a/kernel/debug.c b/kernel/src/misc/debug.c index 5f3c327..5f3c327 100644 --- a/kernel/debug.c +++ b/kernel/src/misc/debug.c diff --git a/kernel/graphics.c b/kernel/src/misc/graphics.c index d4fc7c7..d4fc7c7 100644 --- a/kernel/graphics.c +++ b/kernel/src/misc/graphics.c |
