Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^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)