-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
87 lines (67 loc) · 2 KB
/
Makefile
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
# https://gist.github.com/maxtruxa/4b3929e118914ccef057f8a05c614b0f
.PHONY: clean debug
OUT_DIR = _build
PROJ = iotpatch
PROJ_DIR = $(abspath .)
TARGET = $(OUT_DIR)/$(PROJ).elf
INCLUDE_PATH += \
-I$(PROJ_DIR)/ \
-I$(PROJ_DIR)/app \
-I$(PROJ_DIR)/hotpatch \
-I$(PROJ_DIR)/libebpf/src \
-I$(PROJ_DIR)/libebpf \
# todo use wildcard
# code files
SRC += $(PROJ_DIR)/main.c \
$(PROJ_DIR)/app/dummy_cve.c \
$(PROJ_DIR)/app/ihp_cli.c \
$(PROJ_DIR)/app/ihp_porting.c \
$(PROJ_DIR)/hotpatch/src/iotpatch.c \
$(PROJ_DIR)/hotpatch/src/hw_bp.c \
$(PROJ_DIR)/hotpatch/src/ebpf_test.c \
$(PROJ_DIR)/hotpatch/src/utils.c \
$(PROJ_DIR)/hotpatch/src/profiling.c \
$(PROJ_DIR)/hotpatch/src/fixed_patch_points.c \
$(PROJ_DIR)/hotpatch/src/dynamic_patch_load.c \
$(PROJ_DIR)/hotpatch/src/patch_service.c \
$(PROJ_DIR)/libebpf/src/ebpf_allocator.c \
$(PROJ_DIR)/libebpf/src/hashmap.c \
$(PROJ_DIR)/libebpf/src/ebpf_vm.c \
$(PROJ_DIR)/libebpf/src/jit.c \
$(PROJ_DIR)/libebpf/src/jit_thumb2.c
# $(PROJ_DIR)/libebpf/src/ebpf_env.c \
DEFINES += -DLINUX_TEST
VPATH := app:hotpatch/src:libebpf/src
CFLAGS += $(INCLUDE_PATH) $(DEFINES) -g
DEPFLAGS = -MT $@ -MD -MP -MF $(OUT_DIR)/deps/$(*F).d
LDFLAGS := -pthread -g
SRC_FILES = $(notdir $(SRC))
OBJ := $(SRC_FILES:.c=.o)
OBJ := $(addprefix $(OUT_DIR)/objs/, $(OBJ))
EBPF_CODE := $(notdir $(wildcard $(PROJ_DIR)/update_server/patch_code/*.ebpf.c))
EBPF_CODE := $(EBPF_CODE:.ebpf.c="")
all: debug
debug:
@echo "Compiling:" $(TARGET)
make $(TARGET)
@echo "Runing:" $(TARGET)
@make --no-print-directory run
patch:
@echo "Make ebpf patch"
@$(foreach FILE, ${EBPF_CODE}, cd $(PROJ_DIR)/update_server && ./compile.sh ${FILE})
server:
@echo "Start update server"
sudo python3 update_server/server.py
$(OUT_DIR):
mkdir -p $(OUT_DIR)
mkdir -p $(OUT_DIR)/objs
mkdir -p $(OUT_DIR)/deps
$(TARGET): $(OBJ)
$(CC) $(LDFLAGS) $^ -o $@
$(OUT_DIR)/objs/%.o: %.c | $(OUT_DIR)
$(CC) $(DEPFLAGS) $(CFLAGS) -c $^ -o $@ $(LDFLAGS)
run:
@./$(TARGET)
clean:
@echo "make clean"
rm -rf $(OUT_DIR)