From: Bochao Cao <[email protected]> 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 <[email protected]> --- 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 $*) > [email protected] + $(Q)mv [email protected] $@ + +EXTRA_CLEAN += $(wildcard $(OUTPUT)/*.skel.h $(OUTPUT)/*.skel.h.tmp) -- Git-155)

