433 lines · plain
1# SPDX-License-Identifier: GPL-2.02include ../../scripts/Makefile.include3 4FILES= \5 test-all.bin \6 test-backtrace.bin \7 test-bionic.bin \8 test-dwarf.bin \9 test-dwarf_getlocations.bin \10 test-dwarf_getcfi.bin \11 test-eventfd.bin \12 test-fortify-source.bin \13 test-get_current_dir_name.bin \14 test-glibc.bin \15 test-gtk2.bin \16 test-gtk2-infobar.bin \17 test-hello.bin \18 test-libaudit.bin \19 test-libbfd.bin \20 test-libbfd-buildid.bin \21 test-disassembler-four-args.bin \22 test-disassembler-init-styled.bin \23 test-reallocarray.bin \24 test-libbfd-liberty.bin \25 test-libbfd-liberty-z.bin \26 test-cplus-demangle.bin \27 test-cxa-demangle.bin \28 test-libcap.bin \29 test-libelf.bin \30 test-libelf-getphdrnum.bin \31 test-libelf-gelf_getnote.bin \32 test-libelf-getshdrstrndx.bin \33 test-libdebuginfod.bin \34 test-libnuma.bin \35 test-numa_num_possible_cpus.bin \36 test-libperl.bin \37 test-libpython.bin \38 test-libslang.bin \39 test-libslang-include-subdir.bin \40 test-libtraceevent.bin \41 test-libtracefs.bin \42 test-libcrypto.bin \43 test-libunwind.bin \44 test-libunwind-debug-frame.bin \45 test-libunwind-x86.bin \46 test-libunwind-x86_64.bin \47 test-libunwind-arm.bin \48 test-libunwind-aarch64.bin \49 test-libunwind-debug-frame-arm.bin \50 test-libunwind-debug-frame-aarch64.bin \51 test-pthread-attr-setaffinity-np.bin \52 test-pthread-barrier.bin \53 test-stackprotector-all.bin \54 test-timerfd.bin \55 test-libdw-dwarf-unwind.bin \56 test-libbabeltrace.bin \57 test-libcapstone.bin \58 test-compile-32.bin \59 test-compile-x32.bin \60 test-zlib.bin \61 test-lzma.bin \62 test-bpf.bin \63 test-libbpf.bin \64 test-get_cpuid.bin \65 test-sdt.bin \66 test-cxx.bin \67 test-gettid.bin \68 test-jvmti.bin \69 test-jvmti-cmlr.bin \70 test-scandirat.bin \71 test-sched_getcpu.bin \72 test-setns.bin \73 test-libopencsd.bin \74 test-clang.bin \75 test-llvm.bin \76 test-llvm-perf.bin \77 test-libaio.bin \78 test-libzstd.bin \79 test-clang-bpf-co-re.bin \80 test-file-handle.bin \81 test-libpfm4.bin82 83FILES := $(addprefix $(OUTPUT),$(FILES))84 85# Some distros provide the command $(CROSS_COMPILE)pkg-config for86# searching packges installed with Multiarch. Use it for cross87# compilation if it is existed.88ifneq (, $(shell which $(CROSS_COMPILE)pkg-config))89 PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config90else91 PKG_CONFIG ?= pkg-config92 93 # PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR, alongside PKG_CONFIG_SYSROOT_DIR94 # for modified system root, are required for the cross compilation.95 # If these PKG_CONFIG environment variables are not set, Multiarch library96 # paths are used instead.97 ifdef CROSS_COMPILE98 ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH)$(PKG_CONFIG_SYSROOT_DIR),)99 CROSS_ARCH = $(shell $(CC) -dumpmachine)100 PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/pkgconfig/101 PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/lib/$(CROSS_ARCH)/pkgconfig/102 PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/lib/$(CROSS_ARCH)/pkgconfig/103 PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/104 PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/105 export PKG_CONFIG_LIBDIR106 endif107 endif108endif109 110all: $(FILES)111 112__BUILD = $(CC) $(CFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS)113 BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1114 BUILD_BFD = $(BUILD) -DPACKAGE='"perf"' -lbfd -ldl115 BUILD_ALL = $(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 -lcap116 117__BUILDXX = $(CXX) $(CXXFLAGS) -MD -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS)118 BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1119 120###############################121 122$(OUTPUT)test-all.bin:123 $(BUILD_ALL) || $(BUILD_ALL) -lopcodes -liberty124 125$(OUTPUT)test-hello.bin:126 $(BUILD)127 128$(OUTPUT)test-pthread-attr-setaffinity-np.bin:129 $(BUILD) -D_GNU_SOURCE -lpthread130 131$(OUTPUT)test-pthread-barrier.bin:132 $(BUILD) -lpthread133 134$(OUTPUT)test-stackprotector-all.bin:135 $(BUILD) -fstack-protector-all136 137$(OUTPUT)test-fortify-source.bin:138 $(BUILD) -O2 -D_FORTIFY_SOURCE=2139 140$(OUTPUT)test-bionic.bin:141 $(BUILD)142 143$(OUTPUT)test-libcap.bin:144 $(BUILD) -lcap145 146$(OUTPUT)test-libelf.bin:147 $(BUILD) -lelf148 149$(OUTPUT)test-eventfd.bin:150 $(BUILD)151 152$(OUTPUT)test-get_current_dir_name.bin:153 $(BUILD)154 155$(OUTPUT)test-glibc.bin:156 $(BUILD)157 158$(OUTPUT)test-scandirat.bin:159 $(BUILD)160 161$(OUTPUT)test-sched_getcpu.bin:162 $(BUILD)163 164$(OUTPUT)test-setns.bin:165 $(BUILD)166 167$(OUTPUT)test-libopencsd.bin:168 $(BUILD) # -lopencsd_c_api -lopencsd provided by169 # $(FEATURE_CHECK_LDFLAGS-libopencsd)170 171DWARFLIBS := -ldw172ifeq ($(findstring -static,${LDFLAGS}),-static)173 DWARFLIBS += -lelf -lz -llzma -lbz2 -lzstd174 175 LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw).0.0176 LIBDW_VERSION_1 := $(word 1, $(subst ., ,$(LIBDW_VERSION)))177 LIBDW_VERSION_2 := $(word 2, $(subst ., ,$(LIBDW_VERSION)))178 179 # Elfutils merged libebl.a into libdw.a starting from version 0.177,180 # Link libebl.a only if libdw is older than this version.181 ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)182 DWARFLIBS += -lebl183 endif184 185 # Must put -ldl after -lebl for dependency186 DWARFLIBS += -ldl187endif188 189$(OUTPUT)test-dwarf.bin:190 $(BUILD) $(DWARFLIBS)191 192$(OUTPUT)test-dwarf_getlocations.bin:193 $(BUILD) $(DWARFLIBS)194 195$(OUTPUT)test-dwarf_getcfi.bin:196 $(BUILD) $(DWARFLIBS)197 198$(OUTPUT)test-libelf-getphdrnum.bin:199 $(BUILD) -lelf200 201$(OUTPUT)test-libelf-gelf_getnote.bin:202 $(BUILD) -lelf203 204$(OUTPUT)test-libelf-getshdrstrndx.bin:205 $(BUILD) -lelf206 207$(OUTPUT)test-libdebuginfod.bin:208 $(BUILD) -ldebuginfod209 210$(OUTPUT)test-libnuma.bin:211 $(BUILD) -lnuma212 213$(OUTPUT)test-numa_num_possible_cpus.bin:214 $(BUILD) -lnuma215 216$(OUTPUT)test-libunwind.bin:217 $(BUILD) -lelf -llzma218 219$(OUTPUT)test-libunwind-debug-frame.bin:220 $(BUILD) -lelf -llzma221$(OUTPUT)test-libunwind-x86.bin:222 $(BUILD) -lelf -llzma -lunwind-x86223 224$(OUTPUT)test-libunwind-x86_64.bin:225 $(BUILD) -lelf -llzma -lunwind-x86_64226 227$(OUTPUT)test-libunwind-arm.bin:228 $(BUILD) -lelf -llzma -lunwind-arm229 230$(OUTPUT)test-libunwind-aarch64.bin:231 $(BUILD) -lelf -llzma -lunwind-aarch64232 233$(OUTPUT)test-libunwind-debug-frame-arm.bin:234 $(BUILD) -lelf -llzma -lunwind-arm235 236$(OUTPUT)test-libunwind-debug-frame-aarch64.bin:237 $(BUILD) -lelf -llzma -lunwind-aarch64238 239$(OUTPUT)test-libaudit.bin:240 $(BUILD) -laudit241 242$(OUTPUT)test-libslang.bin:243 $(BUILD) -lslang244 245$(OUTPUT)test-libslang-include-subdir.bin:246 $(BUILD) -lslang247 248$(OUTPUT)test-libtraceevent.bin:249 $(BUILD) -ltraceevent250 251$(OUTPUT)test-libtracefs.bin:252 $(BUILD) $(shell $(PKG_CONFIG) --cflags libtracefs 2>/dev/null) -ltracefs253 254$(OUTPUT)test-libcrypto.bin:255 $(BUILD) -lcrypto256 257$(OUTPUT)test-gtk2.bin:258 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) -Wno-deprecated-declarations259 260$(OUTPUT)test-gtk2-infobar.bin:261 $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)262 263grep-libs = $(filter -l%,$(1))264strip-libs = $(filter-out -l%,$(1))265 266PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)267PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))268PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))269PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)270FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)271 272ifeq ($(CC_NO_CLANG), 0)273 PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))274 PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS))275 PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))276 FLAGS_PERL_EMBED += -Wno-compound-token-split-by-macro277endif278 279$(OUTPUT)test-libperl.bin:280 $(BUILD) $(FLAGS_PERL_EMBED)281 282$(OUTPUT)test-libpython.bin:283 $(BUILD) $(FLAGS_PYTHON_EMBED)284 285$(OUTPUT)test-libbfd.bin:286 $(BUILD_BFD)287 288$(OUTPUT)test-libbfd-buildid.bin:289 $(BUILD_BFD) || $(BUILD_BFD) -liberty || $(BUILD_BFD) -liberty -lz290 291$(OUTPUT)test-disassembler-four-args.bin:292 $(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \293 $(BUILD_BFD) -lopcodes -liberty -lz294 295$(OUTPUT)test-disassembler-init-styled.bin:296 $(BUILD_BFD) -lopcodes || $(BUILD_BFD) -lopcodes -liberty || \297 $(BUILD_BFD) -lopcodes -liberty -lz298 299$(OUTPUT)test-reallocarray.bin:300 $(BUILD)301 302$(OUTPUT)test-libbfd-liberty.bin:303 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty304 305$(OUTPUT)test-libbfd-liberty-z.bin:306 $(CC) $(CFLAGS) -Wall -Werror -o $@ test-libbfd.c -DPACKAGE='"perf"' $(LDFLAGS) -lbfd -ldl -liberty -lz307 308$(OUTPUT)test-cplus-demangle.bin:309 $(BUILD) -liberty310 311$(OUTPUT)test-cxa-demangle.bin:312 $(BUILDXX)313 314$(OUTPUT)test-backtrace.bin:315 $(BUILD)316 317$(OUTPUT)test-timerfd.bin:318 $(BUILD)319 320$(OUTPUT)test-libdw-dwarf-unwind.bin:321 $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind)322 323$(OUTPUT)test-libbabeltrace.bin:324 $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace)325 326$(OUTPUT)test-libcapstone.bin:327 $(BUILD) # -lcapstone provided by $(FEATURE_CHECK_LDFLAGS-libcapstone)328 329$(OUTPUT)test-compile-32.bin:330 $(CC) -m32 -o $@ test-compile.c331 332$(OUTPUT)test-compile-x32.bin:333 $(CC) -mx32 -o $@ test-compile.c334 335$(OUTPUT)test-zlib.bin:336 $(BUILD) -lz337 338$(OUTPUT)test-lzma.bin:339 $(BUILD) -llzma340 341$(OUTPUT)test-get_cpuid.bin:342 $(BUILD)343 344$(OUTPUT)test-bpf.bin:345 $(BUILD)346 347$(OUTPUT)test-libbpf.bin:348 $(BUILD) -lbpf349 350$(OUTPUT)test-libbpf-btf__load_from_kernel_by_id.bin:351 $(BUILD) -lbpf352 353$(OUTPUT)test-libbpf-bpf_prog_load.bin:354 $(BUILD) -lbpf355 356$(OUTPUT)test-libbpf-bpf_map_create.bin:357 $(BUILD) -lbpf358 359$(OUTPUT)test-libbpf-bpf_object__next_program.bin:360 $(BUILD) -lbpf361 362$(OUTPUT)test-libbpf-bpf_object__next_map.bin:363 $(BUILD) -lbpf364 365$(OUTPUT)test-libbpf-bpf_program__set_insns.bin:366 $(BUILD) -lbpf367 368$(OUTPUT)test-libbpf-btf__raw_data.bin:369 $(BUILD) -lbpf370 371$(OUTPUT)test-sdt.bin:372 $(BUILD)373 374$(OUTPUT)test-cxx.bin:375 $(BUILDXX) -std=gnu++11376 377$(OUTPUT)test-gettid.bin:378 $(BUILD)379 380$(OUTPUT)test-jvmti.bin:381 $(BUILD)382 383$(OUTPUT)test-jvmti-cmlr.bin:384 $(BUILD)385 386$(OUTPUT)test-llvm.bin:387 $(BUILDXX) -std=gnu++17 \388 -I$(shell $(LLVM_CONFIG) --includedir) \389 -L$(shell $(LLVM_CONFIG) --libdir) \390 $(shell $(LLVM_CONFIG) --libs Core BPF) \391 $(shell $(LLVM_CONFIG) --system-libs) \392 > $(@:.bin=.make.output) 2>&1393 394$(OUTPUT)test-llvm-perf.bin:395 $(BUILDXX) -std=gnu++17 \396 -I$(shell $(LLVM_CONFIG) --includedir) \397 -L$(shell $(LLVM_CONFIG) --libdir) \398 $(shell $(LLVM_CONFIG) --libs Core BPF) \399 $(shell $(LLVM_CONFIG) --system-libs) \400 > $(@:.bin=.make.output) 2>&1401 402$(OUTPUT)test-clang.bin:403 $(BUILDXX) -std=gnu++17 \404 -I$(shell $(LLVM_CONFIG) --includedir) \405 -L$(shell $(LLVM_CONFIG) --libdir) \406 -Wl,--start-group -lclang-cpp -Wl,--end-group \407 $(shell $(LLVM_CONFIG) --libs Core option) \408 $(shell $(LLVM_CONFIG) --system-libs) \409 > $(@:.bin=.make.output) 2>&1410 411-include $(OUTPUT)*.d412 413$(OUTPUT)test-libaio.bin:414 $(BUILD) -lrt415 416$(OUTPUT)test-libzstd.bin:417 $(BUILD) -lzstd418 419$(OUTPUT)test-clang-bpf-co-re.bin:420 $(CLANG) -S -g --target=bpf -o - $(patsubst %.bin,%.c,$(@F)) | \421 grep BTF_KIND_VAR422 423$(OUTPUT)test-file-handle.bin:424 $(BUILD)425 426$(OUTPUT)test-libpfm4.bin:427 $(BUILD) -lpfm428 429###############################430 431clean:432 rm -f $(FILES) $(OUTPUT)*.d $(FILES:.bin=.make.output)433