Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools/resolve_btfids: Fix setting HOSTCFLAGS

Building BPF selftests with custom HOSTCFLAGS yields an error:

# make HOSTCFLAGS="-O2"
[...]
HOSTCC ./tools/testing/selftests/bpf/tools/build/resolve_btfids/main.o
main.c:73:10: fatal error: linux/rbtree.h: No such file or directory
73 | #include <linux/rbtree.h>
| ^~~~~~~~~~~~~~~~

The reason is that tools/bpf/resolve_btfids/Makefile passes header
include paths by extending HOSTCFLAGS which is overridden by setting
HOSTCFLAGS in the make command (because of Makefile rules [1]).

This patch fixes the above problem by passing the include paths via
`HOSTCFLAGS_resolve_btfids` which is used by tools/build/Build.include
and can be combined with overridding HOSTCFLAGS.

[1] https://www.gnu.org/software/make/manual/html_node/Overriding.html

Fixes: 56a2df7615fa ("tools/resolve_btfids: Compile resolve_btfids as host program")
Signed-off-by: Viktor Malik <vmalik@redhat.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20230530123352.1308488-1-vmalik@redhat.com

authored by

Viktor Malik and committed by
Andrii Nakryiko
edd75c80 f904c678

+2 -2
+2 -2
tools/bpf/resolve_btfids/Makefile
··· 67 67 LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null) 68 68 LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf) 69 69 70 - HOSTCFLAGS += -g \ 70 + HOSTCFLAGS_resolve_btfids += -g \ 71 71 -I$(srctree)/tools/include \ 72 72 -I$(srctree)/tools/include/uapi \ 73 73 -I$(LIBBPF_INCLUDE) \ ··· 76 76 77 77 LIBS = $(LIBELF_LIBS) -lz 78 78 79 - export srctree OUTPUT HOSTCFLAGS Q HOSTCC HOSTLD HOSTAR 79 + export srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR 80 80 include $(srctree)/tools/build/Makefile.include 81 81 82 82 $(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)