From 3d76a747e6d8da78b1bc8fe01bde10c24e61f09f Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Sun, 15 Mar 2026 15:43:47 +0530 Subject: [PATCH 1/5] Move all kernel files to kernel/ --- {include => kernel/include}/kernel/console.h | 0 {include => kernel/include}/kernel/gdt.h | 0 {include => kernel/include}/kernel/graphics.h | 0 {include => kernel/include}/kernel/hardfonts/classic.h | 0 {include => kernel/include}/kernel/hw/pic.h | 0 {include => kernel/include}/kernel/idt.h | 0 {include => kernel/include}/kernel/io.h | 0 {include => kernel/include}/kernel/limine.h | 0 {include => kernel/include}/kernel/memmgt.h | 0 {include => kernel/include}/kernel/serial.h | 0 {include => kernel/include}/kernel/stack.h | 0 {include => kernel/include}/liballoc/liballoc.h | 0 {include => kernel/include}/memory.h | 0 {include => kernel/include}/stdio.h | 0 {include => kernel/include}/string.h | 0 {src => kernel/src}/kernel/console.c | 0 {src => kernel/src}/kernel/entry.c | 0 {src => kernel/src}/kernel/gdt.c | 0 {src => kernel/src}/kernel/gdt.s | 0 {src => kernel/src}/kernel/graphics.c | 0 {src => kernel/src}/kernel/hardfonts/classic.c | 0 {src => kernel/src}/kernel/hw/pic.c | 0 {src => kernel/src}/kernel/idt.c | 0 {src => kernel/src}/kernel/io.c | 0 {src => kernel/src}/kernel/isr_setup.s | 0 {src => kernel/src}/kernel/limine_requests.c | 0 {src => kernel/src}/kernel/memmgt.c | 0 {src => kernel/src}/kernel/serial.c | 0 {src => kernel/src}/kernel/stack.c | 0 {src => kernel/src}/liballoc/liballoc.c | 0 {src => kernel/src}/linker.ld | 0 {src => kernel/src}/memory.c | 0 {src => kernel/src}/stdio.c | 0 {src => kernel/src}/string.c | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename {include => kernel/include}/kernel/console.h (100%) rename {include => kernel/include}/kernel/gdt.h (100%) rename {include => kernel/include}/kernel/graphics.h (100%) rename {include => kernel/include}/kernel/hardfonts/classic.h (100%) rename {include => kernel/include}/kernel/hw/pic.h (100%) rename {include => kernel/include}/kernel/idt.h (100%) rename {include => kernel/include}/kernel/io.h (100%) rename {include => kernel/include}/kernel/limine.h (100%) rename {include => kernel/include}/kernel/memmgt.h (100%) rename {include => kernel/include}/kernel/serial.h (100%) rename {include => kernel/include}/kernel/stack.h (100%) rename {include => kernel/include}/liballoc/liballoc.h (100%) rename {include => kernel/include}/memory.h (100%) rename {include => kernel/include}/stdio.h (100%) rename {include => kernel/include}/string.h (100%) rename {src => kernel/src}/kernel/console.c (100%) rename {src => kernel/src}/kernel/entry.c (100%) rename {src => kernel/src}/kernel/gdt.c (100%) rename {src => kernel/src}/kernel/gdt.s (100%) rename {src => kernel/src}/kernel/graphics.c (100%) rename {src => kernel/src}/kernel/hardfonts/classic.c (100%) rename {src => kernel/src}/kernel/hw/pic.c (100%) rename {src => kernel/src}/kernel/idt.c (100%) rename {src => kernel/src}/kernel/io.c (100%) rename {src => kernel/src}/kernel/isr_setup.s (100%) rename {src => kernel/src}/kernel/limine_requests.c (100%) rename {src => kernel/src}/kernel/memmgt.c (100%) rename {src => kernel/src}/kernel/serial.c (100%) rename {src => kernel/src}/kernel/stack.c (100%) rename {src => kernel/src}/liballoc/liballoc.c (100%) rename {src => kernel/src}/linker.ld (100%) rename {src => kernel/src}/memory.c (100%) rename {src => kernel/src}/stdio.c (100%) rename {src => kernel/src}/string.c (100%) diff --git a/include/kernel/console.h b/kernel/include/kernel/console.h similarity index 100% rename from include/kernel/console.h rename to kernel/include/kernel/console.h diff --git a/include/kernel/gdt.h b/kernel/include/kernel/gdt.h similarity index 100% rename from include/kernel/gdt.h rename to kernel/include/kernel/gdt.h diff --git a/include/kernel/graphics.h b/kernel/include/kernel/graphics.h similarity index 100% rename from include/kernel/graphics.h rename to kernel/include/kernel/graphics.h diff --git a/include/kernel/hardfonts/classic.h b/kernel/include/kernel/hardfonts/classic.h similarity index 100% rename from include/kernel/hardfonts/classic.h rename to kernel/include/kernel/hardfonts/classic.h diff --git a/include/kernel/hw/pic.h b/kernel/include/kernel/hw/pic.h similarity index 100% rename from include/kernel/hw/pic.h rename to kernel/include/kernel/hw/pic.h diff --git a/include/kernel/idt.h b/kernel/include/kernel/idt.h similarity index 100% rename from include/kernel/idt.h rename to kernel/include/kernel/idt.h diff --git a/include/kernel/io.h b/kernel/include/kernel/io.h similarity index 100% rename from include/kernel/io.h rename to kernel/include/kernel/io.h diff --git a/include/kernel/limine.h b/kernel/include/kernel/limine.h similarity index 100% rename from include/kernel/limine.h rename to kernel/include/kernel/limine.h diff --git a/include/kernel/memmgt.h b/kernel/include/kernel/memmgt.h similarity index 100% rename from include/kernel/memmgt.h rename to kernel/include/kernel/memmgt.h diff --git a/include/kernel/serial.h b/kernel/include/kernel/serial.h similarity index 100% rename from include/kernel/serial.h rename to kernel/include/kernel/serial.h diff --git a/include/kernel/stack.h b/kernel/include/kernel/stack.h similarity index 100% rename from include/kernel/stack.h rename to kernel/include/kernel/stack.h diff --git a/include/liballoc/liballoc.h b/kernel/include/liballoc/liballoc.h similarity index 100% rename from include/liballoc/liballoc.h rename to kernel/include/liballoc/liballoc.h diff --git a/include/memory.h b/kernel/include/memory.h similarity index 100% rename from include/memory.h rename to kernel/include/memory.h diff --git a/include/stdio.h b/kernel/include/stdio.h similarity index 100% rename from include/stdio.h rename to kernel/include/stdio.h diff --git a/include/string.h b/kernel/include/string.h similarity index 100% rename from include/string.h rename to kernel/include/string.h diff --git a/src/kernel/console.c b/kernel/src/kernel/console.c similarity index 100% rename from src/kernel/console.c rename to kernel/src/kernel/console.c diff --git a/src/kernel/entry.c b/kernel/src/kernel/entry.c similarity index 100% rename from src/kernel/entry.c rename to kernel/src/kernel/entry.c diff --git a/src/kernel/gdt.c b/kernel/src/kernel/gdt.c similarity index 100% rename from src/kernel/gdt.c rename to kernel/src/kernel/gdt.c diff --git a/src/kernel/gdt.s b/kernel/src/kernel/gdt.s similarity index 100% rename from src/kernel/gdt.s rename to kernel/src/kernel/gdt.s diff --git a/src/kernel/graphics.c b/kernel/src/kernel/graphics.c similarity index 100% rename from src/kernel/graphics.c rename to kernel/src/kernel/graphics.c diff --git a/src/kernel/hardfonts/classic.c b/kernel/src/kernel/hardfonts/classic.c similarity index 100% rename from src/kernel/hardfonts/classic.c rename to kernel/src/kernel/hardfonts/classic.c diff --git a/src/kernel/hw/pic.c b/kernel/src/kernel/hw/pic.c similarity index 100% rename from src/kernel/hw/pic.c rename to kernel/src/kernel/hw/pic.c diff --git a/src/kernel/idt.c b/kernel/src/kernel/idt.c similarity index 100% rename from src/kernel/idt.c rename to kernel/src/kernel/idt.c diff --git a/src/kernel/io.c b/kernel/src/kernel/io.c similarity index 100% rename from src/kernel/io.c rename to kernel/src/kernel/io.c diff --git a/src/kernel/isr_setup.s b/kernel/src/kernel/isr_setup.s similarity index 100% rename from src/kernel/isr_setup.s rename to kernel/src/kernel/isr_setup.s diff --git a/src/kernel/limine_requests.c b/kernel/src/kernel/limine_requests.c similarity index 100% rename from src/kernel/limine_requests.c rename to kernel/src/kernel/limine_requests.c diff --git a/src/kernel/memmgt.c b/kernel/src/kernel/memmgt.c similarity index 100% rename from src/kernel/memmgt.c rename to kernel/src/kernel/memmgt.c diff --git a/src/kernel/serial.c b/kernel/src/kernel/serial.c similarity index 100% rename from src/kernel/serial.c rename to kernel/src/kernel/serial.c diff --git a/src/kernel/stack.c b/kernel/src/kernel/stack.c similarity index 100% rename from src/kernel/stack.c rename to kernel/src/kernel/stack.c diff --git a/src/liballoc/liballoc.c b/kernel/src/liballoc/liballoc.c similarity index 100% rename from src/liballoc/liballoc.c rename to kernel/src/liballoc/liballoc.c diff --git a/src/linker.ld b/kernel/src/linker.ld similarity index 100% rename from src/linker.ld rename to kernel/src/linker.ld diff --git a/src/memory.c b/kernel/src/memory.c similarity index 100% rename from src/memory.c rename to kernel/src/memory.c diff --git a/src/stdio.c b/kernel/src/stdio.c similarity index 100% rename from src/stdio.c rename to kernel/src/stdio.c diff --git a/src/string.c b/kernel/src/string.c similarity index 100% rename from src/string.c rename to kernel/src/string.c From 9f1172ac6a81b7857797e6d27d7ca58fb01eedad Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Sun, 15 Mar 2026 15:55:44 +0530 Subject: [PATCH 2/5] Move GNUmakefule to kernel --- GNUmakefile => kernel/GNUmakefile | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) rename GNUmakefile => kernel/GNUmakefile (83%) diff --git a/GNUmakefile b/kernel/GNUmakefile similarity index 83% rename from GNUmakefile rename to kernel/GNUmakefile index 595882a..90e6744 100644 --- a/GNUmakefile +++ b/kernel/GNUmakefile @@ -81,36 +81,40 @@ endif # Use "find" to glob all *.c, *.s, and *.asm files in the tree and obtain the # object and header dependency file names. -override CFILES := $(shell find -L . -type f -name '*.c' | grep -v 'limine/') -override ASFILES := $(shell find -L . -type f -name '*.s' | grep -v 'limine/') -override OBJ := $(patsubst %.c,build/%.c.o,$(CFILES)) $(patsubst %.s,build/%.s.o,$(ASFILES)) -override HEADER_DEPS := $(patsubst %.c,build/%.c.d,$(CFILES)) $(patsubst %.s,build/%.s.d,$(ASFILES)) +override CFILES := $(shell find -L . -type f -name '*.c') +override ASFILES := $(shell find -L . -type f -name '*.s') + +# Output directory for the build. Can be overridden. +override BUILD_DIR := ../build/kernel + +override OBJ := $(patsubst %.c,$(BUILD_DIR)/%.c.o,$(CFILES)) $(patsubst %.s,$(BUILD_DIR)/%.s.o,$(ASFILES)) +override HEADER_DEPS := $(patsubst %.c,$(BUILD_DIR)/%.c.d,$(CFILES)) $(patsubst %.s,$(BUILD_DIR)/%.s.d,$(ASFILES)) # Default target. .PHONY: all -all: build/$(KERNEL) +all: $(BUILD_DIR)/$(KERNEL) # Link rules for the final kernel executable. -build/$(KERNEL): $(OBJ) +$(BUILD_DIR)/$(KERNEL): $(OBJ) $(LD) $(OBJ) $(LDFLAGS) -o $@ # Include header dependencies. -include $(HEADER_DEPS) # Compilation rules for *.c files. -build/%.c.o: %.c | $(BUILD_DIR) +$(BUILD_DIR)/%.c.o: %.c @mkdir -p $(@D) $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ # Compilation rules for *.S files. -build/%.s.o: %.s +$(BUILD_DIR)/%.s.o: %.s @mkdir -p $(@D) $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ # Remove object files and the final executable. .PHONY: clean clean: - rm -rf $(KERNEL) $(OBJ) $(HEADER_DEPS) + rm -rf $(BUILD_DIR) # Format C source and header files (only touches src/ and main/) .PHONY: format From 3094d23406d41f6abe932f8f05494400b642849e Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Sun, 15 Mar 2026 15:56:39 +0530 Subject: [PATCH 3/5] Add orchestrator makefile --- Makefile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..66f5fa2 --- /dev/null +++ b/Makefile @@ -0,0 +1,11 @@ +.PHONY: all kernel clean + +all: kernel + +kernel: + @echo "Building Kernel..." + $(MAKE) -C kernel + +clean: + @echo "Cleaning Kernel..." + $(MAKE) -C kernel clean From f54075e7d92fe40bf7239f9389ebc52a0e1019d0 Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Sun, 15 Mar 2026 16:00:02 +0530 Subject: [PATCH 4/5] Update build.sh --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index e712cc7..36e8d4f 100755 --- a/build.sh +++ b/build.sh @@ -113,7 +113,7 @@ echo -e "\e[1;33m\n$(heading "Building OS binaries")\n\e[0m" make -j$(nproc) -echo -e "\nentry.elf generated with size $(wc -c <"build/entry.elf") bytes" +echo -e "\nentry.elf generated with size $(wc -c <"build/kernel/entry.elf") bytes" echo -e "\e[1;33m\n$(heading "Building Limine-deploy")\n\e[0m" @@ -130,7 +130,7 @@ mkdir -p iso_root/boot/limine # Copy the relevant files over. cp -v limine.conf limine/limine-bios.sys limine/limine-bios-cd.bin limine/limine-uefi-cd.bin iso_root/boot/limine/ -cp -v build/entry.elf iso_root/boot/ +cp -v build/kernel/entry.elf iso_root/boot/ # Create the EFI boot tree and copy Limine's EFI executables over. mkdir -p iso_root/EFI/BOOT From 38f659cf61564f3cc3dd3f26dd5d4991654ab3a3 Mon Sep 17 00:00:00 2001 From: ryuukumar Date: Sun, 15 Mar 2026 16:05:35 +0530 Subject: [PATCH 5/5] Fix format --- .github/workflows/format-check.yml | 3 +-- Makefile | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/format-check.yml b/.github/workflows/format-check.yml index 5c71847..d3b3229 100644 --- a/.github/workflows/format-check.yml +++ b/.github/workflows/format-check.yml @@ -16,5 +16,4 @@ jobs: run: sudo apt-get install -y clang-format - name: Run clang-format in dry-run mode - run: | - find src/ include/ -type f \( -name '*.c' -o -name '*.h' \) ! -name 'limine.h' -exec clang-format --Werror --dry-run {} + + run: make format diff --git a/Makefile b/Makefile index 66f5fa2..7e56138 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all kernel clean +.PHONY: all kernel clean format all: kernel @@ -6,6 +6,10 @@ kernel: @echo "Building Kernel..." $(MAKE) -C kernel +format: + @echo "Formatting Kernel..." + $(MAKE) -C kernel format + clean: @echo "Cleaning Kernel..." $(MAKE) -C kernel clean