^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ifeq ($(src-perf),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) src-perf := $(srctree)/tools/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ifeq ($(obj-perf),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) obj-perf := $(OUTPUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ifneq ($(obj-perf),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) obj-perf := $(abspath $(obj-perf))/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) $(shell printf "" > $(OUTPUT).config-detected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) detected = $(shell echo "$(1)=y" >> $(OUTPUT).config-detected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) detected_var = $(shell echo "$(1)=$($(1))" >> $(OUTPUT).config-detected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) CFLAGS := $(EXTRA_CFLAGS) $(filter-out -Wnested-externs,$(EXTRA_WARNINGS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) include $(srctree)/tools/scripts/Makefile.arch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) $(call detected_var,SRCARCH)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) NO_PERF_REGS := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ifneq ($(NO_SYSCALL_TABLE),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) NO_SYSCALL_TABLE := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) ifeq ($(SRCARCH),x86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) ifeq (${IS_64_BIT}, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) NO_SYSCALL_TABLE := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) ifeq ($(SRCARCH),$(filter $(SRCARCH),powerpc arm64 s390))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) NO_SYSCALL_TABLE := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ifneq ($(NO_SYSCALL_TABLE),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) CFLAGS += -DHAVE_SYSCALL_TABLE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) # Additional ARCH settings for ppc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) ifeq ($(SRCARCH),powerpc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) CFLAGS += -I$(OUTPUT)arch/powerpc/include/generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) LIBUNWIND_LIBS := -lunwind -lunwind-ppc64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) # Additional ARCH settings for x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) ifeq ($(SRCARCH),x86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) $(call detected,CONFIG_X86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) ifeq (${IS_64_BIT}, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT -I$(OUTPUT)arch/x86/include/generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) LIBUNWIND_LIBS = -lunwind-x86_64 -lunwind -llzma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) $(call detected,CONFIG_X86_64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) LIBUNWIND_LIBS = -lunwind-x86 -llzma -lunwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) ifeq ($(SRCARCH),arm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) LIBUNWIND_LIBS = -lunwind -lunwind-arm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) ifeq ($(SRCARCH),arm64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) CFLAGS += -I$(OUTPUT)arch/arm64/include/generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) ifeq ($(SRCARCH),riscv)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) ifeq ($(SRCARCH),csky)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ifeq ($(ARCH),s390)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) NO_PERF_REGS := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) CFLAGS += -fPIC -I$(OUTPUT)arch/s390/include/generated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) ifeq ($(NO_PERF_REGS),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) $(call detected,CONFIG_PERF_REGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) # So far there's only x86 and arm libdw unwind support merged in perf.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) # Disable it on all other architectures in case libdw unwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) # support is detected in system. Add supported architectures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) # to the check.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc s390 csky riscv))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ifeq ($(LIBUNWIND_LIBS),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) NO_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) # For linking with debug library, run like:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) # make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) libunwind_arch_set_flags = $(eval $(libunwind_arch_set_flags_code))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) define libunwind_arch_set_flags_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) FEATURE_CHECK_CFLAGS-libunwind-$(1) = -I$(LIBUNWIND_DIR)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) FEATURE_CHECK_LDFLAGS-libunwind-$(1) = -L$(LIBUNWIND_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) ifdef LIBUNWIND_DIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) LIBUNWIND_CFLAGS = -I$(LIBUNWIND_DIR)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) LIBUNWIND_LDFLAGS = -L$(LIBUNWIND_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) LIBUNWIND_ARCHS = x86 x86_64 arm aarch64 debug-frame-arm debug-frame-aarch64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) $(foreach libunwind_arch,$(LIBUNWIND_ARCHS),$(call libunwind_arch_set_flags,$(libunwind_arch)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) # Set per-feature check compilation flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $(LIBUNWIND_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) FEATURE_CHECK_LDFLAGS-libunwind-arm += -lunwind -lunwind-arm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) FEATURE_CHECK_LDFLAGS-libunwind-aarch64 += -lunwind -lunwind-aarch64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) FEATURE_CHECK_LDFLAGS-libunwind-x86 += -lunwind -llzma -lunwind-x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) FEATURE_CHECK_LDFLAGS-libunwind-x86_64 += -lunwind -llzma -lunwind-x86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) FEATURE_CHECK_LDFLAGS-libcrypto = -lcrypto
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) ifdef CSINCLUDES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) LIBOPENCSD_CFLAGS := -I$(CSINCLUDES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) OPENCSDLIBS := -lopencsd_c_api -lopencsd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ifdef CSLIBS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) LIBOPENCSD_LDFLAGS := -L$(CSLIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) FEATURE_CHECK_CFLAGS-libopencsd := $(LIBOPENCSD_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) FEATURE_CHECK_LDFLAGS-libopencsd := $(LIBOPENCSD_LDFLAGS) $(OPENCSDLIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) ifeq ($(NO_PERF_REGS),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) CFLAGS += -DHAVE_PERF_REGS_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) # for linking with debug library, run like:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) # make DEBUG=1 LIBDW_DIR=/opt/libdw/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) ifdef LIBDW_DIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) LIBDW_CFLAGS := -I$(LIBDW_DIR)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) DWARFLIBS := -ldw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) ifeq ($(findstring -static,${LDFLAGS}),-static)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) DWARFLIBS += -lelf -lebl -ldl -lz -llzma -lbz2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) $(DWARFLIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) # for linking with debug library, run like:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) # make DEBUG=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) ifdef LIBBABELTRACE_DIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) LIBBABELTRACE_CFLAGS := -I$(LIBBABELTRACE_DIR)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) LIBBABELTRACE_LDFLAGS := -L$(LIBBABELTRACE_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) FEATURE_CHECK_CFLAGS-libbabeltrace := $(LIBBABELTRACE_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) FEATURE_CHECK_LDFLAGS-libbabeltrace := $(LIBBABELTRACE_LDFLAGS) -lbabeltrace-ctf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) ifdef LIBZSTD_DIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) LIBZSTD_CFLAGS := -I$(LIBZSTD_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) LIBZSTD_LDFLAGS := -L$(LIBZSTD_DIR)/lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) FEATURE_CHECK_CFLAGS-libzstd := $(LIBZSTD_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) FEATURE_CHECK_LDFLAGS-libzstd := $(LIBZSTD_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) FEATURE_CHECK_CFLAGS-bpf = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi -I$(srctree)/tools/include/uapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) # include ARCH specific config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) -include $(src-perf)/arch/$(SRCARCH)/Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) CFLAGS += -DHAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) include $(srctree)/tools/scripts/utilities.mak
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ifeq ($(call get-executable,$(FLEX)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) dummy := $(error Error: $(FLEX) is missing on this system, please install it)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) ifeq ($(call get-executable,$(BISON)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) dummy := $(error Error: $(BISON) is missing on this system, please install it)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) # Treat warnings as errors unless directed not to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) ifneq ($(WERROR),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) CORE_CFLAGS += -Werror
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) CXXFLAGS += -Werror
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ifndef DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) DEBUG := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) ifeq ($(DEBUG),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) ifeq ($(CC_NO_CLANG), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) CORE_CFLAGS += -O3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) CORE_CFLAGS += -O6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) ifdef PARSER_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) PARSER_DEBUG_BISON := -t
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) PARSER_DEBUG_FLEX := -d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) CFLAGS += -DPARSER_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) $(call detected_var,PARSER_DEBUG_BISON)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) $(call detected_var,PARSER_DEBUG_FLEX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) # Try different combinations to accommodate systems that only have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) # python[2][-config] in weird combinations but always preferring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) # python2 and python2-config as per pep-0394. If python2 or python
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) # aren't found, then python3 is used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) PYTHON_AUTO := python
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) PYTHON_AUTO := $(if $(call get-executable,python3),python3,$(PYTHON_AUTO))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) PYTHON_AUTO := $(if $(call get-executable,python),python,$(PYTHON_AUTO))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) PYTHON_AUTO := $(if $(call get-executable,python2),python2,$(PYTHON_AUTO))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON_AUTO))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) PYTHON_AUTO_CONFIG := \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) $(if $(call get-executable,$(PYTHON)-config),$(PYTHON)-config,python-config)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) override PYTHON_CONFIG := \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON_AUTO_CONFIG))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) grep-libs = $(filter -l%,$(1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) strip-libs = $(filter-out -l%,$(1))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) # Python 3.8 changed the output of `python-config --ldflags` to not include the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) # '-lpythonX.Y' flag unless '--embed' is also passed. The feature check for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) # libpython fails if that flag is not included in LDFLAGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) ifeq ($(shell $(PYTHON_CONFIG_SQ) --ldflags --embed 2>&1 1>/dev/null; echo $$?), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) PYTHON_CONFIG_LDFLAGS := --ldflags --embed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) PYTHON_CONFIG_LDFLAGS := --ldflags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) ifdef PYTHON_CONFIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) $(PYTHON_CONFIG_LDFLAGS) 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --includes 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) FEATURE_CHECK_LDFLAGS-libaio = -lrt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) FEATURE_CHECK_LDFLAGS-disassembler-four-args = -lbfd -lopcodes -ldl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) CORE_CFLAGS += -fno-omit-frame-pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) CORE_CFLAGS += -ggdb3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) CORE_CFLAGS += -funwind-tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) CORE_CFLAGS += -Wall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) CORE_CFLAGS += -Wextra
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) CORE_CFLAGS += -std=gnu99
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) CXXFLAGS += -std=gnu++11 -fno-exceptions -fno-rtti
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) CXXFLAGS += -Wall
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) CXXFLAGS += -fno-omit-frame-pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) CXXFLAGS += -ggdb3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) CXXFLAGS += -funwind-tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) CXXFLAGS += -Wno-strict-aliasing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) # Enforce a non-executable stack, as we may regress (again) in the future by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) # adding assembler files missing the .GNU-stack linker note.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) LDFLAGS += -Wl,-z,noexecstack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) EXTLIBS = -lpthread -lrt -lm -ldl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) ifneq ($(TCMALLOC),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) EXTLIBS += -ltcmalloc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) ifeq ($(FEATURES_DUMP),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) include $(srctree)/tools/build/Makefile.feature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) include $(FEATURES_DUMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) ifeq ($(feature-stackprotector-all), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) CORE_CFLAGS += -fstack-protector-all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) ifeq ($(DEBUG),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) ifeq ($(feature-fortify-source), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) CORE_CFLAGS += -D_FORTIFY_SOURCE=2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) INC_FLAGS += -I$(srctree)/tools/lib/perf/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) INC_FLAGS += -I$(src-perf)/util/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) INC_FLAGS += -I$(src-perf)/arch/$(SRCARCH)/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) INC_FLAGS += -I$(srctree)/tools/include/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) INC_FLAGS += -I$(srctree)/tools/include/uapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/include/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) # $(obj-perf) for generated common-cmds.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) # $(obj-perf)/util for generated bison/flex headers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) ifneq ($(OUTPUT),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) INC_FLAGS += -I$(obj-perf)/util
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) INC_FLAGS += -I$(obj-perf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) INC_FLAGS += -I$(src-perf)/util
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) INC_FLAGS += -I$(src-perf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) INC_FLAGS += -I$(srctree)/tools/lib/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) CORE_CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) CFLAGS += $(CORE_CFLAGS) $(INC_FLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) CXXFLAGS += $(INC_FLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) LIBPERF_CFLAGS := $(CORE_CFLAGS) $(EXTRA_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) ifeq ($(feature-sync-compare-and-swap), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) ifeq ($(feature-pthread-attr-setaffinity-np), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) ifeq ($(feature-pthread-barrier), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) CFLAGS += -DHAVE_PTHREAD_BARRIER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) ifndef NO_BIONIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) $(call feature_check,bionic)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) ifeq ($(feature-bionic), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) BIONIC := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) CFLAGS += -DLACKS_SIGQUEUE_PROTOTYPE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) CFLAGS += -DLACKS_OPEN_MEMSTREAM_PROTOTYPE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) EXTLIBS := $(filter-out -lrt,$(EXTLIBS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) EXTLIBS := $(filter-out -lpthread,$(EXTLIBS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) ifeq ($(feature-eventfd), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) CFLAGS += -DHAVE_EVENTFD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) ifeq ($(feature-get_current_dir_name), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) CFLAGS += -DHAVE_GET_CURRENT_DIR_NAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) ifeq ($(feature-gettid), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) CFLAGS += -DHAVE_GETTID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) ifeq ($(feature-file-handle), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) CFLAGS += -DHAVE_FILE_HANDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) ifdef NO_LIBELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) NO_DWARF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) NO_DEMANGLE := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) NO_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) NO_LIBBPF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) NO_JVMTI := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) ifeq ($(feature-libelf), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) ifeq ($(feature-glibc), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) LIBC_SUPPORT := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) ifeq ($(BIONIC),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) LIBC_SUPPORT := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) ifeq ($(LIBC_SUPPORT),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) msg := $(warning No libelf found. Disables 'probe' tool, jvmti and BPF support in 'perf record'. Please install libelf-dev, libelf-devel or elfutils-libelf-devel);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) NO_LIBELF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) NO_DWARF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) NO_DEMANGLE := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) NO_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) NO_LIBBPF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) NO_JVMTI := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) ifneq ($(filter s% -fsanitize=address%,$(EXTRA_CFLAGS),),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) ifneq ($(shell ldconfig -p | grep libasan >/dev/null 2>&1; echo $$?), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) msg := $(error No libasan found, please install libasan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) ifneq ($(filter s% -fsanitize=undefined%,$(EXTRA_CFLAGS),),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) ifneq ($(shell ldconfig -p | grep libubsan >/dev/null 2>&1; echo $$?), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) msg := $(error No libubsan found, please install libubsan);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) ifneq ($(filter s% -static%,$(LDFLAGS),),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) msg := $(error No static glibc found, please install glibc-static);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) ifndef NO_LIBDW_DWARF_UNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) ifneq ($(feature-libdw-dwarf-unwind),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) msg := $(warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) ifneq ($(feature-dwarf), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) ifndef NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) NO_DWARF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) ifneq ($(feature-dwarf_getlocations), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) msg := $(warning Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) CFLAGS += -DHAVE_DWARF_GETLOCATIONS_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) endif # dwarf_getlocations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) endif # Dwarf support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) endif # libelf support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) endif # NO_LIBELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) ifeq ($(feature-glibc), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) CFLAGS += -DHAVE_GLIBC_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) ifeq ($(feature-libaio), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) ifndef NO_AIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) CFLAGS += -DHAVE_AIO_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) ifdef NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) ifeq ($(feature-sched_getcpu), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) CFLAGS += -DHAVE_SCHED_GETCPU_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) ifeq ($(feature-setns), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) CFLAGS += -DHAVE_SETNS_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) $(call detected,CONFIG_SETNS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) ifdef CORESIGHT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) $(call feature_check,libopencsd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) ifeq ($(feature-libopencsd), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) CFLAGS += -DHAVE_CSTRACE_SUPPORT $(LIBOPENCSD_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) ifeq ($(feature-reallocarray), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) CFLAGS += -DCOMPAT_NEED_REALLOCARRAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) LDFLAGS += $(LIBOPENCSD_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) EXTLIBS += $(OPENCSDLIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) $(call detected,CONFIG_LIBOPENCSD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) ifdef CSTRACE_RAW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) CFLAGS += -DCS_DEBUG_RAW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) ifeq (${CSTRACE_RAW}, packed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) CFLAGS += -DCS_RAW_PACKED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) ifndef NO_LIBELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) CFLAGS += -DHAVE_LIBELF_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) EXTLIBS += -lelf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) $(call detected,CONFIG_LIBELF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) ifeq ($(feature-libelf-getphdrnum), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) ifeq ($(feature-libelf-gelf_getnote), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) CFLAGS += -DHAVE_GELF_GETNOTE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) msg := $(warning gelf_getnote() not found on libelf, SDT support disabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) ifeq ($(feature-libelf-getshdrstrndx), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) CFLAGS += -DHAVE_ELF_GETSHDRSTRNDX_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) ifndef NO_LIBDEBUGINFOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) $(call feature_check,libdebuginfod)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) ifeq ($(feature-libdebuginfod), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) CFLAGS += -DHAVE_DEBUGINFOD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) EXTLIBS += -ldebuginfod
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) ifndef NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) ifeq ($(origin PERF_HAVE_DWARF_REGS), undefined)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) msg := $(warning DWARF register mappings have not been defined for architecture $(SRCARCH), DWARF support disabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) NO_DWARF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) CFLAGS += -DHAVE_DWARF_SUPPORT $(LIBDW_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) LDFLAGS += $(LIBDW_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) EXTLIBS += ${DWARFLIBS}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) $(call detected,CONFIG_DWARF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) endif # PERF_HAVE_DWARF_REGS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) endif # NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) ifndef NO_LIBBPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) ifeq ($(feature-bpf), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) CFLAGS += -DHAVE_LIBBPF_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) $(call detected,CONFIG_LIBBPF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) # detecting libbpf without LIBBPF_DYNAMIC, so make VF=1 shows libbpf detection status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) $(call feature_check,libbpf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) ifdef LIBBPF_DYNAMIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) ifeq ($(feature-libbpf), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) EXTLIBS += -lbpf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) $(call detected,CONFIG_LIBBPF_DYNAMIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) dummy := $(error Error: No libbpf devel library found, please install libbpf-devel);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) ifndef NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) CFLAGS += -DHAVE_BPF_PROLOGUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) $(call detected,CONFIG_BPF_PROLOGUE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) msg := $(warning BPF prologue is not supported by architecture $(SRCARCH), missing regs_query_register_offset());
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) msg := $(warning DWARF support is off, BPF prologue is disabled);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) endif # NO_LIBBPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) endif # NO_LIBELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) ifndef NO_SDT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) ifneq ($(feature-sdt), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) msg := $(warning No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) NO_SDT := 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) CFLAGS += -DHAVE_SDT_EVENT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) $(call detected,CONFIG_SDT_EVENT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) ifdef PERF_HAVE_JITDUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) ifndef NO_LIBELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) $(call detected,CONFIG_JITDUMP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) CFLAGS += -DHAVE_JITDUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) ifeq ($(SRCARCH),powerpc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) ifndef NO_DWARF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) ifndef NO_LIBUNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) have_libunwind :=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) $(call feature_check,libunwind-x86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) ifeq ($(feature-libunwind-x86), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) $(call detected,CONFIG_LIBUNWIND_X86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) CFLAGS += -DHAVE_LIBUNWIND_X86_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) LDFLAGS += -lunwind-x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) EXTLIBS_LIBUNWIND += -lunwind-x86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) have_libunwind = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) $(call feature_check,libunwind-aarch64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) ifeq ($(feature-libunwind-aarch64), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) $(call detected,CONFIG_LIBUNWIND_AARCH64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) CFLAGS += -DHAVE_LIBUNWIND_AARCH64_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) LDFLAGS += -lunwind-aarch64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) EXTLIBS_LIBUNWIND += -lunwind-aarch64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) have_libunwind = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) $(call feature_check,libunwind-debug-frame-aarch64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) ifneq ($(feature-libunwind-debug-frame-aarch64), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) msg := $(warning No debug_frame support found in libunwind-aarch64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME_AARCH64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) ifneq ($(feature-libunwind), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) msg := $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) NO_LOCAL_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) have_libunwind := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) $(call detected,CONFIG_LOCAL_LIBUNWIND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) ifneq ($(have_libunwind), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) NO_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) NO_LOCAL_LIBUNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) ifndef NO_LIBBPF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) ifneq ($(feature-bpf), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) msg := $(warning BPF API too old. Please install recent kernel headers. BPF support in 'perf record' is disabled.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) NO_LIBBPF := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) dwarf-post-unwind := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) dwarf-post-unwind-text := BUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) # setup DWARF post unwinder
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) ifdef NO_LIBUNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) ifdef NO_LIBDW_DWARF_UNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) msg := $(warning Disabling post unwind, no support found.);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) dwarf-post-unwind := 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) dwarf-post-unwind-text := libdw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) $(call detected,CONFIG_LIBDW_DWARF_UNWIND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) dwarf-post-unwind-text := libunwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) $(call detected,CONFIG_LIBUNWIND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) # Enable libunwind support by default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) ifndef NO_LIBDW_DWARF_UNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) NO_LIBDW_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) ifeq ($(dwarf-post-unwind),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646) $(call detected,CONFIG_DWARF_UNWIND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) NO_DWARF_UNWIND := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) ifndef NO_LOCAL_LIBUNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) ifeq ($(SRCARCH),$(filter $(SRCARCH),arm arm64))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) $(call feature_check,libunwind-debug-frame)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) ifneq ($(feature-libunwind-debug-frame), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) msg := $(warning No debug_frame support found in libunwind);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) # non-ARM has no dwarf_find_debug_frame() function:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) EXTLIBS += $(LIBUNWIND_LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) LDFLAGS += $(LIBUNWIND_LIBS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) ifeq ($(findstring -static,${LDFLAGS}),-static)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) # gcc -static links libgcc_eh which contans piece of libunwind
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) LIBUNWIND_LDFLAGS += -Wl,--allow-multiple-definition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) ifndef NO_LIBUNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) CFLAGS += $(LIBUNWIND_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) LDFLAGS += $(LIBUNWIND_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) EXTLIBS += $(EXTLIBS_LIBUNWIND)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) ifeq ($(NO_SYSCALL_TABLE),0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) $(call detected,CONFIG_TRACE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) ifndef NO_LIBAUDIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) $(call feature_check,libaudit)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) ifneq ($(feature-libaudit), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) NO_LIBAUDIT := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686) CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) EXTLIBS += -laudit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) $(call detected,CONFIG_TRACE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) ifndef NO_LIBCRYPTO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) ifneq ($(feature-libcrypto), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) msg := $(warning No libcrypto.h found, disables jitted code injection, please install openssl-devel or libssl-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) NO_LIBCRYPTO := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) CFLAGS += -DHAVE_LIBCRYPTO_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) EXTLIBS += -lcrypto
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) $(call detected,CONFIG_CRYPTO)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) ifdef NO_NEWT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) NO_SLANG=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) ifndef NO_SLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) ifneq ($(feature-libslang), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) ifneq ($(feature-libslang-include-subdir), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) msg := $(warning slang not found, disables TUI support. Please install slang-devel, libslang-dev or libslang2-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) NO_SLANG := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) CFLAGS += -DHAVE_SLANG_INCLUDE_SUBDIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) ifndef NO_SLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) CFLAGS += -DHAVE_SLANG_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) EXTLIBS += -lslang
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) $(call detected,CONFIG_SLANG)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) ifdef GTK2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) FLAGS_GTK2=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) $(call feature_check,gtk2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) ifneq ($(feature-gtk2), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) NO_GTK2 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) $(call feature_check,gtk2-infobar)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733) ifeq ($(feature-gtk2-infobar), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) CFLAGS += -DHAVE_GTK2_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) GTK_CFLAGS += $(shell $(PKG_CONFIG) --cflags gtk+-2.0 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) GTK_LIBS := $(shell $(PKG_CONFIG) --libs gtk+-2.0 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) EXTLIBS += -ldl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) ifdef NO_LIBPERL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) CFLAGS += -DNO_LIBPERL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) PERL_EMBED_CCOPTS := $(filter-out -flto=auto -ffat-lto-objects, $(PERL_EMBED_CCOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753) FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) ifneq ($(feature-libperl), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) CFLAGS += -DNO_LIBPERL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) NO_LIBPERL := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) msg := $(warning Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) LDFLAGS += $(PERL_EMBED_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) EXTLIBS += $(PERL_EMBED_LIBADD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) CFLAGS += -DHAVE_LIBPERL_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) $(call detected,CONFIG_LIBPERL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) ifeq ($(feature-timerfd), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) CFLAGS += -DHAVE_TIMERFD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) msg := $(warning No timerfd support. Disables 'perf kvm stat live');
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) disable-python = $(eval $(disable-python_code))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) define disable-python_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) CFLAGS += -DNO_LIBPYTHON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) $(warning $1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) NO_LIBPYTHON := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) ifdef NO_LIBPYTHON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) $(call disable-python,Python support disabled by user)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) ifndef PYTHON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) $(call disable-python,No python interpreter was found: disables Python support - please install python-devel/python-dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) PYTHON_WORD := $(call shell-wordify,$(PYTHON))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) ifndef PYTHON_CONFIG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) $(call disable-python,No 'python-config' tool was found: disables Python support - please install python-devel/python-dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) ifneq ($(feature-libpython), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) EXTLIBS += $(PYTHON_EMBED_LIBADD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) LANG_BINDINGS += $(obj-perf)python/perf.so
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) CFLAGS += -DHAVE_LIBPYTHON_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) $(call detected,CONFIG_LIBPYTHON)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) ifeq ($(feature-libbfd), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) EXTLIBS += -lbfd -lopcodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) # we are on a system that requires -liberty and (maybe) -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) # to link against -lbfd; test each case individually here
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) # call all detections now so we get correct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) # status in VF output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) $(call feature_check,libbfd-liberty)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) $(call feature_check,libbfd-liberty-z)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817) ifeq ($(feature-libbfd-liberty), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) EXTLIBS += -lbfd -lopcodes -liberty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -ldl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) ifeq ($(feature-libbfd-liberty-z), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) EXTLIBS += -lbfd -lopcodes -liberty -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) FEATURE_CHECK_LDFLAGS-disassembler-four-args += -liberty -lz -ldl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) $(call feature_check,disassembler-four-args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) ifeq ($(feature-libbfd-buildid), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) CFLAGS += -DHAVE_LIBBFD_BUILDID_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) msg := $(warning Old version of libbfd/binutils things like PE executable profiling will not be available);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) ifdef NO_DEMANGLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) CFLAGS += -DNO_DEMANGLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) EXTLIBS += -liberty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) ifeq ($(filter -liberty,$(EXTLIBS)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) $(call feature_check,cplus-demangle)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) # or any of 'bfd iberty z' trinity
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) ifeq ($(feature-cplus-demangle), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) EXTLIBS += -liberty
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) msg := $(warning No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) CFLAGS += -DNO_DEMANGLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) ifneq ($(filter -liberty,$(EXTLIBS)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) ifneq ($(filter -lbfd,$(EXTLIBS)),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) CFLAGS += -DHAVE_LIBBFD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) ifndef NO_ZLIB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) ifeq ($(feature-zlib), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) CFLAGS += -DHAVE_ZLIB_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) EXTLIBS += -lz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) $(call detected,CONFIG_ZLIB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) NO_ZLIB := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) ifndef NO_LZMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) ifeq ($(feature-lzma), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) CFLAGS += -DHAVE_LZMA_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) EXTLIBS += -llzma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) $(call detected,CONFIG_LZMA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) msg := $(warning No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) NO_LZMA := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) ifndef NO_LIBZSTD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) ifeq ($(feature-libzstd), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) CFLAGS += -DHAVE_ZSTD_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) CFLAGS += $(LIBZSTD_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) LDFLAGS += $(LIBZSTD_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) EXTLIBS += -lzstd
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) $(call detected,CONFIG_ZSTD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) msg := $(warning No libzstd found, disables trace compression, please install libzstd-dev[el] and/or set LIBZSTD_DIR);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) NO_LIBZSTD := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) ifndef NO_LIBCAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) ifeq ($(feature-libcap), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) CFLAGS += -DHAVE_LIBCAP_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) EXTLIBS += -lcap
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) $(call detected,CONFIG_LIBCAP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) msg := $(warning No libcap found, disables capability support, please install libcap-devel/libcap-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) NO_LIBCAP := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) ifndef NO_BACKTRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) ifeq ($(feature-backtrace), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) CFLAGS += -DHAVE_BACKTRACE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) ifndef NO_LIBNUMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) ifeq ($(feature-libnuma), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) NO_LIBNUMA := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) ifeq ($(feature-numa_num_possible_cpus), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) msg := $(warning Old numa library found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev >= 2.0.8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) NO_LIBNUMA := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) CFLAGS += -DHAVE_LIBNUMA_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) EXTLIBS += -lnuma
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) $(call detected,CONFIG_NUMA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) ifdef HAVE_KVM_STAT_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) CFLAGS += -DHAVE_KVM_STAT_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) ifeq ($(feature-disassembler-four-args), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) CFLAGS += -DDISASM_FOUR_ARGS_SIGNATURE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) ifeq (${IS_64_BIT}, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) ifndef NO_PERF_READ_VDSO32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) $(call feature_check,compile-32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) ifeq ($(feature-compile-32), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) CFLAGS += -DHAVE_PERF_READ_VDSO32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) NO_PERF_READ_VDSO32 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) ifneq ($(SRCARCH), x86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) NO_PERF_READ_VDSOX32 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) ifndef NO_PERF_READ_VDSOX32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) $(call feature_check,compile-x32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) ifeq ($(feature-compile-x32), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) CFLAGS += -DHAVE_PERF_READ_VDSOX32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) NO_PERF_READ_VDSOX32 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) NO_PERF_READ_VDSO32 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) NO_PERF_READ_VDSOX32 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) ifndef NO_LIBBABELTRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) $(call feature_check,libbabeltrace)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) ifeq ($(feature-libbabeltrace), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) CFLAGS += -DHAVE_LIBBABELTRACE_SUPPORT $(LIBBABELTRACE_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) LDFLAGS += $(LIBBABELTRACE_LDFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) EXTLIBS += -lbabeltrace-ctf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) $(call detected,CONFIG_LIBBABELTRACE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) ifndef NO_AUXTRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) ifeq ($(SRCARCH),x86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) ifeq ($(feature-get_cpuid), 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) NO_AUXTRACE := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) ifndef NO_AUXTRACE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) $(call detected,CONFIG_AUXTRACE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) CFLAGS += -DHAVE_AUXTRACE_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) ifndef NO_JVMTI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) ifneq (,$(wildcard /usr/sbin/alternatives))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) JDIR=$(shell /usr/sbin/alternatives --display java | tail -1 | cut -d' ' -f 5 | sed -e 's%/jre/bin/java.%%g' -e 's%/bin/java.%%g')
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) ifndef JDIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) $(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) NO_JVMTI := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) ifndef NO_JVMTI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) $(call feature_check,jvmti)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) ifeq ($(feature-jvmti), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) $(call detected_var,JDIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) ifndef NO_JVMTI_CMLR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) FEATURE_CHECK_CFLAGS-jvmti-cmlr := $(FEATURE_CHECK_CFLAGS-jvmti)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) $(call feature_check,jvmti-cmlr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) ifeq ($(feature-jvmti-cmlr), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) CFLAGS += -DHAVE_JVMTI_CMLR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) endif # NO_JVMTI_CMLR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) $(warning No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) NO_JVMTI := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) USE_CXX = 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) USE_CLANGLLVM = 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) ifdef LIBCLANGLLVM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) $(call feature_check,cxx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) ifneq ($(feature-cxx), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) msg := $(warning No g++ found, disable clang and llvm support. Please install g++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) $(call feature_check,llvm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) $(call feature_check,llvm-version)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) ifneq ($(feature-llvm), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) msg := $(warning No suitable libLLVM found, disabling builtin clang and LLVM support. Please install llvm-dev(el) (>= 3.9.0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) $(call feature_check,clang)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) ifneq ($(feature-clang), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) msg := $(warning No suitable libclang found, disabling builtin clang and LLVM support. Please install libclang-dev(el) (>= 3.9.0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) $(call detected,CONFIG_CXX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) $(call detected,CONFIG_CLANGLLVM)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) USE_CXX = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) USE_LLVM = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) USE_CLANG = 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) ifneq ($(feature-llvm-version),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) msg := $(warning This version of LLVM is not tested. May cause build errors)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) ifdef LIBPFM4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) $(call feature_check,libpfm4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) ifeq ($(feature-libpfm4), 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) CFLAGS += -DHAVE_LIBPFM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) EXTLIBS += -lpfm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) ASCIIDOC_EXTRA = -aHAVE_LIBPFM=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) $(call detected,CONFIG_LIBPFM4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) msg := $(warning libpfm4 not found, disables libpfm4 support. Please install libpfm4-dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) NO_LIBPFM4 := 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) # Among the variables below, these:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) # perfexecdir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) # perf_include_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) # perf_examples_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) # template_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) # mandir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) # infodir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) # htmldir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) # ETC_PERFCONFIG (but not sysconfdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) # can be specified as a relative path some/where/else;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) # this is interpreted as relative to $(prefix) and "perf" at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) # runtime figures out where they are based on the path to the executable.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) # This can help installing the suite in a relocatable way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) # Make the path relative to DESTDIR, not to prefix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) ifndef DESTDIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) prefix ?= $(HOME)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) bindir_relative = bin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) bindir = $(abspath $(prefix)/$(bindir_relative))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) mandir = share/man
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) infodir = share/info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) perfexecdir = libexec/perf-core
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) perf_include_dir = lib/perf/include
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) perf_examples_dir = lib/perf/examples
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) sharedir = $(prefix)/share
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) template_dir = share/perf-core/templates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) STRACE_GROUPS_DIR = share/perf-core/strace/groups
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) htmldir = share/doc/perf-doc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) tipdir = share/doc/perf-tip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) srcdir = $(srctree)/tools/perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) ifeq ($(prefix),/usr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) sysconfdir = /etc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) ETC_PERFCONFIG = $(sysconfdir)/perfconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) sysconfdir = $(prefix)/etc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) ETC_PERFCONFIG = etc/perfconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) ifndef lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) ifeq ($(SRCARCH)$(IS_64_BIT), x861)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) lib = lib64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) lib = lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) endif # lib
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) libdir = $(prefix)/$(lib)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) # Shell quote (do not use $(call) to accommodate ancient setups);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) STRACE_GROUPS_DIR_SQ = $(subst ','\'',$(STRACE_GROUPS_DIR))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) bindir_SQ = $(subst ','\'',$(bindir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) mandir_SQ = $(subst ','\'',$(mandir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) infodir_SQ = $(subst ','\'',$(infodir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) perfexecdir_SQ = $(subst ','\'',$(perfexecdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) perf_include_dir_SQ = $(subst ','\'',$(perf_include_dir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) perf_examples_dir_SQ = $(subst ','\'',$(perf_examples_dir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) template_dir_SQ = $(subst ','\'',$(template_dir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) htmldir_SQ = $(subst ','\'',$(htmldir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) tipdir_SQ = $(subst ','\'',$(tipdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) prefix_SQ = $(subst ','\'',$(prefix))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) sysconfdir_SQ = $(subst ','\'',$(sysconfdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) libdir_SQ = $(subst ','\'',$(libdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) srcdir_SQ = $(subst ','\'',$(srcdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) ifneq ($(filter /%,$(firstword $(perfexecdir))),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) perfexec_instdir = $(perfexecdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) perf_include_instdir = $(perf_include_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) perf_examples_instdir = $(perf_examples_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) STRACE_GROUPS_INSTDIR = $(STRACE_GROUPS_DIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) tip_instdir = $(tipdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) perfexec_instdir = $(prefix)/$(perfexecdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) perf_include_instdir = $(prefix)/$(perf_include_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) perf_examples_instdir = $(prefix)/$(perf_examples_dir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) STRACE_GROUPS_INSTDIR = $(prefix)/$(STRACE_GROUPS_DIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) tip_instdir = $(prefix)/$(tipdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) perf_include_instdir_SQ = $(subst ','\'',$(perf_include_instdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) perf_examples_instdir_SQ = $(subst ','\'',$(perf_examples_instdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) STRACE_GROUPS_INSTDIR_SQ = $(subst ','\'',$(STRACE_GROUPS_INSTDIR))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) tip_instdir_SQ = $(subst ','\'',$(tip_instdir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) # If we install to $(HOME) we keep the traceevent default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) # $(HOME)/.traceevent/plugins
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) # Otherwise we install plugins into the global $(libdir).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) ifdef DESTDIR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) plugindir=$(libdir)/traceevent/plugins
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) plugindir_SQ= $(subst ','\'',$(plugindir))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) print_var = $(eval $(print_var_code)) $(info $(MSG))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) define print_var_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) MSG = $(shell printf '...%30s: %s' $(1) $($(1)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) ifeq ($(VF),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) # Display EXTRA features which are detected manualy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) # from here with feature_check call and thus cannot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) # be partof global state output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) $(foreach feat,$(FEATURE_TESTS_EXTRA),$(call feature_print_status,$(feat),))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) $(call print_var,prefix)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) $(call print_var,bindir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) $(call print_var,libdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) $(call print_var,sysconfdir)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) $(call print_var,LIBUNWIND_DIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) $(call print_var,LIBDW_DIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) $(call print_var,JDIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) ifeq ($(dwarf-post-unwind),1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) $(info )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) $(call detected_var,bindir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) $(call detected_var,PYTHON_WORD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) ifneq ($(OUTPUT),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) $(call detected_var,OUTPUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) $(call detected_var,htmldir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) $(call detected_var,infodir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) $(call detected_var,mandir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) $(call detected_var,ETC_PERFCONFIG_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) $(call detected_var,STRACE_GROUPS_DIR_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) $(call detected_var,prefix_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) $(call detected_var,perfexecdir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) $(call detected_var,perf_include_dir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) $(call detected_var,perf_examples_dir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) $(call detected_var,tipdir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) $(call detected_var,srcdir_SQ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) $(call detected_var,LIBDIR)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) $(call detected_var,GTK_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) $(call detected_var,PERL_EMBED_CCOPTS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) $(call detected_var,PYTHON_EMBED_CCOPTS)