Makefile (e269d7caf9e0dbd95fac9991991298f74930c2c0) | Makefile (2a2cb45b727b7a1041f3d3d93414b774e66454bb) |
---|---|
1# SPDX-License-Identifier: GPL-2.0 2include ../../../build/Build.include 3include ../../../scripts/Makefile.arch 4include ../../../scripts/Makefile.include 5 6CXX ?= $(CROSS_COMPILE)g++ 7 8CURDIR := $(abspath .) --- 9 unchanged lines hidden (view full) --- 18ifneq ($(wildcard $(GENHDR)),) 19 GENFLAGS := -DHAVE_GENHDR 20endif 21 22BPF_GCC ?= $(shell command -v bpf-gcc;) 23SAN_CFLAGS ?= 24CFLAGS += -g -O0 -rdynamic -Wall $(GENFLAGS) $(SAN_CFLAGS) \ 25 -I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \ | 1# SPDX-License-Identifier: GPL-2.0 2include ../../../build/Build.include 3include ../../../scripts/Makefile.arch 4include ../../../scripts/Makefile.include 5 6CXX ?= $(CROSS_COMPILE)g++ 7 8CURDIR := $(abspath .) --- 9 unchanged lines hidden (view full) --- 18ifneq ($(wildcard $(GENHDR)),) 19 GENFLAGS := -DHAVE_GENHDR 20endif 21 22BPF_GCC ?= $(shell command -v bpf-gcc;) 23SAN_CFLAGS ?= 24CFLAGS += -g -O0 -rdynamic -Wall $(GENFLAGS) $(SAN_CFLAGS) \ 25 -I$(CURDIR) -I$(INCLUDE_DIR) -I$(GENDIR) -I$(LIBDIR) \ |
26 -I$(TOOLSINCDIR) -I$(APIDIR) -I$(OUTPUT) \ 27 -Dbpf_prog_load=bpf_prog_test_load \ 28 -Dbpf_load_program=bpf_test_load_program | 26 -I$(TOOLSINCDIR) -I$(APIDIR) -I$(OUTPUT) 27LDFLAGS += $(SAN_CFLAGS) |
29LDLIBS += -lcap -lelf -lz -lrt -lpthread 30 31# Silence some warnings when compiled with clang 32ifneq ($(LLVM),) 33CFLAGS += -Wno-unused-command-line-argument 34endif 35 36# Order correspond to 'make run_tests' order --- 80 unchanged lines hidden (view full) --- 117 118SCRATCH_DIR := $(OUTPUT)/tools 119BUILD_DIR := $(SCRATCH_DIR)/build 120INCLUDE_DIR := $(SCRATCH_DIR)/include 121BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a 122ifneq ($(CROSS_COMPILE),) 123HOST_BUILD_DIR := $(BUILD_DIR)/host 124HOST_SCRATCH_DIR := $(OUTPUT)/host-tools | 28LDLIBS += -lcap -lelf -lz -lrt -lpthread 29 30# Silence some warnings when compiled with clang 31ifneq ($(LLVM),) 32CFLAGS += -Wno-unused-command-line-argument 33endif 34 35# Order correspond to 'make run_tests' order --- 80 unchanged lines hidden (view full) --- 116 117SCRATCH_DIR := $(OUTPUT)/tools 118BUILD_DIR := $(SCRATCH_DIR)/build 119INCLUDE_DIR := $(SCRATCH_DIR)/include 120BPFOBJ := $(BUILD_DIR)/libbpf/libbpf.a 121ifneq ($(CROSS_COMPILE),) 122HOST_BUILD_DIR := $(BUILD_DIR)/host 123HOST_SCRATCH_DIR := $(OUTPUT)/host-tools |
124HOST_INCLUDE_DIR := $(HOST_SCRATCH_DIR)/include |
|
125else 126HOST_BUILD_DIR := $(BUILD_DIR) 127HOST_SCRATCH_DIR := $(SCRATCH_DIR) | 125else 126HOST_BUILD_DIR := $(BUILD_DIR) 127HOST_SCRATCH_DIR := $(SCRATCH_DIR) |
128HOST_INCLUDE_DIR := $(INCLUDE_DIR) |
|
128endif 129HOST_BPFOBJ := $(HOST_BUILD_DIR)/libbpf/libbpf.a 130RESOLVE_BTFIDS := $(HOST_BUILD_DIR)/resolve_btfids/resolve_btfids | 129endif 130HOST_BPFOBJ := $(HOST_BUILD_DIR)/libbpf/libbpf.a 131RESOLVE_BTFIDS := $(HOST_BUILD_DIR)/resolve_btfids/resolve_btfids |
132RUNQSLOWER_OUTPUT := $(BUILD_DIR)/runqslower/ |
|
131 132VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \ 133 $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \ 134 ../../../../vmlinux \ 135 /sys/kernel/btf/vmlinux \ 136 /boot/vmlinux-$(shell uname -r) 137VMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) 138ifeq ($(VMLINUX_BTF),) --- 8 unchanged lines hidden (view full) --- 147 $(TEST_PROGS) \ 148 $(TEST_PROGS_EXTENDED) \ 149 $(TEST_GEN_PROGS_EXTENDED) \ 150 $(TEST_CUSTOM_PROGS)): %: $(OUTPUT)/% ; 151 152# sort removes libbpf duplicates when not cross-building 153MAKE_DIRS := $(sort $(BUILD_DIR)/libbpf $(HOST_BUILD_DIR)/libbpf \ 154 $(HOST_BUILD_DIR)/bpftool $(HOST_BUILD_DIR)/resolve_btfids \ | 133 134VMLINUX_BTF_PATHS ?= $(if $(O),$(O)/vmlinux) \ 135 $(if $(KBUILD_OUTPUT),$(KBUILD_OUTPUT)/vmlinux) \ 136 ../../../../vmlinux \ 137 /sys/kernel/btf/vmlinux \ 138 /boot/vmlinux-$(shell uname -r) 139VMLINUX_BTF ?= $(abspath $(firstword $(wildcard $(VMLINUX_BTF_PATHS)))) 140ifeq ($(VMLINUX_BTF),) --- 8 unchanged lines hidden (view full) --- 149 $(TEST_PROGS) \ 150 $(TEST_PROGS_EXTENDED) \ 151 $(TEST_GEN_PROGS_EXTENDED) \ 152 $(TEST_CUSTOM_PROGS)): %: $(OUTPUT)/% ; 153 154# sort removes libbpf duplicates when not cross-building 155MAKE_DIRS := $(sort $(BUILD_DIR)/libbpf $(HOST_BUILD_DIR)/libbpf \ 156 $(HOST_BUILD_DIR)/bpftool $(HOST_BUILD_DIR)/resolve_btfids \ |
155 $(INCLUDE_DIR)) | 157 $(RUNQSLOWER_OUTPUT) $(INCLUDE_DIR)) |
156$(MAKE_DIRS): 157 $(call msg,MKDIR,,$@) 158 $(Q)mkdir -p $@ 159 160$(OUTPUT)/%.o: %.c 161 $(call msg,CC,,$@) 162 $(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ 163 --- 6 unchanged lines hidden (view full) --- 170 $(Q)$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id=sha1 171 172$(OUTPUT)/bpf_testmod.ko: $(VMLINUX_BTF) $(wildcard bpf_testmod/Makefile bpf_testmod/*.[ch]) 173 $(call msg,MOD,,$@) 174 $(Q)$(RM) bpf_testmod/bpf_testmod.ko # force re-compilation 175 $(Q)$(MAKE) $(submake_extras) -C bpf_testmod 176 $(Q)cp bpf_testmod/bpf_testmod.ko $@ 177 | 158$(MAKE_DIRS): 159 $(call msg,MKDIR,,$@) 160 $(Q)mkdir -p $@ 161 162$(OUTPUT)/%.o: %.c 163 $(call msg,CC,,$@) 164 $(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ 165 --- 6 unchanged lines hidden (view full) --- 172 $(Q)$(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) -Wl,--build-id=sha1 173 174$(OUTPUT)/bpf_testmod.ko: $(VMLINUX_BTF) $(wildcard bpf_testmod/Makefile bpf_testmod/*.[ch]) 175 $(call msg,MOD,,$@) 176 $(Q)$(RM) bpf_testmod/bpf_testmod.ko # force re-compilation 177 $(Q)$(MAKE) $(submake_extras) -C bpf_testmod 178 $(Q)cp bpf_testmod/bpf_testmod.ko $@ 179 |
178$(OUTPUT)/test_stub.o: test_stub.c $(BPFOBJ) 179 $(call msg,CC,,$@) 180 $(Q)$(CC) -c $(CFLAGS) -o $@ $< 181 | |
182DEFAULT_BPFTOOL := $(HOST_SCRATCH_DIR)/sbin/bpftool 183 | 180DEFAULT_BPFTOOL := $(HOST_SCRATCH_DIR)/sbin/bpftool 181 |
184$(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) 185 $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \ 186 OUTPUT=$(SCRATCH_DIR)/ VMLINUX_BTF=$(VMLINUX_BTF) \ 187 BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR) && \ 188 cp $(SCRATCH_DIR)/runqslower $@ | 182$(OUTPUT)/runqslower: $(BPFOBJ) | $(DEFAULT_BPFTOOL) $(RUNQSLOWER_OUTPUT) 183 $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/runqslower \ 184 OUTPUT=$(RUNQSLOWER_OUTPUT) VMLINUX_BTF=$(VMLINUX_BTF) \ 185 BPFTOOL_OUTPUT=$(BUILD_DIR)/bpftool/ \ 186 BPFOBJ_OUTPUT=$(BUILD_DIR)/libbpf \ 187 BPFOBJ=$(BPFOBJ) BPF_INCLUDE=$(INCLUDE_DIR) && \ 188 cp $(RUNQSLOWER_OUTPUT)runqslower $@ |
189 190TEST_GEN_PROGS_EXTENDED += $(DEFAULT_BPFTOOL) 191 | 189 190TEST_GEN_PROGS_EXTENDED += $(DEFAULT_BPFTOOL) 191 |
192$(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED): $(OUTPUT)/test_stub.o $(BPFOBJ) | 192$(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED): $(BPFOBJ) |
193 | 193 |
194$(OUTPUT)/test_dev_cgroup: cgroup_helpers.c 195$(OUTPUT)/test_skb_cgroup_id_user: cgroup_helpers.c 196$(OUTPUT)/test_sock: cgroup_helpers.c 197$(OUTPUT)/test_sock_addr: cgroup_helpers.c 198$(OUTPUT)/test_sockmap: cgroup_helpers.c 199$(OUTPUT)/test_tcpnotify_user: cgroup_helpers.c trace_helpers.c 200$(OUTPUT)/get_cgroup_id_user: cgroup_helpers.c 201$(OUTPUT)/test_cgroup_storage: cgroup_helpers.c 202$(OUTPUT)/test_sock_fields: cgroup_helpers.c 203$(OUTPUT)/test_sysctl: cgroup_helpers.c | 194$(OUTPUT)/test_dev_cgroup: cgroup_helpers.c testing_helpers.o 195$(OUTPUT)/test_skb_cgroup_id_user: cgroup_helpers.c testing_helpers.o 196$(OUTPUT)/test_sock: cgroup_helpers.c testing_helpers.o 197$(OUTPUT)/test_sock_addr: cgroup_helpers.c testing_helpers.o 198$(OUTPUT)/test_sockmap: cgroup_helpers.c testing_helpers.o 199$(OUTPUT)/test_tcpnotify_user: cgroup_helpers.c trace_helpers.c testing_helpers.o 200$(OUTPUT)/get_cgroup_id_user: cgroup_helpers.c testing_helpers.o 201$(OUTPUT)/test_cgroup_storage: cgroup_helpers.c testing_helpers.o 202$(OUTPUT)/test_sock_fields: cgroup_helpers.c testing_helpers.o 203$(OUTPUT)/test_sysctl: cgroup_helpers.c testing_helpers.o 204$(OUTPUT)/test_tag: testing_helpers.o 205$(OUTPUT)/test_lirc_mode2_user: testing_helpers.o 206$(OUTPUT)/xdping: testing_helpers.o 207$(OUTPUT)/flow_dissector_load: testing_helpers.o 208$(OUTPUT)/test_maps: testing_helpers.o 209$(OUTPUT)/test_verifier: testing_helpers.o |
204 205BPFTOOL ?= $(DEFAULT_BPFTOOL) 206$(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \ 207 $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/bpftool 208 $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \ 209 CC=$(HOSTCC) LD=$(HOSTLD) \ 210 EXTRA_CFLAGS='-g -O0' \ 211 OUTPUT=$(HOST_BUILD_DIR)/bpftool/ \ | 210 211BPFTOOL ?= $(DEFAULT_BPFTOOL) 212$(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \ 213 $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/bpftool 214 $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \ 215 CC=$(HOSTCC) LD=$(HOSTLD) \ 216 EXTRA_CFLAGS='-g -O0' \ 217 OUTPUT=$(HOST_BUILD_DIR)/bpftool/ \ |
212 prefix= DESTDIR=$(HOST_SCRATCH_DIR)/ install | 218 LIBBPF_OUTPUT=$(HOST_BUILD_DIR)/libbpf/ \ 219 LIBBPF_DESTDIR=$(HOST_SCRATCH_DIR)/ \ 220 prefix= DESTDIR=$(HOST_SCRATCH_DIR)/ install-bin |
213 214all: docs 215 216docs: 217 $(Q)RST2MAN_OPTS="--exit-status=1" $(MAKE) $(submake_extras) \ 218 -f Makefile.docs \ 219 prefix= OUTPUT=$(OUTPUT)/ DESTDIR=$(OUTPUT)/ $@ 220 221docs-clean: 222 $(Q)$(MAKE) $(submake_extras) \ 223 -f Makefile.docs \ 224 prefix= OUTPUT=$(OUTPUT)/ DESTDIR=$(OUTPUT)/ $@ 225 226$(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 227 ../../../include/uapi/linux/bpf.h \ | 221 222all: docs 223 224docs: 225 $(Q)RST2MAN_OPTS="--exit-status=1" $(MAKE) $(submake_extras) \ 226 -f Makefile.docs \ 227 prefix= OUTPUT=$(OUTPUT)/ DESTDIR=$(OUTPUT)/ $@ 228 229docs-clean: 230 $(Q)$(MAKE) $(submake_extras) \ 231 -f Makefile.docs \ 232 prefix= OUTPUT=$(OUTPUT)/ DESTDIR=$(OUTPUT)/ $@ 233 234$(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 235 ../../../include/uapi/linux/bpf.h \ |
228 | $(INCLUDE_DIR) $(BUILD_DIR)/libbpf | 236 | $(BUILD_DIR)/libbpf |
229 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \ 230 EXTRA_CFLAGS='-g -O0' \ 231 DESTDIR=$(SCRATCH_DIR) prefix= all install_headers 232 233ifneq ($(BPFOBJ),$(HOST_BPFOBJ)) 234$(HOST_BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 235 ../../../include/uapi/linux/bpf.h \ | 237 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \ 238 EXTRA_CFLAGS='-g -O0' \ 239 DESTDIR=$(SCRATCH_DIR) prefix= all install_headers 240 241ifneq ($(BPFOBJ),$(HOST_BPFOBJ)) 242$(HOST_BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 243 ../../../include/uapi/linux/bpf.h \ |
236 | $(INCLUDE_DIR) $(HOST_BUILD_DIR)/libbpf | 244 | $(HOST_BUILD_DIR)/libbpf |
237 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \ 238 EXTRA_CFLAGS='-g -O0' \ 239 OUTPUT=$(HOST_BUILD_DIR)/libbpf/ CC=$(HOSTCC) LD=$(HOSTLD) \ 240 DESTDIR=$(HOST_SCRATCH_DIR)/ prefix= all install_headers 241endif 242 243$(INCLUDE_DIR)/vmlinux.h: $(VMLINUX_BTF) $(BPFTOOL) | $(INCLUDE_DIR) 244ifeq ($(VMLINUX_H),) --- 8 unchanged lines hidden (view full) --- 253 $(TOOLSDIR)/bpf/resolve_btfids/main.c \ 254 $(TOOLSDIR)/lib/rbtree.c \ 255 $(TOOLSDIR)/lib/zalloc.c \ 256 $(TOOLSDIR)/lib/string.c \ 257 $(TOOLSDIR)/lib/ctype.c \ 258 $(TOOLSDIR)/lib/str_error_r.c 259 $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/resolve_btfids \ 260 CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) \ | 245 $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \ 246 EXTRA_CFLAGS='-g -O0' \ 247 OUTPUT=$(HOST_BUILD_DIR)/libbpf/ CC=$(HOSTCC) LD=$(HOSTLD) \ 248 DESTDIR=$(HOST_SCRATCH_DIR)/ prefix= all install_headers 249endif 250 251$(INCLUDE_DIR)/vmlinux.h: $(VMLINUX_BTF) $(BPFTOOL) | $(INCLUDE_DIR) 252ifeq ($(VMLINUX_H),) --- 8 unchanged lines hidden (view full) --- 261 $(TOOLSDIR)/bpf/resolve_btfids/main.c \ 262 $(TOOLSDIR)/lib/rbtree.c \ 263 $(TOOLSDIR)/lib/zalloc.c \ 264 $(TOOLSDIR)/lib/string.c \ 265 $(TOOLSDIR)/lib/ctype.c \ 266 $(TOOLSDIR)/lib/str_error_r.c 267 $(Q)$(MAKE) $(submake_extras) -C $(TOOLSDIR)/bpf/resolve_btfids \ 268 CC=$(HOSTCC) LD=$(HOSTLD) AR=$(HOSTAR) \ |
269 LIBBPF_INCLUDE=$(HOST_INCLUDE_DIR) \ |
|
261 OUTPUT=$(HOST_BUILD_DIR)/resolve_btfids/ BPFOBJ=$(HOST_BPFOBJ) 262 263# Get Clang's default includes on this system, as opposed to those seen by 264# '-target bpf'. This fixes "missing" files on some architectures/distros, 265# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc. 266# 267# Use '-idirafter': Don't interfere with include mechanics except where the 268# build would have failed anyways. 269define get_sys_includes 270$(shell $(1) -v -E - </dev/null 2>&1 \ 271 | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') \ | 270 OUTPUT=$(HOST_BUILD_DIR)/resolve_btfids/ BPFOBJ=$(HOST_BPFOBJ) 271 272# Get Clang's default includes on this system, as opposed to those seen by 273# '-target bpf'. This fixes "missing" files on some architectures/distros, 274# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc. 275# 276# Use '-idirafter': Don't interfere with include mechanics except where the 277# build would have failed anyways. 278define get_sys_includes 279$(shell $(1) -v -E - </dev/null 2>&1 \ 280 | sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }') \ |
272$(shell $(1) -dM -E - </dev/null | grep '#define __riscv_xlen ' | sed 's/#define /-D/' | sed 's/ /=/') | 281$(shell $(1) -dM -E - </dev/null | grep '__riscv_xlen ' | awk '{printf("-D__riscv_xlen=%d -D__BITS_PER_LONG=%d", $$3, $$3)}') |
273endef 274 275# Determine target endianness. 276IS_LITTLE_ENDIAN = $(shell $(CC) -dM -E - </dev/null | \ 277 grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__') 278MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian) 279 280CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG)) --- 29 unchanged lines hidden (view full) --- 310endef 311 312SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c 313 314LINKED_SKELS := test_static_linked.skel.h linked_funcs.skel.h \ 315 linked_vars.skel.h linked_maps.skel.h 316 317LSKELS := kfunc_call_test.c fentry_test.c fexit_test.c fexit_sleep.c \ | 282endef 283 284# Determine target endianness. 285IS_LITTLE_ENDIAN = $(shell $(CC) -dM -E - </dev/null | \ 286 grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__') 287MENDIAN=$(if $(IS_LITTLE_ENDIAN),-mlittle-endian,-mbig-endian) 288 289CLANG_SYS_INCLUDES = $(call get_sys_includes,$(CLANG)) --- 29 unchanged lines hidden (view full) --- 319endef 320 321SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c 322 323LINKED_SKELS := test_static_linked.skel.h linked_funcs.skel.h \ 324 linked_vars.skel.h linked_maps.skel.h 325 326LSKELS := kfunc_call_test.c fentry_test.c fexit_test.c fexit_sleep.c \ |
318 test_ksyms_module.c test_ringbuf.c atomics.c trace_printk.c | 327 test_ringbuf.c atomics.c trace_printk.c trace_vprintk.c 328# Generate both light skeleton and libbpf skeleton for these 329LSKELS_EXTRA := test_ksyms_module.c test_ksyms_weak.c |
319SKEL_BLACKLIST += $$(LSKELS) 320 321test_static_linked.skel.h-deps := test_static_linked1.o test_static_linked2.o 322linked_funcs.skel.h-deps := linked_funcs1.o linked_funcs2.o 323linked_vars.skel.h-deps := linked_vars1.o linked_vars2.o 324linked_maps.skel.h-deps := linked_maps1.o linked_maps2.o 325 326LINKED_BPF_SRCS := $(patsubst %.o,%.c,$(foreach skel,$(LINKED_SKELS),$($(skel)-deps))) --- 13 unchanged lines hidden (view full) --- 340 $$(filter %.c,$(TRUNNER_EXTRA_SOURCES))) 341TRUNNER_EXTRA_HDRS := $$(filter %.h,$(TRUNNER_EXTRA_SOURCES)) 342TRUNNER_TESTS_HDR := $(TRUNNER_TESTS_DIR)/tests.h 343TRUNNER_BPF_SRCS := $$(notdir $$(wildcard $(TRUNNER_BPF_PROGS_DIR)/*.c)) 344TRUNNER_BPF_OBJS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.o, $$(TRUNNER_BPF_SRCS)) 345TRUNNER_BPF_SKELS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.skel.h, \ 346 $$(filter-out $(SKEL_BLACKLIST) $(LINKED_BPF_SRCS),\ 347 $$(TRUNNER_BPF_SRCS))) | 330SKEL_BLACKLIST += $$(LSKELS) 331 332test_static_linked.skel.h-deps := test_static_linked1.o test_static_linked2.o 333linked_funcs.skel.h-deps := linked_funcs1.o linked_funcs2.o 334linked_vars.skel.h-deps := linked_vars1.o linked_vars2.o 335linked_maps.skel.h-deps := linked_maps1.o linked_maps2.o 336 337LINKED_BPF_SRCS := $(patsubst %.o,%.c,$(foreach skel,$(LINKED_SKELS),$($(skel)-deps))) --- 13 unchanged lines hidden (view full) --- 351 $$(filter %.c,$(TRUNNER_EXTRA_SOURCES))) 352TRUNNER_EXTRA_HDRS := $$(filter %.h,$(TRUNNER_EXTRA_SOURCES)) 353TRUNNER_TESTS_HDR := $(TRUNNER_TESTS_DIR)/tests.h 354TRUNNER_BPF_SRCS := $$(notdir $$(wildcard $(TRUNNER_BPF_PROGS_DIR)/*.c)) 355TRUNNER_BPF_OBJS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.o, $$(TRUNNER_BPF_SRCS)) 356TRUNNER_BPF_SKELS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.skel.h, \ 357 $$(filter-out $(SKEL_BLACKLIST) $(LINKED_BPF_SRCS),\ 358 $$(TRUNNER_BPF_SRCS))) |
348TRUNNER_BPF_LSKELS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.lskel.h, $$(LSKELS)) | 359TRUNNER_BPF_LSKELS := $$(patsubst %.c,$$(TRUNNER_OUTPUT)/%.lskel.h, $$(LSKELS) $$(LSKELS_EXTRA)) |
349TRUNNER_BPF_SKELS_LINKED := $$(addprefix $$(TRUNNER_OUTPUT)/,$(LINKED_SKELS)) 350TEST_GEN_FILES += $$(TRUNNER_BPF_OBJS) 351 352# Evaluate rules now with extra TRUNNER_XXX variables above already defined 353$$(eval $$(call DEFINE_TEST_RUNNER_RULES,$1,$2)) 354 355endef 356 --- 32 unchanged lines hidden (view full) --- 389 $(Q)$$(BPFTOOL) gen skeleton $$(<:.o=.linked3.o) name $$(notdir $$(<:.o=)) > $$@ 390 391$(TRUNNER_BPF_LSKELS): %.lskel.h: %.o $(BPFTOOL) | $(TRUNNER_OUTPUT) 392 $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) 393 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked1.o) $$< 394 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked2.o) $$(<:.o=.linked1.o) 395 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked3.o) $$(<:.o=.linked2.o) 396 $(Q)diff $$(<:.o=.linked2.o) $$(<:.o=.linked3.o) | 360TRUNNER_BPF_SKELS_LINKED := $$(addprefix $$(TRUNNER_OUTPUT)/,$(LINKED_SKELS)) 361TEST_GEN_FILES += $$(TRUNNER_BPF_OBJS) 362 363# Evaluate rules now with extra TRUNNER_XXX variables above already defined 364$$(eval $$(call DEFINE_TEST_RUNNER_RULES,$1,$2)) 365 366endef 367 --- 32 unchanged lines hidden (view full) --- 400 $(Q)$$(BPFTOOL) gen skeleton $$(<:.o=.linked3.o) name $$(notdir $$(<:.o=)) > $$@ 401 402$(TRUNNER_BPF_LSKELS): %.lskel.h: %.o $(BPFTOOL) | $(TRUNNER_OUTPUT) 403 $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) 404 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked1.o) $$< 405 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked2.o) $$(<:.o=.linked1.o) 406 $(Q)$$(BPFTOOL) gen object $$(<:.o=.linked3.o) $$(<:.o=.linked2.o) 407 $(Q)diff $$(<:.o=.linked2.o) $$(<:.o=.linked3.o) |
397 $(Q)$$(BPFTOOL) gen skeleton -L $$(<:.o=.linked3.o) name $$(notdir $$(<:.o=)) > $$@ | 408 $(Q)$$(BPFTOOL) gen skeleton -L $$(<:.o=.linked3.o) name $$(notdir $$(<:.o=_lskel)) > $$@ |
398 399$(TRUNNER_BPF_SKELS_LINKED): $(TRUNNER_BPF_OBJS) $(BPFTOOL) | $(TRUNNER_OUTPUT) 400 $$(call msg,LINK-BPF,$(TRUNNER_BINARY),$$(@:.skel.h=.o)) 401 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked1.o) $$(addprefix $(TRUNNER_OUTPUT)/,$$($$(@F)-deps)) 402 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked2.o) $$(@:.skel.h=.linked1.o) 403 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked3.o) $$(@:.skel.h=.linked2.o) 404 $(Q)diff $$(@:.skel.h=.linked2.o) $$(@:.skel.h=.linked3.o) 405 $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) 406 $(Q)$$(BPFTOOL) gen skeleton $$(@:.skel.h=.linked3.o) name $$(notdir $$(@:.skel.h=)) > $$@ 407endif 408 409# ensure we set up tests.h header generation rule just once 410ifeq ($($(TRUNNER_TESTS_DIR)-tests-hdr),) 411$(TRUNNER_TESTS_DIR)-tests-hdr := y 412$(TRUNNER_TESTS_HDR): $(TRUNNER_TESTS_DIR)/*.c 413 $$(call msg,TEST-HDR,$(TRUNNER_BINARY),$$@) | 409 410$(TRUNNER_BPF_SKELS_LINKED): $(TRUNNER_BPF_OBJS) $(BPFTOOL) | $(TRUNNER_OUTPUT) 411 $$(call msg,LINK-BPF,$(TRUNNER_BINARY),$$(@:.skel.h=.o)) 412 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked1.o) $$(addprefix $(TRUNNER_OUTPUT)/,$$($$(@F)-deps)) 413 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked2.o) $$(@:.skel.h=.linked1.o) 414 $(Q)$$(BPFTOOL) gen object $$(@:.skel.h=.linked3.o) $$(@:.skel.h=.linked2.o) 415 $(Q)diff $$(@:.skel.h=.linked2.o) $$(@:.skel.h=.linked3.o) 416 $$(call msg,GEN-SKEL,$(TRUNNER_BINARY),$$@) 417 $(Q)$$(BPFTOOL) gen skeleton $$(@:.skel.h=.linked3.o) name $$(notdir $$(@:.skel.h=)) > $$@ 418endif 419 420# ensure we set up tests.h header generation rule just once 421ifeq ($($(TRUNNER_TESTS_DIR)-tests-hdr),) 422$(TRUNNER_TESTS_DIR)-tests-hdr := y 423$(TRUNNER_TESTS_HDR): $(TRUNNER_TESTS_DIR)/*.c 424 $$(call msg,TEST-HDR,$(TRUNNER_BINARY),$$@) |
414 $$(shell ( cd $(TRUNNER_TESTS_DIR); \ 415 echo '/* Generated header, do not edit */'; \ 416 ls *.c 2> /dev/null | \ 417 sed -e 's@\([^\.]*\)\.c@DEFINE_TEST(\1)@'; \ | 425 $$(shell (echo '/* Generated header, do not edit */'; \ 426 sed -n -E 's/^void (serial_)?test_([a-zA-Z0-9_]+)\((void)?\).*/DEFINE_TEST(\2)/p' \ 427 $(TRUNNER_TESTS_DIR)/*.c | sort ; \ |
418 ) > $$@) 419endif 420 421# compile individual test files 422# Note: we cd into output directory to ensure embedded BPF object is found 423$(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ 424 $(TRUNNER_TESTS_DIR)/%.c \ 425 $(TRUNNER_EXTRA_HDRS) \ --- 22 unchanged lines hidden (view full) --- 448endif 449 450$(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ 451 $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ 452 $(RESOLVE_BTFIDS) \ 453 | $(TRUNNER_BINARY)-extras 454 $$(call msg,BINARY,,$$@) 455 $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ | 428 ) > $$@) 429endif 430 431# compile individual test files 432# Note: we cd into output directory to ensure embedded BPF object is found 433$(TRUNNER_TEST_OBJS): $(TRUNNER_OUTPUT)/%.test.o: \ 434 $(TRUNNER_TESTS_DIR)/%.c \ 435 $(TRUNNER_EXTRA_HDRS) \ --- 22 unchanged lines hidden (view full) --- 458endif 459 460$(OUTPUT)/$(TRUNNER_BINARY): $(TRUNNER_TEST_OBJS) \ 461 $(TRUNNER_EXTRA_OBJS) $$(BPFOBJ) \ 462 $(RESOLVE_BTFIDS) \ 463 | $(TRUNNER_BINARY)-extras 464 $$(call msg,BINARY,,$$@) 465 $(Q)$$(CC) $$(CFLAGS) $$(filter %.a %.o,$$^) $$(LDLIBS) -o $$@ |
456 $(Q)$(RESOLVE_BTFIDS) --no-fail --btf $(TRUNNER_OUTPUT)/btf_data.o $$@ | 466 $(Q)$(RESOLVE_BTFIDS) --btf $(TRUNNER_OUTPUT)/btf_data.o $$@ |
457 458endef 459 460# Define test_progs test runner. 461TRUNNER_TESTS_DIR := prog_tests 462TRUNNER_BPF_PROGS_DIR := progs 463TRUNNER_EXTRA_SOURCES := test_progs.c cgroup_helpers.c trace_helpers.c \ 464 network_helpers.c testing_helpers.c \ --- 43 unchanged lines hidden (view full) --- 508 $(Q)$(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@ 509 510# Make sure we are able to include and link libbpf against c++. 511$(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ) 512 $(call msg,CXX,,$@) 513 $(Q)$(CXX) $(CFLAGS) $(filter %.a %.o %.cpp,$^) $(LDLIBS) -o $@ 514 515# Benchmark runner | 467 468endef 469 470# Define test_progs test runner. 471TRUNNER_TESTS_DIR := prog_tests 472TRUNNER_BPF_PROGS_DIR := progs 473TRUNNER_EXTRA_SOURCES := test_progs.c cgroup_helpers.c trace_helpers.c \ 474 network_helpers.c testing_helpers.c \ --- 43 unchanged lines hidden (view full) --- 518 $(Q)$(CC) $(CFLAGS) $(filter %.a %.o %.c,$^) $(LDLIBS) -o $@ 519 520# Make sure we are able to include and link libbpf against c++. 521$(OUTPUT)/test_cpp: test_cpp.cpp $(OUTPUT)/test_core_extern.skel.h $(BPFOBJ) 522 $(call msg,CXX,,$@) 523 $(Q)$(CXX) $(CFLAGS) $(filter %.a %.o %.cpp,$^) $(LDLIBS) -o $@ 524 525# Benchmark runner |
516$(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h | 526$(OUTPUT)/bench_%.o: benchs/bench_%.c bench.h $(BPFOBJ) |
517 $(call msg,CC,,$@) | 527 $(call msg,CC,,$@) |
518 $(Q)$(CC) $(CFLAGS) -c $(filter %.c,$^) $(LDLIBS) -o $@ | 528 $(Q)$(CC) $(CFLAGS) -O2 -c $(filter %.c,$^) $(LDLIBS) -o $@ |
519$(OUTPUT)/bench_rename.o: $(OUTPUT)/test_overhead.skel.h 520$(OUTPUT)/bench_trigger.o: $(OUTPUT)/trigger_bench.skel.h 521$(OUTPUT)/bench_ringbufs.o: $(OUTPUT)/ringbuf_bench.skel.h \ 522 $(OUTPUT)/perfbuf_bench.skel.h | 529$(OUTPUT)/bench_rename.o: $(OUTPUT)/test_overhead.skel.h 530$(OUTPUT)/bench_trigger.o: $(OUTPUT)/trigger_bench.skel.h 531$(OUTPUT)/bench_ringbufs.o: $(OUTPUT)/ringbuf_bench.skel.h \ 532 $(OUTPUT)/perfbuf_bench.skel.h |
523$(OUTPUT)/bench.o: bench.h testing_helpers.h | 533$(OUTPUT)/bench_bloom_filter_map.o: $(OUTPUT)/bloom_filter_bench.skel.h 534$(OUTPUT)/bench.o: bench.h testing_helpers.h $(BPFOBJ) |
524$(OUTPUT)/bench: LDLIBS += -lm 525$(OUTPUT)/bench: $(OUTPUT)/bench.o $(OUTPUT)/testing_helpers.o \ 526 $(OUTPUT)/bench_count.o \ 527 $(OUTPUT)/bench_rename.o \ 528 $(OUTPUT)/bench_trigger.o \ | 535$(OUTPUT)/bench: LDLIBS += -lm 536$(OUTPUT)/bench: $(OUTPUT)/bench.o $(OUTPUT)/testing_helpers.o \ 537 $(OUTPUT)/bench_count.o \ 538 $(OUTPUT)/bench_rename.o \ 539 $(OUTPUT)/bench_trigger.o \ |
529 $(OUTPUT)/bench_ringbufs.o | 540 $(OUTPUT)/bench_ringbufs.o \ 541 $(OUTPUT)/bench_bloom_filter_map.o |
530 $(call msg,BINARY,,$@) 531 $(Q)$(CC) $(LDFLAGS) -o $@ $(filter %.a %.o,$^) $(LDLIBS) 532 533EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) $(HOST_SCRATCH_DIR) \ 534 prog_tests/tests.h map_tests/tests.h verifier/tests.h \ 535 feature \ 536 $(addprefix $(OUTPUT)/,*.o *.skel.h *.lskel.h no_alu32 bpf_gcc bpf_testmod.ko) 537 538.PHONY: docs docs-clean | 542 $(call msg,BINARY,,$@) 543 $(Q)$(CC) $(LDFLAGS) -o $@ $(filter %.a %.o,$^) $(LDLIBS) 544 545EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(SCRATCH_DIR) $(HOST_SCRATCH_DIR) \ 546 prog_tests/tests.h map_tests/tests.h verifier/tests.h \ 547 feature \ 548 $(addprefix $(OUTPUT)/,*.o *.skel.h *.lskel.h no_alu32 bpf_gcc bpf_testmod.ko) 549 550.PHONY: docs docs-clean |