tetragon

Форк
0
/
Makefile 
183 строки · 6.3 Кб
1
.PHONY: all clean
2
.SUFFIXES:
3

4
include ./Makefile.defs
5

6
ALIGNCHECKERDIR = alignchecker/
7
PROCESSDIR := process/
8
CGROUPDIR := cgroup/
9
BPFTESTDIR := test/
10

11
ALIGNCHECKER = bpf_alignchecker.o
12
PROCESS = bpf_execve_event.o bpf_execve_event_v53.o bpf_fork.o bpf_exit.o bpf_generic_kprobe.o \
13
	  bpf_execve_bprm_commit_creds.o \
14
	  bpf_generic_kprobe_v53.o bpf_generic_retkprobe.o bpf_generic_retkprobe_v53.o \
15
	  bpf_multi_kprobe_v53.o bpf_multi_retkprobe_v53.o \
16
	  bpf_generic_tracepoint.o bpf_generic_tracepoint_v53.o \
17
	  bpf_generic_uprobe.o bpf_generic_uprobe_v53.o \
18
	  bpf_execve_event_v61.o \
19
	  bpf_generic_kprobe_v61.o bpf_generic_retkprobe_v61.o \
20
	  bpf_generic_tracepoint_v61.o \
21
	  bpf_multi_kprobe_v61.o bpf_multi_retkprobe_v61.o \
22
	  bpf_generic_uprobe_v61.o \
23
	  bpf_multi_uprobe_v61.o \
24
	  bpf_execve_event_v511.o \
25
	  bpf_generic_kprobe_v511.o bpf_generic_retkprobe_v511.o \
26
	  bpf_generic_tracepoint_v511.o \
27
	  bpf_multi_kprobe_v511.o bpf_multi_retkprobe_v511.o \
28
	  bpf_generic_uprobe_v511.o \
29
	  bpf_loader.o \
30
	  bpf_cgroup.o \
31
	  bpf_enforcer.o bpf_multi_enforcer.o bpf_fmodret_enforcer.o
32

33
CGROUP = bpf_cgroup_mkdir.o bpf_cgroup_rmdir.o bpf_cgroup_release.o
34
BPFTEST = bpf_lseek.o
35

36
OBJSDIR       := objs/
37
DEPSDIR       := deps/
38

39
TLSOBJ        := $(addprefix $(OBJSDIR),$(TLS))
40
NOPOBJ        := $(addprefix $(OBJSDIR),$(NOP))
41
PROCESSOBJ    := $(addprefix $(OBJSDIR),$(PROCESS))
42
CGROUPOBJ     := $(addprefix $(OBJSDIR),$(CGROUP))
43
TESTOBJ       := $(addprefix $(OBJSDIR),$(BPFTEST))
44
ALIGNCHECKEROBJ := $(addprefix $(OBJSDIR),$(ALIGNCHECKER))
45
OBJS          := $(PROCESSOBJ) $(CGROUPOBJ) $(TESTOBJ) $(NOPOBJ) $(ALIGNCHECKEROBJ)
46
LLOBJS        := $(patsubst $(OBJSDIR)%.o,$(OBJSDIR)%.ll,$(OBJS))
47
DEPS          := $(patsubst $(OBJSDIR)%.ll,$(DEPSDIR)%.d,$(LLOBJS))
48

49
all: $(OBJS) $(DEPS)
50

51
# NB: https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
52
$(OBJS): | $(OBJSDIR)
53
$(DEPS): | $(DEPSDIR)
54
$(LLOBJS): | $(OBJSDIR)
55

56
$(OBJSDIR):
57
	mkdir $(OBJSDIR)
58

59
$(DEPSDIR):
60
	mkdir $(DEPSDIR)
61

62
define DEFINE_VARIANT
63
VAR := $1
64
deps/bpf_execve_event_$$(VAR).d: process/bpf_execve_event.c
65
deps/bpf_generic_kprobe_$$(VAR).d: process/bpf_generic_kprobe.c
66
deps/bpf_generic_retkprobe_$$(VAR).d: process/bpf_generic_retkprobe.c
67
deps/bpf_multi_kprobe_$$(VAR).d: process/bpf_generic_kprobe.c
68
deps/bpf_multi_retkprobe_$$(VAR).d: process/bpf_generic_retkprobe.c
69
deps/bpf_generic_tracepoint_$$(VAR).d: process/bpf_generic_tracepoint.c
70
deps/bpf_generic_uprobe_$$(VAR).d: process/bpf_generic_uprobe.c
71
deps/bpf_multi_uprobe_$$(VAR).d: process/bpf_generic_uprobe.c
72
endef
73

74
# Generic build targets for each sub-dir
75

76
$(eval $(call DEFINE_VARIANT,v53))
77
$(eval $(call DEFINE_VARIANT,v511))
78
$(eval $(call DEFINE_VARIANT,v61))
79

80
# ALIGNCHECKER
81
objs/%.ll: $(ALIGNCHECKERDIR)%.c
82
	$(CLANG) $(CLANG_FLAGS) -c $< -o $@
83

84
$(DEPSDIR)%.d: $(ALIGNCHECKERDIR)%.c
85
	$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
86

87

88
# Enforcer programs: bpf_enforcer, bpf_multi_enforcer, bpf_fmodret_enforcer
89

90
## bpf_enforcer: __BPF_OVERRIDE_RETURN, but no __MULTI_KPROBE
91
objs/bpf_enforcer.ll: process/bpf_enforcer.c
92
	$(CLANG) $(CLANG_FLAGS) -D__BPF_OVERRIDE_RETURN -c $< -o $@
93

94
$(DEPSDIR)bpf_enforcer.d: process/bpf_enforcer.c
95
	$(CLANG) $(CLANG_FLAGS) -D__BPF_OVERRIDE_RETURN -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
96

97
## bpf_multi_enforcer: __BPF_OVERRIDE_RETURN and __MULTI_KPROBE
98
objs/bpf_multi_enforcer.ll: process/bpf_enforcer.c
99
	$(CLANG) $(CLANG_FLAGS) -D__BPF_OVERRIDE_RETURN -D__MULTI_KPROBE -c $< -o $@
100

101
$(DEPSDIR)/bpf_multi_enforcer.d: process/bpf_enforcer.c
102
	$(CLANG) $(CLANG_FLAGS) -D__BPF_OVERRIDE_RETURN -D__MULTI_KPROBE -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
103

104
## bpf_fmodret_enforcer no bpf_override_return: we need fmod_ret
105
objs/bpf_fmodret_enforcer.ll: process/bpf_enforcer.c
106
	$(CLANG) $(CLANG_FLAGS) -c $< -o $@
107

108
$(DEPSDIR)/bpf_fmodret_enforcer.d: process/bpf_enforcer.c
109
	$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
110

111
# PROCESSDIR
112
objs/%.ll: $(PROCESSDIR)%.c
113
	$(CLANG) $(CLANG_FLAGS) -c $< -o $@
114

115
objs/bpf_multi_kprobe_v53.ll objs/bpf_multi_retkprobe_v53.ll:
116
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__MULTI_KPROBE -c $< -o $@
117

118
objs/%_v53.ll:
119
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -c $< -o $@
120

121
$(DEPSDIR)%.d: $(PROCESSDIR)%.c
122
	$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
123

124

125
$(DEPSDIR)%_v53.d:
126
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
127

128
objs/bpf_multi_kprobe_v61.ll objs/bpf_multi_retkprobe_v61.ll:
129
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__V61_BPF_PROG -D__MULTI_KPROBE -c $< -o $@
130

131
objs/bpf_multi_uprobe_v61.ll:
132
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__V61_BPF_PROG -D__MULTI_KPROBE -c $< -o $@
133

134
objs/%_v61.ll:
135
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__V61_BPF_PROG -c $< -o $@
136

137
$(DEPSDIR)%_v61.d:
138
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__V61_BPF_PROG -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
139

140
objs/bpf_multi_kprobe_v511.ll objs/bpf_multi_retkprobe_v511.ll:
141
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__MULTI_KPROBE -c $< -o $@
142

143
objs/%_v511.ll:
144
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -c $< -o $@
145

146
$(DEPSDIR)%_v511.d:
147
	$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
148

149
# BPFTESTDIR
150
objs/%.ll: $(BPFTESTDIR)%.c
151
	$(CLANG) $(CLANG_FLAGS) -c $< -o $@
152

153
$(DEPSDIR)%.d: $(BPFTESTDIR)%.c
154
	$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
155

156
# CGROUPDIR
157
objs/%.ll: $(CGROUPDIR)%.c
158
	$(CLANG) $(CLANG_FLAGS) -c $< -o $@
159

160
$(DEPSDIR)%.d: $(CGROUPDIR)%.c
161
	$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@)   $< > $@
162

163
# Remaining objects are built without mcpu=v2
164
objs/%.o: objs/%.ll
165
	$(LLC) $(LLC_FLAGS) -filetype=obj $< -o $@
166

167
# include dependencies, see https://lists.gnu.org/archive/html/make-w32/2004-03/msg00062.html
168
ifeq (,$(filter $(MAKECMDGOALS),clean run-test))
169
-include $(DEPS)
170
endif
171

172
# the 'test' target is already taken
173
run-test:
174
	$(MAKE) -C tests test
175

176
SUBDIRS=tests
177

178
clean:
179
	@$(ECHO_CLEAN)
180
	$(QUIET) $(foreach TARGET,$(SUBDIRS), \
181
		$(MAKE) -C $(TARGET) clean)
182
	$(QUIET)rm -f $(OBJSDIR)*.{o,ll,i,s}
183
	$(QUIET)rm -f $(DEPSDIR)*.d
184

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.