1e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ("$(origin O)", "command line") 2e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng OUTPUT := $(O)/ 3e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 4e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 5e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# The default target of this Makefile is... 6e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengall: 7e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 8e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginclude config/utilities.mak 9e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 10e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(OUTPUT),) 11e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# check that the output directory actually exists 12e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengOUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) 13e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist)) 14e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 15e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 16e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define V to have a more verbose compile. 17e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 18e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define PYTHON to point to the python binary if the default 19e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# `python' is not correct; for example: PYTHON=python2 20e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 21e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define PYTHON_CONFIG to point to the python-config binary if 22e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# the default `$(PYTHON)-config' is not correct. 23e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 24e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8 25e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 26e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72. 27e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 28e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define LDFLAGS=-static to build a static binary. 29e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 30e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds. 31e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 32e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Define NO_DWARF if you do not want debug-info analysis feature at all. 33e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 34e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE 35e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) 36e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng-include $(OUTPUT)PERF-VERSION-FILE 37e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 38e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenguname_M := $(shell uname -m 2>/dev/null || echo not) 39e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 40e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ 41e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng -e s/arm.*/arm/ -e s/sa110/arm/ \ 42e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng -e s/s390x/s390/ -e s/parisc64/parisc/ \ 43e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ 44e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng -e s/sh[234].*/sh/ ) 45e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 46e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengCC = $(CROSS_COMPILE)gcc 47e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengAR = $(CROSS_COMPILE)ar 48e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 49e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Additional ARCH settings for x86 50e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(ARCH),i386) 51e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ARCH := x86 52e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 53e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(ARCH),x86_64) 54e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ARCH := x86 55e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng IS_X86_64 := 0 56e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq (, $(findstring m32,$(EXTRA_CFLAGS))) 57e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -xc - | tail -n 1) 58e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 59e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq (${IS_X86_64}, 1) 60e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng RAW_ARCH := x86_64 61e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ARCH_CFLAGS := -DARCH_X86_64 62e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S 63e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 64e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 65e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 66e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 67e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Include saner warnings here, which can catch bugs: 68e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 69e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 70e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := -Wformat 71e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security 72e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k 73e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow 74e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self 75e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked 76e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls 77e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 78e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default 79e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum 80e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers 81e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef 82e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings 83e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast 84e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations 85e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes 86e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs 87e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition 88e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes 89e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement 90e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 91e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ("$(origin DEBUG)", "command line") 92e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERF_DEBUG = $(DEBUG) 93e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 94e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef PERF_DEBUG 95e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng CFLAGS_OPTIMIZE = -O6 96e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 97e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 98e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengCFLAGS = -fno-omit-frame-pointer -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) 99e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengEXTLIBS = -lpthread -lrt -lelf -lm 100e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 101e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_LDFLAGS = $(LDFLAGS) 102e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSTRIP ?= strip 103e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 104e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Among the variables below, these: 105e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# perfexecdir 106e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# template_dir 107e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# mandir 108e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# infodir 109e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# htmldir 110e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# ETC_PERFCONFIG (but not sysconfdir) 111e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# can be specified as a relative path some/where/else; 112e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# this is interpreted as relative to $(prefix) and "perf" at 113e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# runtime figures out where they are based on the path to the executable. 114e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# This can help installing the suite in a relocatable way. 115e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 116e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Make the path relative to DESTDIR, not to prefix 117e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef DESTDIR 118e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengprefix = $(HOME) 119e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 120e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbindir_relative = bin 121e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbindir = $(prefix)/$(bindir_relative) 122e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengmandir = share/man 123e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginfodir = share/info 124e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengperfexecdir = libexec/perf-core 125e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengsharedir = $(prefix)/share 126e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengtemplate_dir = share/perf-core/templates 127e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenghtmldir = share/doc/perf-doc 128e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(prefix),/usr) 129e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengsysconfdir = /etc 130e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengETC_PERFCONFIG = $(sysconfdir)/perfconfig 131e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 132e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengsysconfdir = $(prefix)/etc 133e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengETC_PERFCONFIG = etc/perfconfig 134e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 135e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenglib = lib 136e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 137e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengexport prefix bindir sharedir sysconfdir 138e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 139e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengRM = rm -f 140e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengMKDIR = mkdir 141e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengFIND = find 142e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengINSTALL = install 143e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 144e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# sparse is architecture-neutral, which means that we need to tell it 145e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# explicitly what architecture to check for. Fix this up for yours.. 146e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ 147e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 148e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng-include config/feature-tests.mak 149e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 150e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -fstack-protector-all),y) 151e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng CFLAGS := $(CFLAGS) -fstack-protector-all 152e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 153e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 154e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -Wstack-protector),y) 155e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng CFLAGS := $(CFLAGS) -Wstack-protector 156e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 157e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 158e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -Wvolatile-register-var),y) 159e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng CFLAGS := $(CFLAGS) -Wvolatile-register-var 160e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 161e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 162e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### --- END CONFIGURATION SECTION --- 163e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 164e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Those must not be GNU-specific; they are shared with perl/ which may 165e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# be built by a different compiler. (Note that this is an artifact now 166e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# but it still might be nice to keep that distinction.) 167e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include 168e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBASIC_LDFLAGS = 169e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 170e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Guard against environment variables 171e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS = 172e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H = 173e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS = 174e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS = 175e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSCRIPT_SH = 176e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 177e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSCRIPT_SH += perf-archive.sh 178e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 179e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenggrep-libs = $(filter -l%,$(1)) 180e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstrip-libs = $(filter-out -l%,$(1)) 181e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 182e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)python/perf.so: $(PYRF_OBJS) 183e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \ 184e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng --quiet build_ext \ 185e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng --build-lib='$(OUTPUT)python' \ 186e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng --build-temp='$(OUTPUT)python/temp' 187e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 188e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# No Perl scripts right now: 189e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 190e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 191e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) 192e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 193e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 194e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Single 'perf' binary right now: 195e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 196e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPROGRAMS += $(OUTPUT)perf 197e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 198e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLANG_BINDINGS = 199e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 200e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# what 'all' will build and 'install' will install, in perfexecdir 201e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) 202e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 203e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# what 'all' will build but not install in perfexecdir 204e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengOTHER_PROGRAMS = $(OUTPUT)perf 205e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 206e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Set paths to tools early so that they can be used for version tests. 207e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef SHELL_PATH 208e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng SHELL_PATH = /bin/sh 209e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 210e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef PERL_PATH 211e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERL_PATH = /usr/bin/perl 212e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 213e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 214e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengexport PERL_PATH 215e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 216e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_FILE=$(OUTPUT)libperf.a 217e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 218e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/perf_event.h 219e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/rbtree.h 220e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/list.h 221e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/const.h 222e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/hash.h 223e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += ../../include/linux/stringify.h 224e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/bitmap.h 225e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/bitops.h 226e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/compiler.h 227e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/const.h 228e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/ctype.h 229e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/kernel.h 230e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/list.h 231e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/module.h 232e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/poison.h 233e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/prefetch.h 234e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/rbtree.h 235e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/string.h 236e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/types.h 237e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/linux/linkage.h 238e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/asm-offsets.h 239e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/bug.h 240e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/byteorder.h 241e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/hweight.h 242e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/swab.h 243e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/system.h 244e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/uaccess.h 245e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/dwarf-regs.h 246e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/dwarf2.h 247e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/include/asm/cpufeature.h 248e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += perf.h 249e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/annotate.h 250e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/cache.h 251e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/callchain.h 252e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/build-id.h 253e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/debug.h 254e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/debugfs.h 255e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/event.h 256e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/evsel.h 257e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/evlist.h 258e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/exec_cmd.h 259e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/types.h 260e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/levenshtein.h 261e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/map.h 262e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/parse-options.h 263e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/parse-events.h 264e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/quote.h 265e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/util.h 266e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/xyarray.h 267e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/header.h 268e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/help.h 269e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/session.h 270e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/strbuf.h 271e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/strlist.h 272e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/strfilter.h 273e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/svghelper.h 274e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/run-command.h 275e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/sigchain.h 276e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/symbol.h 277e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/color.h 278e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/values.h 279e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/sort.h 280e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/hist.h 281e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/thread.h 282e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/thread_map.h 283e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/trace-event.h 284e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/probe-finder.h 285e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/probe-event.h 286e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/pstack.h 287e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/cpumap.h 288e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/top.h 289e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += $(ARCH_INCLUDE) 290e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_H += util/cgroup.h 291e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 292e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/abspath.o 293e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/alias.o 294e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/annotate.o 295e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/build-id.o 296e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/config.o 297e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/ctype.o 298e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/debugfs.o 299e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/environment.o 300e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/event.o 301e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/evlist.o 302e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/evsel.o 303e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/exec_cmd.o 304e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/help.o 305e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/levenshtein.o 306e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/parse-options.o 307e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/parse-events.o 308e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/path.o 309e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/rbtree.o 310e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/bitmap.o 311e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/hweight.o 312e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/run-command.o 313e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/quote.o 314e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/strbuf.o 315e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/string.o 316e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/strlist.o 317e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/strfilter.o 318e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/top.o 319e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/usage.o 320e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/wrapper.o 321e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/sigchain.o 322e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/symbol.o 323e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/color.o 324e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/pager.o 325e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/header.o 326e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/callchain.o 327e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/values.o 328e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/debug.o 329e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/map.o 330e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/pstack.o 331e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/session.o 332e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/thread.o 333e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/thread_map.o 334e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/trace-event-parse.o 335e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/trace-event-read.o 336e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/trace-event-info.o 337e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/trace-event-scripting.o 338e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/svghelper.o 339e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/sort.o 340e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/hist.o 341e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/probe-event.o 342e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/util.o 343e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/xyarray.o 344e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/cpumap.o 345e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIB_OBJS += $(OUTPUT)util/cgroup.o 346e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 347e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-annotate.o 348e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 349e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-bench.o 350e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 351e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Benchmark modules 352e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o 353e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o 354e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(RAW_ARCH),x86_64) 355e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o 356e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 357e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o 358e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 359e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-diff.o 360e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-evlist.o 361e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-help.o 362e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-sched.o 363e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-buildid-list.o 364e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-buildid-cache.o 365e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-list.o 366e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-record.o 367e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-report.o 368e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-stat.o 369e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-timechart.o 370e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-top.o 371e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-script.o 372e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-probe.o 373e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-kmem.o 374e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-lock.o 375e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-kvm.o 376e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-test.o 377e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengBUILTIN_OBJS += $(OUTPUT)builtin-inject.o 378e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 379e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPERFLIBS = $(LIB_FILE) 380e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 381e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Files needed for the python binding, perf.so 382e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# pyrf is just an internal name needed for all those wrappers. 383e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# This has to be in sync with what is in the 'sources' variable in 384e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# tools/perf/util/setup.py 385e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 386e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/cpumap.o 387e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/ctype.o 388e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/evlist.o 389e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/evsel.o 390e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/python.o 391e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/thread_map.o 392e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/util.o 393e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengPYRF_OBJS += $(OUTPUT)util/xyarray.o 394e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 395e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 396e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Platform specific tweaks 397e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# 398e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 399e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# We choose to avoid "if .. else if .. else .. endif endif" 400e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# because maintaining the nesting to match is a pain. If 401e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# we had "elif" things would have been much nicer... 402e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 403e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng-include config.mak.autogen 404e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng-include config.mak 405e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 406e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef NO_DWARF 407e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengFLAGS_DWARF=$(ALL_CFLAGS) -ldw -lelf $(ALL_LDFLAGS) $(EXTLIBS) 408e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(call try-cc,$(SOURCE_DWARF),$(FLAGS_DWARF)),y) 409e6817ec1d8ab31fc7b01906e305f848542df6413Ben 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); 410e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng NO_DWARF := 1 411e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif # Dwarf support 412e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif # NO_DWARF 413e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 414e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng-include arch/$(ARCH)/Makefile 415e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 416e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(OUTPUT),) 417e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -I$(OUTPUT) 418e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 419e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 420e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengFLAGS_LIBELF=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) 421e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF)),y) 422e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_GLIBC=$(ALL_CFLAGS) $(ALL_LDFLAGS) 423e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_GLIBC),$(FLAGS_GLIBC)),y) 424e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); 425e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 426e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel); 427e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 428e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 429e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 430e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(call try-cc,$(SOURCE_ELF_MMAP),$(FLAGS_COMMON)),y) 431e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DLIBELF_NO_MMAP 432e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 433e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 434e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef NO_DWARF 435e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifeq ($(origin PERF_HAVE_DWARF_REGS), undefined) 436e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng msg := $(warning DWARF register mappings have not been defined for architecture $(ARCH), DWARF support disabled); 437e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 438e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DDWARF_SUPPORT 439e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -lelf -ldw 440e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/probe-finder.o 441e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif # PERF_HAVE_DWARF_REGS 442e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif # NO_DWARF 443e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 444e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifdef NO_NEWT 445e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_NEWT_SUPPORT 446e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 447e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_NEWT=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -lnewt 448e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_NEWT),$(FLAGS_NEWT)),y) 449e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng msg := $(warning newt not found, disables TUI support. Please install newt-devel or libnewt-dev); 450e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_NEWT_SUPPORT 451e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 452e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h 453e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -I/usr/include/slang 454e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -lnewt -lslang 455e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/setup.o 456e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/browser.o 457e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o 458e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/browsers/hists.o 459e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o 460e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/browsers/top.o 461e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/helpline.o 462e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/progress.o 463e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/ui/util.o 464e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/browser.h 465e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/browsers/map.h 466e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/helpline.h 467e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/libslang.h 468e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/progress.h 469e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/util.h 470e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_H += util/ui/ui.h 471e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 472e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 473e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 474e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifdef NO_LIBPERL 475e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_LIBPERL 476e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 477e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) 478e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) 479e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) 480e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` 481e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) 482e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 483e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED)),y) 484e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_LIBPERL 485e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 486e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ALL_LDFLAGS += $(PERL_EMBED_LDFLAGS) 487e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += $(PERL_EMBED_LIBADD) 488e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o 489e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o 490e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 491e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 492e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 493e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengdisable-python = $(eval $(disable-python_code)) 494e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengdefine disable-python_code 495e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_LIBPYTHON 496e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(if $(1),$(warning No $(1) was found)) 497e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning Python support won't be built) 498e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendef 499e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 500e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengoverride PYTHON := \ 501e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call get-executable-or-default,PYTHON,python) 502e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 503e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef PYTHON 504e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call disable-python,python interpreter) 505e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng python-clean := 506e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 507e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 508e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_WORD := $(call shell-wordify,$(PYTHON)) 509e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 510e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng python-clean := $(PYTHON_WORD) util/setup.py clean \ 511e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng --build-lib='$(OUTPUT)python' \ 512e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng --build-temp='$(OUTPUT)python/temp' 513e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 514e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifdef NO_LIBPYTHON 515e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call disable-python) 516e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 517e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 518e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng override PYTHON_CONFIG := \ 519e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON)-config) 520e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 521e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifndef PYTHON_CONFIG 522e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call disable-python,python-config tool) 523e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 524e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 525e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) 526e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 527e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) 528e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) 529e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) 530e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) 531e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) 532e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 533e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y) 534e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(call disable-python,Python.h (for Python 2.x)) 535e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 536e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 537e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_PYTHON_VERSION),$(FLAGS_PYTHON_EMBED)),y) 538e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning Python 3 is not yet supported; please set) 539e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning PYTHON and/or PYTHON_CONFIG appropriately.) 540e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning If you also have Python 2 installed, then) 541e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning try something like:) 542e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,)) 543e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,) make PYTHON=python2) 544e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,)) 545e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning Otherwise, disable Python support entirely:) 546e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,)) 547e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,) make NO_LIBPYTHON=1) 548e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(warning $(and ,)) 549e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(error $(and ,)) 550e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 551e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS) 552e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += $(PYTHON_EMBED_LIBADD) 553e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o 554e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o 555e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng LANG_BINDINGS += $(OUTPUT)python/perf.so 556e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 557e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 558e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 559e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 560e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 561e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 562e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 563e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifdef NO_DEMANGLE 564e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_DEMANGLE 565e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 566e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifdef HAVE_CPLUS_DEMANGLE 567e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -liberty 568e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE 569e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 570e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd 571e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng has_bfd := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD)) 572e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq ($(has_bfd),y) 573e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -lbfd 574e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 575e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_BFD_IBERTY=$(FLAGS_BFD) -liberty 576e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng has_bfd_iberty := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY)) 577e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq ($(has_bfd_iberty),y) 578e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -lbfd -liberty 579e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 580e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_BFD_IBERTY_Z=$(FLAGS_BFD_IBERTY) -lz 581e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng has_bfd_iberty_z := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY_Z)) 582e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq ($(has_bfd_iberty_z),y) 583e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -lbfd -liberty -lz 584e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 585e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng FLAGS_CPLUS_DEMANGLE=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -liberty 586e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng has_cplus_demangle := $(call try-cc,$(SOURCE_CPLUS_DEMANGLE),$(FLAGS_CPLUS_DEMANGLE)) 587e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifeq ($(has_cplus_demangle),y) 588e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng EXTLIBS += -liberty 589e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE 590e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else 591e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling) 592e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_DEMANGLE 593e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 594e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 595e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 596e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 597e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 598e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 599e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 600e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 601e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifdef NO_STRLCPY 602e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_STRLCPY 603e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 604e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng ifneq ($(call try-cc,$(SOURCE_STRLCPY),),y) 605e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng BASIC_CFLAGS += -DNO_STRLCPY 606e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng endif 607e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 608e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 609e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(findstring $(MAKEFLAGS),s),s) 610e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifndef V 611e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng QUIET_CC = @echo ' ' CC $@; 612e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng QUIET_AR = @echo ' ' AR $@; 613e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng QUIET_LINK = @echo ' ' LINK $@; 614e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng QUIET_MKDIR = @echo ' ' MKDIR $@; 615e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng QUIET_GEN = @echo ' ' GEN $@; 616e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 617e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 618e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 619e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifdef ASCIIDOC8 620e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng export ASCIIDOC8 621e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 622e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 623e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# Shell quote (do not use $(call) to accommodate ancient setups); 624e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 625e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG)) 626e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 627e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengDESTDIR_SQ = $(subst ','\'',$(DESTDIR)) 628e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbindir_SQ = $(subst ','\'',$(bindir)) 629e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengbindir_relative_SQ = $(subst ','\'',$(bindir_relative)) 630e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengmandir_SQ = $(subst ','\'',$(mandir)) 631e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginfodir_SQ = $(subst ','\'',$(infodir)) 632e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengperfexecdir_SQ = $(subst ','\'',$(perfexecdir)) 633e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengtemplate_dir_SQ = $(subst ','\'',$(template_dir)) 634e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenghtmldir_SQ = $(subst ','\'',$(htmldir)) 635e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengprefix_SQ = $(subst ','\'',$(prefix)) 636e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 637e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) 638e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 639e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengLIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group 640e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 641e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_CFLAGS += $(BASIC_CFLAGS) 642e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_CFLAGS += $(ARCH_CFLAGS) 643e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengALL_LDFLAGS += $(BASIC_LDFLAGS) 644e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 645e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengexport INSTALL SHELL_PATH 646e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 647e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 648e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### Build rules 649e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 650e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengSHELL = $(SHELL_PATH) 651e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 652e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengall: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS) 653e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 654e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengplease_set_SHELL_PATH_to_a_more_modern_shell: 655e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @$$(:) 656e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 657e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengshell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell 658e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 659e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengstrip: $(PROGRAMS) $(OUTPUT)perf 660e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(STRIP) $(STRIP_OPTS) $(PROGRAMS) $(OUTPUT)perf 661e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 662e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)perf.o: perf.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS 663e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -DPERF_VERSION='"$(PERF_VERSION)"' \ 664e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ 665e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(ALL_CFLAGS) -c $(filter %.c,$^) -o $@ 666e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 667e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)perf: $(OUTPUT)perf.o $(BUILTIN_OBJS) $(PERFLIBS) 668e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_LINK)$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(OUTPUT)perf.o \ 669e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(BUILTIN_OBJS) $(LIBS) -o $@ 670e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 671e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)builtin-help.o: builtin-help.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS 672e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ 673e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ 674e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_MAN_PATH="$(mandir_SQ)"' \ 675e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_INFO_PATH="$(infodir_SQ)"' $< 676e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 677e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)builtin-timechart.o: builtin-timechart.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS 678e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ 679e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ 680e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_MAN_PATH="$(mandir_SQ)"' \ 681e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_INFO_PATH="$(infodir_SQ)"' $< 682e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 683e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)common-cmds.h: util/generate-cmdlist.sh command-list.txt 684e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 685e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt) 686e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@ 687e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 688e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(SCRIPTS) : % : %.sh 689e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@' 690e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 691e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# These can record PERF_VERSION 692e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)perf.o perf.spec \ 693e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(SCRIPTS) \ 694e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng : $(OUTPUT)PERF-VERSION-FILE 695e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 696e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS 697e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< 698e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)%.s: %.c $(OUTPUT)PERF-CFLAGS 699e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $< 700e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)%.o: %.S 701e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< 702e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 703e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS 704e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ 705e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \ 706e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DBINDIR="$(bindir_relative_SQ)"' \ 707e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng '-DPREFIX="$(prefix_SQ)"' \ 708e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $< 709e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 710e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS 711e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< 712e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 713e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS 714e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< 715e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 716e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/ui/browsers/annotate.o: util/ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS 717e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< 718e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 719e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/ui/browsers/top.o: util/ui/browsers/top.c $(OUTPUT)PERF-CFLAGS 720e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< 721e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 722e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/ui/browsers/hists.o: util/ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS 723e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< 724e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 725e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/ui/browsers/map.o: util/ui/browsers/map.c $(OUTPUT)PERF-CFLAGS 726e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< 727e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 728e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS 729e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< 730e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 731e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c $(OUTPUT)PERF-CFLAGS 732e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $< 733e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 734e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS 735e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $< 736e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 737e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c $(OUTPUT)PERF-CFLAGS 738e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $< 739e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 740e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS 741e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $< 742e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 743e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)perf-%: %.o $(PERFLIBS) 744e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) 745e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 746e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) 747e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(patsubst perf-%,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) 748e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 749e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So 750e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# we depend the various files onto their directories. 751e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengDIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h 752e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS))) 753e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# In the second step, we make a rule to actually create these directories 754e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(sort $(dir $(DIRECTORY_DEPS))): 755e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null 756e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 757e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(LIB_FILE): $(LIB_OBJS) 758e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) 759e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 760e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenghelp: 761e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo 'Perf make targets:' 762e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' doc - make *all* documentation (see below)' 763e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' man - make manpage documentation (access with man <foo>)' 764e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' html - make html documentation' 765e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' info - make GNU info documentation (access with info <foo>)' 766e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' pdf - make pdf documentation' 767e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' TAGS - use etags to make tag information for source browsing' 768e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' tags - use ctags to make tag information for source browsing' 769e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' cscope - use cscope to make interactive browsing database' 770e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo '' 771e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo 'Perf install targets:' 772e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' NOTE: documentation build requires asciidoc, xmlto packages to be installed' 773e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' HINT: use "make prefix=<path> <install target>" to install to a particular' 774e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' path like make prefix=/usr/local install install-doc' 775e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install - install compiled binaries' 776e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install-doc - install *all* documentation' 777e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install-man - install manpage documentation' 778e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install-html - install html documentation' 779e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install-info - install GNU info documentation' 780e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' install-pdf - install pdf documentation' 781e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo '' 782e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' quick-install-doc - alias for quick-install-man' 783e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' quick-install-man - install the documentation quickly' 784e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' quick-install-html - install the html documentation quickly' 785e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo '' 786e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo 'Perf maintainer targets:' 787e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' distclean - alias to clean' 788e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @echo ' clean - clean all binary objects and build output' 789e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 790e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengdoc: 791e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation all 792e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 793e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengman: 794e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation man 795e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 796e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenghtml: 797e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation html 798e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 799e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginfo: 800e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation info 801e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 802e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengpdf: 803e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation pdf 804e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 805e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengTAGS: 806e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) TAGS 807e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(FIND) . -name '*.[hcS]' -print | xargs etags -a 808e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 809e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengtags: 810e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) tags 811e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(FIND) . -name '*.[hcS]' -print | xargs ctags -a 812e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 813e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengcscope: 814e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) cscope* 815e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(FIND) . -name '*.[hcS]' -print | xargs cscope -b 816e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 817e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### Detect prefix changes 818e6817ec1d8ab31fc7b01906e305f848542df6413Ben ChengTRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):\ 819e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ) 820e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 821e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng$(OUTPUT)PERF-CFLAGS: .FORCE-PERF-CFLAGS 822e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng @FLAGS='$(TRACK_CFLAGS)'; \ 823e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng if test x"$$FLAGS" != x"`cat $(OUTPUT)PERF-CFLAGS 2>/dev/null`" ; then \ 824e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng echo 1>&2 " * new build flags or prefix"; \ 825e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng echo "$$FLAGS" >$(OUTPUT)PERF-CFLAGS; \ 826e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng fi 827e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 828e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### Testing rules 829e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 830e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# GNU make supports exporting all variables by "export" without parameters. 831e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# However, the environment gets quite big, and some programs have problems 832e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng# with that. 833e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 834e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengcheck: $(OUTPUT)common-cmds.h 835e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng if sparse; \ 836e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng then \ 837e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng for i in *.c */*.c; \ 838e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng do \ 839e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng sparse $(ALL_CFLAGS) $(SPARSE_FLAGS) $$i || exit; \ 840e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng done; \ 841e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng else \ 842e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng exit 1; \ 843e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng fi 844e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 845e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### Installation rules 846e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 847e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengifneq ($(filter /%,$(firstword $(perfexecdir))),) 848e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengperfexec_instdir = $(perfexecdir) 849e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengelse 850e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengperfexec_instdir = $(prefix)/$(perfexecdir) 851e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengendif 852e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengperfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) 853e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 854e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall: all 855e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' 856e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' 857e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace' 858e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin' 859e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' 860e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace' 861e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl' 862e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/perl/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin' 863e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace' 864e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' 865e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace' 866e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python' 867e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' 868e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 869e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall-doc: 870e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation install 871e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 872e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall-man: 873e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation install-man 874e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 875e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall-html: 876e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation install-html 877e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 878e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall-info: 879e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation install-info 880e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 881e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chenginstall-pdf: 882e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation install-pdf 883e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 884e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengquick-install-doc: 885e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation quick-install 886e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 887e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengquick-install-man: 888e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation quick-install-man 889e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 890e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengquick-install-html: 891e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation quick-install-html 892e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 893e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng### Cleaning rules 894e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 895e6817ec1d8ab31fc7b01906e305f848542df6413Ben Chengclean: 896e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) $(OUTPUT){*.o,*/*.o,*/*/*.o,*/*/*/*.o,$(LIB_FILE),perf-archive} 897e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) $(ALL_PROGRAMS) perf 898e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* 899e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(MAKE) -C Documentation/ clean 900e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS 901e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng $(python-clean) 902e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng 903e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng.PHONY: all install clean strip 904e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell 905e6817ec1d8ab31fc7b01906e305f848542df6413Ben Cheng.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS 906