2018-05-15 7:35 GMT+02:00 Jakub Kicinski <jakub.kicin...@netronome.com>: > There are many ways users may compile samples, some of them got > broken by commit 5f9380572b4b ("samples: bpf: compile and link > against full libbpf"). Improve path resolution and make libbpf > building a dependency of source files to force its build. > > Samples should now again build with any of: > cd samples/bpf; make > make samples/bpf/ > make -C samples/bpf > cd samples/bpf; make O=builddir > make samples/bpf/ O=builddir > make -C samples/bpf O=builddir > export KBUILD_OUTPUT=builddir > make samples/bpf/ > make -C samples/bpf > > Fixes: 5f9380572b4b ("samples: bpf: compile and link against full libbpf") > Reported-by: Björn Töpel <bjorn.to...@gmail.com> > Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com> > --- > samples/bpf/Makefile | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile > index 9e255ca4059a..0dae77c88d2e 100644 > --- a/samples/bpf/Makefile > +++ b/samples/bpf/Makefile > @@ -1,4 +1,8 @@ > # SPDX-License-Identifier: GPL-2.0 > + > +BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src)) > +TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools > + > # List of programs to build > hostprogs-y := test_lru_dist > hostprogs-y += sock_example > @@ -49,7 +53,8 @@ hostprogs-y += xdpsock > hostprogs-y += xdp_fwd > > # Libbpf dependencies > -LIBBPF := ../../tools/lib/bpf/libbpf.a > +LIBBPF = $(TOOLS_PATH)/lib/bpf/libbpf.a > + > CGROUP_HELPERS := ../../tools/testing/selftests/bpf/cgroup_helpers.o > TRACE_HELPERS := ../../tools/testing/selftests/bpf/trace_helpers.o > > @@ -233,15 +238,16 @@ CLANG_ARCH_ARGS = -target $(ARCH) > endif > > # Trick to allow make to be run from this directory > -all: $(LIBBPF) > - $(MAKE) -C ../../ $(CURDIR)/ > +all: > + $(MAKE) -C ../../ $(CURDIR)/ BPF_SAMPLES_PATH=$(CURDIR) > > clean: > $(MAKE) -C ../../ M=$(CURDIR) clean > @rm -f *~ > > $(LIBBPF): FORCE > - $(MAKE) -C $(dir $@) > +# Fix up variables inherited from Kbuild that tools/ build system won't like > + $(MAKE) -C $(dir $@) RM='rm -rf' LDFLAGS= > srctree=$(BPF_SAMPLES_PATH)/../../ O= > > $(obj)/syscall_nrs.s: $(src)/syscall_nrs.c > $(call if_changed_dep,cc_s_c) > @@ -272,7 +278,8 @@ verify_target_bpf: verify_cmds > exit 2; \ > else true; fi > > -$(src)/*.c: verify_target_bpf > +$(BPF_SAMPLES_PATH)/*.c: verify_target_bpf $(LIBBPF) > +$(src)/*.c: verify_target_bpf $(LIBBPF) > > $(obj)/tracex5_kern.o: $(obj)/syscall_nrs.h > > -- > 2.17.0 >
Thanks a bunch for this! Tested-by: Björn Töpel <bjorn.to...@gmail.com>