From 4aad3cce1d22c39dfa9c0d360737fe6d92f38595 Mon Sep 17 00:00:00 2001 From: trimill Date: Fri, 26 Jan 2024 22:29:49 -0500 Subject: added boilerplate (todo make it amd64) --- Makefile | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'Makefile') diff --git a/Makefile b/Makefile index e69de29..9e081c5 100644 --- a/Makefile +++ b/Makefile @@ -0,0 +1,45 @@ +CC=cc +LD=ld + +CFLAGS=-ffreestanding -g -Wall -Wextra -pedantic -lgcc + +SRC_DIR=src +INCLUDE_DIR=include +BUILD_DIR=build + +K_BIN_NAME=kernel.bin +ISO_NAME=os_image.iso + +C_SRC=$(shell find $(SRC_DIR) -type f -name "*.c") +C_OBJ=$(patsubst %.c,$(BUILD_DIR)/%.o,$(C_SRC)) + +H_SRC=$(shell find $(SRC_DIR) -type f -name "*.h") $(shell find $(INCLUDE_DIR) -type f -name "*.h") + +A_SRC=$(shell find $(SRC_DIR) -type f -name "*.S") +A_OBJ=$(patsubst %.S,$(BUILD_DIR)/%.S.o,$(A_SRC)) + +.PHONY: all clean + +all: $(BUILD_DIR)/$(ISO_NAME) + +clean: + rm -rf $(BUILD_DIR)/* + +$(A_OBJ): $(BUILD_DIR)/%.S.o : %.S + @mkdir -p $(@D) + nasm $< -f elf64 -o $@ + +$(C_OBJ): $(BUILD_DIR)/%.o : %.c + @mkdir -p $(@D) + $(CC) -c $(CFLAGS) -o $@ $< + +$(BUILD_DIR)/$(K_BIN_NAME): $(SRC_DIR)/arch/amd64/linker.ld $(A_OBJ) $(C_OBJ) $(H_SRC) + @mkdir -p $(@D) + $(LD) -nmagic -o $(BUILD_DIR)/$(K_BIN_NAME) -T $(SRC_DIR)/arch/amd64/linker.ld $(A_OBJ) $(C_OBJ) + +$(BUILD_DIR)/$(ISO_NAME): $(BUILD_DIR)/$(K_BIN_NAME) grub.cfg + @mkdir -p $(@D) + @mkdir -p $(BUILD_DIR)/iso/boot/grub + cp grub.cfg $(BUILD_DIR)/iso/boot/grub + cp $(BUILD_DIR)/$(K_BIN_NAME) $(BUILD_DIR)/iso/boot + grub-mkrescue -o $(BUILD_DIR)/$(ISO_NAME) $(BUILD_DIR)/iso -- cgit v1.2.3-freya