mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
libbpf: Make libbpf_version.h non-auto-generated
Turn previously auto-generated libbpf_version.h header into a normal
header file. This prevents various tricky Makefile integration issues,
simplifies the overall build process, but also allows to further extend
it with some more versioning-related APIs in the future.
To prevent accidental out-of-sync versions as defined by libbpf.map and
libbpf_version.h, Makefile checks their consistency at build time.
Simultaneously with this change bump libbpf.map to v0.6.
Also undo adding libbpf's output directory into include path for
kernel/bpf/preload, bpftool, and resolve_btfids, which is not necessary
because libbpf_version.h is just a normal header like any other.
Fixes: 0b46b75505
("libbpf: Add LIBBPF_DEPRECATED_SINCE macro for scheduling API deprecations")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210913222309.3220849-1-andrii@kernel.org
This commit is contained in:
parent
dbd7eb14e0
commit
2f38304127
@ -10,15 +10,12 @@ LIBBPF_OUT = $(abspath $(obj))
|
|||||||
$(LIBBPF_A):
|
$(LIBBPF_A):
|
||||||
$(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)/ $(LIBBPF_OUT)/libbpf.a
|
||||||
|
|
||||||
userccflags += -I$(LIBBPF_OUT) -I $(srctree)/tools/include/ \
|
userccflags += -I $(srctree)/tools/include/ -I $(srctree)/tools/include/uapi \
|
||||||
-I $(srctree)/tools/include/uapi \
|
|
||||||
-I $(srctree)/tools/lib/ -Wno-unused-result
|
-I $(srctree)/tools/lib/ -Wno-unused-result
|
||||||
|
|
||||||
userprogs := bpf_preload_umd
|
userprogs := bpf_preload_umd
|
||||||
|
|
||||||
clean-files := $(userprogs) libbpf_version.h bpf_helper_defs.h FEATURE-DUMP.libbpf staticobjs/ feature/
|
clean-files := $(userprogs) 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-objs := iterators/iterators.o
|
||||||
bpf_preload_umd-userldlibs := $(LIBBPF_A) -lelf -lz
|
bpf_preload_umd-userldlibs := $(LIBBPF_A) -lelf -lz
|
||||||
|
@ -60,7 +60,6 @@ CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
|
|||||||
CFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
|
CFLAGS += $(filter-out -Wswitch-enum -Wnested-externs,$(EXTRA_WARNINGS))
|
||||||
CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
|
CFLAGS += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
|
||||||
-I$(if $(OUTPUT),$(OUTPUT),.) \
|
-I$(if $(OUTPUT),$(OUTPUT),.) \
|
||||||
$(if $(LIBBPF_OUTPUT),-I$(LIBBPF_OUTPUT)) \
|
|
||||||
-I$(srctree)/kernel/bpf/ \
|
-I$(srctree)/kernel/bpf/ \
|
||||||
-I$(srctree)/tools/include \
|
-I$(srctree)/tools/include \
|
||||||
-I$(srctree)/tools/include/uapi \
|
-I$(srctree)/tools/include/uapi \
|
||||||
|
@ -47,7 +47,6 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/l
|
|||||||
CFLAGS := -g \
|
CFLAGS := -g \
|
||||||
-I$(srctree)/tools/include \
|
-I$(srctree)/tools/include \
|
||||||
-I$(srctree)/tools/include/uapi \
|
-I$(srctree)/tools/include/uapi \
|
||||||
-I$(LIBBPF_OUT) \
|
|
||||||
-I$(LIBBPF_SRC) \
|
-I$(LIBBPF_SRC) \
|
||||||
-I$(SUBCMD_SRC)
|
-I$(SUBCMD_SRC)
|
||||||
|
|
||||||
|
1
tools/lib/bpf/.gitignore
vendored
1
tools/lib/bpf/.gitignore
vendored
@ -1,5 +1,4 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
libbpf_version.h
|
|
||||||
libbpf.pc
|
libbpf.pc
|
||||||
libbpf.so.*
|
libbpf.so.*
|
||||||
TAGS
|
TAGS
|
||||||
|
@ -113,9 +113,8 @@ SHARED_OBJDIR := $(OUTPUT)sharedobjs/
|
|||||||
STATIC_OBJDIR := $(OUTPUT)staticobjs/
|
STATIC_OBJDIR := $(OUTPUT)staticobjs/
|
||||||
BPF_IN_SHARED := $(SHARED_OBJDIR)libbpf-in.o
|
BPF_IN_SHARED := $(SHARED_OBJDIR)libbpf-in.o
|
||||||
BPF_IN_STATIC := $(STATIC_OBJDIR)libbpf-in.o
|
BPF_IN_STATIC := $(STATIC_OBJDIR)libbpf-in.o
|
||||||
VERSION_HDR := $(OUTPUT)libbpf_version.h
|
|
||||||
BPF_HELPER_DEFS := $(OUTPUT)bpf_helper_defs.h
|
BPF_HELPER_DEFS := $(OUTPUT)bpf_helper_defs.h
|
||||||
BPF_GENERATED := $(BPF_HELPER_DEFS) $(VERSION_HDR)
|
BPF_GENERATED := $(BPF_HELPER_DEFS)
|
||||||
|
|
||||||
LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET))
|
LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET))
|
||||||
LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
|
LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
|
||||||
@ -165,12 +164,6 @@ $(BPF_HELPER_DEFS): $(srctree)/tools/include/uapi/linux/bpf.h
|
|||||||
$(QUIET_GEN)$(srctree)/scripts/bpf_doc.py --header \
|
$(QUIET_GEN)$(srctree)/scripts/bpf_doc.py --header \
|
||||||
--file $(srctree)/tools/include/uapi/linux/bpf.h > $(BPF_HELPER_DEFS)
|
--file $(srctree)/tools/include/uapi/linux/bpf.h > $(BPF_HELPER_DEFS)
|
||||||
|
|
||||||
$(VERSION_HDR): force
|
|
||||||
$(QUIET_GEN)echo "/* This file was auto-generated. */" > $@
|
|
||||||
@echo "" >> $@
|
|
||||||
@echo "#define LIBBPF_MAJOR_VERSION $(LIBBPF_MAJOR_VERSION)" >> $@
|
|
||||||
@echo "#define LIBBPF_MINOR_VERSION $(LIBBPF_MINOR_VERSION)" >> $@
|
|
||||||
|
|
||||||
$(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION)
|
$(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION)
|
||||||
|
|
||||||
$(OUTPUT)libbpf.so.$(LIBBPF_VERSION): $(BPF_IN_SHARED) $(VERSION_SCRIPT)
|
$(OUTPUT)libbpf.so.$(LIBBPF_VERSION): $(BPF_IN_SHARED) $(VERSION_SCRIPT)
|
||||||
@ -189,7 +182,7 @@ $(OUTPUT)libbpf.pc:
|
|||||||
-e "s|@VERSION@|$(LIBBPF_VERSION)|" \
|
-e "s|@VERSION@|$(LIBBPF_VERSION)|" \
|
||||||
< libbpf.pc.template > $@
|
< libbpf.pc.template > $@
|
||||||
|
|
||||||
check: check_abi
|
check: check_abi check_version
|
||||||
|
|
||||||
check_abi: $(OUTPUT)libbpf.so $(VERSION_SCRIPT)
|
check_abi: $(OUTPUT)libbpf.so $(VERSION_SCRIPT)
|
||||||
@if [ "$(GLOBAL_SYM_COUNT)" != "$(VERSIONED_SYM_COUNT)" ]; then \
|
@if [ "$(GLOBAL_SYM_COUNT)" != "$(VERSIONED_SYM_COUNT)" ]; then \
|
||||||
@ -215,6 +208,21 @@ check_abi: $(OUTPUT)libbpf.so $(VERSION_SCRIPT)
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
HDR_MAJ_VERSION := $(shell grep -oE '^\#define LIBBPF_MAJOR_VERSION ([0-9]+)$$' libbpf_version.h | cut -d' ' -f3)
|
||||||
|
HDR_MIN_VERSION := $(shell grep -oE '^\#define LIBBPF_MINOR_VERSION ([0-9]+)$$' libbpf_version.h | cut -d' ' -f3)
|
||||||
|
|
||||||
|
check_version: $(VERSION_SCRIPT) libbpf_version.h
|
||||||
|
@if [ "$(HDR_MAJ_VERSION)" != "$(LIBBPF_MAJOR_VERSION)" ]; then \
|
||||||
|
echo "Error: libbpf major version mismatch detected: " \
|
||||||
|
"'$(HDR_MAJ_VERSION)' != '$(LIBBPF_MAJOR_VERSION)'" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
@if [ "$(HDR_MIN_VERSION)" != "$(LIBBPF_MINOR_VERSION)" ]; then \
|
||||||
|
echo "Error: libbpf minor version mismatch detected: " \
|
||||||
|
"'$(HDR_MIN_VERSION)' != '$(LIBBPF_MINOR_VERSION)'" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
define do_install_mkdir
|
define do_install_mkdir
|
||||||
if [ ! -d '$(DESTDIR_SQ)$1' ]; then \
|
if [ ! -d '$(DESTDIR_SQ)$1' ]; then \
|
||||||
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \
|
||||||
@ -235,7 +243,8 @@ install_lib: all_cmd
|
|||||||
|
|
||||||
INSTALL_HEADERS = bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h xsk.h \
|
INSTALL_HEADERS = bpf.h libbpf.h btf.h libbpf_common.h libbpf_legacy.h xsk.h \
|
||||||
bpf_helpers.h $(BPF_GENERATED) bpf_tracing.h \
|
bpf_helpers.h $(BPF_GENERATED) bpf_tracing.h \
|
||||||
bpf_endian.h bpf_core_read.h skel_internal.h
|
bpf_endian.h bpf_core_read.h skel_internal.h \
|
||||||
|
libbpf_version.h
|
||||||
|
|
||||||
install_headers: $(BPF_GENERATED)
|
install_headers: $(BPF_GENERATED)
|
||||||
$(call QUIET_INSTALL, headers) \
|
$(call QUIET_INSTALL, headers) \
|
||||||
@ -255,7 +264,7 @@ clean:
|
|||||||
$(addprefix $(OUTPUT), \
|
$(addprefix $(OUTPUT), \
|
||||||
*.o *.a *.so *.so.$(LIBBPF_MAJOR_VERSION) *.pc)
|
*.o *.a *.so *.so.$(LIBBPF_MAJOR_VERSION) *.pc)
|
||||||
|
|
||||||
PHONY += force cscope tags
|
PHONY += force cscope tags check check_abi check_version
|
||||||
force:
|
force:
|
||||||
|
|
||||||
cscope:
|
cscope:
|
||||||
|
@ -386,3 +386,6 @@ LIBBPF_0.5.0 {
|
|||||||
btf_dump__dump_type_data;
|
btf_dump__dump_type_data;
|
||||||
libbpf_set_strict_mode;
|
libbpf_set_strict_mode;
|
||||||
} LIBBPF_0.4.0;
|
} LIBBPF_0.4.0;
|
||||||
|
|
||||||
|
LIBBPF_0.6.0 {
|
||||||
|
} LIBBPF_0.5.0;
|
||||||
|
9
tools/lib/bpf/libbpf_version.h
Normal file
9
tools/lib/bpf/libbpf_version.h
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
|
||||||
|
/* Copyright (C) 2021 Facebook */
|
||||||
|
#ifndef __LIBBPF_VERSION_H
|
||||||
|
#define __LIBBPF_VERSION_H
|
||||||
|
|
||||||
|
#define LIBBPF_MAJOR_VERSION 0
|
||||||
|
#define LIBBPF_MINOR_VERSION 6
|
||||||
|
|
||||||
|
#endif /* __LIBBPF_VERSION_H */
|
Loading…
Reference in New Issue
Block a user