From d9663547a1f4337e1a31d727abe15a8aafa0c9c8 Mon Sep 17 00:00:00 2001
From: 3gg <3gg@shellblade.net>
Date: Sat, 8 Feb 2025 14:03:10 -0800
Subject: Initial commit.

---
 Makefile | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 Makefile

(limited to 'Makefile')

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..7478d63
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,53 @@
+SRC_DIR   := src
+BUILD_DIR := build
+OBJ_DIR   := $(BUILD_DIR)
+BIN_DIR   := $(BUILD_DIR)/bin
+
+IMG := $(BIN_DIR)/kernel8.img
+ELF := $(BIN_DIR)/kernel8.elf
+
+SRC     := $(wildcard $(SRC_DIR)/*.c)
+OBJ     := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
+ASM_SRC := $(wildcard $(SRC_DIR)/*.s)
+ASM_OBJ := $(ASM_SRC:$(SRC_DIR)/%.s=$(OBJ_DIR)/%.o)
+LINK    := $(SRC_DIR)/link.ld
+
+CPPFLAGS := -I$(SRC_DIR) -MMD -MP
+CFLAGS   := -Wall -Wextra -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles
+LDFLAGS  := -nostdlib
+
+TOOLCHAIN := $(HOME)/bin/arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-elf/bin
+AS        := $(TOOLCHAIN)/aarch64-none-elf-as
+CC        := $(TOOLCHAIN)/aarch64-none-elf-gcc
+LD        := $(TOOLCHAIN)/aarch64-none-elf-ld
+OBJCOPY   := $(TOOLCHAIN)/aarch64-none-elf-objcopy
+
+.PHONY: all clean
+
+all: $(IMG)
+
+$(IMG): $(ELF) | $(BIN_DIR)
+	@echo Building $@
+	$(OBJCOPY) -O binary $(ELF) $@
+
+$(ELF): $(OBJ) $(ASM_OBJ) | $(BIN_DIR)
+	@echo Building $@
+	$(LD) $(LDFLAGS) $^ -T $(LINK) -o $@
+
+$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
+	@echo Building $< "->" $@
+	$(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJ_DIR)/%.o: $(SRC_DIR)/%.s | $(BUILD_DIR)
+	@echo Building $< "->" $@
+	$(AS) $< -o $@
+
+clean:
+	rm -rf $(BUILD_DIR)
+
+$(BUILD_DIR):
+	mkdir -p $(BUILD_DIR)
+	
+$(BIN_DIR):
+	mkdir -p $(BIN_DIR)
+
-- 
cgit v1.2.3