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