-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
135 lines (98 loc) · 3.31 KB
/
Copy pathMakefile
File metadata and controls
135 lines (98 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# KITE v6 Build System
# Copyright (C) 2026 Dere3046
# SPDX-License-Identifier: GPL-2.0
# kernel build config
KERNEL_DIR ?= ../kernel/android-kernel
CROSS_COMPILE ?= aarch64-linux-gnu-
# KITE config
KITE_DIR := /home/Dere3046/code/KITE/KITE_DEV
CORE_DIR := $(KITE_DIR)/core
ARCH_DIR := $(CORE_DIR)/arch/arm64
# output
BUILD_DIR := $(KITE_DIR)/build
OBJ_DIR := $(BUILD_DIR)/obj
BIN_DIR := $(BUILD_DIR)/bin
# compiler
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
AS := $(CROSS_COMPILE)as
OBJCOPY := $(CROSS_COMPILE)objcopy
OBJDUMP := $(CROSS_COMPILE)objdump
# flags
CFLAGS := -Wall -O2 -nostdlib -nostartfiles -ffreestanding -fno-builtin-memcpy \
-I$(KITE_DIR)/include \
-I$(CORE_DIR) \
-D__KERNEL__ \
-DKITE_VERSION=6
ifdef DEBUG
CFLAGS += -DKITE_DEBUG -DMAP_DEBUG
endif
ASFLAGS := -I$(KITE_DIR)/include -I$(CORE_DIR) -nostdinc
ifdef DEBUG
ASFLAGS += -DKITE_DEBUG -DMAP_DEBUG
endif
LDFLAGS := -T $(ARCH_DIR)/kite.lds -nostdlib
# source files
C_SRCS := $(wildcard $(CORE_DIR)/*.c)
C_SRCS += $(wildcard $(CORE_DIR)/*/*.c)
C_SRCS += $(wildcard $(ARCH_DIR)/*.c)
S_SRCS := $(wildcard $(ARCH_DIR)/*.S)
OBJS := $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(C_SRCS)))
OBJS += $(patsubst %.S,$(OBJ_DIR)/%.o,$(notdir $(S_SRCS)))
OBJS += $(OBJ_DIR)/transit_end.o
# targets
.PHONY: all clean qemu test
all: $(BIN_DIR)/kite.bin
$(OBJ_DIR):
mkdir -p $(OBJ_DIR)
$(BIN_DIR):
mkdir -p $(BIN_DIR)
$(OBJ_DIR)/%.o: $(CORE_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o: $(CORE_DIR)/%/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o: $(ARCH_DIR)/%.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/map_text.o: $(ARCH_DIR)/map_text.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -mgeneral-regs-only -c $< -o $@
$(OBJ_DIR)/tlsf.o: $(CORE_DIR)/memory/tlsf.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/symbol_engine.o: $(CORE_DIR)/symbol/symbol_engine.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/hook_engine.o: $(CORE_DIR)/hook/hook_engine.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/fphook.o: $(CORE_DIR)/hook/fphook.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/hotpatch.o: $(CORE_DIR)/hook/hotpatch.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/memory.o: $(CORE_DIR)/memory/memory.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/loader.o: $(CORE_DIR)/module/loader.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/module.o: $(CORE_DIR)/module/module.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/kstorage.o: $(CORE_DIR)/comm/kstorage.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/task_local.o: $(CORE_DIR)/comm/task_local.c | $(OBJ_DIR)
$(CC) $(CFLAGS) -c $< -o $@
$(OBJ_DIR)/%.o: $(ARCH_DIR)/%.S | $(OBJ_DIR)
$(CC) $(ASFLAGS) -x assembler-with-cpp -c $< -o $@
$(OBJ_DIR)/transit_end.o: $(CORE_DIR)/hook/transit_end.S | $(OBJ_DIR)
$(CC) $(ASFLAGS) -x assembler-with-cpp -c $< -o $@
$(BIN_DIR)/kite.elf: $(OBJS) | $(BIN_DIR)
$(LD) $(LDFLAGS) $^ -o $@
$(BIN_DIR)/kite.bin: $(BIN_DIR)/kite.elf
$(OBJCOPY) -O binary $< $@
qemu: $(BIN_DIR)/kite.bin
@echo "Run QEMU test..."
qemu-system-aarch64 -M virt -cpu cortex-a53 -nographic \
-kernel $(KERNEL_DIR)/arch/arm64/boot/Image \
-append "console=ttyAMA0"
test: qemu
clean:
rm -rf $(BUILD_DIR)
# debug
info:
@echo "C_SRCS: $(C_SRCS)"
@echo "S_SRCS: $(S_SRCS)"
@echo "OBJS: $(OBJS)"