forked from mirrors/linux
		
	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
					
				
					 7 changed files with 35 additions and 20 deletions
				
			
		|  | @ -10,15 +10,12 @@ LIBBPF_OUT = $(abspath $(obj)) | |||
| $(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 \
 | ||||
| userccflags += -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) | ||||
| clean-files := $(userprogs) bpf_helper_defs.h FEATURE-DUMP.libbpf staticobjs/ feature/ | ||||
| 
 | ||||
| bpf_preload_umd-objs := iterators/iterators.o | ||||
| 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 += -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ \
 | ||||
| 	-I$(if $(OUTPUT),$(OUTPUT),.) \
 | ||||
| 	$(if $(LIBBPF_OUTPUT),-I$(LIBBPF_OUTPUT)) \
 | ||||
| 	-I$(srctree)/kernel/bpf/ \
 | ||||
| 	-I$(srctree)/tools/include \
 | ||||
| 	-I$(srctree)/tools/include/uapi \
 | ||||
|  |  | |||
|  | @ -47,7 +47,6 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT)/l | |||
| CFLAGS := -g \
 | ||||
|           -I$(srctree)/tools/include \
 | ||||
|           -I$(srctree)/tools/include/uapi \
 | ||||
|           -I$(LIBBPF_OUT) \
 | ||||
|           -I$(LIBBPF_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 | ||||
| libbpf_version.h | ||||
| libbpf.pc | ||||
| libbpf.so.* | ||||
| TAGS | ||||
|  |  | |||
|  | @ -113,9 +113,8 @@ SHARED_OBJDIR	:= $(OUTPUT)sharedobjs/ | |||
| STATIC_OBJDIR	:= $(OUTPUT)staticobjs/ | ||||
| BPF_IN_SHARED	:= $(SHARED_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_GENERATED	:= $(BPF_HELPER_DEFS) $(VERSION_HDR) | ||||
| BPF_GENERATED	:= $(BPF_HELPER_DEFS) | ||||
| 
 | ||||
| LIB_TARGET	:= $(addprefix $(OUTPUT),$(LIB_TARGET)) | ||||
| 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 \
 | ||||
| 		--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.$(LIBBPF_VERSION): $(BPF_IN_SHARED) $(VERSION_SCRIPT) | ||||
|  | @ -189,7 +182,7 @@ $(OUTPUT)libbpf.pc: | |||
| 		-e "s|@VERSION@|$(LIBBPF_VERSION)|" \
 | ||||
| 		< libbpf.pc.template > $@ | ||||
| 
 | ||||
| check: check_abi | ||||
| check: check_abi check_version | ||||
| 
 | ||||
| check_abi: $(OUTPUT)libbpf.so $(VERSION_SCRIPT) | ||||
| 	@if [ "$(GLOBAL_SYM_COUNT)" != "$(VERSIONED_SYM_COUNT)" ]; then	 \
 | ||||
|  | @ -215,6 +208,21 @@ check_abi: $(OUTPUT)libbpf.so $(VERSION_SCRIPT) | |||
| 		exit 1;							 \
 | ||||
| 	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 | ||||
| 	if [ ! -d '$(DESTDIR_SQ)$1' ]; then		\
 | ||||
| 		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1';	\
 | ||||
|  | @ -234,8 +242,9 @@ install_lib: all_cmd | |||
| 		cp -fpR $(LIB_FILE) $(DESTDIR)$(libdir_SQ) | ||||
| 
 | ||||
| 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_endian.h bpf_core_read.h skel_internal.h | ||||
| 		  bpf_helpers.h $(BPF_GENERATED) bpf_tracing.h		     \
 | ||||
| 		  bpf_endian.h bpf_core_read.h skel_internal.h		     \
 | ||||
| 		  libbpf_version.h | ||||
| 
 | ||||
| install_headers: $(BPF_GENERATED) | ||||
| 	$(call QUIET_INSTALL, headers)					     \
 | ||||
|  | @ -255,7 +264,7 @@ clean: | |||
| 		$(addprefix $(OUTPUT),					     \
 | ||||
| 			    *.o *.a *.so *.so.$(LIBBPF_MAJOR_VERSION) *.pc) | ||||
| 
 | ||||
| PHONY += force cscope tags | ||||
| PHONY += force cscope tags check check_abi check_version | ||||
| force: | ||||
| 
 | ||||
| cscope: | ||||
|  |  | |||
|  | @ -386,3 +386,6 @@ LIBBPF_0.5.0 { | |||
| 		btf_dump__dump_type_data; | ||||
| 		libbpf_set_strict_mode; | ||||
| } 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 a new issue
	
	 Andrii Nakryiko
						Andrii Nakryiko