Makefile (8543e437807970166c2b66b79935c9f4b0e6d1f9) | Makefile (dd399ac9e343c7573c47d6820e4a23013c54749d) |
---|---|
1# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 2# Most of this file is copied from tools/lib/traceevent/Makefile 3 4BPF_VERSION = 0 5BPF_PATCHLEVEL = 0 6BPF_EXTRAVERSION = 2 7 8MAKEFLAGS += --no-print-directory --- 76 unchanged lines hidden (view full) --- 85 86OBJ = $@ 87N = 88 89LIBBPF_VERSION = $(BPF_VERSION).$(BPF_PATCHLEVEL).$(BPF_EXTRAVERSION) 90 91LIB_TARGET = libbpf.a libbpf.so.$(LIBBPF_VERSION) 92LIB_FILE = libbpf.a libbpf.so* | 1# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 2# Most of this file is copied from tools/lib/traceevent/Makefile 3 4BPF_VERSION = 0 5BPF_PATCHLEVEL = 0 6BPF_EXTRAVERSION = 2 7 8MAKEFLAGS += --no-print-directory --- 76 unchanged lines hidden (view full) --- 85 86OBJ = $@ 87N = 88 89LIBBPF_VERSION = $(BPF_VERSION).$(BPF_PATCHLEVEL).$(BPF_EXTRAVERSION) 90 91LIB_TARGET = libbpf.a libbpf.so.$(LIBBPF_VERSION) 92LIB_FILE = libbpf.a libbpf.so* |
93PC_FILE = libbpf.pc |
|
93 94# Set compile option CFLAGS 95ifdef EXTRA_CFLAGS 96 CFLAGS := $(EXTRA_CFLAGS) 97else 98 CFLAGS := -g -Wall 99endif 100 --- 28 unchanged lines hidden (view full) --- 129export srctree OUTPUT CC LD CFLAGS V 130include $(srctree)/tools/build/Makefile.include 131 132BPF_IN := $(OUTPUT)libbpf-in.o 133VERSION_SCRIPT := libbpf.map 134 135LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET)) 136LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE)) | 94 95# Set compile option CFLAGS 96ifdef EXTRA_CFLAGS 97 CFLAGS := $(EXTRA_CFLAGS) 98else 99 CFLAGS := -g -Wall 100endif 101 --- 28 unchanged lines hidden (view full) --- 130export srctree OUTPUT CC LD CFLAGS V 131include $(srctree)/tools/build/Makefile.include 132 133BPF_IN := $(OUTPUT)libbpf-in.o 134VERSION_SCRIPT := libbpf.map 135 136LIB_TARGET := $(addprefix $(OUTPUT),$(LIB_TARGET)) 137LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE)) |
138PC_FILE := $(addprefix $(OUTPUT),$(PC_FILE)) |
|
137 138GLOBAL_SYM_COUNT = $(shell readelf -s --wide $(BPF_IN) | \ 139 awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {s++} END{print s}') 140VERSIONED_SYM_COUNT = $(shell readelf -s --wide $(OUTPUT)libbpf.so | \ 141 grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | sort -u | wc -l) 142 | 139 140GLOBAL_SYM_COUNT = $(shell readelf -s --wide $(BPF_IN) | \ 141 awk '/GLOBAL/ && /DEFAULT/ && !/UND/ {s++} END{print s}') 142VERSIONED_SYM_COUNT = $(shell readelf -s --wide $(OUTPUT)libbpf.so | \ 143 grep -Eo '[^ ]+@LIBBPF_' | cut -d@ -f1 | sort -u | wc -l) 144 |
143CMD_TARGETS = $(LIB_TARGET) | 145CMD_TARGETS = $(LIB_TARGET) $(PC_FILE) |
144 145CXX_TEST_TARGET = $(OUTPUT)test_libbpf 146 147ifeq ($(feature-cxx), 1) 148 CMD_TARGETS += $(CXX_TEST_TARGET) 149endif 150 151TARGETS = $(CMD_TARGETS) --- 20 unchanged lines hidden (view full) --- 172 (diff -B ../../include/uapi/linux/if_xdp.h ../../../include/uapi/linux/if_xdp.h >/dev/null) || \ 173 echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true 174 $(Q)$(MAKE) $(build)=libbpf 175 176$(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION) 177 178$(OUTPUT)libbpf.so.$(LIBBPF_VERSION): $(BPF_IN) 179 $(QUIET_LINK)$(CC) --shared -Wl,-soname,libbpf.so.$(VERSION) \ | 146 147CXX_TEST_TARGET = $(OUTPUT)test_libbpf 148 149ifeq ($(feature-cxx), 1) 150 CMD_TARGETS += $(CXX_TEST_TARGET) 151endif 152 153TARGETS = $(CMD_TARGETS) --- 20 unchanged lines hidden (view full) --- 174 (diff -B ../../include/uapi/linux/if_xdp.h ../../../include/uapi/linux/if_xdp.h >/dev/null) || \ 175 echo "Warning: Kernel ABI header at 'tools/include/uapi/linux/if_xdp.h' differs from latest version at 'include/uapi/linux/if_xdp.h'" >&2 )) || true 176 $(Q)$(MAKE) $(build)=libbpf 177 178$(OUTPUT)libbpf.so: $(OUTPUT)libbpf.so.$(LIBBPF_VERSION) 179 180$(OUTPUT)libbpf.so.$(LIBBPF_VERSION): $(BPF_IN) 181 $(QUIET_LINK)$(CC) --shared -Wl,-soname,libbpf.so.$(VERSION) \ |
180 -Wl,--version-script=$(VERSION_SCRIPT) $^ -lelf -o $@ | 182 -Wl,--version-script=$(VERSION_SCRIPT) $^ -o $@ |
181 @ln -sf $(@F) $(OUTPUT)libbpf.so 182 @ln -sf $(@F) $(OUTPUT)libbpf.so.$(VERSION) 183 184$(OUTPUT)libbpf.a: $(BPF_IN) 185 $(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^ 186 187$(OUTPUT)test_libbpf: test_libbpf.cpp $(OUTPUT)libbpf.a 188 $(QUIET_LINK)$(CXX) $(INCLUDES) $^ -lelf -o $@ 189 | 183 @ln -sf $(@F) $(OUTPUT)libbpf.so 184 @ln -sf $(@F) $(OUTPUT)libbpf.so.$(VERSION) 185 186$(OUTPUT)libbpf.a: $(BPF_IN) 187 $(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^ 188 189$(OUTPUT)test_libbpf: test_libbpf.cpp $(OUTPUT)libbpf.a 190 $(QUIET_LINK)$(CXX) $(INCLUDES) $^ -lelf -o $@ 191 |
192$(OUTPUT)libbpf.pc: 193 $(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \ 194 -e "s|@LIBDIR@|$(libdir_SQ)|" \ 195 -e "s|@VERSION@|$(LIBBPF_VERSION)|" \ 196 < libbpf.pc.template > $@ 197 |
|
190check: check_abi 191 192check_abi: $(OUTPUT)libbpf.so 193 @if [ "$(GLOBAL_SYM_COUNT)" != "$(VERSIONED_SYM_COUNT)" ]; then \ 194 echo "Warning: Num of global symbols in $(BPF_IN)" \ 195 "($(GLOBAL_SYM_COUNT)) does NOT match with num of" \ 196 "versioned symbols in $^ ($(VERSIONED_SYM_COUNT))." \ 197 "Please make sure all LIBBPF_API symbols are" \ --- 17 unchanged lines hidden (view full) --- 215install_lib: all_cmd 216 $(call QUIET_INSTALL, $(LIB_TARGET)) \ 217 $(call do_install_mkdir,$(libdir_SQ)); \ 218 cp -fpR $(LIB_FILE) $(DESTDIR)$(libdir_SQ) 219 220install_headers: 221 $(call QUIET_INSTALL, headers) \ 222 $(call do_install,bpf.h,$(prefix)/include/bpf,644); \ | 198check: check_abi 199 200check_abi: $(OUTPUT)libbpf.so 201 @if [ "$(GLOBAL_SYM_COUNT)" != "$(VERSIONED_SYM_COUNT)" ]; then \ 202 echo "Warning: Num of global symbols in $(BPF_IN)" \ 203 "($(GLOBAL_SYM_COUNT)) does NOT match with num of" \ 204 "versioned symbols in $^ ($(VERSIONED_SYM_COUNT))." \ 205 "Please make sure all LIBBPF_API symbols are" \ --- 17 unchanged lines hidden (view full) --- 223install_lib: all_cmd 224 $(call QUIET_INSTALL, $(LIB_TARGET)) \ 225 $(call do_install_mkdir,$(libdir_SQ)); \ 226 cp -fpR $(LIB_FILE) $(DESTDIR)$(libdir_SQ) 227 228install_headers: 229 $(call QUIET_INSTALL, headers) \ 230 $(call do_install,bpf.h,$(prefix)/include/bpf,644); \ |
223 $(call do_install,libbpf.h,$(prefix)/include/bpf,644); \ 224 $(call do_install,btf.h,$(prefix)/include/bpf,644); \ 225 $(call do_install,xsk.h,$(prefix)/include/bpf,644); | 231 $(call do_install,libbpf.h,$(prefix)/include/bpf,644); 232 $(call do_install,btf.h,$(prefix)/include/bpf,644); |
226 | 233 |
227install: install_lib | 234install_pkgconfig: $(PC_FILE) 235 $(call QUIET_INSTALL, $(PC_FILE)) \ 236 $(call do_install,$(PC_FILE),$(libdir_SQ)/pkgconfig,644) |
228 | 237 |
238install: install_lib install_pkgconfig 239 |
|
229### Cleaning rules 230 231config-clean: 232 $(call QUIET_CLEAN, config) 233 $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null 234 235clean: 236 $(call QUIET_CLEAN, libbpf) $(RM) $(TARGETS) $(CXX_TEST_TARGET) \ | 240### Cleaning rules 241 242config-clean: 243 $(call QUIET_CLEAN, config) 244 $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null 245 246clean: 247 $(call QUIET_CLEAN, libbpf) $(RM) $(TARGETS) $(CXX_TEST_TARGET) \ |
237 *.o *~ *.a *.so *.so.$(VERSION) .*.d .*.cmd LIBBPF-CFLAGS | 248 *.o *~ *.a *.so *.so.$(VERSION) .*.d .*.cmd *.pc LIBBPF-CFLAGS |
238 $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf 239 240 241 242PHONY += force elfdep bpfdep 243force: 244 245elfdep: 246 @if [ "$(feature-libelf)" != "1" ]; then echo "No libelf found"; exit 1 ; fi 247 248bpfdep: 249 @if [ "$(feature-bpf)" != "1" ]; then echo "BPF API too old"; exit 1 ; fi 250 251# Declare the contents of the .PHONY variable as phony. We keep that 252# information in a variable so we can use it in if_changed and friends. 253.PHONY: $(PHONY) | 249 $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf 250 251 252 253PHONY += force elfdep bpfdep 254force: 255 256elfdep: 257 @if [ "$(feature-libelf)" != "1" ]; then echo "No libelf found"; exit 1 ; fi 258 259bpfdep: 260 @if [ "$(feature-bpf)" != "1" ]; then echo "BPF API too old"; exit 1 ; fi 261 262# Declare the contents of the .PHONY variable as phony. We keep that 263# information in a variable so we can use it in if_changed and friends. 264.PHONY: $(PHONY) |