6
ALIGNCHECKERDIR = alignchecker/
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 \
31
bpf_enforcer.o bpf_multi_enforcer.o bpf_fmodret_enforcer.o
33
CGROUP = bpf_cgroup_mkdir.o bpf_cgroup_rmdir.o bpf_cgroup_release.o
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))
51
# NB: https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html
54
$(LLOBJS): | $(OBJSDIR)
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
74
# Generic build targets for each sub-dir
76
$(eval $(call DEFINE_VARIANT,v53))
77
$(eval $(call DEFINE_VARIANT,v511))
78
$(eval $(call DEFINE_VARIANT,v61))
81
objs/%.ll: $(ALIGNCHECKERDIR)%.c
82
$(CLANG) $(CLANG_FLAGS) -c $< -o $@
84
$(DEPSDIR)%.d: $(ALIGNCHECKERDIR)%.c
85
$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
88
# Enforcer programs: bpf_enforcer, bpf_multi_enforcer, bpf_fmodret_enforcer
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 $@
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, $@) $< > $@
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 $@
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, $@) $< > $@
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 $@
108
$(DEPSDIR)/bpf_fmodret_enforcer.d: process/bpf_enforcer.c
109
$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
112
objs/%.ll: $(PROCESSDIR)%.c
113
$(CLANG) $(CLANG_FLAGS) -c $< -o $@
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 $@
119
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -c $< -o $@
121
$(DEPSDIR)%.d: $(PROCESSDIR)%.c
122
$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
126
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
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 $@
131
objs/bpf_multi_uprobe_v61.ll:
132
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__V61_BPF_PROG -D__MULTI_KPROBE -c $< -o $@
135
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__V61_BPF_PROG -c $< -o $@
138
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -D__V61_BPF_PROG -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
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 $@
144
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -c $< -o $@
147
$(CLANG) $(CLANG_FLAGS) -D__LARGE_BPF_PROG -D__LARGE_MAP_KEYS -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
150
objs/%.ll: $(BPFTESTDIR)%.c
151
$(CLANG) $(CLANG_FLAGS) -c $< -o $@
153
$(DEPSDIR)%.d: $(BPFTESTDIR)%.c
154
$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
157
objs/%.ll: $(CGROUPDIR)%.c
158
$(CLANG) $(CLANG_FLAGS) -c $< -o $@
160
$(DEPSDIR)%.d: $(CGROUPDIR)%.c
161
$(CLANG) $(CLANG_FLAGS) -MM -MP -MT $(patsubst $(DEPSDIR)%.d, $(OBJSDIR)%.ll, $@) $< > $@
163
# Remaining objects are built without mcpu=v2
165
$(LLC) $(LLC_FLAGS) -filetype=obj $< -o $@
167
# include dependencies, see https://lists.gnu.org/archive/html/make-w32/2004-03/msg00062.html
168
ifeq (,$(filter $(MAKECMDGOALS),clean run-test))
172
# the 'test' target is already taken
174
$(MAKE) -C tests test
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