bpf: preload: Install libbpf headers when building
API headers from libbpf should not be accessed directly from the library's source directory. Instead, they should be exported with "make install_headers". Let's make sure that bpf/preload/Makefile installs the headers properly when building. Note that we declare an additional dependency for iterators/iterators.o: having $(LIBBPF_A) as a dependency to "$(obj)/bpf_preload_umd" is not sufficient, as it makes it required only at the linking step. But we need libbpf to be compiled, and in particular its headers to be exported, before we attempt to compile iterators.o. The issue would not occur before this commit, because libbpf's headers were not exported and were always available under tools/lib/bpf. Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20211007194438.34443-7-quentin@isovalent.com
This commit is contained in:
Родитель
be79505caf
Коммит
bf60791741
|
@ -1,21 +1,36 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
LIBBPF_SRCS = $(srctree)/tools/lib/bpf/
|
LIBBPF_SRCS = $(srctree)/tools/lib/bpf/
|
||||||
LIBBPF_A = $(obj)/libbpf.a
|
LIBBPF_OUT = $(abspath $(obj))/libbpf
|
||||||
LIBBPF_OUT = $(abspath $(obj))
|
LIBBPF_A = $(LIBBPF_OUT)/libbpf.a
|
||||||
|
LIBBPF_DESTDIR = $(LIBBPF_OUT)
|
||||||
|
LIBBPF_INCLUDE = $(LIBBPF_DESTDIR)/include
|
||||||
|
|
||||||
# Although not in use by libbpf's Makefile, set $(O) so that the "dummy" test
|
# Although not in use by libbpf's Makefile, set $(O) so that the "dummy" test
|
||||||
# in tools/scripts/Makefile.include always succeeds when building the kernel
|
# in tools/scripts/Makefile.include always succeeds when building the kernel
|
||||||
# with $(O) pointing to a relative path, as in "make O=build bindeb-pkg".
|
# with $(O) pointing to a relative path, as in "make O=build bindeb-pkg".
|
||||||
$(LIBBPF_A):
|
$(LIBBPF_A): | $(LIBBPF_OUT)
|
||||||
$(Q)$(MAKE) -C $(LIBBPF_SRCS) O=$(LIBBPF_OUT)/ OUTPUT=$(LIBBPF_OUT)/ $(LIBBPF_OUT)/libbpf.a
|
$(Q)$(MAKE) -C $(LIBBPF_SRCS) O=$(LIBBPF_OUT)/ OUTPUT=$(LIBBPF_OUT)/ \
|
||||||
|
DESTDIR=$(LIBBPF_DESTDIR) prefix= \
|
||||||
|
$(LIBBPF_OUT)/libbpf.a install_headers
|
||||||
|
|
||||||
|
libbpf_hdrs: $(LIBBPF_A)
|
||||||
|
|
||||||
|
.PHONY: libbpf_hdrs
|
||||||
|
|
||||||
|
$(LIBBPF_OUT):
|
||||||
|
$(call msg,MKDIR,$@)
|
||||||
|
$(Q)mkdir -p $@
|
||||||
|
|
||||||
userccflags += -I $(srctree)/tools/include/ -I $(srctree)/tools/include/uapi \
|
userccflags += -I $(srctree)/tools/include/ -I $(srctree)/tools/include/uapi \
|
||||||
-I $(srctree)/tools/lib/ -Wno-unused-result
|
-I $(LIBBPF_INCLUDE) -Wno-unused-result
|
||||||
|
|
||||||
userprogs := bpf_preload_umd
|
userprogs := bpf_preload_umd
|
||||||
|
|
||||||
clean-files := $(userprogs) bpf_helper_defs.h FEATURE-DUMP.libbpf staticobjs/ feature/
|
clean-files := $(userprogs) bpf_helper_defs.h FEATURE-DUMP.libbpf staticobjs/ feature/
|
||||||
|
clean-files += $(LIBBPF_OUT) $(LIBBPF_DESTDIR)
|
||||||
|
|
||||||
|
$(obj)/iterators/iterators.o: | libbpf_hdrs
|
||||||
|
|
||||||
bpf_preload_umd-objs := iterators/iterators.o
|
bpf_preload_umd-objs := iterators/iterators.o
|
||||||
bpf_preload_umd-userldlibs := $(LIBBPF_A) -lelf -lz
|
bpf_preload_umd-userldlibs := $(LIBBPF_A) -lelf -lz
|
||||||
|
|
Загрузка…
Ссылка в новой задаче