On Fri, 6 Jan 2023 at 14:25, Ian Rogers <irogers@xxxxxxxxxx> wrote: > > The $(LIBBPF) target should only be a dependency of prepare if the > static version of libbpf is needed. Add a new LIBBPF_STATIC variable > that is set by Makefile.config. Use LIBBPF_STATIC to determine whether > the CFLAGS, etc. need updating and for adding $(LIBBPF) as a prepare > dependency. > > As Makefile.config isn't loaded for "clean" as a target, always set > LIBBPF_OUTPUT regardless of whether it is needed for $(LIBBPF). This > is done to minimize conditional logic for $(LIBBPF)-clean. > > This issue and an original fix was reported by Mike Leach in: > https://lore.kernel.org/lkml/20230105172243.7238-1-mike.leach@xxxxxxxxxx/ > > Fixes: 746bd29e348f ("perf build: Use tools/lib headers from install path") > Reported-by: Mike Leach <mike.leach@xxxxxxxxxx> > Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx> > --- > tools/perf/Makefile.config | 2 ++ > tools/perf/Makefile.perf | 21 ++++++++++++--------- > 2 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config > index c2504c39bdcb..7c00ce0a7464 100644 > --- a/tools/perf/Makefile.config > +++ b/tools/perf/Makefile.config > @@ -602,6 +602,8 @@ ifndef NO_LIBELF > dummy := $(error Error: No libbpf devel library found, please install libbpf-devel); > endif > else > + # Libbpf will be built as a static library from tools/lib/bpf. > + LIBBPF_STATIC := 1 > CFLAGS += -DHAVE_LIBBPF_BTF__LOAD_FROM_KERNEL_BY_ID > CFLAGS += -DHAVE_LIBBPF_BPF_PROG_LOAD > CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf > index 13e7d26e77f0..4e370462e7e1 100644 > --- a/tools/perf/Makefile.perf > +++ b/tools/perf/Makefile.perf > @@ -303,10 +303,12 @@ ifneq ($(OUTPUT),) > else > LIBBPF_OUTPUT = $(CURDIR)/libbpf > endif > -LIBBPF_DESTDIR = $(LIBBPF_OUTPUT) > -LIBBPF_INCLUDE = $(LIBBPF_DESTDIR)/include > -LIBBPF = $(LIBBPF_OUTPUT)/libbpf.a > -CFLAGS += -I$(LIBBPF_OUTPUT)/include > +ifdef LIBBPF_STATIC > + LIBBPF_DESTDIR = $(LIBBPF_OUTPUT) > + LIBBPF_INCLUDE = $(LIBBPF_DESTDIR)/include > + LIBBPF = $(LIBBPF_OUTPUT)/libbpf.a > + CFLAGS += -I$(LIBBPF_OUTPUT)/include > +endif > > ifneq ($(OUTPUT),) > LIBSUBCMD_OUTPUT = $(abspath $(OUTPUT))/libsubcmd > @@ -393,10 +395,8 @@ endif > export PERL_PATH > > PERFLIBS = $(LIBAPI) $(LIBPERF) $(LIBSUBCMD) $(LIBSYMBOL) > -ifndef NO_LIBBPF > - ifndef LIBBPF_DYNAMIC > - PERFLIBS += $(LIBBPF) > - endif > +ifdef LIBBPF_STATIC > + PERFLIBS += $(LIBBPF) > endif > > # We choose to avoid "if .. else if .. else .. endif endif" > @@ -756,12 +756,15 @@ prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders $(drm_ioc > $(arch_errno_name_array) \ > $(sync_file_range_arrays) \ > $(LIBAPI) \ > - $(LIBBPF) \ > $(LIBPERF) \ > $(LIBSUBCMD) \ > $(LIBSYMBOL) \ > bpf-skel > > +ifdef LIBBPF_STATIC > +prepare: $(LIBBPF) > +endif > + > $(OUTPUT)%.o: %.c prepare FORCE > $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@ > > -- > 2.39.0.314.g84b9a713c41-goog > Tested-by: Mike Leach <mike.leach@xxxxxxxxxx> -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK