Re: Makefile.perf:1149: *** Missing bpftool input for generating vmlinux.h. Stop.

From: Namhyung Kim
Date: Tue May 21 2024 - 13:08:04 EST


Hi Ian and Ingo,

The failure happens when you don't have vmlinux.h or vmlinux with BTF.

ifeq ($(VMLINUX_H),)
ifeq ($(VMLINUX_BTF),)
$(error Missing bpftool input for generating vmlinux.h)
endif
endif

VMLINUX_BTF can be empty if you didn't build a kernel or
it doesn't have a BTF section and the current kernel also
has no BTF. This is totally ok.

But VMLINUX_H should be set to the minimal version in
the source tree (unless you overwrite it manually) when you
don't pass GEN_VMLINUX_H=1 (which requires VMLINUX_BTF
should not be empty). The problem is that it's defined in
Makefile.config which is not included for `make clean`.

Can you please verify if the below patch fixes it?

Thanks,
Namhyung

---8<---

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 5c35c0d89306..e6d56b555369 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -214,6 +214,7 @@ NON_CONFIG_TARGETS := clean python-clean TAGS tags
cscope help

ifdef MAKECMDGOALS
ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
+ VMLINUX_H=$(src-perf)/util/bpf_skel/vmlinux/vmlinux.h
config := 0
endif
endif