Introduce a macro LIBBPF_DEPRECATED_SINCE(major, minor, message) to prepare the deprecation of two API functions. This macro marks functions as deprecated when libbpf's version reaches the values passed as an argument. As part of this change libbpf_version.h header is added with recorded major (LIBBPF_MAJOR_VERSION) and minor (LIBBPF_MINOR_VERSION) libbpf version macros. They are now part of libbpf public API and can be relied upon by user code. libbpf_version.h is installed system-wide along other libbpf public headers. Due to this new build-time auto-generated header, in-kernel applications relying on libbpf (resolve_btfids, bpftool, bpf_preload) are updated to include libbpf's output directory as part of a list of include search paths. Better fix would be to use libbpf's make_install target to install public API headers, but that clean up is left out as a future improvement. The build changes were tested by building kernel (with KBUILD_OUTPUT and O= specified explicitly), bpftool, libbpf, selftests/bpf, and resolve_btfids builds. No problems were detected. Note that because of the constraints of the C preprocessor we have to write a few lines of macro magic for each version used to prepare deprecation (0.6 for now). Also, use LIBBPF_DEPRECATED_SINCE() to schedule deprecation of btf__get_from_id() and btf__load(), which are replaced by btf__load_from_kernel_by_id() and btf__load_into_kernel(), respectively, starting from future libbpf v0.6. This is part of libbpf 1.0 effort ([0]). [0] Closes: https://github.com/libbpf/libbpf/issues/278 Co-developed-by: Quentin Monnet <quentin@isovalent.com> Co-developed-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20210908213226.1871016-1-andrii@kernel.org
32 lines
1.1 KiB
Makefile
32 lines
1.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
LIBBPF_SRCS = $(srctree)/tools/lib/bpf/
|
|
LIBBPF_A = $(obj)/libbpf.a
|
|
LIBBPF_OUT = $(abspath $(obj))
|
|
|
|
# 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
|
|
# with $(O) pointing to a relative path, as in "make O=build bindeb-pkg".
|
|
$(LIBBPF_A):
|
|
$(Q)$(MAKE) -C $(LIBBPF_SRCS) O=$(LIBBPF_OUT)/ OUTPUT=$(LIBBPF_OUT)/ $(LIBBPF_OUT)/libbpf.a
|
|
|
|
userccflags += -I$(LIBBPF_OUT) -I $(srctree)/tools/include/ \
|
|
-I $(srctree)/tools/include/uapi \
|
|
-I $(srctree)/tools/lib/ -Wno-unused-result
|
|
|
|
userprogs := bpf_preload_umd
|
|
|
|
clean-files := $(userprogs) libbpf_version.h bpf_helper_defs.h FEATURE-DUMP.libbpf staticobjs/ feature/
|
|
|
|
$(obj)/iterators/iterators.o: $(LIBBPF_A)
|
|
|
|
bpf_preload_umd-objs := iterators/iterators.o
|
|
bpf_preload_umd-userldlibs := $(LIBBPF_A) -lelf -lz
|
|
|
|
$(obj)/bpf_preload_umd: $(LIBBPF_A)
|
|
|
|
$(obj)/bpf_preload_umd_blob.o: $(obj)/bpf_preload_umd
|
|
|
|
obj-$(CONFIG_BPF_PRELOAD_UMD) += bpf_preload.o
|
|
bpf_preload-objs += bpf_preload_kern.o bpf_preload_umd_blob.o
|