diff options
author | 3gg <3gg@shellblade.net> | 2025-02-08 14:03:10 -0800 |
---|---|---|
committer | 3gg <3gg@shellblade.net> | 2025-02-08 14:03:10 -0800 |
commit | d9663547a1f4337e1a31d727abe15a8aafa0c9c8 (patch) | |
tree | 05795108e35cb8a9c5d05a19cd7a28487322ad6b /Makefile |
Initial commit.
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 | |||