On Fri, Oct 18, 2024 at 08:49:00AM +0200, Viktor Malik wrote: > When building selftests with CFLAGS set via env variable, the value of > CFLAGS is propagated into bpftool Makefile (called from selftests > Makefile). This makes the compilation fail as _GNU_SOURCE is defined two > times - once from selftests Makefile (by including lib.mk) and once from > bpftool Makefile (by calling `llvm-config --cflags`): > > $ CFLAGS="" make -C tools/testing/selftests/bpf > [...] > CC /bpf-next/tools/testing/selftests/bpf/tools/build/bpftool/btf.o > <command-line>: error: "_GNU_SOURCE" redefined [-Werror] > <command-line>: note: this is the location of the previous definition > cc1: all warnings being treated as errors > [...] > > Filter out -D_GNU_SOURCE from the result of `llvm-config --cflags` in > bpftool Makefile to prevent this error. > > Signed-off-by: Viktor Malik <vmalik@xxxxxxxxxx> Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx> jirka > --- > tools/bpf/bpftool/Makefile | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile > index ba927379eb20..a4263dfb5e03 100644 > --- a/tools/bpf/bpftool/Makefile > +++ b/tools/bpf/bpftool/Makefile > @@ -147,7 +147,11 @@ ifeq ($(feature-llvm),1) > # If LLVM is available, use it for JIT disassembly > CFLAGS += -DHAVE_LLVM_SUPPORT > LLVM_CONFIG_LIB_COMPONENTS := mcdisassembler all-targets > - CFLAGS += $(shell $(LLVM_CONFIG) --cflags) > + # llvm-config always adds -D_GNU_SOURCE, however, it may already be in CFLAGS > + # (e.g. when bpftool build is called from selftests build as selftests > + # Makefile includes lib.mk which sets -D_GNU_SOURCE) which would cause > + # compilation error due to redefinition. Let's filter it out here. > + CFLAGS += $(filter-out -D_GNU_SOURCE,$(shell $(LLVM_CONFIG) --cflags)) > LIBS += $(shell $(LLVM_CONFIG) --libs $(LLVM_CONFIG_LIB_COMPONENTS)) > ifeq ($(shell $(LLVM_CONFIG) --shared-mode),static) > LIBS += $(shell $(LLVM_CONFIG) --system-libs $(LLVM_CONFIG_LIB_COMPONENTS)) > -- > 2.47.0 >