Message ID | 20201109110929.1223538-6-jean-philippe@linaro.org (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | BPF |
Headers | show |
Series | tools/bpftool: Fix cross and out-of-tree builds | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for bpf-next |
netdev/subject_prefix | success | Link |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | fail | Errors and warnings before: 4 this patch: 4 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | fail | Link |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
netdev/stable | success | Stable not CCed |
On Mon, Nov 9, 2020 at 3:11 AM Jean-Philippe Brucker <jean-philippe@linaro.org> wrote: > > Enable out-of-tree build for runqslower. Only set OUTPUT=.output if it > wasn't already set by the user. > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > --- > tools/bpf/runqslower/Makefile | 45 +++++++++++++++++++++++------------ > 1 file changed, 30 insertions(+), 15 deletions(-) > > diff --git a/tools/bpf/runqslower/Makefile b/tools/bpf/runqslower/Makefile > index bcc4a7396713..861f4dcde960 100644 > --- a/tools/bpf/runqslower/Makefile > +++ b/tools/bpf/runqslower/Makefile > @@ -1,15 +1,20 @@ > # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) > include ../../scripts/Makefile.include > > -OUTPUT := .output > +ifeq ($(OUTPUT),) > + OUTPUT = $(abspath .output)/ > +endif OUTPUT ?= .. didn't work? > + > CLANG ?= clang > LLC ?= llc > LLVM_STRIP ?= llvm-strip > -DEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool > +BPFTOOL_OUTPUT := $(OUTPUT)bpftool/ > +DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)bpftool > BPFTOOL ?= $(DEFAULT_BPFTOOL) > LIBBPF_SRC := $(abspath ../../lib/bpf) > -BPFOBJ := $(OUTPUT)/libbpf.a > -BPF_INCLUDE := $(OUTPUT) > +BPFOBJ_OUTPUT := $(OUTPUT)libbpf/ > +BPFOBJ := $(BPFOBJ_OUTPUT)libbpf.a > +BPF_INCLUDE := $(BPFOBJ_OUTPUT) > INCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../lib) \ > -I$(abspath ../../include/uapi) > CFLAGS := -g -Wall > @@ -20,7 +25,6 @@ VMLINUX_BTF_PATHS := /sys/kernel/btf/vmlinux /boot/vmlinux-$(KERNEL_REL) > VMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword \ > $(wildcard $(VMLINUX_BTF_PATHS)))) > > -abs_out := $(abspath $(OUTPUT)) > ifeq ($(V),1) > Q = > else > @@ -36,9 +40,13 @@ all: runqslower > > runqslower: $(OUTPUT)/runqslower > > -clean: > +clean: $(DEFAULT_BPFTOOL)-clean $(BPFOBJ)-clean why separate targets for $(DEFAULT_BPFTOOL)-clean and $(BPFOBJ)-clean? Are they intended to be called separately? I don't think parallelization is that important for the clean up. Let's just keep all the cleaning in one place, not spreading it across Makefile? > $(call QUIET_CLEAN, runqslower) > - $(Q)rm -rf $(OUTPUT) runqslower > + $(Q)$(RM) -r $(BPFOBJ_OUTPUT) $(BPFTOOL_OUTPUT) > + $(Q)$(RM) $(OUTPUT)*.o $(OUTPUT)*.d > + $(Q)$(RM) $(OUTPUT)*.skel.h $(OUTPUT)vmlinux.h > + $(Q)$(RM) $(OUTPUT)runqslower > + $(Q)$(RM) -r .output > [...]
On Mon, Nov 09, 2020 at 12:23:28PM -0800, Andrii Nakryiko wrote: > On Mon, Nov 9, 2020 at 3:11 AM Jean-Philippe Brucker > <jean-philippe@linaro.org> wrote: > > > > Enable out-of-tree build for runqslower. Only set OUTPUT=.output if it > > wasn't already set by the user. > > > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > > --- > > tools/bpf/runqslower/Makefile | 45 +++++++++++++++++++++++------------ > > 1 file changed, 30 insertions(+), 15 deletions(-) > > > > diff --git a/tools/bpf/runqslower/Makefile b/tools/bpf/runqslower/Makefile > > index bcc4a7396713..861f4dcde960 100644 > > --- a/tools/bpf/runqslower/Makefile > > +++ b/tools/bpf/runqslower/Makefile > > @@ -1,15 +1,20 @@ > > # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) > > include ../../scripts/Makefile.include > > > > -OUTPUT := .output > > +ifeq ($(OUTPUT),) > > + OUTPUT = $(abspath .output)/ > > +endif > > OUTPUT ?= .. didn't work? Yes it should, I'll change it. The difference is when make is invoked with OUTPUT explicitly set to "", then ?= wouldn't override it. But I didn't see any external Makefile passing OUTPUT= to this one, and the user-facing option is O= > > > + > > CLANG ?= clang > > LLC ?= llc > > LLVM_STRIP ?= llvm-strip > > -DEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool > > +BPFTOOL_OUTPUT := $(OUTPUT)bpftool/ > > +DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)bpftool > > BPFTOOL ?= $(DEFAULT_BPFTOOL) > > LIBBPF_SRC := $(abspath ../../lib/bpf) > > -BPFOBJ := $(OUTPUT)/libbpf.a > > -BPF_INCLUDE := $(OUTPUT) > > +BPFOBJ_OUTPUT := $(OUTPUT)libbpf/ > > +BPFOBJ := $(BPFOBJ_OUTPUT)libbpf.a > > +BPF_INCLUDE := $(BPFOBJ_OUTPUT) > > INCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../lib) \ > > -I$(abspath ../../include/uapi) > > CFLAGS := -g -Wall > > @@ -20,7 +25,6 @@ VMLINUX_BTF_PATHS := /sys/kernel/btf/vmlinux /boot/vmlinux-$(KERNEL_REL) > > VMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword \ > > $(wildcard $(VMLINUX_BTF_PATHS)))) > > > > -abs_out := $(abspath $(OUTPUT)) > > ifeq ($(V),1) > > Q = > > else > > @@ -36,9 +40,13 @@ all: runqslower > > > > runqslower: $(OUTPUT)/runqslower > > > > -clean: > > +clean: $(DEFAULT_BPFTOOL)-clean $(BPFOBJ)-clean > > why separate targets for $(DEFAULT_BPFTOOL)-clean and $(BPFOBJ)-clean? > Are they intended to be called separately? I don't think > parallelization is that important for the clean up. Let's just keep > all the cleaning in one place, not spreading it across Makefile? Ok Thanks, Jean
diff --git a/tools/bpf/runqslower/Makefile b/tools/bpf/runqslower/Makefile index bcc4a7396713..861f4dcde960 100644 --- a/tools/bpf/runqslower/Makefile +++ b/tools/bpf/runqslower/Makefile @@ -1,15 +1,20 @@ # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) include ../../scripts/Makefile.include -OUTPUT := .output +ifeq ($(OUTPUT),) + OUTPUT = $(abspath .output)/ +endif + CLANG ?= clang LLC ?= llc LLVM_STRIP ?= llvm-strip -DEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool +BPFTOOL_OUTPUT := $(OUTPUT)bpftool/ +DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)bpftool BPFTOOL ?= $(DEFAULT_BPFTOOL) LIBBPF_SRC := $(abspath ../../lib/bpf) -BPFOBJ := $(OUTPUT)/libbpf.a -BPF_INCLUDE := $(OUTPUT) +BPFOBJ_OUTPUT := $(OUTPUT)libbpf/ +BPFOBJ := $(BPFOBJ_OUTPUT)libbpf.a +BPF_INCLUDE := $(BPFOBJ_OUTPUT) INCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../lib) \ -I$(abspath ../../include/uapi) CFLAGS := -g -Wall @@ -20,7 +25,6 @@ VMLINUX_BTF_PATHS := /sys/kernel/btf/vmlinux /boot/vmlinux-$(KERNEL_REL) VMLINUX_BTF_PATH := $(or $(VMLINUX_BTF),$(firstword \ $(wildcard $(VMLINUX_BTF_PATHS)))) -abs_out := $(abspath $(OUTPUT)) ifeq ($(V),1) Q = else @@ -36,9 +40,13 @@ all: runqslower runqslower: $(OUTPUT)/runqslower -clean: +clean: $(DEFAULT_BPFTOOL)-clean $(BPFOBJ)-clean $(call QUIET_CLEAN, runqslower) - $(Q)rm -rf $(OUTPUT) runqslower + $(Q)$(RM) -r $(BPFOBJ_OUTPUT) $(BPFTOOL_OUTPUT) + $(Q)$(RM) $(OUTPUT)*.o $(OUTPUT)*.d + $(Q)$(RM) $(OUTPUT)*.skel.h $(OUTPUT)vmlinux.h + $(Q)$(RM) $(OUTPUT)runqslower + $(Q)$(RM) -r .output $(OUTPUT)/runqslower: $(OUTPUT)/runqslower.o $(BPFOBJ) $(QUIET_LINK)$(CC) $(CFLAGS) $^ -lelf -lz -o $@ @@ -59,8 +67,8 @@ $(OUTPUT)/%.bpf.o: %.bpf.c $(BPFOBJ) | $(OUTPUT) $(OUTPUT)/%.o: %.c | $(OUTPUT) $(QUIET_CC)$(CC) $(CFLAGS) $(INCLUDES) -c $(filter %.c,$^) -o $@ -$(OUTPUT): - $(QUIET_MKDIR)mkdir -p $(OUTPUT) +$(OUTPUT) $(BPFOBJ_OUTPUT) $(BPFTOOL_OUTPUT): + $(QUIET_MKDIR)mkdir -p $@ $(OUTPUT)/vmlinux.h: $(VMLINUX_BTF_PATH) | $(OUTPUT) $(BPFTOOL) $(Q)if [ ! -e "$(VMLINUX_BTF_PATH)" ] ; then \ @@ -70,10 +78,17 @@ $(OUTPUT)/vmlinux.h: $(VMLINUX_BTF_PATH) | $(OUTPUT) $(BPFTOOL) fi $(QUIET_GEN)$(BPFTOOL) btf dump file $(VMLINUX_BTF_PATH) format c > $@ -$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT) - $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) \ - OUTPUT=$(abspath $(dir $@))/ $(abspath $@) +$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(BPFOBJ_OUTPUT) + $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(BPFOBJ_OUTPUT) $@ + +$(BPFOBJ)-clean: $(BPFOBJ_OUTPUT) + $(Q)$(MAKE) -C $(LIBBPF_SRC) OUTPUT=$(BPFOBJ_OUTPUT) clean -$(DEFAULT_BPFTOOL): - $(Q)$(MAKE) $(submake_extras) -C ../bpftool \ - prefix= OUTPUT=$(abs_out)/ DESTDIR=$(abs_out) install +$(DEFAULT_BPFTOOL): | $(BPFTOOL_OUTPUT) + $(Q)$(MAKE) $(submake_extras) -C ../bpftool OUTPUT=$(BPFTOOL_OUTPUT) + +$(DEFAULT_BPFTOOL)-clean: $(BPFTOOL_OUTPUT) +ifeq ($(DEFAULT_BPFTOOL),$(BPFTOOL)) + $(call QUIET_CLEAN,bpftool) + $(Q)$(MAKE) -C ../bpftool OUTPUT=$(BPFTOOL_OUTPUT) clean +endif
Enable out-of-tree build for runqslower. Only set OUTPUT=.output if it wasn't already set by the user. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- tools/bpf/runqslower/Makefile | 45 +++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 15 deletions(-)