diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7478d63 --- /dev/null +++ b/Makefile | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | SRC_DIR := src | ||
| 2 | BUILD_DIR := build | ||
| 3 | OBJ_DIR := $(BUILD_DIR) | ||
| 4 | BIN_DIR := $(BUILD_DIR)/bin | ||
| 5 | |||
| 6 | IMG := $(BIN_DIR)/kernel8.img | ||
| 7 | ELF := $(BIN_DIR)/kernel8.elf | ||
| 8 | |||
| 9 | SRC := $(wildcard $(SRC_DIR)/*.c) | ||
| 10 | OBJ := $(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o) | ||
| 11 | ASM_SRC := $(wildcard $(SRC_DIR)/*.s) | ||
| 12 | ASM_OBJ := $(ASM_SRC:$(SRC_DIR)/%.s=$(OBJ_DIR)/%.o) | ||
| 13 | LINK := $(SRC_DIR)/link.ld | ||
| 14 | |||
| 15 | CPPFLAGS := -I$(SRC_DIR) -MMD -MP | ||
| 16 | CFLAGS := -Wall -Wextra -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles | ||
| 17 | LDFLAGS := -nostdlib | ||
| 18 | |||
| 19 | TOOLCHAIN := $(HOME)/bin/arm-gnu-toolchain-14.2.rel1-x86_64-aarch64-none-elf/bin | ||
| 20 | AS := $(TOOLCHAIN)/aarch64-none-elf-as | ||
| 21 | CC := $(TOOLCHAIN)/aarch64-none-elf-gcc | ||
| 22 | LD := $(TOOLCHAIN)/aarch64-none-elf-ld | ||
| 23 | OBJCOPY := $(TOOLCHAIN)/aarch64-none-elf-objcopy | ||
| 24 | |||
| 25 | .PHONY: all clean | ||
| 26 | |||
| 27 | all: $(IMG) | ||
| 28 | |||
| 29 | $(IMG): $(ELF) | $(BIN_DIR) | ||
| 30 | @echo Building $@ | ||
| 31 | $(OBJCOPY) -O binary $(ELF) $@ | ||
| 32 | |||
| 33 | $(ELF): $(OBJ) $(ASM_OBJ) | $(BIN_DIR) | ||
| 34 | @echo Building $@ | ||
| 35 | $(LD) $(LDFLAGS) $^ -T $(LINK) -o $@ | ||
| 36 | |||
| 37 | $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR) | ||
| 38 | @echo Building $< "->" $@ | ||
| 39 | $(CC) $(CFLAGS) -c $< -o $@ | ||
| 40 | |||
| 41 | $(OBJ_DIR)/%.o: $(SRC_DIR)/%.s | $(BUILD_DIR) | ||
| 42 | @echo Building $< "->" $@ | ||
| 43 | $(AS) $< -o $@ | ||
| 44 | |||
| 45 | clean: | ||
| 46 | rm -rf $(BUILD_DIR) | ||
| 47 | |||
| 48 | $(BUILD_DIR): | ||
| 49 | mkdir -p $(BUILD_DIR) | ||
| 50 | |||
| 51 | $(BIN_DIR): | ||
| 52 | mkdir -p $(BIN_DIR) | ||
| 53 | |||
