perf build: Stop using __weak bpf_prog_load() to handle older libbpf versions
[linux-block.git] / tools / build / feature / Makefile
CommitLineData
b2441318 1# SPDX-License-Identifier: GPL-2.0
211a741c
SD
2include ../../scripts/Makefile.include
3
2fedf79b
JO
4FILES= \
5 test-all.bin \
6 test-backtrace.bin \
7 test-bionic.bin \
8 test-dwarf.bin \
9 test-dwarf_getlocations.bin \
11c6cbe7 10 test-eventfd.bin \
2fedf79b 11 test-fortify-source.bin \
8feb8efe 12 test-get_current_dir_name.bin \
2fedf79b
JO
13 test-glibc.bin \
14 test-gtk2.bin \
15 test-gtk2-infobar.bin \
16 test-hello.bin \
17 test-libaudit.bin \
18 test-libbfd.bin \
e71e19a9 19 test-libbfd-buildid.bin \
fb982666 20 test-disassembler-four-args.bin \
531b014e 21 test-reallocarray.bin \
14541b1e
SF
22 test-libbfd-liberty.bin \
23 test-libbfd-liberty-z.bin \
2fedf79b 24 test-cplus-demangle.bin \
74d5f3d0 25 test-libcap.bin \
2fedf79b
JO
26 test-libelf.bin \
27 test-libelf-getphdrnum.bin \
28 test-libelf-gelf_getnote.bin \
29 test-libelf-getshdrstrndx.bin \
c7a14fdc 30 test-libdebuginfod.bin \
2fedf79b
JO
31 test-libnuma.bin \
32 test-numa_num_possible_cpus.bin \
33 test-libperl.bin \
34 test-libpython.bin \
2fedf79b 35 test-libslang.bin \
cbefd24f 36 test-libslang-include-subdir.bin \
56d32d4c 37 test-libtraceevent.bin \
b758a61b 38 test-libtracefs.bin \
2fedf79b
JO
39 test-libcrypto.bin \
40 test-libunwind.bin \
41 test-libunwind-debug-frame.bin \
42 test-libunwind-x86.bin \
43 test-libunwind-x86_64.bin \
44 test-libunwind-arm.bin \
45 test-libunwind-aarch64.bin \
46 test-libunwind-debug-frame-arm.bin \
47 test-libunwind-debug-frame-aarch64.bin \
48 test-pthread-attr-setaffinity-np.bin \
25ab5abf 49 test-pthread-barrier.bin \
2fedf79b
JO
50 test-stackprotector-all.bin \
51 test-timerfd.bin \
52 test-libdw-dwarf-unwind.bin \
53 test-libbabeltrace.bin \
54 test-compile-32.bin \
55 test-compile-x32.bin \
56 test-zlib.bin \
57 test-lzma.bin \
58 test-bpf.bin \
7b65e203 59 test-libbpf.bin \
0ae065a5 60 test-libbpf-btf__load_from_kernel_by_id.bin \
5c83eff3 61 test-libbpf-bpf_prog_load.bin \
2fedf79b
JO
62 test-get_cpuid.bin \
63 test-sdt.bin \
64 test-cxx.bin \
4541a8bb 65 test-gettid.bin \
120010cb 66 test-jvmti.bin \
dd1d0044 67 test-jvmti-cmlr.bin \
86bcdb5a 68 test-sched_getcpu.bin \
aa6292f4 69 test-setns.bin \
36f9dc33
JO
70 test-libopencsd.bin \
71 test-clang.bin \
72 test-llvm.bin \
2a07d814 73 test-llvm-version.bin \
3b1c5d96 74 test-libaio.bin \
14e5728f 75 test-libzstd.bin \
05aca6da 76 test-clang-bpf-co-re.bin \
5ef86146
SE
77 test-file-handle.bin \
78 test-libpfm4.bin
b6aa9979 79
1925459b
JP
80FILES := $(addprefix $(OUTPUT),$(FILES))
81
9961aa66 82PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
8b6eb56a 83
b6aa9979
IM
84all: $(FILES)
85
9961aa66 86__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)
1925459b 87 BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1
b6aa9979 88
9961aa66 89__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS)
87095f7d
WN
90 BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1
91
b6aa9979
IM
92###############################
93
1925459b 94$(OUTPUT)test-all.bin:
432d7f52 95 $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -lslang $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -llzma -lzstd -lcap
baa9c30e 96
1925459b 97$(OUTPUT)test-hello.bin:
b6aa9979
IM
98 $(BUILD)
99
1925459b 100$(OUTPUT)test-pthread-attr-setaffinity-np.bin:
b49f1a4b 101 $(BUILD) -D_GNU_SOURCE -lpthread
459a3df7 102
25ab5abf
ACM
103$(OUTPUT)test-pthread-barrier.bin:
104 $(BUILD) -lpthread
105
1925459b 106$(OUTPUT)test-stackprotector-all.bin:
b49f1a4b 107 $(BUILD) -fstack-protector-all
90ac5422 108
1925459b 109$(OUTPUT)test-fortify-source.bin:
b49f1a4b 110 $(BUILD) -O2 -D_FORTIFY_SOURCE=2
1ea6f99e 111
1925459b 112$(OUTPUT)test-bionic.bin:
78e9d655
IM
113 $(BUILD)
114
74d5f3d0
IL
115$(OUTPUT)test-libcap.bin:
116 $(BUILD) -lcap
117
1925459b 118$(OUTPUT)test-libelf.bin:
8f7f8005
IM
119 $(BUILD) -lelf
120
11c6cbe7
ACM
121$(OUTPUT)test-eventfd.bin:
122 $(BUILD)
123
8feb8efe
ACM
124$(OUTPUT)test-get_current_dir_name.bin:
125 $(BUILD)
126
1925459b 127$(OUTPUT)test-glibc.bin:
e12762cf
IM
128 $(BUILD)
129
120010cb
ACM
130$(OUTPUT)test-sched_getcpu.bin:
131 $(BUILD)
132
86bcdb5a
ACM
133$(OUTPUT)test-setns.bin:
134 $(BUILD)
135
aa6292f4
MP
136$(OUTPUT)test-libopencsd.bin:
137 $(BUILD) # -lopencsd_c_api -lopencsd provided by
138 # $(FEATURE_CHECK_LDFLAGS-libopencsd)
139
7aec51cb
AK
140DWARFLIBS := -ldw
141ifeq ($(findstring -static,${LDFLAGS}),-static)
142DWARFLIBS += -lelf -lebl -lz -llzma -lbz2
143endif
144
1925459b 145$(OUTPUT)test-dwarf.bin:
7aec51cb 146 $(BUILD) $(DWARFLIBS)
8295d4e2 147
bd0419e2
ACM
148$(OUTPUT)test-dwarf_getlocations.bin:
149 $(BUILD) $(DWARFLIBS)
150
1925459b 151$(OUTPUT)test-libelf-getphdrnum.bin:
b7bcef6f
IM
152 $(BUILD) -lelf
153
1c1a3a47
ACM
154$(OUTPUT)test-libelf-gelf_getnote.bin:
155 $(BUILD) -lelf
156
2492c465
ACM
157$(OUTPUT)test-libelf-getshdrstrndx.bin:
158 $(BUILD) -lelf
159
c7a14fdc
FCE
160$(OUTPUT)test-libdebuginfod.bin:
161 $(BUILD) -ldebuginfod
162
1925459b 163$(OUTPUT)test-libnuma.bin:
3ae069cf
IM
164 $(BUILD) -lnuma
165
1925459b 166$(OUTPUT)test-numa_num_possible_cpus.bin:
f8ac8606
ACM
167 $(BUILD) -lnuma
168
1925459b 169$(OUTPUT)test-libunwind.bin:
1448fef4 170 $(BUILD) -lelf
058f952d 171
1925459b 172$(OUTPUT)test-libunwind-debug-frame.bin:
1448fef4 173 $(BUILD) -lelf
b1d96000
HK
174$(OUTPUT)test-libunwind-x86.bin:
175 $(BUILD) -lelf -lunwind-x86
176
177$(OUTPUT)test-libunwind-x86_64.bin:
178 $(BUILD) -lelf -lunwind-x86_64
179
180$(OUTPUT)test-libunwind-arm.bin:
181 $(BUILD) -lelf -lunwind-arm
182
183$(OUTPUT)test-libunwind-aarch64.bin:
184 $(BUILD) -lelf -lunwind-aarch64
185
f9be7eef
HK
186$(OUTPUT)test-libunwind-debug-frame-arm.bin:
187 $(BUILD) -lelf -lunwind-arm
188
189$(OUTPUT)test-libunwind-debug-frame-aarch64.bin:
190 $(BUILD) -lelf -lunwind-aarch64
e310718d 191
1925459b 192$(OUTPUT)test-libaudit.bin:
d795a658
IM
193 $(BUILD) -laudit
194
1925459b 195$(OUTPUT)test-libslang.bin:
1955c8cf 196 $(BUILD) -lslang
b9498b50 197
cbefd24f
ACM
198$(OUTPUT)test-libslang-include-subdir.bin:
199 $(BUILD) -lslang
200
56d32d4c
MP
201$(OUTPUT)test-libtraceevent.bin:
202 $(BUILD) -ltraceevent
203
b758a61b
IR
204$(OUTPUT)test-libtracefs.bin:
205 $(BUILD) -ltracefs
206
8ee46460
SE
207$(OUTPUT)test-libcrypto.bin:
208 $(BUILD) -lcrypto
209
1925459b 210$(OUTPUT)test-gtk2.bin:
93e843f9 211 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -Wno-deprecated-declarations
7ef9e055 212
1925459b 213$(OUTPUT)test-gtk2-infobar.bin:
a8a5cd8b 214 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
c7a79e96 215
7181a671
IM
216grep-libs = $(filter -l%,$(1))
217strip-libs = $(filter-out -l%,$(1))
218
219PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
220PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
221PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
541f695c 222PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
7181a671
IM
223FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
224
41caff45
ACM
225ifeq ($(CC_NO_CLANG), 0)
226 PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
227 PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS))
228 PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))
229 FLAGS_PERL_EMBED += -Wno-compound-token-split-by-macro
230endif
231
1925459b 232$(OUTPUT)test-libperl.bin:
7181a671
IM
233 $(BUILD) $(FLAGS_PERL_EMBED)
234
1925459b 235$(OUTPUT)test-libpython.bin:
7be6b316 236 $(BUILD) $(FLAGS_PYTHON_EMBED)
9734163b 237
1925459b 238$(OUTPUT)test-libbfd.bin:
14541b1e 239 $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
3b7646e4 240
e71e19a9
ACM
241$(OUTPUT)test-libbfd-buildid.bin:
242 $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl
243
fb982666 244$(OUTPUT)test-disassembler-four-args.bin:
39b72ccd 245 $(BUILD) -DPACKAGE='"perf"' -lbfd -lopcodes
fb982666 246
531b014e
JK
247$(OUTPUT)test-reallocarray.bin:
248 $(BUILD)
249
14541b1e 250$(OUTPUT)test-libbfd-liberty.bin:
1925459b 251 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty
1c47661a 252
14541b1e 253$(OUTPUT)test-libbfd-liberty-z.bin:
1925459b 254 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz
1c47661a 255
1925459b 256$(OUTPUT)test-cplus-demangle.bin:
1c47661a
IM
257 $(BUILD) -liberty
258
1925459b 259$(OUTPUT)test-backtrace.bin:
4cc9117a
IM
260 $(BUILD)
261
1925459b 262$(OUTPUT)test-timerfd.bin:
87419c9a
DA
263 $(BUILD)
264
1925459b 265$(OUTPUT)test-libdw-dwarf-unwind.bin:
53d0a573
JO
266 $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind)
267
1925459b 268$(OUTPUT)test-libbabeltrace.bin:
53d0a573 269 $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace)
45757895 270
1925459b
JP
271$(OUTPUT)test-compile-32.bin:
272 $(CC) -m32 -o $@ test-compile.c
e477f3f0 273
1925459b
JP
274$(OUTPUT)test-compile-x32.bin:
275 $(CC) -mx32 -o $@ test-compile.c
e477f3f0 276
1925459b 277$(OUTPUT)test-zlib.bin:
e92ce12e
NK
278 $(BUILD) -lz
279
1925459b 280$(OUTPUT)test-lzma.bin:
6c6f0f61
JO
281 $(BUILD) -llzma
282
1925459b 283$(OUTPUT)test-get_cpuid.bin:
b0063dbf
ACM
284 $(BUILD)
285
1925459b 286$(OUTPUT)test-bpf.bin:
1b76c13e
WN
287 $(BUILD)
288
7b65e203
JO
289$(OUTPUT)test-libbpf.bin:
290 $(BUILD) -lbpf
291
0ae065a5
ACM
292$(OUTPUT)test-libbpf-btf__load_from_kernel_by_id.bin:
293 $(BUILD) -lbpf
294
5c83eff3
JO
295$(OUTPUT)test-libbpf-bpf_prog_load.bin:
296 $(BUILD) -lbpf
297
e26e63be
MH
298$(OUTPUT)test-sdt.bin:
299 $(BUILD)
300
87095f7d
WN
301$(OUTPUT)test-cxx.bin:
302 $(BUILDXX) -std=gnu++11
303
4541a8bb
ACM
304$(OUTPUT)test-gettid.bin:
305 $(BUILD)
306
285932a2
JO
307$(OUTPUT)test-jvmti.bin:
308 $(BUILD)
309
dd1d0044
JO
310$(OUTPUT)test-jvmti-cmlr.bin:
311 $(BUILD)
312
cb40d55b 313$(OUTPUT)test-llvm.bin:
d0d0f0c1 314 $(BUILDXX) -std=gnu++14 \
cb40d55b
WN
315 -I$(shell $(LLVM_CONFIG) --includedir) \
316 -L$(shell $(LLVM_CONFIG) --libdir) \
317 $(shell $(LLVM_CONFIG) --libs Core BPF) \
5fb3d8b7
JO
318 $(shell $(LLVM_CONFIG) --system-libs) \
319 > $(@:.bin=.make.output) 2>&1
cb40d55b 320
a940cad3 321$(OUTPUT)test-llvm-version.bin:
d0d0f0c1 322 $(BUILDXX) -std=gnu++14 \
5fb3d8b7
JO
323 -I$(shell $(LLVM_CONFIG) --includedir) \
324 > $(@:.bin=.make.output) 2>&1
a940cad3 325
c7fb4f62 326$(OUTPUT)test-clang.bin:
d0d0f0c1 327 $(BUILDXX) -std=gnu++14 \
c7fb4f62
WN
328 -I$(shell $(LLVM_CONFIG) --includedir) \
329 -L$(shell $(LLVM_CONFIG) --libdir) \
330 -Wl,--start-group -lclangBasic -lclangDriver \
331 -lclangFrontend -lclangEdit -lclangLex \
332 -lclangAST -Wl,--end-group \
333 $(shell $(LLVM_CONFIG) --libs Core option) \
5fb3d8b7
JO
334 $(shell $(LLVM_CONFIG) --system-libs) \
335 > $(@:.bin=.make.output) 2>&1
c7fb4f62 336
1925459b 337-include $(OUTPUT)*.d
8b6eb56a 338
2a07d814
AB
339$(OUTPUT)test-libaio.bin:
340 $(BUILD) -lrt
341
3b1c5d96
AB
342$(OUTPUT)test-libzstd.bin:
343 $(BUILD) -lzstd
344
05aca6da 345$(OUTPUT)test-clang-bpf-co-re.bin:
14e5728f
SL
346 $(CLANG) -S -g -target bpf -o - $(patsubst %.bin,%.c,$(@F)) | \
347 grep BTF_KIND_VAR
348
49f550ea
NK
349$(OUTPUT)test-file-handle.bin:
350 $(BUILD)
14e5728f 351
5ef86146
SE
352$(OUTPUT)test-libpfm4.bin:
353 $(BUILD) -lpfm
354
b6aa9979
IM
355###############################
356
357clean:
1925459b 358 rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)