1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenguname_M := $(shell uname -m 2>/dev/null || echo not) 2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ 4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng -e s/arm.*/arm/ -e s/sa110/arm/ \ 5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng -e s/s390x/s390/ -e s/parisc64/parisc/ \ 6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ 7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ ) 8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengNO_PERF_REGS := 1 9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS := $(EXTRA_CFLAGS) $(EXTRA_WARNINGS) 10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# Additional ARCH settings for x86 12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(ARCH),i386) 13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng override ARCH := x86 14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_PERF_REGS := 0 15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBUNWIND_LIBS = -lunwind -lunwind-x86 16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(ARCH),x86_64) 19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng override ARCH := x86 20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng IS_X86_64 := 0 21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq (, $(findstring m32,$(CFLAGS))) 22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -x c - | tail -n 1) 23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq (${IS_X86_64}, 1) 25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng RAW_ARCH := x86_64 26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DARCH_X86_64 27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S 28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_PERF_REGS := 0 30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(NO_PERF_REGS),0) 34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_PERF_REGS 35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(src-perf),) 38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsrc-perf := $(srctree)/tools/perf 39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(obj-perf),) 42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengobj-perf := $(OUTPUT) 43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(obj-perf),) 46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengobj-perf := $(abspath $(obj-perf))/ 47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengLIB_INCLUDE := $(srctree)/tools/lib/ 50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# include ARCH specific config 52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng-include $(src-perf)/arch/$(ARCH)/Makefile 53e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 54e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenginclude $(src-perf)/config/feature-tests.mak 55e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenginclude $(src-perf)/config/utilities.mak 56e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 57e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call get-executable,$(FLEX)),) 58e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng dummy := $(error Error: $(FLEX) is missing on this system, please install it) 59e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 60e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 61e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call get-executable,$(BISON)),) 62e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng dummy := $(error Error: $(BISON) is missing on this system, please install it) 63e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 64e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 65e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# Treat warnings as errors unless directed not to 66e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(WERROR),0) 67e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -Werror 68e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 69e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 70e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ("$(origin DEBUG)", "command line") 71e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERF_DEBUG = $(DEBUG) 72e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 73e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef PERF_DEBUG 74e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -O6 75e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 76e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 77e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef PARSER_DEBUG 78e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PARSER_DEBUG_BISON := -t 79e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PARSER_DEBUG_FLEX := -d 80e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DPARSER_DEBUG 81e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 82e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 83e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -fno-omit-frame-pointer 84e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -ggdb3 85e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -funwind-tables 86e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -Wall 87e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -Wextra 88e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -std=gnu99 89e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 90e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengEXTLIBS = -lelf -lpthread -lrt -lm -ldl 91e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 92e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -fstack-protector-all,-fstack-protector-all),y) 93e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -fstack-protector-all 94e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 95e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 96e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -Wstack-protector,-Wstack-protector),y) 97e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -Wstack-protector 98e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 99e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 100e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -Wvolatile-register-var,-Wvolatile-register-var),y) 101e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -Wvolatile-register-var 102e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 103e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 104e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef PERF_DEBUG 105e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -D_FORTIFY_SOURCE=2,-D_FORTIFY_SOURCE=2),y) 106e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -D_FORTIFY_SOURCE=2 107e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 108e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 109e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 110e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(src-perf)/util/include 111e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(src-perf)/arch/$(ARCH)/include 112e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(srctree)/arch/$(ARCH)/include/uapi 113e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(srctree)/arch/$(ARCH)/include 114e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(srctree)/include/uapi 115e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(srctree)/include 116e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 117e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# $(obj-perf) for generated common-cmds.h 118e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# $(obj-perf)/util for generated bison/flex headers 119e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(OUTPUT),) 120e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(obj-perf)/util 121e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(obj-perf) 122e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 123e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 124e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(src-perf)/util 125e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(src-perf) 126e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -I$(LIB_INCLUDE) 127e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 128e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE 129e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 130e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_BIONIC 131e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_BIONIC),$(CFLAGS),bionic),y) 132e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng BIONIC := 1 133e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS := $(filter-out -lrt,$(EXTLIBS)) 134e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS := $(filter-out -lpthread,$(EXTLIBS)) 135e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 136e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_BIONIC 137e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 138e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef NO_LIBELF 139e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DWARF := 1 140e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DEMANGLE := 1 141e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBUNWIND := 1 142e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 143e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFLAGS_LIBELF=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) 144e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF),libelf),y) 145e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_GLIBC=$(CFLAGS) $(LDFLAGS) 146e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_GLIBC),$(FLAGS_GLIBC),glibc),y) 147e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBC_SUPPORT := 1 148e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 149e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(BIONIC),1) 150e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBC_SUPPORT := 1 151e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 152e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(LIBC_SUPPORT),1) 153e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev); 154e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 155e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBELF := 1 156e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DWARF := 1 157e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DEMANGLE := 1 158e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 159e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); 160e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 161e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 162e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng # for linking with debug library, run like: 163e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng # make DEBUG=1 LIBDW_DIR=/opt/libdw/ 164e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifdef LIBDW_DIR 165e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBDW_CFLAGS := -I$(LIBDW_DIR)/include 166e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib 167e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 168e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 169e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_DWARF=$(CFLAGS) $(LIBDW_CFLAGS) -ldw -lz -lelf $(LIBDW_LDFLAGS) $(LDFLAGS) $(EXTLIBS) 170e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_DWARF),$(FLAGS_DWARF),libdw),y) 171e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 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); 172e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DWARF := 1 173e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif # Dwarf support 174e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # SOURCE_LIBELF 175e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_LIBELF 176e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 177e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBELF 178e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -DLIBELF_SUPPORT 179e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFLAGS_LIBELF=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) 180e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_ELF_MMAP),$(FLAGS_LIBELF),-DLIBELF_MMAP),y) 181e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DLIBELF_MMAP 182e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 183e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_ELF_GETPHDRNUM),$(FLAGS_LIBELF),-DHAVE_ELF_GETPHDRNUM),y) 184e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_ELF_GETPHDRNUM 185e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 186e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 187e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# include ARCH specific config 188e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng-include $(src-perf)/arch/$(ARCH)/Makefile 189e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 190e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_DWARF 191e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(origin PERF_HAVE_DWARF_REGS), undefined) 192e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning DWARF register mappings have not been defined for architecture $(ARCH), DWARF support disabled); 193e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_DWARF := 1 194e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 195e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DDWARF_SUPPORT $(LIBDW_CFLAGS) 196e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LDFLAGS += $(LIBDW_LDFLAGS) 197e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lelf -ldw 198e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # PERF_HAVE_DWARF_REGS 199e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_DWARF 200e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 201e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_LIBELF 202e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 203e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBELF 204e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengCFLAGS += -DLIBELF_SUPPORT 205e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFLAGS_LIBELF=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) 206e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(call try-cc,$(SOURCE_ELF_MMAP),$(FLAGS_LIBELF),-DLIBELF_MMAP),y) 207e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DLIBELF_MMAP 208e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # try-cc 209e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_LIBELF 210e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 211e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# There's only x86 (both 32 and 64) support for CFI unwind so far 212e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(ARCH),x86) 213e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBUNWIND := 1 214e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 215e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 216e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBUNWIND 217e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# for linking with debug library, run like: 218e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/ 219e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef LIBUNWIND_DIR 220e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBUNWIND_CFLAGS := -I$(LIBUNWIND_DIR)/include 221e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LIBUNWIND_LDFLAGS := -L$(LIBUNWIND_DIR)/lib 222e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 223e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 224e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengFLAGS_UNWIND=$(LIBUNWIND_CFLAGS) $(CFLAGS) $(LIBUNWIND_LDFLAGS) $(LDFLAGS) $(EXTLIBS) $(LIBUNWIND_LIBS) 225e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(call try-cc,$(SOURCE_LIBUNWIND),$(FLAGS_UNWIND),libunwind),y) 226e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99); 227e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBUNWIND := 1 228e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # Libunwind support 229e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_LIBUNWIND 230e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 231e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBUNWIND 232e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DLIBUNWIND_SUPPORT 233e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += $(LIBUNWIND_LIBS) 234e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += $(LIBUNWIND_CFLAGS) 235e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LDFLAGS += $(LIBUNWIND_LDFLAGS) 236e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif # NO_LIBUNWIND 237e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 238e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBAUDIT 239e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_LIBAUDIT = $(CFLAGS) $(LDFLAGS) -laudit 240e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_LIBAUDIT),$(FLAGS_LIBAUDIT),libaudit),y) 241e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev); 242e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBAUDIT := 1 243e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 244e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DLIBAUDIT_SUPPORT 245e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -laudit 246e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 247e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 248e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 249e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef NO_NEWT 250e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_SLANG=1 251e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 252e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 253e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_SLANG 254e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_SLANG=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) -I/usr/include/slang -lslang 255e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_SLANG),$(FLAGS_SLANG),libslang),y) 256e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning slang not found, disables TUI support. Please install slang-devel or libslang-dev); 257e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_SLANG := 1 258e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 259e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h 260e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -I/usr/include/slang 261e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DSLANG_SUPPORT 262e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lslang 263e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 264e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 265e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 266e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_GTK2 267e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_GTK2=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) $(shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null) 268e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_GTK2),$(FLAGS_GTK2),gtk2),y) 269e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev); 270e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_GTK2 := 1 271e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 272e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_GTK2_INFOBAR),$(FLAGS_GTK2),-DHAVE_GTK_INFO_BAR),y) 273e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_GTK_INFO_BAR 274e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 275e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DGTK2_SUPPORT 276e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += $(shell pkg-config --cflags gtk+-2.0 2>/dev/null) 277e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += $(shell pkg-config --libs gtk+-2.0 2>/dev/null) 278e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 279e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 280e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 281e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenggrep-libs = $(filter -l%,$(1)) 282e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengstrip-libs = $(filter-out -l%,$(1)) 283e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 284e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef NO_LIBPERL 285e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DNO_LIBPERL 286e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 287e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) 288e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) 289e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) 290e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` 291e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) 292e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 293e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED),perl),y) 294e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DNO_LIBPERL 295e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBPERL := 1 296e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 297e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LDFLAGS += $(PERL_EMBED_LDFLAGS) 298e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += $(PERL_EMBED_LIBADD) 299e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 300e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 301e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 302e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengdisable-python = $(eval $(disable-python_code)) 303e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengdefine disable-python_code 304e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DNO_LIBPYTHON 305e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(if $(1),$(warning No $(1) was found)) 306e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning Python support will not be built) 307e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBPYTHON := 1 308e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendef 309e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 310e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengoverride PYTHON := \ 311e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call get-executable-or-default,PYTHON,python) 312e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 313e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef PYTHON 314e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call disable-python,python interpreter) 315e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 316e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 317e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_WORD := $(call shell-wordify,$(PYTHON)) 318e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 319e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifdef NO_LIBPYTHON 320e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call disable-python) 321e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 322e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 323e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng override PYTHON_CONFIG := \ 324e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON)-config) 325e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 326e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifndef PYTHON_CONFIG 327e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call disable-python,python-config tool) 328e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 329e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 330e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) 331e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 332e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) 333e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) 334e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) 335e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) 336e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) 337e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 338e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED),python),y) 339e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(call disable-python,Python.h (for Python 2.x)) 340e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 341e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 342e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_PYTHON_VERSION),$(FLAGS_PYTHON_EMBED),python version),y) 343e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning Python 3 is not yet supported; please set) 344e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning PYTHON and/or PYTHON_CONFIG appropriately.) 345e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning If you also have Python 2 installed, then) 346e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning try something like:) 347e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,)) 348e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,) make PYTHON=python2) 349e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,)) 350e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning Otherwise, disable Python support entirely:) 351e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,)) 352e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,) make NO_LIBPYTHON=1) 353e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(warning $(and ,)) 354e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng $(error $(and ,)) 355e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 356e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LDFLAGS += $(PYTHON_EMBED_LDFLAGS) 357e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += $(PYTHON_EMBED_LIBADD) 358e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng LANG_BINDINGS += $(obj-perf)python/perf.so 359e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 360e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 361e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 362e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 363e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 364e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 365e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifdef NO_DEMANGLE 366e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DNO_DEMANGLE 367e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 368e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifdef HAVE_CPLUS_DEMANGLE 369e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -liberty 370e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_CPLUS_DEMANGLE 371e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 372e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_BFD=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) -DPACKAGE='perf' -lbfd 373e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng has_bfd := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD),libbfd) 374e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(has_bfd),y) 375e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lbfd 376e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 377e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_BFD_IBERTY=$(FLAGS_BFD) -liberty 378e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng has_bfd_iberty := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY),liberty) 379e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(has_bfd_iberty),y) 380e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lbfd -liberty 381e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 382e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_BFD_IBERTY_Z=$(FLAGS_BFD_IBERTY) -lz 383e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng has_bfd_iberty_z := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY_Z),libz) 384e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(has_bfd_iberty_z),y) 385e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lbfd -liberty -lz 386e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 387e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_CPLUS_DEMANGLE=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) -liberty 388e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng has_cplus_demangle := $(call try-cc,$(SOURCE_CPLUS_DEMANGLE),$(FLAGS_CPLUS_DEMANGLE),demangle) 389e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(has_cplus_demangle),y) 390e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -liberty 391e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_CPLUS_DEMANGLE 392e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 393e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling) 394e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DNO_DEMANGLE 395e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 396e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 397e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 398e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 399e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 400e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 401e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 402e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_STRLCPY 403e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_STRLCPY),,-DHAVE_STRLCPY),y) 404e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_STRLCPY 405e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 406e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 407e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 408e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_ON_EXIT 409e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_ON_EXIT),,-DHAVE_ON_EXIT),y) 410e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DHAVE_ON_EXIT 411e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 412e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 413e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 414e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_BACKTRACE 415e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifeq ($(call try-cc,$(SOURCE_BACKTRACE),,-DBACKTRACE_SUPPORT),y) 416e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DBACKTRACE_SUPPORT 417e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 418e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 419e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 420e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef NO_LIBNUMA 421e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng FLAGS_LIBNUMA = $(CFLAGS) $(LDFLAGS) -lnuma 422e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng ifneq ($(call try-cc,$(SOURCE_LIBNUMA),$(FLAGS_LIBNUMA),libnuma),y) 423e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numa-libs-devel or libnuma-dev); 424e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng NO_LIBNUMA := 1 425e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng else 426e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng CFLAGS += -DLIBNUMA_SUPPORT 427e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng EXTLIBS += -lnuma 428e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng endif 429e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 430e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 431e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# Among the variables below, these: 432e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# perfexecdir 433e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# template_dir 434e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# mandir 435e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# infodir 436e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# htmldir 437e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# ETC_PERFCONFIG (but not sysconfdir) 438e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# can be specified as a relative path some/where/else; 439e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# this is interpreted as relative to $(prefix) and "perf" at 440e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# runtime figures out where they are based on the path to the executable. 441e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# This can help installing the suite in a relocatable way. 442e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 443e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# Make the path relative to DESTDIR, not to prefix 444e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifndef DESTDIR 445e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengprefix = $(HOME) 446e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 447e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengbindir_relative = bin 448e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengbindir = $(prefix)/$(bindir_relative) 449e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengmandir = share/man 450e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenginfodir = share/info 451e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperfexecdir = libexec/perf-core 452e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsharedir = $(prefix)/share 453e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtemplate_dir = share/perf-core/templates 454e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenghtmldir = share/doc/perf-doc 455e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifeq ($(prefix),/usr) 456e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsysconfdir = /etc 457e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengETC_PERFCONFIG = $(sysconfdir)/perfconfig 458e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 459e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsysconfdir = $(prefix)/etc 460e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengETC_PERFCONFIG = etc/perfconfig 461e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 462e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenglib = lib 463e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 464e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng# Shell quote (do not use $(call) to accommodate ancient setups); 465e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG)) 466e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen ChengDESTDIR_SQ = $(subst ','\'',$(DESTDIR)) 467e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengbindir_SQ = $(subst ','\'',$(bindir)) 468e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengmandir_SQ = $(subst ','\'',$(mandir)) 469e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenginfodir_SQ = $(subst ','\'',$(infodir)) 470e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperfexecdir_SQ = $(subst ','\'',$(perfexecdir)) 471e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengtemplate_dir_SQ = $(subst ','\'',$(template_dir)) 472e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chenghtmldir_SQ = $(subst ','\'',$(htmldir)) 473e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengprefix_SQ = $(subst ','\'',$(prefix)) 474e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengsysconfdir_SQ = $(subst ','\'',$(sysconfdir)) 475e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng 476e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengifneq ($(filter /%,$(firstword $(perfexecdir))),) 477e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperfexec_instdir = $(perfexecdir) 478e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengelse 479e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperfexec_instdir = $(prefix)/$(perfexecdir) 480e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengendif 481e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengperfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) 482