2013-03-15 23:28:49 +08:00
2014-01-03 22:32:32 +08:00
i f e q ( $( src -perf ) , )
src-perf := $( srctree) /tools/perf
e n d i f
2013-03-15 23:28:49 +08:00
2014-01-03 22:32:32 +08:00
i f e q ( $( obj -perf ) , )
obj-perf := $( OUTPUT)
2013-03-15 23:28:49 +08:00
e n d i f
2014-01-03 22:32:32 +08:00
i f n e q ( $( obj -perf ) , )
obj-perf := $( abspath $( obj-perf) ) /
e n d i f
LIB_INCLUDE := $( srctree) /tools/lib/
CFLAGS := $( EXTRA_CFLAGS) $( EXTRA_WARNINGS)
i n c l u d e $( src -perf ) / c o n f i g / M a k e f i l e . a r c h
NO_PERF_REGS := 1
# Additional ARCH settings for x86
i f e q ( $( ARCH ) , x 8 6 )
2013-04-15 10:06:58 +08:00
ifeq ( ${ IS_X86_64 } , 1)
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
2013-11-01 21:51:32 +08:00
LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
else
LIBUNWIND_LIBS = -lunwind -lunwind-x86
2013-04-15 10:06:58 +08:00
endif
NO_PERF_REGS := 0
2013-03-15 23:28:49 +08:00
e n d i f
2013-09-26 19:36:36 +08:00
i f e q ( $( ARCH ) , a r m )
NO_PERF_REGS := 0
LIBUNWIND_LIBS = -lunwind -lunwind-arm
e n d i f
2013-03-15 23:28:49 +08:00
2013-12-10 20:24:04 +08:00
i f e q ( $( LIBUNWIND_LIBS ) , )
NO_LIBUNWIND := 1
e l s e
#
# For linking with debug library, run like:
#
# make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
#
ifdef LIBUNWIND_DIR
LIBUNWIND_CFLAGS = -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS = -L$( LIBUNWIND_DIR) /lib
endif
LIBUNWIND_LDFLAGS += $( LIBUNWIND_LIBS)
# Set per-feature check compilation flags
FEATURE_CHECK_CFLAGS-libunwind = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind = $( LIBUNWIND_LDFLAGS)
FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $( LIBUNWIND_CFLAGS)
FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $( LIBUNWIND_LDFLAGS)
e n d i f
2013-03-15 23:28:49 +08:00
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
# 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 / 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
2013-10-22 15:34:05 +08:00
i f n d e f D E B U G
DEBUG := 0
e n d i f
2013-10-10 14:05:25 +08:00
i f e q ( $( DEBUG ) , 0 )
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-03 21:05:56 +08:00
i f n e q ( $( OUTPUT ) , )
OUTPUT_FEATURES = $( OUTPUT) config/feature-checks/
$( shell mkdir -p $( OUTPUT_FEATURES) )
e n d i f
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-12-21 13:48:11 +08:00
feature-$( 1) := $( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) $( FEATURE_CHECK_CFLAGS-$( 1) ) " LDFLAGS = " $( LDFLAGS) $( FEATURE_CHECK_LDFLAGS-$( 1) ) " -C config/feature-checks test-$1 .bin >/dev/null 2>/dev/null && echo 1 || echo 0)
2013-10-01 20:14:31 +08:00
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-11-14 15:33:24 +08:00
stackprotector-all \
timerfd
2013-09-30 16:08:24 +08:00
2014-01-07 20:47:18 +08:00
# Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features.
# If in the future we need per-feature checks/flags for features not
# mentioned in this list we need to refactor this ;-).
set_test_all_flags = $( eval $( set_test_all_flags_code) )
d e f i n e s e t _ t e s t _ a l l _ f l a g s _ c o d e
FEATURE_CHECK_CFLAGS-all += $( FEATURE_CHECK_CFLAGS-$( 1) )
FEATURE_CHECK_LDFLAGS-all += $( FEATURE_CHECK_LDFLAGS-$( 1) )
e n d e f
$( foreach feat ,$ ( CORE_FEATURE_TESTS ) ,$ ( call set_test_all_flags ,$ ( feat ) ) )
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:
#
2013-12-21 13:48:11 +08:00
i f e q ( $( wildcard $ ( OUTPUT ) config /feature -checks /test -all .bin ) , )
2013-10-02 16:01:42 +08:00
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-12-21 13:48:11 +08:00
$( shell $( MAKE) OUTPUT = $( OUTPUT_FEATURES) CFLAGS = " $( EXTRA_CFLAGS) " LDFLAGS = $( LDFLAGS) -i -j -C config/feature-checks $( addsuffix .bin,$( CORE_FEATURE_TESTS) ) >/dev/null 2>& 1)
2013-10-02 15:54:43 +08:00
$( 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-08 23:51:10 +08:00
feature_print = $( eval $( feature_print_code) ) $( info $( MSG) )
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
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 )
2013-10-08 23:51:10 +08:00
$( foreach feat,$( CORE_FEATURE_TESTS) ,$( call feature_print,$( feat) ) )
2013-10-02 16:01:42 +08:00
$( 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-10 14:05:25 +08:00
i f e q ( $( DEBUG ) , 0 )
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
2014-01-09 22:00:52 +08:00
CFLAGS += -I$( srctree) /tools/include/
2013-04-15 10:32:28 +08:00
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-10-30 00:43:15 +08:00
$( call feature_check,bionic)
2013-09-30 20:11:46 +08:00
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
2013-10-02 21:30:35 +08:00
endif # libelf support
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
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
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
ifneq ( $( feature-libunwind) , 1)
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-14 07:51:29 +08:00
msg := $( warning No libunwind found, disabling post unwind support. Please install libunwind-dev[ el] >= 1.1) ;
2013-10-07 16:30:47 +08:00
NO_LIBUNWIND := 1
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-14 07:51:29 +08:00
else
2013-11-14 15:25:24 +08:00
ifeq ( $( ARCH) ,arm)
$( call feature_check,libunwind-debug-frame)
ifneq ( $( feature-libunwind-debug-frame) , 1)
msg := $( warning No debug_frame support found in libunwind) ;
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
else
# non-ARM has no dwarf_find_debug_frame() function:
Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm
Pull ARM updates from Russell King:
"Included in this series are:
1. BE8 (modern big endian) changes for ARM from Ben Dooks
2. big.Little support from Nicolas Pitre and Dave Martin
3. support for LPAE systems with all system memory above 4GB
4. Perf updates from Will Deacon
5. Additional prefetching and other performance improvements from Will.
6. Neon-optimised AES implementation fro Ard.
7. A number of smaller fixes scattered around the place.
There is a rather horrid merge conflict in tools/perf - I was never
notified of the conflict because it originally occurred between Will's
tree and other stuff. Consequently I have a resolution which Will
forwarded me, which I'll forward on immediately after sending this
mail.
The other notable thing is I'm expecting some build breakage in the
crypto stuff on ARM only with Ard's AES patches. These were merged
into a stable git branch which others had already pulled, so there's
little I can do about this. The problem is caused because these
patches have a dependency on some code in the crypto git tree - I
tried requesting a branch I can pull to resolve these, and all I got
each time from the crypto people was "we'll revert our patches then"
which would only make things worse since I still don't have the
dependent patches. I've no idea what's going on there or how to
resolve that, and since I can't split these patches from the rest of
this pull request, I'm rather stuck with pushing this as-is or
reverting Ard's patches.
Since it should "come out in the wash" I've left them in - the only
build problems they seem to cause at the moment are with randconfigs,
and since it's a new feature anyway. However, if by -rc1 the
dependencies aren't in, I think it'd be best to revert Ard's patches"
I resolved the perf conflict roughly as per the patch sent by Russell,
but there may be some differences. Any errors are likely mine. Let's
see how the crypto issues work out..
* 'for-linus' of git://git.linaro.org/people/rmk/linux-arm: (110 commits)
ARM: 7868/1: arm/arm64: remove atomic_clear_mask() in "include/asm/atomic.h"
ARM: 7867/1: include: asm: use 'int' instead of 'unsigned long' for 'oldval' in atomic_cmpxchg().
ARM: 7866/1: include: asm: use 'long long' instead of 'u64' within atomic.h
ARM: 7871/1: amba: Extend number of IRQS
ARM: 7887/1: Don't smp_cross_call() on UP devices in arch_irq_work_raise()
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
ARM: 7880/1: Clear the IT state independent of the Thumb-2 mode
ARM: 7878/1: nommu: Implement dummy early_paging_init()
ARM: 7876/1: clear Thumb-2 IT state on exception handling
ARM: 7874/2: bL_switcher: Remove cpu_hotplug_driver_{lock,unlock}()
ARM: footbridge: fix build warnings for netwinder
ARM: 7873/1: vfp: clear vfp_current_hw_state for dying cpu
ARM: fix misplaced arch_virt_to_idmap()
ARM: 7848/1: mcpm: Implement cpu_kill() to synchronise on powerdown
ARM: 7847/1: mcpm: Factor out logical-to-physical CPU translation
ARM: 7869/1: remove unused XSCALE_PMU Kconfig param
ARM: 7864/1: Handle 64-bit memory in case of 32-bit phys_addr_t
ARM: 7863/1: Let arm_add_memory() always use 64-bit arguments
ARM: 7862/1: pcpu: replace __get_cpu_var_uses
ARM: 7861/1: cacheflush: consolidate single-CPU ARMv7 cache disabling code
...
2013-11-14 07:51:29 +08:00
CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
endif
2013-03-25 07:53:03 +08:00
2013-12-10 20:24:04 +08:00
CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
EXTLIBS += $( LIBUNWIND_LIBS)
CFLAGS += $( LIBUNWIND_CFLAGS)
LDFLAGS += $( LIBUNWIND_LDFLAGS)
endif # ifneq ($(feature-libunwind), 1)
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
2014-01-15 18:44:08 +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-13 14:27:43 +08:00
GTK_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
2014-01-15 18:44:08 +08:00
GTK_CFLAGS += $( shell $( PKG_CONFIG) --cflags gtk+-2.0 2>/dev/null)
GTK_LIBS := $( shell $( PKG_CONFIG) --libs gtk+-2.0 2>/dev/null)
2013-09-27 02:55:54 +08:00
EXTLIBS += -ldl
2013-04-15 10:06:58 +08:00
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
2013-10-30 00:43:16 +08:00
i f e q ( $( feature -timerfd ) , 1 )
CFLAGS += -DHAVE_TIMERFD_SUPPORT
e l s e
msg := $( warning No timerfd support. Disables 'perf kvm stat live' ) ;
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
2013-10-11 04:24:00 +08:00
i f e q ( $( feature -libbfd ) , 1 )
EXTLIBS += -lbfd
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-10-11 04:24:00 +08:00
ifneq ( $( feature-libbfd) , 1)
2013-10-30 00:43:15 +08:00
$( call feature_check,liberty)
2013-10-02 21:15:09 +08:00
ifeq ( $( feature-liberty) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -lbfd -liberty
else
2013-10-30 00:43:15 +08:00
$( call feature_check,liberty-z)
2013-10-02 21:15:09 +08:00
ifeq ( $( feature-liberty-z) , 1)
2013-04-15 10:06:58 +08:00
EXTLIBS += -lbfd -liberty -lz
else
2013-10-30 00:43:15 +08:00
$( call feature_check,cplus-demangle)
2013-10-02 21:15:09 +08:00
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
2013-10-11 04:24:00 +08:00
i f n e q ( $( filter -lbfd ,$ ( EXTLIBS ) ) , )
CFLAGS += -DHAVE_LIBBFD_SUPPORT
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-12-02 23:26:48 +08:00
msg := $( warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev) ;
2013-04-15 10:06:58 +08:00
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
2013-09-13 14:27:43 +08:00
i f e q ( $( IS_X 86_ 64) , 1 )
lib = lib64
e l s e
2013-03-18 07:56:01 +08:00
lib = lib
2013-09-13 14:27:43 +08:00
e n d i f
libdir = $( prefix) /$( lib)
2013-03-18 07:56:01 +08:00
# 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) )
2013-09-13 14:27:43 +08:00
libdir_SQ = $( subst ',' \' ' ,$( libdir) )
2013-03-18 07:56:01 +08:00
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) )
2013-12-03 21:09:21 +08:00
# If we install to $(HOME) we keep the traceevent default:
# $(HOME)/.traceevent/plugins
# Otherwise we install plugins into the global $(libdir).
i f d e f D E S T D I R
plugindir = $( libdir) /traceevent/plugins
2014-01-22 23:01:48 +08:00
plugindir_SQ = $( subst ',' \' ' ,$( plugindir) )
2013-12-03 21:09:21 +08:00
e n d i f