> On Jul 7, 2022, at 8:12 PM, Pu Lehui <pulehui@xxxxxxxxxx> wrote: > > > > On 2022/7/8 10:46, Pu Lehui wrote: >> On 2022/7/8 3:12, Song Liu wrote: >>> >>> >>>> On Jul 7, 2022, at 7:08 AM, Pu Lehui <pulehui@xxxxxxxxxx> wrote: >>>> >>>> Currently, when cross compiling bpf samples, the host side >>>> cannot use arch-specific bpftool to generate vmlinux.h or >>>> skeleton. We need to compile the bpftool with the host >>>> compiler. >>>> >>>> Signed-off-by: Pu Lehui <pulehui@xxxxxxxxxx> >>>> --- >>>> samples/bpf/Makefile | 8 ++++---- >>>> 1 file changed, 4 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile >>>> index 5002a5b9a7da..fe54a8c8f312 100644 >>>> --- a/samples/bpf/Makefile >>>> +++ b/samples/bpf/Makefile >>>> @@ -1,4 +1,5 @@ >>>> # SPDX-License-Identifier: GPL-2.0 >>>> +-include tools/scripts/Makefile.include >>> >>> Why do we need the -include here? >>> >> HOSTLD is defined in tools/scripts/Makefile.include, we need to add it. >> And for -include, mainly to resolve some conflicts: >> 1. If workdir is kernel_src, then 'include tools/scripts/Makefile.include' is fine when 'make M=samples/bpf'. >> 2. Since the trick in samples/bpf/Makefile: >> # Trick to allow make to be run from this directory >> all: >> $(MAKE) -C ../../ M=$(CURDIR) BPF_SAMPLES_PATH=$(CURDIR) >> If workdir is samples/bpf, the compile process will first load the Makefile in samples/bpf, then change workdir to kernel_src and load the kernel_src's Makefile. So if we just add 'include tools/scripts/Makefile.include', then the first load will occur error for not found the file, so we add -include to skip the first load. > > sorry, correct the reply, so we add -include to skip the 'tools/scripts/Makefile.include' file on the fisrt load. Thanks for the explanation. Acked-by: Song Liu <song@xxxxxxxxxx> > >>> Thanks, >>> Song >>> >>>> >>>> BPF_SAMPLES_PATH ?= $(abspath $(srctree)/$(src)) >>>> TOOLS_PATH := $(BPF_SAMPLES_PATH)/../../tools >>>> @@ -283,11 +284,10 @@ $(LIBBPF): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OU >>>> BPFTOOLDIR := $(TOOLS_PATH)/bpf/bpftool >>>> BPFTOOL_OUTPUT := $(abspath $(BPF_SAMPLES_PATH))/bpftool >>>> BPFTOOL := $(BPFTOOL_OUTPUT)/bpftool >>>> -$(BPFTOOL): $(LIBBPF) $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT) >>>> +$(BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) | $(BPFTOOL_OUTPUT) >>>> $(MAKE) -C $(BPFTOOLDIR) srctree=$(BPF_SAMPLES_PATH)/../../ \ >>>> - OUTPUT=$(BPFTOOL_OUTPUT)/ \ >>>> - LIBBPF_OUTPUT=$(LIBBPF_OUTPUT)/ \ >>>> - LIBBPF_DESTDIR=$(LIBBPF_DESTDIR)/ >>>> + ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \ >>>> + OUTPUT=$(BPFTOOL_OUTPUT)/ >>>> >>>> $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT): >>>> $(call msg,MKDIR,$@) >>>> -- >>>> 2.25.1 >>>> >>> >>> . >>> >> .