2013-03-15 23:28:49 +08:00
uname_M := $( shell uname -m 2>/dev/null || echo not)
ARCH ?= $( shell echo $( uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
2013-04-15 10:06:58 +08:00
-e s/arm.*/arm/ -e s/sa110/arm/ \
-e s/s390x/s390/ -e s/parisc64/parisc/ \
-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
-e s/sh[ 234] .*/sh/ -e s/aarch64.*/arm64/ )
2013-03-15 23:28:49 +08:00
NO_PERF_REGS := 1
2013-03-21 18:30:54 +08:00
CFLAGS := $( EXTRA_CFLAGS) $( EXTRA_WARNINGS)
2013-03-15 23:28:49 +08:00
# Additional ARCH settings for x86
i f e q ( $( ARCH ) , i 3 8 6 )
2013-04-15 10:06:58 +08:00
override ARCH := x86
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-x86
2013-03-15 23:28:49 +08:00
e n d i f
i f e q ( $( ARCH ) , x 8 6 _ 6 4 )
2013-04-15 10:06:58 +08:00
override ARCH := x86
IS_X86_64 := 0
ifeq ( , $( findstring m32,$( CFLAGS) ) )
IS_X86_64 := $( shell echo __x86_64__ | ${ CC } -E -x c - | tail -n 1)
endif
ifeq ( ${ IS_X86_64 } , 1)
RAW_ARCH := x86_64
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
2013-04-15 10:06:58 +08:00
ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
endif
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
2013-03-15 23:28:49 +08:00
e n d i f
i f e q ( $( NO_PERF_REGS ) , 0 )
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_PERF_REGS_SUPPORT
2013-03-15 23:28:49 +08:00
e n d i f
2013-03-25 07:32:01 +08:00
2013-05-24 20:35:23 +08:00
i f e q ( $( src -perf ) , )
src-perf := $( srctree) /tools/perf
e n d i f
i f e q ( $( obj -perf ) , )
2013-06-11 23:22:38 +08:00
obj-perf := $( OUTPUT)
2013-05-24 20:35:23 +08:00
e n d i f
i f n e q ( $( obj -perf ) , )
obj-perf := $( abspath $( obj-perf) ) /
e n d i f
2013-06-11 23:29:18 +08:00
LIB_INCLUDE := $( srctree) /tools/lib/
2013-05-24 20:35:23 +08:00
# include ARCH specific config
- i n c l u d e $( src -perf ) / a r c h / $( ARCH ) / M a k e f i l e
i n c l u d e $( src -perf ) / c o n f i g / f e a t u r e - t e s t s . m a k
i n c l u d e $( src -perf ) / c o n f i g / u t i l i t i e s . m a k
2013-03-25 07:32:01 +08:00
i f e q ( $( call get -executable ,$ ( FLEX ) ) , )
2013-04-15 10:06:58 +08:00
dummy := $( error Error: $( FLEX) is missing on this system, please install it)
2013-03-25 07:32:01 +08:00
e n d i f
i f e q ( $( call get -executable ,$ ( BISON ) ) , )
2013-04-15 10:06:58 +08:00
dummy := $( error Error: $( BISON) is missing on this system, please install it)
2013-03-25 07:32:01 +08:00
e n d i f
2013-03-25 07:40:48 +08:00
# Treat warnings as errors unless directed not to
i f n e q ( $( WERROR ) , 0 )
2013-04-15 10:06:58 +08:00
CFLAGS += -Werror
2013-03-25 07:40:48 +08:00
e n d i f
i f e q ( "$(origin DEBUG)" , "command line" )
2013-04-15 10:06:58 +08:00
PERF_DEBUG = $( DEBUG)
2013-03-25 07:40:48 +08:00
e n d i f
i f n d e f P E R F _ D E B U G
2013-04-15 10:06:58 +08:00
CFLAGS += -O6
2013-03-25 07:40:48 +08:00
e n d i f
i f d e f P A R S E R _ D E B U G
2013-04-15 10:06:58 +08:00
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
CFLAGS += -DPARSER_DEBUG
2013-03-25 07:40:48 +08:00
e n d i f
2013-04-15 10:32:28 +08:00
CFLAGS += -fno-omit-frame-pointer
CFLAGS += -ggdb3
CFLAGS += -funwind-tables
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -std= gnu99
2013-03-21 18:30:54 +08:00
2013-09-23 09:44:57 +08:00
EXTLIBS = -lelf -lpthread -lrt -lm -ldl
2013-03-25 07:40:48 +08:00
2013-10-01 20:14:31 +08:00
feature_check = $( eval $( feature_check_code) )
2013-09-30 16:08:24 +08:00
d e f i n e f e a t u r e _ c h e c k _ c o d e
2013-10-01 20:14:31 +08:00
feature-$( 1) := $( shell $( MAKE) -C config/feature-checks test-$1 >/dev/null 2>/dev/null && echo 1 || echo 0)
e n d e f
feature_set = $( eval $( feature_set_code) )
d e f i n e f e a t u r e _ s e t _ c o d e
feature-$( 1) := 1
2013-09-30 16:08:24 +08:00
e n d e f
#
# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output:
#
2013-10-02 15:54:43 +08:00
#
# Note that this is not a complete list of all feature tests, just
# those that are typically built on a fully configured system.
#
# [ Feature tests not mentioned here have to be built explicitly in
# the rule that uses them - an example for that is the 'bionic'
# feature check. ]
#
CORE_FEATURE_TESTS = \
backtrace \
dwarf \
2013-10-07 15:38:28 +08:00
fortify-source \
2013-10-07 16:34:20 +08:00
glibc \
2013-09-30 21:01:56 +08:00
gtk2 \
2013-09-30 21:08:30 +08:00
gtk2-infobar \
2013-10-02 15:54:43 +08:00
libaudit \
libbfd \
libelf \
libelf-getphdrnum \
libelf-mmap \
libnuma \
2013-09-30 21:15:36 +08:00
libperl \
2013-09-30 21:18:37 +08:00
libpython \
2013-09-30 21:40:04 +08:00
libpython-version \
2013-10-02 15:54:43 +08:00
libslang \
libunwind \
2013-09-30 22:46:49 +08:00
on-exit \
2013-10-02 15:54:43 +08:00
stackprotector \
stackprotector-all \
volatile-register-var
2013-09-30 16:08:24 +08:00
2013-10-02 16:01:42 +08:00
#
# So here we detect whether test-all was rebuilt, to be able
# to skip the print-out of the long features list if the file
# existed before and after it was built:
#
i f e q ( $( wildcard config /feature -checks /test -all ) , )
test-all-failed := 1
e l s e
test-all-failed := 0
e n d i f
2013-10-01 20:14:31 +08:00
#
# Special fast-path for the 'all features are available' case:
#
2013-10-02 16:01:42 +08:00
$( call feature_check ,all ,$ ( MSG ) )
#
# Just in case the build freshly failed, make sure we print the
# feature matrix:
#
i f e q ( $( feature -all ) , 0 )
test-all-failed := 1
e n d i f
i f e q ( $( test -all -failed ) , 1 )
$( info )
$( info Auto-detecting system features:)
e n d i f
2013-10-01 20:14:31 +08:00
i f e q ( $( feature -all ) , 1 )
2013-10-02 15:54:43 +08:00
#
# test-all.c passed - just set all the core feature flags to 1:
#
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_set,$( feat) ) )
2013-10-01 20:14:31 +08:00
e l s e
2013-10-02 15:54:43 +08:00
$( shell $( MAKE) -i -j -C config/feature-checks $( CORE_FEATURE_TESTS) >/dev/null 2>& 1)
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_check,$( feat) ) )
2013-10-01 20:14:31 +08:00
e n d i f
#
# Print the result of the feature test:
#
2013-10-02 16:01:42 +08:00
feature_print = $( eval $( feature_print_code) )
2013-10-01 20:14:31 +08:00
d e f i n e f e a t u r e _ p r i n t _ c o d e
ifeq ( $( feature-$( 1) ) , 1)
2013-10-02 17:58:30 +08:00
MSG = $( shell printf '...%30s: [ \033[32mon\033[m ]' $( 1) )
2013-10-01 20:14:31 +08:00
else
2013-10-02 17:58:30 +08:00
MSG = $( shell printf '...%30s: [ \033[31mOFF\033[m ]' $( 1) )
2013-10-01 20:14:31 +08:00
endif
$( info $( MSG) )
e n d e f
2013-10-02 16:01:42 +08:00
#
# Only print out our features if we rebuilt the testcases or if a test failed:
#
i f e q ( $( test -all -failed ) , 1 )
$( foreach feat,$( CORE_FEATURE_TESTS) DUMMY,$( call feature_print,$( feat) ) )
$( info )
e n d i f
2013-09-30 16:08:24 +08:00
2013-09-30 19:48:44 +08:00
i f e q ( $( feature -stackprotector -all ) , 1 )
2013-04-15 10:06:58 +08:00
CFLAGS += -fstack-protector-all
2013-03-25 07:40:48 +08:00
e n d i f
2013-10-07 15:47:00 +08:00
i f e q ( $( feature -stackprotector ) , 1 )
2013-04-15 10:06:58 +08:00
CFLAGS += -Wstack-protector
2013-03-25 07:40:48 +08:00
e n d i f
2013-09-30 19:58:12 +08:00
i f e q ( $( feature -volatile -register -var ) , 1 )
2013-04-15 10:06:58 +08:00
CFLAGS += -Wvolatile-register-var
2013-03-25 07:40:48 +08:00
e n d i f
i f n d e f P E R F _ D E B U G
2013-10-07 15:38:28 +08:00
ifeq ( $( feature-fortify-source) , 1)
2013-04-15 10:06:58 +08:00
CFLAGS += -D_FORTIFY_SOURCE= 2
endif
2013-03-25 07:40:48 +08:00
e n d i f
2013-04-15 10:32:28 +08:00
CFLAGS += -I$( src-perf) /util/include
CFLAGS += -I$( src-perf) /arch/$( ARCH) /include
CFLAGS += -I$( srctree) /arch/$( ARCH) /include/uapi
CFLAGS += -I$( srctree) /arch/$( ARCH) /include
CFLAGS += -I$( srctree) /include/uapi
CFLAGS += -I$( srctree) /include
2013-05-24 20:35:23 +08:00
# $(obj-perf) for generated common-cmds.h
# $(obj-perf)/util for generated bison/flex headers
i f n e q ( $( OUTPUT ) , )
2013-04-15 10:32:28 +08:00
CFLAGS += -I$( obj-perf) /util
CFLAGS += -I$( obj-perf)
2013-05-24 20:35:23 +08:00
e n d i f
2013-04-15 10:32:28 +08:00
CFLAGS += -I$( src-perf) /util
CFLAGS += -I$( src-perf)
2013-06-11 23:29:18 +08:00
CFLAGS += -I$( LIB_INCLUDE)
2013-05-24 20:35:23 +08:00
2013-04-15 10:32:28 +08:00
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2013-03-25 07:40:48 +08:00
2013-05-24 20:35:24 +08:00
i f n d e f N O _ B I O N I C
2013-09-30 20:11:46 +08:00
$( feature_check,bionic)
ifeq ( $( feature-bionic) , 1)
BIONIC := 1
EXTLIBS := $( filter-out -lrt,$( EXTLIBS) )
EXTLIBS := $( filter-out -lpthread,$( EXTLIBS) )
endif
2013-03-25 07:40:48 +08:00
e n d i f
2013-03-25 07:45:08 +08:00
i f d e f N O _ L I B E L F
2013-04-15 10:06:58 +08:00
NO_DWARF := 1
NO_DEMANGLE := 1
NO_LIBUNWIND := 1
2013-03-25 07:45:08 +08:00
e l s e
2013-09-30 20:20:25 +08:00
ifeq ( $( feature-libelf) , 0)
2013-10-07 16:34:20 +08:00
ifeq ( $( feature-glibc) , 1)
2013-09-30 20:11:16 +08:00
LIBC_SUPPORT := 1
endif
ifeq ( $( BIONIC) ,1)
LIBC_SUPPORT := 1
endif
ifeq ( $( LIBC_SUPPORT) ,1)
msg := $( warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev) ;
NO_LIBELF := 1
NO_DWARF := 1
NO_DEMANGLE := 1
else
msg := $( error No gnu/libc-version.h found, please install glibc-dev[ el] /glibc-static) ;
endif
2013-04-15 10:06:58 +08:00
else
2013-09-30 20:11:16 +08:00
# for linking with debug library, run like:
# make DEBUG=1 LIBDW_DIR=/opt/libdw/
ifdef LIBDW_DIR
LIBDW_CFLAGS := -I$( LIBDW_DIR) /include
LIBDW_LDFLAGS := -L$( LIBDW_DIR) /lib
endif
2013-10-07 16:35:39 +08:00
ifneq ( $( feature-dwarf) , 1)
2013-09-30 20:11:16 +08:00
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) ;
NO_DWARF := 1
endif # Dwarf support
endif # SOURCE_LIBELF
2013-03-25 07:45:08 +08:00
e n d i f # NO_LIBELF
i f n d e f N O _ L I B E L F
2013-10-07 16:05:51 +08:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
FLAGS_LIBELF = $( CFLAGS) $( LDFLAGS) $( EXTLIBS)
2013-03-25 07:48:14 +08:00
2013-09-30 21:02:28 +08:00
ifeq ( $( feature-libelf-mmap) , 1)
2013-10-07 16:05:51 +08:00
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
endif
2013-03-25 07:48:14 +08:00
2013-09-30 20:35:27 +08:00
ifeq ( $( feature-libelf-getphdrnum) , 1)
2013-10-07 16:05:51 +08:00
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
endif
# include ARCH specific config
-include $( src-perf) /arch/$( ARCH) /Makefile
2013-03-25 07:48:14 +08:00
2013-10-07 16:05:51 +08:00
ifndef NO_DWARF
ifeq ( $( origin PERF_HAVE_DWARF_REGS) , undefined)
msg := $( warning DWARF register mappings have not been defined for architecture $( ARCH) , DWARF support disabled) ;
NO_DWARF := 1
else
CFLAGS += -DHAVE_DWARF_SUPPORT $( LIBDW_CFLAGS)
LDFLAGS += $( LIBDW_LDFLAGS)
EXTLIBS += -lelf -ldw
endif # PERF_HAVE_DWARF_REGS
endif # NO_DWARF
2013-03-25 07:45:08 +08:00
e n d i f # NO_LIBELF
2013-03-25 07:53:03 +08:00
2013-03-21 18:41:05 +08:00
i f n d e f N O _ L I B E L F
2013-10-07 16:05:51 +08:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2013-09-30 21:02:28 +08:00
ifeq ( $( feature-libelf-mmap) , 1)
2013-10-07 16:05:51 +08:00
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
2013-09-30 20:35:27 +08:00
endif
2013-03-21 18:41:05 +08:00
e n d i f # NO_LIBELF
2013-03-25 07:53:03 +08:00
# There's only x86 (both 32 and 64) support for CFI unwind so far
i f n e q ( $( ARCH ) , x 8 6 )
2013-04-15 10:06:58 +08:00
NO_LIBUNWIND := 1
2013-03-25 07:53:03 +08:00
e n d i f
i f n d e f N O _ L I B U N W I N D
2013-09-30 20:45:44 +08:00
#
# For linking with debug library, run like:
#
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
#
2013-10-07 16:30:47 +08:00
ifdef LIBUNWIND_DIR
LIBUNWIND_CFLAGS := -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS := -L$( LIBUNWIND_DIR) /lib
endif
2013-03-25 07:53:03 +08:00
2013-09-30 20:45:44 +08:00
ifneq ( $( feature-libunwind) , 1)
2013-10-07 16:30:47 +08:00
msg := $( warning No libunwind found, disabling post unwind support. Please install libunwind-dev[ el] >= 0.99) ;
NO_LIBUNWIND := 1
endif
e n d i f
2013-03-25 07:53:03 +08:00
i f n d e f N O _ L I B U N W I N D
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
2013-04-15 10:06:58 +08:00
EXTLIBS += $( LIBUNWIND_LIBS)
CFLAGS += $( LIBUNWIND_CFLAGS)
LDFLAGS += $( LIBUNWIND_LDFLAGS)
2013-09-30 20:45:44 +08:00
e n d i f
2013-03-25 07:54:36 +08:00
i f n d e f N O _ L I B A U D I T
2013-09-30 20:55:31 +08:00
ifneq ( $( feature-libaudit) , 1)
2013-04-15 10:06:58 +08:00
msg := $( warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev) ;
NO_LIBAUDIT := 1
else
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
2013-04-15 10:06:58 +08:00
EXTLIBS += -laudit
endif
2013-03-25 07:54:36 +08:00
e n d i f
2013-03-25 07:56:08 +08:00
i f d e f N O _ N E W T
2013-04-15 10:06:58 +08:00
NO_SLANG = 1
2013-03-25 07:56:08 +08:00
e n d i f
i f n d e f N O _ S L A N G
2013-09-30 20:57:54 +08:00
ifneq ( $( feature-libslang) , 1)
2013-04-15 10:06:58 +08:00
msg := $( warning slang not found, disables TUI support. Please install slang-devel or libslang-dev) ;
NO_SLANG := 1
else
# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
CFLAGS += -I/usr/include/slang
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_SLANG_SUPPORT
2013-04-15 10:06:58 +08:00
EXTLIBS += -lslang
endif
2013-03-25 07:56:08 +08:00
e n d i f
2013-03-18 07:09:24 +08:00
i f n d e f N O _ G T K 2
2013-04-15 10:06:58 +08:00
FLAGS_GTK2 = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) $( shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null)
2013-09-30 21:01:56 +08:00
ifneq ( $( feature-gtk2) , 1)
2013-04-15 10:06:58 +08:00
msg := $( warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev) ;
NO_GTK2 := 1
else
2013-09-30 21:08:30 +08:00
ifeq ( $( feature-gtk2-infobar) , 1)
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_GTK_INFO_BAR_SUPPORT
2013-04-15 10:06:58 +08:00
endif
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_GTK2_SUPPORT
2013-04-15 10:06:58 +08:00
CFLAGS += $( shell pkg-config --cflags gtk+-2.0 2>/dev/null)
EXTLIBS += $( shell pkg-config --libs gtk+-2.0 2>/dev/null)
endif
2013-03-18 07:09:24 +08:00
e n d i f
2013-03-18 07:19:44 +08:00
grep-libs = $( filter -l%,$( 1) )
strip-libs = $( filter-out -l%,$( 1) )
i f d e f N O _ L I B P E R L
2013-04-15 10:06:58 +08:00
CFLAGS += -DNO_LIBPERL
2013-03-18 07:19:44 +08:00
e l s e
2013-04-15 10:06:58 +08:00
PERL_EMBED_LDOPTS = $( shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
PERL_EMBED_LDFLAGS = $( call strip-libs,$( PERL_EMBED_LDOPTS) )
PERL_EMBED_LIBADD = $( call grep-libs,$( PERL_EMBED_LDOPTS) )
PERL_EMBED_CCOPTS = ` perl -MExtUtils::Embed -e ccopts 2>/dev/null`
FLAGS_PERL_EMBED = $( PERL_EMBED_CCOPTS) $( PERL_EMBED_LDOPTS)
2013-09-30 21:15:36 +08:00
ifneq ( $( feature-libperl) , 1)
2013-04-15 10:06:58 +08:00
CFLAGS += -DNO_LIBPERL
NO_LIBPERL := 1
else
LDFLAGS += $( PERL_EMBED_LDFLAGS)
EXTLIBS += $( PERL_EMBED_LIBADD)
endif
2013-03-18 07:19:44 +08:00
e n d i f
2013-03-18 07:35:32 +08:00
disable-python = $( eval $( disable-python_code) )
d e f i n e d i s a b l e - p y t h o n _ c o d e
2013-03-21 18:30:54 +08:00
CFLAGS += -DNO_LIBPYTHON
2013-03-18 07:35:32 +08:00
$( if $( 1) ,$( warning No $( 1) was found) )
$( warning Python support will not be built)
NO_LIBPYTHON := 1
e n d e f
override PYTHON : = \
$( call get-executable-or-default,PYTHON,python)
i f n d e f P Y T H O N
$( call disable-python,python interpreter)
e l s e
PYTHON_WORD := $( call shell-wordify,$( PYTHON) )
ifdef NO_LIBPYTHON
$( call disable-python)
else
override PYTHON_CONFIG := \
$( call get-executable-or-default,PYTHON_CONFIG,$( PYTHON) -config)
ifndef PYTHON_CONFIG
$( call disable-python,python-config tool)
else
PYTHON_CONFIG_SQ := $( call shell-sq,$( PYTHON_CONFIG) )
PYTHON_EMBED_LDOPTS := $( shell $( PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
PYTHON_EMBED_LDFLAGS := $( call strip-libs,$( PYTHON_EMBED_LDOPTS) )
PYTHON_EMBED_LIBADD := $( call grep-libs,$( PYTHON_EMBED_LDOPTS) )
PYTHON_EMBED_CCOPTS := $( shell $( PYTHON_CONFIG_SQ) --cflags 2>/dev/null)
FLAGS_PYTHON_EMBED := $( PYTHON_EMBED_CCOPTS) $( PYTHON_EMBED_LDOPTS)
2013-09-30 21:18:37 +08:00
ifneq ( $( feature-libpython) , 1)
2013-03-18 07:35:32 +08:00
$( call disable-python,Python.h ( for Python 2.x) )
else
2013-09-30 21:40:04 +08:00
ifneq ( $( feature-libpython-version) , 1)
2013-03-18 07:35:32 +08:00
$( warning Python 3 is not yet supported; please set )
$( warning PYTHON and/or PYTHON_CONFIG appropriately.)
$( warning If you also have Python 2 installed, then )
$( warning try something like:)
$( warning $( and ,) )
$( warning $( and ,) make PYTHON = python2)
$( warning $( and ,) )
$( warning Otherwise, disable Python support entirely:)
$( warning $( and ,) )
$( warning $( and ,) make NO_LIBPYTHON = 1)
$( warning $( and ,) )
$( error $( and ,) )
else
2013-03-21 18:41:05 +08:00
LDFLAGS += $( PYTHON_EMBED_LDFLAGS)
2013-03-18 07:35:32 +08:00
EXTLIBS += $( PYTHON_EMBED_LIBADD)
2013-05-24 20:35:23 +08:00
LANG_BINDINGS += $( obj-perf) python/perf.so
2013-03-18 07:35:32 +08:00
endif
endif
endif
endif
e n d i f
2013-03-18 07:38:16 +08:00
i f d e f N O _ D E M A N G L E
2013-04-15 10:06:58 +08:00
CFLAGS += -DNO_DEMANGLE
2013-03-18 07:38:16 +08:00
e l s e
2013-09-30 18:07:11 +08:00
ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 10:06:58 +08:00
EXTLIBS += -liberty
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 10:06:58 +08:00
else
2013-09-30 21:53:31 +08:00
ifeq ( $( feature-libbfd) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -lbfd
else
2013-10-02 21:15:09 +08:00
$( feature_check,liberty)
ifeq ( $( feature-liberty) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -lbfd -liberty
else
2013-10-02 21:15:09 +08:00
$( feature_check,liberty-z)
ifeq ( $( feature-liberty-z) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -lbfd -liberty -lz
else
2013-10-02 21:15:09 +08:00
$( feature_check,cplus-demangle)
ifeq ( $( feature-cplus-demangle) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -liberty
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 10:06:58 +08:00
else
msg := $( warning No bfd.h/libbfd found, install binutils-dev[ el] /zlib-static to gain symbol demangling)
CFLAGS += -DNO_DEMANGLE
endif
endif
endif
endif
endif
2013-03-18 07:38:16 +08:00
e n d i f
2013-03-18 07:41:04 +08:00
i f n d e f N O _ O N _ E X I T
2013-09-30 22:46:49 +08:00
ifeq ( $( feature-on-exit) , 1)
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_ON_EXIT_SUPPORT
2013-04-15 10:06:58 +08:00
endif
2013-03-18 07:41:04 +08:00
e n d i f
i f n d e f N O _ B A C K T R A C E
2013-09-30 22:49:38 +08:00
ifeq ( $( feature-backtrace) , 1)
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_BACKTRACE_SUPPORT
2013-04-15 10:06:58 +08:00
endif
2013-03-18 07:41:04 +08:00
e n d i f
2013-03-18 07:45:27 +08:00
i f n d e f N O _ L I B N U M A
2013-09-30 19:37:10 +08:00
ifeq ( $( feature-libnuma) , 0)
2013-04-15 10:06:58 +08:00
msg := $( warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numa-libs-devel or libnuma-dev) ;
NO_LIBNUMA := 1
else
2013-09-30 18:07:11 +08:00
CFLAGS += -DHAVE_LIBNUMA_SUPPORT
2013-04-15 10:06:58 +08:00
EXTLIBS += -lnuma
endif
2013-03-18 07:45:27 +08:00
e n d i f
2013-03-18 07:56:01 +08:00
# Among the variables below, these:
# perfexecdir
# template_dir
# mandir
# infodir
# htmldir
# ETC_PERFCONFIG (but not sysconfdir)
# can be specified as a relative path some/where/else;
# this is interpreted as relative to $(prefix) and "perf" at
# runtime figures out where they are based on the path to the executable.
# This can help installing the suite in a relocatable way.
# Make the path relative to DESTDIR, not to prefix
i f n d e f D E S T D I R
prefix = $( HOME)
e n d i f
bindir_relative = bin
bindir = $( prefix) /$( bindir_relative)
mandir = share/man
infodir = share/info
perfexecdir = libexec/perf-core
sharedir = $( prefix) /share
template_dir = share/perf-core/templates
htmldir = share/doc/perf-doc
i f e q ( $( prefix ) , / u s r )
sysconfdir = /etc
ETC_PERFCONFIG = $( sysconfdir) /perfconfig
e l s e
sysconfdir = $( prefix) /etc
ETC_PERFCONFIG = etc/perfconfig
e n d i f
lib = lib
# Shell quote (do not use $(call) to accommodate ancient setups);
ETC_PERFCONFIG_SQ = $( subst ',' \' ' ,$( ETC_PERFCONFIG) )
DESTDIR_SQ = $( subst ',' \' ' ,$( DESTDIR) )
bindir_SQ = $( subst ',' \' ' ,$( bindir) )
mandir_SQ = $( subst ',' \' ' ,$( mandir) )
infodir_SQ = $( subst ',' \' ' ,$( infodir) )
perfexecdir_SQ = $( subst ',' \' ' ,$( perfexecdir) )
template_dir_SQ = $( subst ',' \' ' ,$( template_dir) )
htmldir_SQ = $( subst ',' \' ' ,$( htmldir) )
prefix_SQ = $( subst ',' \' ' ,$( prefix) )
sysconfdir_SQ = $( subst ',' \' ' ,$( sysconfdir) )
i f n e q ( $( filter /%,$ ( firstword $ ( perfexecdir ) ) ) , )
perfexec_instdir = $( perfexecdir)
e l s e
perfexec_instdir = $( prefix) /$( perfexecdir)
e n d i f
perfexec_instdir_SQ = $( subst ',' \' ' ,$( perfexec_instdir) )