diff options
author | trimill <trimill@trimillxyz.org> | 2024-01-26 22:29:49 -0500 |
---|---|---|
committer | trimill <trimill@trimillxyz.org> | 2024-01-26 22:29:49 -0500 |
commit | 4aad3cce1d22c39dfa9c0d360737fe6d92f38595 (patch) | |
tree | 9bbd6741e99f7fd1499c221748d7b74f567eb3eb /Makefile | |
parent | Created basic directory structure (diff) | |
download | corn-4aad3cce1d22c39dfa9c0d360737fe6d92f38595.tar.gz corn-4aad3cce1d22c39dfa9c0d360737fe6d92f38595.tar.bz2 corn-4aad3cce1d22c39dfa9c0d360737fe6d92f38595.zip |
added boilerplate (todo make it amd64)
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -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 |