1
1
# SPDX-License-Identifier: GPL-2.0
2
+
3
+ BPF_SAMPLES_PATH ?= $(abspath $(srctree ) /$(src ) )
4
+ TOOLS_PATH := $(BPF_SAMPLES_PATH ) /../../tools
5
+
2
6
# List of programs to build
3
7
hostprogs-y := test_lru_dist
4
8
hostprogs-y += sock_example
@@ -49,59 +53,58 @@ hostprogs-y += xdpsock
49
53
hostprogs-y += xdp_fwd
50
54
51
55
# Libbpf dependencies
52
- LIBBPF := ../../tools/lib/bpf/libbpf.a
56
+ LIBBPF = $(TOOLS_PATH ) /lib/bpf/libbpf.a
57
+
53
58
CGROUP_HELPERS := ../../tools/testing/selftests/bpf/cgroup_helpers.o
54
59
TRACE_HELPERS := ../../tools/testing/selftests/bpf/trace_helpers.o
55
60
56
- test_lru_dist-objs := test_lru_dist.o $(LIBBPF )
57
- sock_example-objs := sock_example.o $(LIBBPF )
58
- fds_example-objs := bpf_load.o $(LIBBPF ) fds_example.o
59
- sockex1-objs := bpf_load.o $(LIBBPF ) sockex1_user.o
60
- sockex2-objs := bpf_load.o $(LIBBPF ) sockex2_user.o
61
- sockex3-objs := bpf_load.o $(LIBBPF ) sockex3_user.o
62
- tracex1-objs := bpf_load.o $(LIBBPF ) tracex1_user.o
63
- tracex2-objs := bpf_load.o $(LIBBPF ) tracex2_user.o
64
- tracex3-objs := bpf_load.o $(LIBBPF ) tracex3_user.o
65
- tracex4-objs := bpf_load.o $(LIBBPF ) tracex4_user.o
66
- tracex5-objs := bpf_load.o $(LIBBPF ) tracex5_user.o
67
- tracex6-objs := bpf_load.o $(LIBBPF ) tracex6_user.o
68
- tracex7-objs := bpf_load.o $(LIBBPF ) tracex7_user.o
69
- load_sock_ops-objs := bpf_load.o $(LIBBPF ) load_sock_ops.o
70
- test_probe_write_user-objs := bpf_load.o $(LIBBPF ) test_probe_write_user_user.o
71
- trace_output-objs := bpf_load.o $(LIBBPF ) trace_output_user.o $(TRACE_HELPERS )
72
- lathist-objs := bpf_load.o $(LIBBPF ) lathist_user.o
73
- offwaketime-objs := bpf_load.o $(LIBBPF ) offwaketime_user.o $(TRACE_HELPERS )
74
- spintest-objs := bpf_load.o $(LIBBPF ) spintest_user.o $(TRACE_HELPERS )
75
- map_perf_test-objs := bpf_load.o $(LIBBPF ) map_perf_test_user.o
76
- test_overhead-objs := bpf_load.o $(LIBBPF ) test_overhead_user.o
77
- test_cgrp2_array_pin-objs := test_cgrp2_array_pin.o $(LIBBPF )
78
- test_cgrp2_attach-objs := test_cgrp2_attach.o $(LIBBPF )
79
- test_cgrp2_attach2-objs := test_cgrp2_attach2.o $(LIBBPF ) $(CGROUP_HELPERS )
80
- test_cgrp2_sock-objs := test_cgrp2_sock.o $(LIBBPF )
81
- test_cgrp2_sock2-objs := bpf_load.o $(LIBBPF ) test_cgrp2_sock2.o
82
- xdp1-objs := xdp1_user.o $(LIBBPF )
61
+ fds_example-objs := bpf_load.o fds_example.o
62
+ sockex1-objs := bpf_load.o sockex1_user.o
63
+ sockex2-objs := bpf_load.o sockex2_user.o
64
+ sockex3-objs := bpf_load.o sockex3_user.o
65
+ tracex1-objs := bpf_load.o tracex1_user.o
66
+ tracex2-objs := bpf_load.o tracex2_user.o
67
+ tracex3-objs := bpf_load.o tracex3_user.o
68
+ tracex4-objs := bpf_load.o tracex4_user.o
69
+ tracex5-objs := bpf_load.o tracex5_user.o
70
+ tracex6-objs := bpf_load.o tracex6_user.o
71
+ tracex7-objs := bpf_load.o tracex7_user.o
72
+ load_sock_ops-objs := bpf_load.o load_sock_ops.o
73
+ test_probe_write_user-objs := bpf_load.o test_probe_write_user_user.o
74
+ trace_output-objs := bpf_load.o trace_output_user.o $(TRACE_HELPERS )
75
+ lathist-objs := bpf_load.o lathist_user.o
76
+ offwaketime-objs := bpf_load.o offwaketime_user.o $(TRACE_HELPERS )
77
+ spintest-objs := bpf_load.o spintest_user.o $(TRACE_HELPERS )
78
+ map_perf_test-objs := bpf_load.o map_perf_test_user.o
79
+ test_overhead-objs := bpf_load.o test_overhead_user.o
80
+ test_cgrp2_array_pin-objs := test_cgrp2_array_pin.o
81
+ test_cgrp2_attach-objs := test_cgrp2_attach.o
82
+ test_cgrp2_attach2-objs := test_cgrp2_attach2.o $(CGROUP_HELPERS )
83
+ test_cgrp2_sock-objs := test_cgrp2_sock.o
84
+ test_cgrp2_sock2-objs := bpf_load.o test_cgrp2_sock2.o
85
+ xdp1-objs := xdp1_user.o
83
86
# reuse xdp1 source intentionally
84
- xdp2-objs := xdp1_user.o $( LIBBPF )
85
- xdp_router_ipv4-objs := bpf_load.o $( LIBBPF ) xdp_router_ipv4_user.o
86
- test_current_task_under_cgroup-objs := bpf_load.o $(LIBBPF ) $( CGROUP_HELPERS ) \
87
+ xdp2-objs := xdp1_user.o
88
+ xdp_router_ipv4-objs := bpf_load.o xdp_router_ipv4_user.o
89
+ test_current_task_under_cgroup-objs := bpf_load.o $(CGROUP_HELPERS ) \
87
90
test_current_task_under_cgroup_user.o
88
- trace_event-objs := bpf_load.o $( LIBBPF ) trace_event_user.o $(TRACE_HELPERS )
89
- sampleip-objs := bpf_load.o $( LIBBPF ) sampleip_user.o $(TRACE_HELPERS )
90
- tc_l2_redirect-objs := bpf_load.o $( LIBBPF ) tc_l2_redirect_user.o
91
- lwt_len_hist-objs := bpf_load.o $( LIBBPF ) lwt_len_hist_user.o
92
- xdp_tx_iptunnel-objs := bpf_load.o $( LIBBPF ) xdp_tx_iptunnel_user.o
93
- test_map_in_map-objs := bpf_load.o $( LIBBPF ) test_map_in_map_user.o
94
- per_socket_stats_example-objs := cookie_uid_helper_example.o $( LIBBPF )
95
- xdp_redirect-objs := bpf_load.o $( LIBBPF ) xdp_redirect_user.o
96
- xdp_redirect_map-objs := bpf_load.o $( LIBBPF ) xdp_redirect_map_user.o
97
- xdp_redirect_cpu-objs := bpf_load.o $( LIBBPF ) xdp_redirect_cpu_user.o
98
- xdp_monitor-objs := bpf_load.o $( LIBBPF ) xdp_monitor_user.o
99
- xdp_rxq_info-objs := xdp_rxq_info_user.o $( LIBBPF )
100
- syscall_tp-objs := bpf_load.o $( LIBBPF ) syscall_tp_user.o
101
- cpustat-objs := bpf_load.o $( LIBBPF ) cpustat_user.o
102
- xdp_adjust_tail-objs := xdp_adjust_tail_user.o $( LIBBPF )
103
- xdpsock-objs := bpf_load.o $( LIBBPF ) xdpsock_user.o
104
- xdp_fwd-objs := bpf_load.o $( LIBBPF ) xdp_fwd_user.o
91
+ trace_event-objs := bpf_load.o trace_event_user.o $(TRACE_HELPERS )
92
+ sampleip-objs := bpf_load.o sampleip_user.o $(TRACE_HELPERS )
93
+ tc_l2_redirect-objs := bpf_load.o tc_l2_redirect_user.o
94
+ lwt_len_hist-objs := bpf_load.o lwt_len_hist_user.o
95
+ xdp_tx_iptunnel-objs := bpf_load.o xdp_tx_iptunnel_user.o
96
+ test_map_in_map-objs := bpf_load.o test_map_in_map_user.o
97
+ per_socket_stats_example-objs := cookie_uid_helper_example.o
98
+ xdp_redirect-objs := bpf_load.o xdp_redirect_user.o
99
+ xdp_redirect_map-objs := bpf_load.o xdp_redirect_map_user.o
100
+ xdp_redirect_cpu-objs := bpf_load.o xdp_redirect_cpu_user.o
101
+ xdp_monitor-objs := bpf_load.o xdp_monitor_user.o
102
+ xdp_rxq_info-objs := xdp_rxq_info_user.o
103
+ syscall_tp-objs := bpf_load.o syscall_tp_user.o
104
+ cpustat-objs := bpf_load.o cpustat_user.o
105
+ xdp_adjust_tail-objs := xdp_adjust_tail_user.o
106
+ xdpsock-objs := bpf_load.o xdpsock_user.o
107
+ xdp_fwd-objs := bpf_load.o xdp_fwd_user.o
105
108
106
109
# Tell kbuild to always build the programs
107
110
always := $(hostprogs-y )
@@ -173,53 +176,12 @@ HOSTCFLAGS_spintest_user.o += -I$(srctree)/tools/lib/bpf/
173
176
HOSTCFLAGS_trace_event_user.o += -I$(srctree ) /tools/lib/bpf/
174
177
HOSTCFLAGS_sampleip_user.o += -I$(srctree ) /tools/lib/bpf/
175
178
176
- HOSTLOADLIBES_test_lru_dist += -lelf
177
- HOSTLOADLIBES_sock_example += -lelf
178
- HOSTLOADLIBES_fds_example += -lelf
179
- HOSTLOADLIBES_sockex1 += -lelf
180
- HOSTLOADLIBES_sockex2 += -lelf
181
- HOSTLOADLIBES_sockex3 += -lelf
182
- HOSTLOADLIBES_tracex1 += -lelf
183
- HOSTLOADLIBES_tracex2 += -lelf
184
- HOSTLOADLIBES_tracex3 += -lelf
185
- HOSTLOADLIBES_tracex4 += -lelf -lrt
186
- HOSTLOADLIBES_tracex5 += -lelf
187
- HOSTLOADLIBES_tracex6 += -lelf
188
- HOSTLOADLIBES_tracex7 += -lelf
189
- HOSTLOADLIBES_test_cgrp2_array_pin += -lelf
190
- HOSTLOADLIBES_test_cgrp2_attach += -lelf
191
- HOSTLOADLIBES_test_cgrp2_attach2 += -lelf
192
- HOSTLOADLIBES_test_cgrp2_sock += -lelf
193
- HOSTLOADLIBES_test_cgrp2_sock2 += -lelf
194
- HOSTLOADLIBES_load_sock_ops += -lelf
195
- HOSTLOADLIBES_test_probe_write_user += -lelf
196
- HOSTLOADLIBES_trace_output += -lelf -lrt
197
- HOSTLOADLIBES_lathist += -lelf
198
- HOSTLOADLIBES_offwaketime += -lelf
199
- HOSTLOADLIBES_spintest += -lelf
200
- HOSTLOADLIBES_map_perf_test += -lelf -lrt
201
- HOSTLOADLIBES_test_overhead += -lelf -lrt
202
- HOSTLOADLIBES_xdp1 += -lelf
203
- HOSTLOADLIBES_xdp2 += -lelf
204
- HOSTLOADLIBES_xdp_router_ipv4 += -lelf
205
- HOSTLOADLIBES_test_current_task_under_cgroup += -lelf
206
- HOSTLOADLIBES_trace_event += -lelf
207
- HOSTLOADLIBES_sampleip += -lelf
208
- HOSTLOADLIBES_tc_l2_redirect += -l elf
209
- HOSTLOADLIBES_lwt_len_hist += -l elf
210
- HOSTLOADLIBES_xdp_tx_iptunnel += -lelf
211
- HOSTLOADLIBES_test_map_in_map += -lelf
212
- HOSTLOADLIBES_per_socket_stats_example += -lelf
213
- HOSTLOADLIBES_xdp_redirect += -lelf
214
- HOSTLOADLIBES_xdp_redirect_map += -lelf
215
- HOSTLOADLIBES_xdp_redirect_cpu += -lelf
216
- HOSTLOADLIBES_xdp_monitor += -lelf
217
- HOSTLOADLIBES_xdp_rxq_info += -lelf
218
- HOSTLOADLIBES_syscall_tp += -lelf
219
- HOSTLOADLIBES_cpustat += -lelf
220
- HOSTLOADLIBES_xdp_adjust_tail += -lelf
221
- HOSTLOADLIBES_xdpsock += -lelf -pthread
222
- HOSTLOADLIBES_xdp_fwd += -lelf
179
+ HOST_LOADLIBES += $(LIBBPF ) -lelf
180
+ HOSTLOADLIBES_tracex4 += -lrt
181
+ HOSTLOADLIBES_trace_output += -lrt
182
+ HOSTLOADLIBES_map_perf_test += -lrt
183
+ HOSTLOADLIBES_test_overhead += -lrt
184
+ HOSTLOADLIBES_xdpsock += -pthread
223
185
224
186
# Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline:
225
187
# make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
@@ -233,15 +195,16 @@ CLANG_ARCH_ARGS = -target $(ARCH)
233
195
endif
234
196
235
197
# Trick to allow make to be run from this directory
236
- all : $( LIBBPF )
237
- $(MAKE ) -C ../../ $(CURDIR ) /
198
+ all :
199
+ $(MAKE ) -C ../../ $(CURDIR ) / BPF_SAMPLES_PATH= $( CURDIR )
238
200
239
201
clean :
240
202
$(MAKE ) -C ../../ M=$(CURDIR ) clean
241
203
@rm -f * ~
242
204
243
205
$(LIBBPF ) : FORCE
244
- $(MAKE ) -C $(dir $@ )
206
+ # Fix up variables inherited from Kbuild that tools/ build system won't like
207
+ $(MAKE) -C $(dir $@) RM='rm -rf' LDFLAGS= srctree=$(BPF_SAMPLES_PATH)/../../ O=
245
208
246
209
$(obj ) /syscall_nrs.s : $(src ) /syscall_nrs.c
247
210
$(call if_changed_dep,cc_s_c)
@@ -272,15 +235,17 @@ verify_target_bpf: verify_cmds
272
235
exit 2; \
273
236
else true ; fi
274
237
275
- $(src ) /*.c : verify_target_bpf
238
+ $(BPF_SAMPLES_PATH ) /*.c : verify_target_bpf $(LIBBPF )
239
+ $(src ) /*.c : verify_target_bpf $(LIBBPF )
276
240
277
241
$(obj ) /tracex5_kern.o : $(obj ) /syscall_nrs.h
278
242
279
243
# asm/sysreg.h - inline assembly used by it is incompatible with llvm.
280
244
# But, there is no easy way to fix it, so just exclude it since it is
281
245
# useless for BPF samples.
282
246
$(obj ) /% .o : $(src ) /% .c
283
- $(CLANG ) $(NOSTDINC_FLAGS ) $(LINUXINCLUDE ) $(EXTRA_CFLAGS ) -I$(obj ) \
247
+ @echo " CLANG-bpf " $@
248
+ $(Q )$(CLANG ) $(NOSTDINC_FLAGS ) $(LINUXINCLUDE ) $(EXTRA_CFLAGS ) -I$(obj ) \
284
249
-I$(srctree ) /tools/testing/selftests/bpf/ \
285
250
-D__KERNEL__ -Wno-unused-value -Wno-pointer-sign \
286
251
-D__TARGET_ARCH_$(ARCH ) -Wno-compare-distinct-pointer-types \
0 commit comments