Recent updates to perf build result in the following output when cross compiling to aarch64, with libelf unavailable, and therefore NO_LIBBPF=1 set. ``` $make -C tools/perf <cut> Makefile.config:428: No libelf found. Disables 'probe' tool, jvmti and BPF support in 'perf record'. Please install libelf-dev, libelf-devel or elfutils-libelf-devel <cut> libbpf.c:46:10: fatal error: libelf.h: No such file or directory 46 | #include <libelf.h> | ^~~~~~~~~~ compilation terminated. ./tools/build/Makefile.build:96: recipe for target '.tools/perf/libbpf/staticobjs/libbpf.o' failed ``` plus one other include error for <gelf.h> The issue is that the commit noted below adds libbpf to the prepare: target but no longer accounts for the NO_LIBBPF define. Additionally changing the include directories means that even if the libbpf target build is prevented, bpf headers are missing in other parts of the build. This patch ensures that in the case of NO_LIBBPF=1, the build target is changed to a header only target, and the headers are installed, without attempting to build the libbpf.a target. Applies to perf/core Fixes: 746bd29e348f ("perf build: Use tools/lib headers from install path") Signed-off-by: Mike Leach <mike.leach@xxxxxxxxxx> --- tools/perf/Makefile.perf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index 13e7d26e77f0..ee08ecf469f6 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -305,7 +305,11 @@ else endif LIBBPF_DESTDIR = $(LIBBPF_OUTPUT) LIBBPF_INCLUDE = $(LIBBPF_DESTDIR)/include +ifndef NO_LIBBPF LIBBPF = $(LIBBPF_OUTPUT)/libbpf.a +else +LIBBPF = $(LIBBPF_INCLUDE)/bpf/bpf.h +endif CFLAGS += -I$(LIBBPF_OUTPUT)/include ifneq ($(OUTPUT),) @@ -826,10 +830,16 @@ $(LIBAPI)-clean: $(call QUIET_CLEAN, libapi) $(Q)$(RM) -r -- $(LIBAPI_OUTPUT) +ifndef NO_LIBBPF $(LIBBPF): FORCE | $(LIBBPF_OUTPUT) $(Q)$(MAKE) -C $(LIBBPF_DIR) FEATURES_DUMP=$(FEATURE_DUMP_EXPORT) \ O= OUTPUT=$(LIBBPF_OUTPUT)/ DESTDIR=$(LIBBPF_DESTDIR) prefix= \ $@ install_headers +else +$(LIBBPF): FORCE | $(LIBBPF_OUTPUT) + $(Q)$(MAKE) -C $(LIBBPF_DIR) OUTPUT=$(LIBBPF_OUTPUT)/ \ + DESTDIR=$(LIBBPF_DESTDIR) prefix= install_headers +endif $(LIBBPF)-clean: $(call QUIET_CLEAN, libbpf) -- 2.17.1