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)