[PATCH net-next v5 4/5] selftests/net: Add a shared BPF skeleton rule
From: Bochao Cao via B4 Relay
Date: Sat Oct 10 2026 - 06:24:49 EST
From: Bochao Cao <bochaolucky@xxxxxxxxx>
Add %.skel.h to net/bpf.mk. Build a host bpftool bootstrap when BPFTOOL is
not supplied.
Write the skeleton to a temporary file and rename it on success, so a
failed command does not leave a partial header.
Signed-off-by: Bochao Cao <bochaolucky@xxxxxxxxx>
---
tools/testing/selftests/net/bpf.mk | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/tools/testing/selftests/net/bpf.mk b/tools/testing/selftests/net/bpf.mk
index a4f6755dd8941..2ded0f65dafa9 100644
--- a/tools/testing/selftests/net/bpf.mk
+++ b/tools/testing/selftests/net/bpf.mk
@@ -49,5 +49,30 @@ $(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \
$(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(BUILD_DIR)/libbpf/ \
EXTRA_CFLAGS='-g -O0' \
DESTDIR=$(SCRATCH_DIR) prefix= all install_headers
EXTRA_CLEAN += $(SCRATCH_DIR)
+
+# Build a host bpftool only when a test needs a generated skeleton.
+BPFTOOL_BUILD := $(BUILD_DIR)/bpftool
+ifeq ($(origin BPFTOOL),undefined)
+BPFTOOL := $(BPFTOOL_BUILD)/bootstrap/bpftool
+BPFTOOL_DEP := $(BPFTOOL)
+else
+BPFTOOL_DEP := $(shell command -v $(BPFTOOL))
+endif
+
+$(BPFTOOL_BUILD)/bootstrap/bpftool: \
+ $(wildcard $(top_srcdir)/tools/bpf/bpftool/*.[ch]) \
+ $(top_srcdir)/tools/bpf/bpftool/Makefile \
+ $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile)
+ $(call msg,MAKE,,$@)
+ $(Q)mkdir -p $(BPFTOOL_BUILD)
+ $(Q)$(MAKE) $(submake_extras) -C $(top_srcdir)/tools/bpf/bpftool \
+ OUTPUT=$(BPFTOOL_BUILD)/ ARCH= CROSS_COMPILE= bootstrap
+
+$(OUTPUT)/%.skel.h: $(OUTPUT)/%.bpf.o $(BPFTOOL_DEP)
+ $(call msg,GEN-SKEL,,$@)
+ $(Q)$(BPFTOOL) gen skeleton $< name $(notdir $*) > $@.tmp
+ $(Q)mv $@.tmp $@
+
+EXTRA_CLEAN += $(wildcard $(OUTPUT)/*.skel.h $(OUTPUT)/*.skel.h.tmp)
--
Git-155)