2013-03-15 15:28:49 +00: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 02:06:58 +00: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 15:28:49 +00:00
NO_PERF_REGS := 1
2013-03-21 10:30:54 +00:00
CFLAGS := $( EXTRA_CFLAGS) $( EXTRA_WARNINGS)
2013-03-15 15:28:49 +00:00
# Additional ARCH settings for x86
i f e q ( $( ARCH ) , i 3 8 6 )
2013-04-15 02:06:58 +00:00
override ARCH := x86
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-x86
2013-03-15 15:28:49 +00:00
e n d i f
i f e q ( $( ARCH ) , x 8 6 _ 6 4 )
2013-04-15 02:06:58 +00: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 10:07:11 +00:00
CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
2013-04-15 02:06:58 +00: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 15:28:49 +00:00
e n d i f
i f e q ( $( NO_PERF_REGS ) , 0 )
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_PERF_REGS_SUPPORT
2013-03-15 15:28:49 +00:00
e n d i f
2013-03-24 23:32:01 +00:00
2013-05-24 12:35:23 +00: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 15:22:38 +00:00
obj-perf := $( OUTPUT)
2013-05-24 12:35:23 +00: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 15:29:18 +00:00
LIB_INCLUDE := $( srctree) /tools/lib/
2013-05-24 12:35:23 +00: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-24 23:32:01 +00:00
i f e q ( $( call get -executable ,$ ( FLEX ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( FLEX) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
i f e q ( $( call get -executable ,$ ( BISON ) ) , )
2013-04-15 02:06:58 +00:00
dummy := $( error Error: $( BISON) is missing on this system, please install it)
2013-03-24 23:32:01 +00:00
e n d i f
2013-03-24 23:40:48 +00:00
# Treat warnings as errors unless directed not to
i f n e q ( $( WERROR ) , 0 )
2013-04-15 02:06:58 +00:00
CFLAGS += -Werror
2013-03-24 23:40:48 +00:00
e n d i f
i f e q ( "$(origin DEBUG)" , "command line" )
2013-04-15 02:06:58 +00:00
PERF_DEBUG = $( DEBUG)
2013-03-24 23:40:48 +00:00
e n d i f
i f n d e f P E R F _ D E B U G
2013-04-15 02:06:58 +00:00
CFLAGS += -O6
2013-03-24 23:40:48 +00: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 02:06:58 +00:00
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
CFLAGS += -DPARSER_DEBUG
2013-03-24 23:40:48 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -fno-omit-frame-pointer
CFLAGS += -ggdb3
CFLAGS += -funwind-tables
CFLAGS += -Wall
CFLAGS += -Wextra
CFLAGS += -std= gnu99
2013-03-21 10:30:54 +00:00
2013-09-23 01:44:57 +00:00
EXTLIBS = -lelf -lpthread -lrt -lm -ldl
2013-03-24 23:40:48 +00:00
2013-09-30 08:08:24 +00:00
feature_check = $( eval $( feature_check_code) ) ; $( info CHK: config/feature-checks/test-$( 1) )
d e f i n e f e a t u r e _ c h e c k _ c o d e
feature-$( 2) := $( shell make -C config/feature-checks test-$1 >/dev/null 2>/dev/null && echo 1 || echo 0)
e n d e f
#
# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output:
#
$(info Testing features : )
$( shell make -i -j -C config /feature -checks >/dev /null 2>&1)
$( info done )
2013-09-30 11:37:10 +00:00
FEATURE_TESTS = \
hello \
2013-09-30 11:48:44 +00:00
stackprotector-all \
2013-10-07 07:47:00 +00:00
stackprotector \
2013-09-30 11:58:12 +00:00
volatile-register-var \
2013-09-30 11:37:10 +00:00
libnuma
2013-09-30 08:08:24 +00:00
$( foreach test ,$ ( FEATURE_TESTS ) ,$ ( call feature_check ,$ ( test ) ,$ ( test ) ) )
2013-09-30 11:48:44 +00:00
i f e q ( $( feature -stackprotector -all ) , 1 )
2013-04-15 02:06:58 +00:00
CFLAGS += -fstack-protector-all
2013-03-24 23:40:48 +00:00
e n d i f
2013-10-07 07:47:00 +00:00
i f e q ( $( feature -stackprotector ) , 1 )
2013-04-15 02:06:58 +00:00
CFLAGS += -Wstack-protector
2013-03-24 23:40:48 +00:00
e n d i f
2013-09-30 11:58:12 +00:00
i f e q ( $( feature -volatile -register -var ) , 1 )
2013-04-15 02:06:58 +00:00
CFLAGS += -Wvolatile-register-var
2013-03-24 23:40:48 +00:00
e n d i f
i f n d e f P E R F _ D E B U G
2013-04-15 02:06:58 +00:00
ifeq ( $( call try-cc,$( SOURCE_HELLO) ,$( CFLAGS) -D_FORTIFY_SOURCE= 2,-D_FORTIFY_SOURCE= 2) ,y)
CFLAGS += -D_FORTIFY_SOURCE= 2
endif
2013-03-24 23:40:48 +00:00
e n d i f
2013-04-15 02:32:28 +00: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 12:35:23 +00: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 02:32:28 +00:00
CFLAGS += -I$( obj-perf) /util
CFLAGS += -I$( obj-perf)
2013-05-24 12:35:23 +00:00
e n d i f
2013-04-15 02:32:28 +00:00
CFLAGS += -I$( src-perf) /util
CFLAGS += -I$( src-perf)
2013-06-11 15:29:18 +00:00
CFLAGS += -I$( LIB_INCLUDE)
2013-05-24 12:35:23 +00:00
2013-04-15 02:32:28 +00:00
CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2013-03-24 23:40:48 +00:00
2013-05-24 12:35:24 +00:00
i f n d e f N O _ B I O N I C
2013-03-24 23:40:48 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_BIONIC ) ,$ ( CFLAGS ) ,bionic ) , y )
2013-04-15 02:06:58 +00:00
BIONIC := 1
EXTLIBS := $( filter-out -lrt,$( EXTLIBS) )
EXTLIBS := $( filter-out -lpthread,$( EXTLIBS) )
2013-03-24 23:40:48 +00:00
e n d i f
2013-05-24 12:35:24 +00:00
e n d i f # NO_BIONIC
2013-03-24 23:45:08 +00:00
i f d e f N O _ L I B E L F
2013-04-15 02:06:58 +00:00
NO_DWARF := 1
NO_DEMANGLE := 1
NO_LIBUNWIND := 1
2013-03-24 23:45:08 +00:00
e l s e
2013-03-21 10:41:05 +00:00
FLAGS_LIBELF = $( CFLAGS) $( LDFLAGS) $( EXTLIBS)
2013-03-24 23:45:08 +00:00
i f n e q ( $( call try -cc ,$ ( SOURCE_LIBELF ) ,$ ( FLAGS_LIBELF ) ,libelf ) , y )
2013-04-15 02:06:58 +00:00
FLAGS_GLIBC = $( CFLAGS) $( LDFLAGS)
ifeq ( $( call try-cc,$( SOURCE_GLIBC) ,$( FLAGS_GLIBC) ,glibc) ,y)
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-03-24 23:45:08 +00:00
e l s e
2013-04-15 02:06:58 +00: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-05-09 04:17:44 +00:00
FLAGS_DWARF = $( CFLAGS) $( LIBDW_CFLAGS) -ldw -lz -lelf $( LIBDW_LDFLAGS) $( LDFLAGS) $( EXTLIBS)
2013-04-15 02:06:58 +00:00
ifneq ( $( call try-cc,$( SOURCE_DWARF) ,$( FLAGS_DWARF) ,libdw) ,y)
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
2013-03-24 23:45:08 +00:00
e n d i f # SOURCE_LIBELF
e n d i f # NO_LIBELF
i f n d e f N O _ L I B E L F
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2013-03-21 10:41:05 +00:00
FLAGS_LIBELF = $( CFLAGS) $( LDFLAGS) $( EXTLIBS)
2013-09-30 10:07:11 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_ELF_MMAP ) ,$ ( FLAGS_LIBELF ) ,-DHAVE_LIBELF_MMAP_SUPPORT ) , y )
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
2013-03-24 23:45:08 +00:00
e n d i f
2013-09-30 10:07:11 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_ELF_GETPHDRNUM ) ,$ ( FLAGS_LIBELF ) ,-DHAVE_ELF_GETPHDRNUM_SUPPORT ) , y )
CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
2013-09-13 13:49:30 +00:00
e n d i f
2013-03-24 23:48:14 +00:00
# include ARCH specific config
2013-05-24 12:35:23 +00:00
- i n c l u d e $( src -perf ) / a r c h / $( ARCH ) / M a k e f i l e
2013-03-24 23:48:14 +00:00
i f n d e f N O _ D W A R F
i f e q ( $( origin PERF_HAVE_DWARF_REGS ) , u n d e f i n e d )
2013-04-15 02:06:58 +00:00
msg := $( warning DWARF register mappings have not been defined for architecture $( ARCH) , DWARF support disabled) ;
NO_DWARF := 1
2013-03-24 23:48:14 +00:00
e l s e
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_DWARF_SUPPORT $( LIBDW_CFLAGS)
2013-04-15 02:06:58 +00:00
LDFLAGS += $( LIBDW_LDFLAGS)
EXTLIBS += -lelf -ldw
2013-03-24 23:48:14 +00:00
e n d i f # PERF_HAVE_DWARF_REGS
e n d i f # NO_DWARF
2013-03-24 23:45:08 +00:00
e n d i f # NO_LIBELF
2013-03-24 23:53:03 +00:00
2013-03-21 10:41:05 +00:00
i f n d e f N O _ L I B E L F
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBELF_SUPPORT
2013-03-21 10:41:05 +00:00
FLAGS_LIBELF = $( CFLAGS) $( LDFLAGS) $( EXTLIBS)
2013-09-30 10:07:11 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_ELF_MMAP ) ,$ ( FLAGS_LIBELF ) ,-DHAVE_LIBELF_MMAP_SUPPORT ) , y )
CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
2013-03-21 10:41:05 +00:00
e n d i f # try-cc
e n d i f # NO_LIBELF
2013-03-24 23:53:03 +00: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 02:06:58 +00:00
NO_LIBUNWIND := 1
2013-03-24 23:53:03 +00:00
e n d i f
i f n d e f N O _ L I B U N W I N D
# for linking with debug library, run like:
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
i f d e f L I B U N W I N D _ D I R
2013-04-15 02:06:58 +00:00
LIBUNWIND_CFLAGS := -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS := -L$( LIBUNWIND_DIR) /lib
2013-03-24 23:53:03 +00:00
e n d i f
2013-03-21 10:41:05 +00:00
FLAGS_UNWIND = $( LIBUNWIND_CFLAGS) $( CFLAGS) $( LIBUNWIND_LDFLAGS) $( LDFLAGS) $( EXTLIBS) $( LIBUNWIND_LIBS)
2013-03-24 23:53:03 +00:00
i f n e q ( $( call try -cc ,$ ( SOURCE_LIBUNWIND ) ,$ ( FLAGS_UNWIND ) ,libunwind ) , y )
2013-04-15 02:06:58 +00:00
msg := $( warning No libunwind found, disabling post unwind support. Please install libunwind-dev[ el] >= 0.99) ;
NO_LIBUNWIND := 1
2013-03-24 23:53:03 +00:00
e n d i f # Libunwind support
e n d i f # NO_LIBUNWIND
i f n d e f N O _ L I B U N W I N D
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += $( LIBUNWIND_LIBS)
CFLAGS += $( LIBUNWIND_CFLAGS)
LDFLAGS += $( LIBUNWIND_LDFLAGS)
2013-03-24 23:53:03 +00:00
e n d i f # NO_LIBUNWIND
2013-03-24 23:54:36 +00:00
i f n d e f N O _ L I B A U D I T
2013-04-15 02:06:58 +00:00
FLAGS_LIBAUDIT = $( CFLAGS) $( LDFLAGS) -laudit
ifneq ( $( call try-cc,$( SOURCE_LIBAUDIT) ,$( FLAGS_LIBAUDIT) ,libaudit) ,y)
msg := $( warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev) ;
NO_LIBAUDIT := 1
else
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -laudit
endif
2013-03-24 23:54:36 +00:00
e n d i f
2013-03-24 23:56:08 +00:00
i f d e f N O _ N E W T
2013-04-15 02:06:58 +00:00
NO_SLANG = 1
2013-03-24 23:56:08 +00:00
e n d i f
i f n d e f N O _ S L A N G
2013-04-15 02:06:58 +00:00
FLAGS_SLANG = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) -I/usr/include/slang -lslang
ifneq ( $( call try-cc,$( SOURCE_SLANG) ,$( FLAGS_SLANG) ,libslang) ,y)
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 10:07:11 +00:00
CFLAGS += -DHAVE_SLANG_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lslang
endif
2013-03-24 23:56:08 +00:00
e n d i f
2013-03-17 23:09:24 +00:00
i f n d e f N O _ G T K 2
2013-04-15 02:06:58 +00:00
FLAGS_GTK2 = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) $( shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null)
ifneq ( $( call try-cc,$( SOURCE_GTK2) ,$( FLAGS_GTK2) ,gtk2) ,y)
msg := $( warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev) ;
NO_GTK2 := 1
else
2013-09-30 10:07:11 +00:00
ifeq ( $( call try-cc,$( SOURCE_GTK2_INFOBAR) ,$( FLAGS_GTK2) ,-DHAVE_GTK_INFO_BAR_SUPPORT) ,y)
CFLAGS += -DHAVE_GTK_INFO_BAR_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_GTK2_SUPPORT
2013-04-15 02:06:58 +00: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-17 23:09:24 +00:00
e n d i f
2013-03-17 23:19:44 +00: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 02:06:58 +00:00
CFLAGS += -DNO_LIBPERL
2013-03-17 23:19:44 +00:00
e l s e
2013-04-15 02:06:58 +00: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)
ifneq ( $( call try-cc,$( SOURCE_PERL_EMBED) ,$( FLAGS_PERL_EMBED) ,perl) ,y)
CFLAGS += -DNO_LIBPERL
NO_LIBPERL := 1
else
LDFLAGS += $( PERL_EMBED_LDFLAGS)
EXTLIBS += $( PERL_EMBED_LIBADD)
endif
2013-03-17 23:19:44 +00:00
e n d i f
2013-03-17 23:35:32 +00: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 10:30:54 +00:00
CFLAGS += -DNO_LIBPYTHON
2013-03-17 23:35:32 +00: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)
ifneq ( $( call try-cc,$( SOURCE_PYTHON_EMBED) ,$( FLAGS_PYTHON_EMBED) ,python) ,y)
$( call disable-python,Python.h ( for Python 2.x) )
else
ifneq ( $( call try-cc,$( SOURCE_PYTHON_VERSION) ,$( FLAGS_PYTHON_EMBED) ,python version) ,y)
$( 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 10:41:05 +00:00
LDFLAGS += $( PYTHON_EMBED_LDFLAGS)
2013-03-17 23:35:32 +00:00
EXTLIBS += $( PYTHON_EMBED_LIBADD)
2013-05-24 12:35:23 +00:00
LANG_BINDINGS += $( obj-perf) python/perf.so
2013-03-17 23:35:32 +00:00
endif
endif
endif
endif
e n d i f
2013-03-17 23:38:16 +00:00
i f d e f N O _ D E M A N G L E
2013-04-15 02:06:58 +00:00
CFLAGS += -DNO_DEMANGLE
2013-03-17 23:38:16 +00:00
e l s e
2013-09-30 10:07:11 +00:00
ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00:00
else
FLAGS_BFD = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) -DPACKAGE= 'perf' -lbfd
has_bfd := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD) ,libbfd)
ifeq ( $( has_bfd) ,y)
EXTLIBS += -lbfd
else
FLAGS_BFD_IBERTY = $( FLAGS_BFD) -liberty
has_bfd_iberty := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD_IBERTY) ,liberty)
ifeq ( $( has_bfd_iberty) ,y)
EXTLIBS += -lbfd -liberty
else
FLAGS_BFD_IBERTY_Z = $( FLAGS_BFD_IBERTY) -lz
has_bfd_iberty_z := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD_IBERTY_Z) ,libz)
ifeq ( $( has_bfd_iberty_z) ,y)
EXTLIBS += -lbfd -liberty -lz
else
FLAGS_CPLUS_DEMANGLE = $( CFLAGS) $( LDFLAGS) $( EXTLIBS) -liberty
has_cplus_demangle := $( call try-cc,$( SOURCE_CPLUS_DEMANGLE) ,$( FLAGS_CPLUS_DEMANGLE) ,demangle)
ifeq ( $( has_cplus_demangle) ,y)
EXTLIBS += -liberty
2013-09-30 10:07:11 +00:00
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
2013-04-15 02:06:58 +00: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-17 23:38:16 +00:00
e n d i f
2013-03-17 23:41:04 +00:00
i f n d e f N O _ S T R L C P Y
2013-09-30 10:07:11 +00:00
ifeq ( $( call try-cc,$( SOURCE_STRLCPY) ,,-DHAVE_STRLCPY_SUPPORT) ,y)
CFLAGS += -DHAVE_STRLCPY_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:41:04 +00:00
e n d i f
i f n d e f N O _ O N _ E X I T
2013-09-30 10:07:11 +00:00
ifeq ( $( call try-cc,$( SOURCE_ON_EXIT) ,,-DHAVE_ON_EXIT_SUPPORT) ,y)
CFLAGS += -DHAVE_ON_EXIT_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:41:04 +00: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 10:07:11 +00:00
ifeq ( $( call try-cc,$( SOURCE_BACKTRACE) ,,-DHAVE_BACKTRACE_SUPPORT) ,y)
CFLAGS += -DHAVE_BACKTRACE_SUPPORT
2013-04-15 02:06:58 +00:00
endif
2013-03-17 23:41:04 +00:00
e n d i f
2013-03-17 23:45:27 +00:00
i f n d e f N O _ L I B N U M A
2013-09-30 11:37:10 +00:00
ifeq ( $( feature-libnuma) , 0)
2013-04-15 02:06:58 +00: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 10:07:11 +00:00
CFLAGS += -DHAVE_LIBNUMA_SUPPORT
2013-04-15 02:06:58 +00:00
EXTLIBS += -lnuma
endif
2013-03-17 23:45:27 +00:00
e n d i f
2013-03-17 23:56:01 +00: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) )