2012-04-11 16:36:14 +00:00
i n c l u d e . . / s c r i p t s / M a k e f i l e . i n c l u d e
2010-03-27 17:30:45 +00:00
2009-04-20 11:32:07 +00:00
# The default target of this Makefile is...
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
all :
2009-03-23 20:29:59 +00:00
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
i n c l u d e c o n f i g / u t i l i t i e s . m a k
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
# Define V to have a more verbose compile.
2009-04-20 11:32:07 +00:00
#
2012-02-23 07:08:14 +00:00
# Define O to save output files in a separate directory.
#
# Define ARCH as name of target architecture if you want cross-builds.
#
# Define CROSS_COMPILE as prefix name of compiler if you want cross-builds.
#
# Define NO_LIBPERL to disable perl script extension.
#
# Define NO_LIBPYTHON to disable python script extension.
#
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
# Define PYTHON to point to the python binary if the default
# `python' is not correct; for example: PYTHON=python2
#
# Define PYTHON_CONFIG to point to the python-config binary if
# the default `$(PYTHON)-config' is not correct.
#
2009-04-20 11:32:07 +00:00
# Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8
#
# Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72.
#
2009-10-29 15:20:02 +00:00
# Define LDFLAGS=-static to build a static binary.
2009-11-22 12:13:35 +00:00
#
# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.
2010-03-22 16:10:27 +00:00
#
# Define NO_DWARF if you do not want debug-info analysis feature at all.
2011-09-08 20:42:39 +00:00
#
# Define WERROR=0 to disable treating any warnings as errors.
2012-02-23 07:08:14 +00:00
#
2013-03-28 14:34:10 +00:00
# Define NO_NEWT if you do not want TUI support. (deprecated)
#
# Define NO_SLANG if you do not want TUI support.
2012-02-23 07:08:14 +00:00
#
2012-08-06 04:41:21 +00:00
# Define NO_GTK2 if you do not want GTK+ GUI support.
#
2012-02-23 07:08:14 +00:00
# Define NO_DEMANGLE if you do not want C++ symbol demangling.
2012-08-06 04:41:21 +00:00
#
# Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds)
#
2012-08-07 13:20:44 +00:00
# Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf
# backtrace post unwind.
2012-10-01 16:32:51 +00:00
#
# Define NO_BACKTRACE if you do not want stack backtrace debug feature
2013-01-28 01:51:22 +00:00
#
# Define NO_LIBNUMA if you do not want numa perf benchmark
2009-03-23 20:29:59 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)PERF-VERSION-FILE : .FORCE -PERF -VERSION -FILE
@$( SHELL_PATH) util/PERF-VERSION-GEN $( OUTPUT)
2009-03-23 20:29:59 +00:00
2011-05-07 04:41:14 +00:00
CC = $( CROSS_COMPILE) gcc
AR = $( CROSS_COMPILE) ar
2013-03-24 23:32:01 +00:00
RM = rm -f
MKDIR = mkdir
FIND = find
INSTALL = install
FLEX = flex
BISON = bison
STRIP ?= strip
2013-03-15 15:28:49 +00:00
# include config/Makefile by default and rule out
# non-config cases
config := 1
NON_CONFIG_TARGETS := clean TAGS tags cscope help
i f d e f M A K E C M D G O A L S
i f e q ( $( filter -out $ ( NON_CONFIG_TARGETS ) ,$ ( MAKECMDGOALS ) ) , )
config := 0
e n d i f
e n d i f
i f e q ( $( config ) , 1 )
i n c l u d e c o n f i g / M a k e f i l e
2010-04-20 06:58:32 +00:00
e n d i f
2011-09-08 20:42:39 +00:00
# Treat warnings as errors unless directed not to
i f n e q ( $( WERROR ) , 0 )
2013-04-24 09:37:29 +00:00
CFLAGS_WERROR := -Werror
2011-09-08 20:42:39 +00:00
e n d i f
2009-10-20 23:19:34 +00:00
i f e q ( "$(origin DEBUG)" , "command line" )
PERF_DEBUG = $( DEBUG)
e n d i f
i f n d e f P E R F _ D E B U G
2013-02-17 15:03:36 +00:00
CFLAGS_OPTIMIZE = -O6
2009-10-20 23:19:34 +00:00
e n d i f
2012-05-21 07:12:50 +00:00
i f d e f P A R S E R _ D E B U G
PARSER_DEBUG_BISON := -t
PARSER_DEBUG_FLEX := -d
PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG
e n d i f
2013-03-28 14:34:10 +00:00
i f d e f N O _ N E W T
NO_SLANG = 1
e n d i f
2012-08-07 13:20:44 +00:00
CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std= gnu99 $( CFLAGS_WERROR) $( CFLAGS_OPTIMIZE) $( EXTRA_WARNINGS) $( EXTRA_CFLAGS) $( PARSER_DEBUG_CFLAGS)
2013-01-28 01:51:22 +00:00
EXTLIBS = -lpthread -lrt -lelf -lm
2012-01-17 21:41:01 +00:00
ALL_CFLAGS = $( CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2009-04-20 11:32:07 +00:00
ALL_LDFLAGS = $( LDFLAGS)
# Among the variables below, these:
2009-04-20 13:00:56 +00:00
# perfexecdir
2009-04-20 11:32:07 +00:00
# template_dir
# mandir
# infodir
# htmldir
2009-04-20 13:00:56 +00:00
# ETC_PERFCONFIG (but not sysconfdir)
2009-04-20 11:32:07 +00:00
# can be specified as a relative path some/where/else;
2009-04-20 13:00:56 +00:00
# this is interpreted as relative to $(prefix) and "perf" at
2009-04-20 11:32:07 +00:00
# runtime figures out where they are based on the path to the executable.
# This can help installing the suite in a relocatable way.
2010-03-11 12:57:00 +00:00
# Make the path relative to DESTDIR, not to prefix
i f n d e f D E S T D I R
2009-04-20 11:32:07 +00:00
prefix = $( HOME)
2010-03-11 12:57:00 +00:00
e n d i f
2009-04-20 11:32:07 +00:00
bindir_relative = bin
bindir = $( prefix) /$( bindir_relative)
mandir = share/man
infodir = share/info
2009-04-20 13:00:56 +00:00
perfexecdir = libexec/perf-core
2009-04-20 11:32:07 +00:00
sharedir = $( prefix) /share
2009-04-20 13:00:56 +00:00
template_dir = share/perf-core/templates
htmldir = share/doc/perf-doc
2009-04-20 11:32:07 +00:00
i f e q ( $( prefix ) , / u s r )
sysconfdir = /etc
2009-04-20 13:00:56 +00:00
ETC_PERFCONFIG = $( sysconfdir) /perfconfig
2009-04-20 11:32:07 +00:00
e l s e
sysconfdir = $( prefix) /etc
2009-04-20 13:00:56 +00:00
ETC_PERFCONFIG = etc/perfconfig
2009-04-20 11:32:07 +00:00
e n d i f
lib = lib
export prefix bindir sharedir sysconfdir
# sparse is architecture-neutral, which means that we need to tell it
# explicitly what architecture to check for. Fix this up for yours..
SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__
2012-11-14 04:39:50 +00:00
i f n e q ( $( MAKECMDGOALS ) , c l e a n )
2012-11-29 19:34:21 +00:00
i f n e q ( $( MAKECMDGOALS ) , t a g s )
2011-04-12 20:30:13 +00:00
- i n c l u d e c o n f i g / f e a t u r e - t e s t s . m a k
2010-01-12 10:58:30 +00:00
2012-10-09 15:50:01 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_HELLO ) ,$ ( CFLAGS ) -Werror -fstack -protector -all ,-fstack -protector -all ) , y )
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
CFLAGS := $( CFLAGS) -fstack-protector-all
2009-11-11 07:43:03 +00:00
e n d i f
2009-04-20 11:32:07 +00:00
2012-10-09 15:50:01 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_HELLO ) ,$ ( CFLAGS ) -Werror -Wstack -protector ,-Wstack -protector ) , y )
2011-01-22 21:29:53 +00:00
CFLAGS := $( CFLAGS) -Wstack-protector
e n d i f
2012-10-09 15:50:01 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_HELLO ) ,$ ( CFLAGS ) -Werror -Wvolatile -register -var ,-Wvolatile -register -var ) , y )
2011-01-22 21:29:53 +00:00
CFLAGS := $( CFLAGS) -Wvolatile-register-var
e n d i f
2009-04-20 11:32:07 +00:00
2013-02-17 15:03:36 +00:00
i f n d e f P E R F _ D E B U G
ifeq ( $( call try-cc,$( SOURCE_HELLO) ,$( CFLAGS) -D_FORTIFY_SOURCE= 2,-D_FORTIFY_SOURCE= 2) ,y)
CFLAGS := $( CFLAGS) -D_FORTIFY_SOURCE= 2
endif
e n d i f
2009-04-20 11:32:07 +00:00
### --- END CONFIGURATION SECTION ---
2012-11-19 22:21:03 +00:00
i f e q ( $( srctree ) , )
srctree := $( patsubst %/,%,$( dir $( shell pwd ) ) )
srctree := $( patsubst %/,%,$( dir $( srctree) ) )
#$(info Determined 'srctree' to be $(srctree))
e n d i f
i f n e q ( $( objtree ) , )
#$(info Determined 'objtree' to be $(objtree))
e n d i f
i f n e q ( $( OUTPUT ) , )
#$(info Determined 'OUTPUT' to be $(OUTPUT))
e n d i f
2013-03-15 15:28:49 +00:00
BASIC_CFLAGS += \
2012-11-19 22:21:03 +00:00
-Iutil/include \
-Iarch/$( ARCH) /include \
$( if $( objtree) ,-I$( objtree) /arch/$( ARCH) /include/generated/uapi) \
-I$( srctree) /arch/$( ARCH) /include/uapi \
-I$( srctree) /arch/$( ARCH) /include \
$( if $( objtree) ,-I$( objtree) /include/generated/uapi) \
-I$( srctree) /include/uapi \
-I$( srctree) /include \
-I$( OUTPUT) util \
-Iutil \
-I. \
-I$( TRACE_EVENT_DIR) \
2013-02-20 15:32:30 +00:00
-I../lib/ \
2012-11-19 22:21:03 +00:00
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS= 64 -D_GNU_SOURCE
2012-12-08 14:25:06 +00:00
2009-04-20 11:32:07 +00:00
BASIC_LDFLAGS =
2012-10-09 15:50:01 +00:00
i f e q ( $( call try -cc ,$ ( SOURCE_BIONIC ) ,$ ( CFLAGS ) ,bionic ) , y )
2012-10-08 06:43:27 +00:00
BIONIC := 1
EXTLIBS := $( filter-out -lrt,$( EXTLIBS) )
EXTLIBS := $( filter-out -lpthread,$( EXTLIBS) )
BASIC_CFLAGS += -I.
e n d i f
2012-11-29 19:34:21 +00:00
e n d i f # MAKECMDGOALS != tags
2012-11-14 04:39:50 +00:00
e n d i f # MAKECMDGOALS != clean
2012-10-08 06:43:27 +00:00
2009-04-20 11:32:07 +00:00
# Guard against environment variables
BUILTIN_OBJS =
LIB_H =
LIB_OBJS =
perf tools: Initial python binding
First clarifying that this kind of binding is not a replacement or an
equivalent to the 'perf script' way of using python with perf.
The 'perf script' way is to process events and look at a given script
for some python function that matches the events to pass each event for
processing.
This is a python module, i.e. everything is driven from the python
script, that merely uses "import perf" or "from perf import".
perf script is focused on tracepoints, this binding is focused on profiling as
an initial target. More work is needed to make available tracepoint specific
variables as event variables accessible via this binding.
There is one example of such usage model, in
tools/perf/python/twatch.py, a tool to watch "cycles" events together
with task (fork, exit) and comm perf events.
For now, due to me not being able to grok how python distutils cope with
building C extensions outside the sources dir the install target just
builds it, I'm using it as:
[root@emilia linux]# export PYTHONPATH=~acme/git/build/perf/lib.linux-x86_64-2.6/
[root@emilia linux]# tools/perf/python/twatch.py
cpu: 4, pid: 30126, tid: 30126 { type: mmap, pid: 30126, tid: 30126, start: 0x4, length: 0x82e9ca03, offset: 0, filename: }
cpu: 6, pid: 47, tid: 47 { type: mmap, pid: 47, tid: 47, start: 0x6, length: 0xbef87c36, offset: 0, filename: }
cpu: 1, pid: 0, tid: 0 { type: mmap, pid: 0, tid: 0, start: 0x1, length: 0x775d1904, offset: 0, filename: }
cpu: 7, pid: 0, tid: 0 { type: mmap, pid: 0, tid: 0, start: 0x7, length: 0xc750aeb6, offset: 0, filename: }
cpu: 5, pid: 2255, tid: 2255 { type: mmap, pid: 2255, tid: 2255, start: 0x5, length: 0x76669635, offset: 0, filename: }
cpu: 0, pid: 0, tid: 0 { type: mmap, pid: 0, tid: 0, start: 0, length: 0x6422ef6b, offset: 0, filename: }
cpu: 2, pid: 2255, tid: 2255 { type: mmap, pid: 2255, tid: 2255, start: 0x2, length: 0xe078757a, offset: 0, filename: }
cpu: 1, pid: 5769, tid: 5769 { type: fork, pid: 30127, ppid: 5769, tid: 30127, ptid: 5769, time: 103893991270534}
cpu: 6, pid: 30127, tid: 30127 { type: comm, pid: 30127, tid: 30127, comm: ls }
cpu: 6, pid: 30127, tid: 30127 { type: exit, pid: 30127, ppid: 30127, tid: 30127, ptid: 30127, time: 103893993273024}
The first 8 mmap events in this 8 way machine are a mistery that is still being
investigated.
More of the tools/perf/util/ APIs will be exposed via this python binding as
the need arises. For now the focus is on creating events and processing them,
symbol resolution is an obvious next step, with tracepoint variables as a close
second step.
Cc: Clark Williams <williams@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-01-29 17:44:29 +00:00
PYRF_OBJS =
2009-04-20 11:32:07 +00:00
SCRIPT_SH =
2010-01-15 15:17:52 +00:00
SCRIPT_SH += perf-archive.sh
2009-04-20 13:00:56 +00:00
2010-08-24 05:23:50 +00:00
grep-libs = $( filter -l%,$( 1) )
strip-libs = $( filter-out -l%,$( 1) )
2013-02-20 15:32:30 +00:00
LK_DIR = ../lib/lk/
2012-10-18 14:38:35 +00:00
TRACE_EVENT_DIR = ../lib/traceevent/
2013-02-20 15:32:30 +00:00
LK_PATH = $( LK_DIR)
2012-10-18 14:38:35 +00:00
i f n e q ( $( OUTPUT ) , )
TE_PATH = $( OUTPUT)
2013-02-20 15:32:30 +00:00
i f n e q ( $( subdir ) , )
LK_PATH = $( OUTPUT) $( LK_DIR)
e l s e
LK_PATH = $( OUTPUT)
e n d i f
2012-10-18 14:38:35 +00:00
e l s e
TE_PATH = $( TRACE_EVENT_DIR)
e n d i f
LIBTRACEEVENT = $( TE_PATH) libtraceevent.a
2012-11-14 04:39:50 +00:00
export LIBTRACEEVENT
2013-02-20 15:32:30 +00:00
LIBLK = $( LK_PATH) liblk.a
export LIBLK
2012-11-14 04:39:50 +00:00
# python extension build directories
PYTHON_EXTBUILD := $( OUTPUT) python_ext_build/
PYTHON_EXTBUILD_LIB := $( PYTHON_EXTBUILD) lib/
PYTHON_EXTBUILD_TMP := $( PYTHON_EXTBUILD) tmp/
export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP
python-clean := rm -rf $( PYTHON_EXTBUILD) $( OUTPUT) python/perf.so
2012-02-12 10:45:24 +00:00
PYTHON_EXT_SRCS := $( shell grep -v ^\# util/python-ext-sources)
2013-03-24 13:37:54 +00:00
PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $( LIBTRACEEVENT)
2012-02-12 10:45:24 +00:00
2012-09-28 09:31:58 +00:00
$(OUTPUT)python/perf.so : $( PYTHON_EXT_SRCS ) $( PYTHON_EXT_DEPS )
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
$( QUIET_GEN) CFLAGS = '$(BASIC_CFLAGS)' $( PYTHON_WORD) util/setup.py \
2011-07-22 11:33:07 +00:00
--quiet build_ext; \
mkdir -p $( OUTPUT) python && \
cp $( PYTHON_EXTBUILD_LIB) perf.so $( OUTPUT) python/
2009-04-20 13:00:56 +00:00
#
# No Perl scripts right now:
#
2011-02-02 18:04:27 +00:00
SCRIPTS = $( patsubst %.sh,%,$( SCRIPT_SH) )
2009-04-20 11:32:07 +00:00
2009-04-20 13:00:56 +00:00
#
2009-04-20 14:13:46 +00:00
# Single 'perf' binary right now:
2009-04-20 13:00:56 +00:00
#
2010-03-27 17:30:45 +00:00
PROGRAMS += $( OUTPUT) perf
2009-04-20 11:32:07 +00:00
2011-02-01 18:40:51 +00:00
LANG_BINDINGS =
perf tools: Remove verbose build messages for the python binding
Also now it builds it in a well known location:
[acme@felicio linux]$ rm -rf ../build/perf/
[acme@felicio linux]$ mkdir ../build/perf
[acme@felicio linux]$ make -j2 O=~acme/git/build/perf -C tools/perf/
<SNIP>
[acme@felicio linux]$ ls -la ../build/perf/python/
total 152
-rwxrwxr-x 1 acme acme 147957 Feb 1 14:56 perf.so
drwxrwxr-x 3 acme acme 17 Feb 1 14:56 temp
[acme@felicio linux]$
[root@felicio ~]# strip ~acme/git/build/perf/python/perf.so
[root@felicio ~]# ls -la ~acme/git/build/perf/python/perf.so
-rwxrwxr-x 1 acme acme 46264 Feb 1 14:58 /home/acme/git/build/perf/python/perf.so
[root@felicio ~]# export PYTHONPATH=~acme/git/build/perf/python/
[root@felicio ~]# ~acme/git/linux/tools/perf/python/twatch.py
cpu: 0, pid: 7751, tid: 7751 { type: exit, pid: 7751, ppid: 7751, tid: 7751, ptid: 7751, time: 54562393512356}
cpu: 0, pid: 13700, tid: 13700 { type: fork, pid: 7756, ppid: 13700, tid: 7756, ptid: 13700, time: 54562393746739}
cpu: 1, pid: 7756, tid: 7756 { type: fork, pid: 7757, ppid: 7756, tid: 7757, ptid: 7756, time: 54562394246152}
cpu: 1, pid: 7757, tid: 7757 { type: comm, pid: 7757, tid: 7757, comm: awk }
cpu: 1, pid: 7757, tid: 7757 { type: exit, pid: 7757, ppid: 7757, tid: 7757, ptid: 7757, time: 54562395456813}
Reported-by: Ingo Molnar <mingo@elte.hu>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-01 16:57:02 +00:00
2009-04-20 13:00:56 +00:00
# what 'all' will build and 'install' will install, in perfexecdir
2011-02-01 18:40:51 +00:00
ALL_PROGRAMS = $( PROGRAMS) $( SCRIPTS)
2009-04-20 11:32:07 +00:00
2009-04-20 13:00:56 +00:00
# what 'all' will build but not install in perfexecdir
2011-02-02 17:57:41 +00:00
OTHER_PROGRAMS = $( OUTPUT) perf
2009-04-20 11:32:07 +00:00
# Set paths to tools early so that they can be used for version tests.
i f n d e f S H E L L _ P A T H
SHELL_PATH = /bin/sh
e n d i f
i f n d e f P E R L _ P A T H
PERL_PATH = /usr/bin/perl
e n d i f
export PERL_PATH
2012-09-21 02:31:44 +00:00
$(OUTPUT)util/parse-events-flex.c : util /parse -events .l $( OUTPUT ) util /parse -events -bison .c
2012-05-21 07:12:50 +00:00
$( QUIET_FLEX) $( FLEX) --header-file= $( OUTPUT) util/parse-events-flex.h $( PARSER_DEBUG_FLEX) -t util/parse-events.l > $( OUTPUT) util/parse-events-flex.c
2012-03-29 16:08:38 +00:00
2012-04-11 10:39:51 +00:00
$(OUTPUT)util/parse-events-bison.c : util /parse -events .y
2013-02-13 21:48:58 +00:00
$( QUIET_BISON) $( BISON) -v util/parse-events.y -d $( PARSER_DEBUG_BISON) -o $( OUTPUT) util/parse-events-bison.c -p parse_events_
2012-03-29 16:08:38 +00:00
2012-09-21 02:31:44 +00:00
$(OUTPUT)util/pmu-flex.c : util /pmu .l $( OUTPUT ) util /pmu -bison .c
2012-03-29 16:08:38 +00:00
$( QUIET_FLEX) $( FLEX) --header-file= $( OUTPUT) util/pmu-flex.h -t util/pmu.l > $( OUTPUT) util/pmu-flex.c
2012-04-11 10:39:51 +00:00
$(OUTPUT)util/pmu-bison.c : util /pmu .y
2013-02-13 21:48:58 +00:00
$( QUIET_BISON) $( BISON) -v util/pmu.y -d -o $( OUTPUT) util/pmu-bison.c -p perf_pmu_
2012-03-29 16:08:38 +00:00
2012-04-11 10:39:51 +00:00
$(OUTPUT)util/parse-events.o : $( OUTPUT ) util /parse -events -flex .c $( OUTPUT ) util /parse -events -bison .c
$(OUTPUT)util/pmu.o : $( OUTPUT ) util /pmu -flex .c $( OUTPUT ) util /pmu -bison .c
2012-03-29 16:08:38 +00:00
2010-03-27 17:30:45 +00:00
LIB_FILE = $( OUTPUT) libperf.a
2009-04-20 13:00:56 +00:00
2012-10-14 08:40:57 +00:00
LIB_H += ../../include/uapi/linux/perf_event.h
2009-07-01 15:28:37 +00:00
LIB_H += ../../include/linux/rbtree.h
2009-07-01 17:46:08 +00:00
LIB_H += ../../include/linux/list.h
2012-10-14 08:40:57 +00:00
LIB_H += ../../include/uapi/linux/const.h
2010-01-30 11:43:24 +00:00
LIB_H += ../../include/linux/hash.h
2009-10-17 00:08:18 +00:00
LIB_H += ../../include/linux/stringify.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/linux/bitmap.h
LIB_H += util/include/linux/bitops.h
LIB_H += util/include/linux/compiler.h
2011-05-26 13:13:38 +00:00
LIB_H += util/include/linux/const.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/linux/ctype.h
LIB_H += util/include/linux/kernel.h
2009-07-01 17:46:08 +00:00
LIB_H += util/include/linux/list.h
2012-03-26 09:17:05 +00:00
LIB_H += util/include/linux/export.h
2012-09-10 22:14:58 +00:00
LIB_H += util/include/linux/magic.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/linux/poison.h
LIB_H += util/include/linux/prefetch.h
LIB_H += util/include/linux/rbtree.h
2012-10-09 18:01:56 +00:00
LIB_H += util/include/linux/rbtree_augmented.h
2009-10-19 17:11:36 +00:00
LIB_H += util/include/linux/string.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/linux/types.h
2010-11-25 07:04:53 +00:00
LIB_H += util/include/linux/linkage.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/asm/asm-offsets.h
2009-12-27 23:36:58 +00:00
LIB_H += util/include/asm/bug.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/asm/byteorder.h
2010-04-30 22:31:12 +00:00
LIB_H += util/include/asm/hweight.h
2009-10-19 17:31:31 +00:00
LIB_H += util/include/asm/swab.h
LIB_H += util/include/asm/system.h
LIB_H += util/include/asm/uaccess.h
2010-04-20 06:58:32 +00:00
LIB_H += util/include/dwarf-regs.h
2010-11-25 07:04:53 +00:00
LIB_H += util/include/asm/dwarf2.h
LIB_H += util/include/asm/cpufeature.h
2012-03-14 15:42:34 +00:00
LIB_H += util/include/asm/unistd_32.h
LIB_H += util/include/asm/unistd_64.h
2009-05-01 16:29:57 +00:00
LIB_H += perf.h
2011-02-04 11:45:46 +00:00
LIB_H += util/annotate.h
2009-12-27 23:36:58 +00:00
LIB_H += util/cache.h
LIB_H += util/callchain.h
2010-02-03 18:52:04 +00:00
LIB_H += util/build-id.h
2009-12-27 23:36:58 +00:00
LIB_H += util/debug.h
2012-01-27 14:34:22 +00:00
LIB_H += util/sysfs.h
2012-03-15 19:09:17 +00:00
LIB_H += util/pmu.h
2009-10-03 23:30:48 +00:00
LIB_H += util/event.h
2011-01-03 18:39:04 +00:00
LIB_H += util/evsel.h
2011-01-11 22:56:53 +00:00
LIB_H += util/evlist.h
2009-12-27 23:36:58 +00:00
LIB_H += util/exec_cmd.h
2009-06-25 15:05:54 +00:00
LIB_H += util/types.h
2009-04-27 06:02:14 +00:00
LIB_H += util/levenshtein.h
2012-10-06 18:43:20 +00:00
LIB_H += util/machine.h
2009-12-27 23:37:00 +00:00
LIB_H += util/map.h
2009-04-27 06:02:14 +00:00
LIB_H += util/parse-options.h
2009-05-26 09:10:09 +00:00
LIB_H += util/parse-events.h
2009-04-27 06:02:14 +00:00
LIB_H += util/quote.h
LIB_H += util/util.h
2011-01-03 18:39:04 +00:00
LIB_H += util/xyarray.h
2009-12-11 23:24:02 +00:00
LIB_H += util/header.h
2009-04-27 06:02:14 +00:00
LIB_H += util/help.h
2009-12-11 23:24:02 +00:00
LIB_H += util/session.h
2009-04-27 06:02:14 +00:00
LIB_H += util/strbuf.h
2009-06-30 22:01:20 +00:00
LIB_H += util/strlist.h
2011-01-20 14:15:30 +00:00
LIB_H += util/strfilter.h
2009-12-27 23:36:58 +00:00
LIB_H += util/svghelper.h
2011-11-28 10:30:20 +00:00
LIB_H += util/tool.h
2009-04-27 06:02:14 +00:00
LIB_H += util/run-command.h
2009-05-27 07:50:13 +00:00
LIB_H += util/sigchain.h
2012-10-27 21:18:32 +00:00
LIB_H += util/dso.h
2009-05-28 17:55:04 +00:00
LIB_H += util/symbol.h
2009-06-04 13:19:47 +00:00
LIB_H += util/color.h
2009-08-07 11:55:24 +00:00
LIB_H += util/values.h
2009-09-24 16:02:49 +00:00
LIB_H += util/sort.h
2009-09-28 13:32:55 +00:00
LIB_H += util/hist.h
2009-09-28 17:48:46 +00:00
LIB_H += util/thread.h
2011-01-18 17:15:24 +00:00
LIB_H += util/thread_map.h
2009-12-27 23:36:58 +00:00
LIB_H += util/trace-event.h
2009-12-01 00:19:34 +00:00
LIB_H += util/probe-finder.h
2011-06-27 07:27:27 +00:00
LIB_H += util/dwarf-aux.h
2009-12-01 00:19:58 +00:00
LIB_H += util/probe-event.h
2010-05-14 23:05:21 +00:00
LIB_H += util/pstack.h
perf tools: Fix sparse CPU numbering related bugs
At present, the perf subcommands that do system-wide monitoring
(perf stat, perf record and perf top) don't work properly unless
the online cpus are numbered 0, 1, ..., N-1. These tools ask
for the number of online cpus with sysconf(_SC_NPROCESSORS_ONLN)
and then try to create events for cpus 0, 1, ..., N-1.
This creates problems for systems where the online cpus are
numbered sparsely. For example, a POWER6 system in
single-threaded mode (i.e. only running 1 hardware thread per
core) will have only even-numbered cpus online.
This fixes the problem by reading the /sys/devices/system/cpu/online
file to find out which cpus are online. The code that does that is in
tools/perf/util/cpumap.[ch], and consists of a read_cpu_map()
function that sets up a cpumap[] array and returns the number of
online cpus. If /sys/devices/system/cpu/online can't be read or
can't be parsed successfully, it falls back to using sysconf to
ask how many cpus are online and sets up an identity map in cpumap[].
The perf record, perf stat and perf top code then calls
read_cpu_map() in the system-wide monitoring case (instead of
sysconf) and uses cpumap[] to get the cpu numbers to pass to
perf_event_open.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
LKML-Reference: <20100310093609.GA3959@brick.ozlabs.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-03-10 09:36:09 +00:00
LIB_H += util/cpumap.h
2011-01-31 16:50:39 +00:00
LIB_H += util/top.h
2010-11-25 07:04:53 +00:00
LIB_H += $( ARCH_INCLUDE)
perf tool: Add cgroup support
This patch adds the ability to filter monitoring based on container groups
(cgroups) for both perf stat and perf record. It is possible to monitor
multiple cgroup in parallel. There is one cgroup per event. The cgroups to
monitor are passed via a new -G option followed by a comma separated list of
cgroup names.
The cgroup filesystem has to be mounted. Given a cgroup name, the perf tool
finds the corresponding directory in the cgroup filesystem and opens it. It
then passes that file descriptor to the kernel.
Example:
$ perf stat -B -a -e cycles:u,cycles:u,cycles:u -G test1,,test2 -- sleep 1
Performance counter stats for 'sleep 1':
2,368,667,414 cycles test1
2,369,661,459 cycles
<not counted> cycles test2
1.001856890 seconds time elapsed
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4d590290.825bdf0a.7d0a.4890@mx.google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-02-14 09:20:01 +00:00
LIB_H += util/cgroup.h
2012-05-22 09:03:53 +00:00
LIB_H += $( TRACE_EVENT_DIR) event-parse.h
2012-04-26 05:15:22 +00:00
LIB_H += util/target.h
2012-07-31 04:31:32 +00:00
LIB_H += util/rblist.h
2012-07-31 04:31:34 +00:00
LIB_H += util/intlist.h
2012-08-07 13:20:43 +00:00
LIB_H += util/perf_regs.h
2012-08-07 13:20:46 +00:00
LIB_H += util/unwind.h
2012-09-10 16:50:19 +00:00
LIB_H += util/vdso.h
2012-11-14 16:47:40 +00:00
LIB_H += ui/helpline.h
LIB_H += ui/progress.h
LIB_H += ui/util.h
LIB_H += ui/ui.h
2009-04-27 06:02:14 +00:00
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/abspath.o
LIB_OBJS += $( OUTPUT) util/alias.o
2011-02-04 11:45:46 +00:00
LIB_OBJS += $( OUTPUT) util/annotate.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/build-id.o
LIB_OBJS += $( OUTPUT) util/config.o
LIB_OBJS += $( OUTPUT) util/ctype.o
2012-01-27 14:34:22 +00:00
LIB_OBJS += $( OUTPUT) util/sysfs.o
2012-03-15 19:09:17 +00:00
LIB_OBJS += $( OUTPUT) util/pmu.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/environment.o
LIB_OBJS += $( OUTPUT) util/event.o
2011-01-11 22:56:53 +00:00
LIB_OBJS += $( OUTPUT) util/evlist.o
2011-01-03 18:39:04 +00:00
LIB_OBJS += $( OUTPUT) util/evsel.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/exec_cmd.o
LIB_OBJS += $( OUTPUT) util/help.o
LIB_OBJS += $( OUTPUT) util/levenshtein.o
LIB_OBJS += $( OUTPUT) util/parse-options.o
LIB_OBJS += $( OUTPUT) util/parse-events.o
LIB_OBJS += $( OUTPUT) util/path.o
LIB_OBJS += $( OUTPUT) util/rbtree.o
LIB_OBJS += $( OUTPUT) util/bitmap.o
LIB_OBJS += $( OUTPUT) util/hweight.o
LIB_OBJS += $( OUTPUT) util/run-command.o
LIB_OBJS += $( OUTPUT) util/quote.o
LIB_OBJS += $( OUTPUT) util/strbuf.o
LIB_OBJS += $( OUTPUT) util/string.o
LIB_OBJS += $( OUTPUT) util/strlist.o
2011-01-20 14:15:30 +00:00
LIB_OBJS += $( OUTPUT) util/strfilter.o
2011-01-31 16:50:39 +00:00
LIB_OBJS += $( OUTPUT) util/top.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/usage.o
LIB_OBJS += $( OUTPUT) util/wrapper.o
LIB_OBJS += $( OUTPUT) util/sigchain.o
2012-10-27 21:18:32 +00:00
LIB_OBJS += $( OUTPUT) util/dso.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/symbol.o
2012-08-06 04:41:20 +00:00
LIB_OBJS += $( OUTPUT) util/symbol-elf.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/color.o
LIB_OBJS += $( OUTPUT) util/pager.o
LIB_OBJS += $( OUTPUT) util/header.o
LIB_OBJS += $( OUTPUT) util/callchain.o
LIB_OBJS += $( OUTPUT) util/values.o
LIB_OBJS += $( OUTPUT) util/debug.o
2012-10-06 18:43:20 +00:00
LIB_OBJS += $( OUTPUT) util/machine.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/map.o
2010-05-14 23:05:21 +00:00
LIB_OBJS += $( OUTPUT) util/pstack.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/session.o
LIB_OBJS += $( OUTPUT) util/thread.o
2011-01-18 17:15:24 +00:00
LIB_OBJS += $( OUTPUT) util/thread_map.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/trace-event-parse.o
2012-03-15 19:09:15 +00:00
LIB_OBJS += $( OUTPUT) util/parse-events-flex.o
LIB_OBJS += $( OUTPUT) util/parse-events-bison.o
2012-03-15 19:09:17 +00:00
LIB_OBJS += $( OUTPUT) util/pmu-flex.o
LIB_OBJS += $( OUTPUT) util/pmu-bison.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/trace-event-read.o
LIB_OBJS += $( OUTPUT) util/trace-event-info.o
LIB_OBJS += $( OUTPUT) util/trace-event-scripting.o
LIB_OBJS += $( OUTPUT) util/svghelper.o
LIB_OBJS += $( OUTPUT) util/sort.o
LIB_OBJS += $( OUTPUT) util/hist.o
LIB_OBJS += $( OUTPUT) util/probe-event.o
LIB_OBJS += $( OUTPUT) util/util.o
2011-01-03 18:39:04 +00:00
LIB_OBJS += $( OUTPUT) util/xyarray.o
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/cpumap.o
perf tool: Add cgroup support
This patch adds the ability to filter monitoring based on container groups
(cgroups) for both perf stat and perf record. It is possible to monitor
multiple cgroup in parallel. There is one cgroup per event. The cgroups to
monitor are passed via a new -G option followed by a comma separated list of
cgroup names.
The cgroup filesystem has to be mounted. Given a cgroup name, the perf tool
finds the corresponding directory in the cgroup filesystem and opens it. It
then passes that file descriptor to the kernel.
Example:
$ perf stat -B -a -e cycles:u,cycles:u,cycles:u -G test1,,test2 -- sleep 1
Performance counter stats for 'sleep 1':
2,368,667,414 cycles test1
2,369,661,459 cycles
<not counted> cycles test2
1.001856890 seconds time elapsed
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4d590290.825bdf0a.7d0a.4890@mx.google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-02-14 09:20:01 +00:00
LIB_OBJS += $( OUTPUT) util/cgroup.o
2012-04-26 05:15:22 +00:00
LIB_OBJS += $( OUTPUT) util/target.o
2012-07-31 04:31:32 +00:00
LIB_OBJS += $( OUTPUT) util/rblist.o
2012-07-31 04:31:34 +00:00
LIB_OBJS += $( OUTPUT) util/intlist.o
2012-09-10 16:50:19 +00:00
LIB_OBJS += $( OUTPUT) util/vdso.o
2012-09-17 08:31:14 +00:00
LIB_OBJS += $( OUTPUT) util/stat.o
2012-09-03 02:53:06 +00:00
2012-11-13 13:30:35 +00:00
LIB_OBJS += $( OUTPUT) ui/setup.o
2012-08-16 08:14:50 +00:00
LIB_OBJS += $( OUTPUT) ui/helpline.o
2012-11-13 13:30:32 +00:00
LIB_OBJS += $( OUTPUT) ui/progress.o
2012-11-14 16:47:40 +00:00
LIB_OBJS += $( OUTPUT) ui/util.o
2012-09-03 02:53:06 +00:00
LIB_OBJS += $( OUTPUT) ui/hist.o
2012-08-20 04:52:05 +00:00
LIB_OBJS += $( OUTPUT) ui/stdio/hist.o
2010-03-27 17:30:45 +00:00
2012-10-15 23:33:38 +00:00
LIB_OBJS += $( OUTPUT) arch/common.o
2012-10-30 22:01:43 +00:00
LIB_OBJS += $( OUTPUT) tests/parse-events.o
LIB_OBJS += $( OUTPUT) tests/dso-data.o
2012-10-31 14:52:47 +00:00
LIB_OBJS += $( OUTPUT) tests/attr.o
2012-11-10 00:46:41 +00:00
LIB_OBJS += $( OUTPUT) tests/vmlinux-kallsyms.o
2012-11-10 00:46:42 +00:00
LIB_OBJS += $( OUTPUT) tests/open-syscall.o
2012-11-10 00:46:43 +00:00
LIB_OBJS += $( OUTPUT) tests/open-syscall-all-cpus.o
2012-11-10 00:46:49 +00:00
LIB_OBJS += $( OUTPUT) tests/open-syscall-tp-fields.o
2012-11-10 00:46:44 +00:00
LIB_OBJS += $( OUTPUT) tests/mmap-basic.o
2012-11-10 00:46:45 +00:00
LIB_OBJS += $( OUTPUT) tests/perf-record.o
2012-11-10 00:46:46 +00:00
LIB_OBJS += $( OUTPUT) tests/rdpmc.o
2012-11-10 00:46:47 +00:00
LIB_OBJS += $( OUTPUT) tests/evsel-roundtrip-name.o
2012-11-10 00:46:48 +00:00
LIB_OBJS += $( OUTPUT) tests/evsel-tp-sched.o
2012-11-10 00:46:50 +00:00
LIB_OBJS += $( OUTPUT) tests/pmu.o
2012-12-10 08:29:57 +00:00
LIB_OBJS += $( OUTPUT) tests/hists_link.o
2012-12-14 16:06:13 +00:00
LIB_OBJS += $( OUTPUT) tests/python-use.o
2013-03-10 18:41:10 +00:00
LIB_OBJS += $( OUTPUT) tests/bp_signal.o
2013-03-10 18:41:11 +00:00
LIB_OBJS += $( OUTPUT) tests/bp_signal_overflow.o
2013-03-15 05:58:11 +00:00
LIB_OBJS += $( OUTPUT) tests/task-exit.o
2013-03-18 02:41:47 +00:00
LIB_OBJS += $( OUTPUT) tests/sw-clock.o
2012-10-30 22:01:43 +00:00
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-annotate.o
BUILTIN_OBJS += $( OUTPUT) builtin-bench.o
2009-11-05 00:31:37 +00:00
# Benchmark modules
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) bench/sched-messaging.o
BUILTIN_OBJS += $( OUTPUT) bench/sched-pipe.o
2010-11-25 07:04:53 +00:00
i f e q ( $( RAW_ARCH ) , x 8 6 _ 6 4 )
BUILTIN_OBJS += $( OUTPUT) bench/mem-memcpy-x86-64-asm.o
2012-01-24 12:03:22 +00:00
BUILTIN_OBJS += $( OUTPUT) bench/mem-memset-x86-64-asm.o
2010-11-25 07:04:53 +00:00
e n d i f
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) bench/mem-memcpy.o
2012-01-24 12:03:22 +00:00
BUILTIN_OBJS += $( OUTPUT) bench/mem-memset.o
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-diff.o
2011-03-15 14:04:13 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-evlist.o
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-help.o
BUILTIN_OBJS += $( OUTPUT) builtin-sched.o
BUILTIN_OBJS += $( OUTPUT) builtin-buildid-list.o
BUILTIN_OBJS += $( OUTPUT) builtin-buildid-cache.o
BUILTIN_OBJS += $( OUTPUT) builtin-list.o
BUILTIN_OBJS += $( OUTPUT) builtin-record.o
BUILTIN_OBJS += $( OUTPUT) builtin-report.o
BUILTIN_OBJS += $( OUTPUT) builtin-stat.o
BUILTIN_OBJS += $( OUTPUT) builtin-timechart.o
BUILTIN_OBJS += $( OUTPUT) builtin-top.o
2010-11-16 17:45:39 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-script.o
2010-03-27 17:30:45 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-probe.o
BUILTIN_OBJS += $( OUTPUT) builtin-kmem.o
BUILTIN_OBJS += $( OUTPUT) builtin-lock.o
2010-04-19 05:32:50 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-kvm.o
2010-05-01 06:41:20 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-inject.o
2012-10-30 22:01:43 +00:00
BUILTIN_OBJS += $( OUTPUT) tests/builtin-test.o
2013-01-24 15:10:38 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-mem.o
2009-04-20 13:00:56 +00:00
2013-02-20 15:32:30 +00:00
PERFLIBS = $( LIB_FILE) $( LIBLK) $( LIBTRACEEVENT)
2009-04-20 11:32:07 +00:00
#
# Platform specific tweaks
#
2012-11-14 04:39:50 +00:00
i f n e q ( $( MAKECMDGOALS ) , c l e a n )
2012-11-29 19:34:21 +00:00
i f n e q ( $( MAKECMDGOALS ) , t a g s )
2009-04-20 11:32:07 +00:00
# We choose to avoid "if .. else if .. else .. endif endif"
# because maintaining the nesting to match is a pain. If
# we had "elif" things would have been much nicer...
2012-08-06 04:41:21 +00:00
i f d e f N O _ L I B E L F
2010-04-20 06:58:32 +00:00
NO_DWARF := 1
2012-08-06 04:41:21 +00:00
NO_DEMANGLE := 1
2012-08-19 15:47:14 +00:00
NO_LIBUNWIND := 1
2012-08-06 04:41:21 +00:00
e l s e
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
FLAGS_LIBELF = $( ALL_CFLAGS) $( ALL_LDFLAGS) $( EXTLIBS)
2012-10-09 15:50:01 +00:00
i f n e q ( $( call try -cc ,$ ( SOURCE_LIBELF ) ,$ ( FLAGS_LIBELF ) ,libelf ) , y )
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
FLAGS_GLIBC = $( ALL_CFLAGS) $( ALL_LDFLAGS)
2012-10-09 15:50:01 +00:00
ifeq ( $( call try-cc,$( SOURCE_GLIBC) ,$( FLAGS_GLIBC) ,glibc) ,y)
2012-10-08 06:43:27 +00:00
LIBC_SUPPORT := 1
endif
ifeq ( $( BIONIC) ,1)
LIBC_SUPPORT := 1
endif
ifeq ( $( LIBC_SUPPORT) ,1)
2012-10-29 15:06:46 +00:00
msg := $( warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev) ;
2012-08-06 04:41:21 +00:00
NO_LIBELF := 1
NO_DWARF := 1
NO_DEMANGLE := 1
2012-10-08 06:43:27 +00:00
else
msg := $( error No gnu/libc-version.h found, please install glibc-dev[ el] /glibc-static) ;
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
endif
2012-09-28 09:31:57 +00:00
e l s e
2012-11-03 18:27:57 +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
FLAGS_DWARF = $( ALL_CFLAGS) $( LIBDW_CFLAGS) -ldw -lelf $( LIBDW_LDFLAGS) $( ALL_LDFLAGS) $( EXTLIBS)
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_DWARF) ,$( FLAGS_DWARF) ,libdw) ,y)
2012-09-28 09:31:57 +00: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
e n d i f # SOURCE_LIBELF
2012-08-06 04:41:21 +00:00
e n d i f # NO_LIBELF
2013-02-14 18:59:33 +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 )
NO_LIBUNWIND := 1
e n d i f
2012-08-07 13:20:44 +00:00
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
LIBUNWIND_CFLAGS := -I$( LIBUNWIND_DIR) /include
LIBUNWIND_LDFLAGS := -L$( LIBUNWIND_DIR) /lib
e n d i f
FLAGS_UNWIND = $( LIBUNWIND_CFLAGS) $( ALL_CFLAGS) $( LIBUNWIND_LDFLAGS) $( ALL_LDFLAGS) $( EXTLIBS) $( LIBUNWIND_LIBS)
2012-10-09 15:50:01 +00:00
i f n e q ( $( call try -cc ,$ ( SOURCE_LIBUNWIND ) ,$ ( FLAGS_UNWIND ) ,libunwind ) , y )
2012-08-22 08:38:12 +00:00
msg := $( warning No libunwind found, disabling post unwind support. Please install libunwind-dev[ el] >= 0.99) ;
2012-08-07 13:20:44 +00:00
NO_LIBUNWIND := 1
e n d i f # Libunwind support
e n d i f # NO_LIBUNWIND
2012-08-06 04:41:21 +00:00
- i n c l u d e a r c h / $( ARCH ) / M a k e f i l e
i f n e q ( $( OUTPUT ) , )
BASIC_CFLAGS += -I$( OUTPUT)
e n d i f
i f d e f N O _ L I B E L F
EXTLIBS := $( filter-out -lelf,$( EXTLIBS) )
# Remove ELF/DWARF dependent codes
LIB_OBJS := $( filter-out $( OUTPUT) util/symbol-elf.o,$( LIB_OBJS) )
LIB_OBJS := $( filter-out $( OUTPUT) util/dwarf-aux.o,$( LIB_OBJS) )
LIB_OBJS := $( filter-out $( OUTPUT) util/probe-event.o,$( LIB_OBJS) )
LIB_OBJS := $( filter-out $( OUTPUT) util/probe-finder.o,$( LIB_OBJS) )
BUILTIN_OBJS := $( filter-out $( OUTPUT) builtin-probe.o,$( BUILTIN_OBJS) )
# Use minimal symbol handling
LIB_OBJS += $( OUTPUT) util/symbol-minimal.o
e l s e # NO_LIBELF
2012-09-28 09:31:59 +00:00
BASIC_CFLAGS += -DLIBELF_SUPPORT
2009-10-19 02:20:24 +00:00
2012-10-26 08:55:52 +00:00
FLAGS_LIBELF = $( ALL_CFLAGS) $( ALL_LDFLAGS) $( EXTLIBS)
i f e q ( $( call try -cc ,$ ( SOURCE_ELF_MMAP ) ,$ ( FLAGS_LIBELF ) ,-DLIBELF_MMAP ) , y )
2012-09-28 09:31:59 +00:00
BASIC_CFLAGS += -DLIBELF_MMAP
2009-08-05 12:05:16 +00:00
e n d i f
2010-03-22 16:10:27 +00:00
i f n d e f N O _ D W A R F
2010-04-20 06:58:32 +00:00
i f e q ( $( origin PERF_HAVE_DWARF_REGS ) , u n d e f i n e d )
msg := $( warning DWARF register mappings have not been defined for architecture $( ARCH) , DWARF support disabled) ;
e l s e
2012-11-03 18:27:57 +00:00
BASIC_CFLAGS := -DDWARF_SUPPORT $( LIBDW_CFLAGS) $( BASIC_CFLAGS)
BASIC_LDFLAGS := $( LIBDW_LDFLAGS) $( BASIC_LDFLAGS)
2010-02-25 13:35:42 +00:00
EXTLIBS += -lelf -ldw
2010-03-27 17:30:45 +00:00
LIB_OBJS += $( OUTPUT) util/probe-finder.o
2011-06-27 07:27:27 +00:00
LIB_OBJS += $( OUTPUT) util/dwarf-aux.o
2010-04-20 06:58:32 +00:00
e n d i f # PERF_HAVE_DWARF_REGS
e n d i f # NO_DWARF
2012-08-06 04:41:21 +00:00
e n d i f # NO_LIBELF
2009-10-08 21:17:38 +00:00
2012-09-28 09:32:00 +00:00
i f n d e f N O _ L I B U N W I N D
BASIC_CFLAGS += -DLIBUNWIND_SUPPORT
2012-08-07 13:20:44 +00:00
EXTLIBS += $( LIBUNWIND_LIBS)
BASIC_CFLAGS := $( LIBUNWIND_CFLAGS) $( BASIC_CFLAGS)
BASIC_LDFLAGS := $( LIBUNWIND_LDFLAGS) $( BASIC_LDFLAGS)
2012-08-07 13:20:46 +00:00
LIB_OBJS += $( OUTPUT) util/unwind.o
2012-08-07 13:20:44 +00:00
e n d i f
2012-09-28 09:32:01 +00:00
i f n d e f N O _ L I B A U D I T
2012-09-27 11:23:38 +00:00
FLAGS_LIBAUDIT = $( ALL_CFLAGS) $( ALL_LDFLAGS) -laudit
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_LIBAUDIT) ,$( FLAGS_LIBAUDIT) ,libaudit) ,y)
2012-09-27 11:23:38 +00:00
msg := $( warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev) ;
else
2012-09-28 09:32:01 +00:00
BASIC_CFLAGS += -DLIBAUDIT_SUPPORT
2012-09-27 11:23:38 +00:00
BUILTIN_OBJS += $( OUTPUT) builtin-trace.o
EXTLIBS += -laudit
endif
e n d i f
2013-03-28 14:34:10 +00:00
i f n d e f N O _ S L A N G
FLAGS_SLANG = $( ALL_CFLAGS) $( ALL_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) ;
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
else
# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
BASIC_CFLAGS += -I/usr/include/slang
2013-03-28 14:34:10 +00:00
BASIC_CFLAGS += -DSLANG_SUPPORT
EXTLIBS += -lslang
2012-04-04 07:14:26 +00:00
LIB_OBJS += $( OUTPUT) ui/browser.o
LIB_OBJS += $( OUTPUT) ui/browsers/annotate.o
LIB_OBJS += $( OUTPUT) ui/browsers/hists.o
LIB_OBJS += $( OUTPUT) ui/browsers/map.o
2012-10-30 03:56:04 +00:00
LIB_OBJS += $( OUTPUT) ui/browsers/scripts.o
2012-04-30 04:55:08 +00:00
LIB_OBJS += $( OUTPUT) ui/tui/setup.o
2012-05-29 04:22:58 +00:00
LIB_OBJS += $( OUTPUT) ui/tui/util.o
2012-08-16 08:14:50 +00:00
LIB_OBJS += $( OUTPUT) ui/tui/helpline.o
2012-11-13 13:30:31 +00:00
LIB_OBJS += $( OUTPUT) ui/tui/progress.o
2012-04-04 07:14:26 +00:00
LIB_H += ui/browser.h
LIB_H += ui/browsers/map.h
LIB_H += ui/keysyms.h
LIB_H += ui/libslang.h
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
endif
2009-12-11 09:21:00 +00:00
e n d i f
2009-11-25 07:15:48 +00:00
2012-09-28 09:32:03 +00:00
i f n d e f N O _ G T K 2
2012-08-19 15:46:42 +00:00
FLAGS_GTK2 = $( ALL_CFLAGS) $( ALL_LDFLAGS) $( EXTLIBS) $( shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null)
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_GTK2) ,$( FLAGS_GTK2) ,gtk2) ,y)
2012-03-19 18:13:29 +00:00
msg := $( warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev) ;
else
2012-10-09 15:50:01 +00:00
ifeq ( $( call try-cc,$( SOURCE_GTK2_INFOBAR) ,$( FLAGS_GTK2) ,-DHAVE_GTK_INFO_BAR) ,y)
2012-05-29 04:23:01 +00:00
BASIC_CFLAGS += -DHAVE_GTK_INFO_BAR
endif
2012-09-28 09:32:03 +00:00
BASIC_CFLAGS += -DGTK2_SUPPORT
2012-08-19 15:46:42 +00:00
BASIC_CFLAGS += $( shell pkg-config --cflags gtk+-2.0 2>/dev/null)
EXTLIBS += $( shell pkg-config --libs gtk+-2.0 2>/dev/null)
2012-04-04 07:16:05 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/browser.o
2012-12-21 08:20:13 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/hists.o
2012-04-30 04:55:08 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/setup.o
2012-05-29 04:22:58 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/util.o
2012-08-16 08:14:52 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/helpline.o
2012-11-13 13:30:33 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/progress.o
2013-02-07 09:02:08 +00:00
LIB_OBJS += $( OUTPUT) ui/gtk/annotate.o
2012-03-19 18:13:29 +00:00
endif
e n d i f
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
i f d e f N O _ L I B P E R L
2009-11-25 07:15:48 +00:00
BASIC_CFLAGS += -DNO_LIBPERL
e l s e
2010-08-24 05:23:50 +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) )
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
PERL_EMBED_CCOPTS = ` perl -MExtUtils::Embed -e ccopts 2>/dev/null`
2010-06-18 04:40:06 +00:00
FLAGS_PERL_EMBED = $( PERL_EMBED_CCOPTS) $( PERL_EMBED_LDOPTS)
2009-11-25 07:15:48 +00:00
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_PERL_EMBED) ,$( FLAGS_PERL_EMBED) ,perl) ,y)
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
BASIC_CFLAGS += -DNO_LIBPERL
else
2010-08-24 05:23:50 +00:00
ALL_LDFLAGS += $( PERL_EMBED_LDFLAGS)
EXTLIBS += $( PERL_EMBED_LIBADD)
perf tools: Reorganize the Makefile feature tests
Moving the tests to a separate file, feature-tests.mak and using a try-cc
function similar to the try-run in Kbuild.
This also makes the output more quiet as we can stop using the INTERMEDIATE
target to remove the .perf.dev.null file needed for some gcc versions where
/dev/null can't be used as the output file name.
As the tests get shorter by uninlining the source code used to test for
features, we can more properly use identation.
The feature tests itself can be made more clear and reused, like when trying to
see what is needed to have bfd_demangle.
We also get a bit closer to reusing scripts/Kbuild.include, reducing the
distance from the kernel build system.
Tests performed:
[root@emilia perf]# make -j9 O=/tmp/perf
PERF_VERSION = 0.0.2.PERF
GEN /tmp/perf/common-cmds.h
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/builtin-annotate.o
CC /tmp/perf/bench/sched-messaging.o
CC /tmp/perf/builtin-diff.o
<SNIP>
CC /tmp/perf/scripts/python/Perf-Trace-Util/Context.o
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-help.o
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
If we uninstall, for instance newt-devel we get:
[root@emilia perf]# rpm -e newt-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
CC /tmp/perf/builtin-annotate.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then binutils-devel:
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:564: newt not found, disables TUI support. Please install newt-devel or libnewt-dev
Makefile:632: No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling
* new build flags or prefix
GEN perf-archive
CC /tmp/perf/perf.o
<SNIP>
AR /tmp/perf/libperf.a
LINK /tmp/perf/perf
[root@emilia perf]#
And then strictly required devel packages:
[root@emilia perf]# rpm -e elfutils-libelf-devel elfutils-devel
[root@emilia perf]# make -j9 O=/tmp/perf
Makefile:509: 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
Makefile:542: *** No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel. Stop.
[root@emilia perf]#
After installing everything back on:
[root@emilia perf]# yum install elfutils-devel binutils-devel newt-devel
<SNIP>
Installed:
binutils-devel.x86_64 0:2.20.51.0.2-5.11.el6
elfutils-devel.x86_64 0:0.147-1.el6
elfutils-libelf-devel.x86_64 0:0.147-1.el6
newt-devel.x86_64 0:0.52.11-1.el6
Complete!
[root@emilia perf]# make -j9
PERF_VERSION = 0.0.2.PERF
GEN common-cmds.h
* new build flags or prefix
GEN perf-archive
CC builtin-annotate.o
<SNIP>
AR libperf.a
LINK perf
[root@emilia perf]# make -j9
[root@emilia perf]#
Thanks to Sam for pointing me to try-run.
Cc: David S. Miller <davem@davemloft.net>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Sam Ravnborg <sam@ravnborg.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-06-09 19:57:39 +00:00
LIB_OBJS += $( OUTPUT) util/scripting-engines/trace-event-perl.o
LIB_OBJS += $( OUTPUT) scripts/perl/Perf-Trace-Util/Context.o
endif
2010-01-27 08:27:57 +00:00
e n d i f
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +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
BASIC_CFLAGS += -DNO_LIBPYTHON
$( if $( 1) ,$( warning No $( 1) was found) )
2012-11-14 04:39:50 +00:00
$( warning Python support will not be built)
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
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)
2010-01-27 08:27:57 +00:00
e l s e
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
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)
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_PYTHON_EMBED) ,$( FLAGS_PYTHON_EMBED) ,python) ,y)
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
$( call disable-python,Python.h ( for Python 2.x) )
else
2012-10-09 15:50:01 +00:00
ifneq ( $( call try-cc,$( SOURCE_PYTHON_VERSION) ,$( FLAGS_PYTHON_EMBED) ,python version) ,y)
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00: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
ALL_LDFLAGS += $( PYTHON_EMBED_LDFLAGS)
EXTLIBS += $( PYTHON_EMBED_LIBADD)
LIB_OBJS += $( OUTPUT) util/scripting-engines/trace-event-python.o
LIB_OBJS += $( OUTPUT) scripts/python/Perf-Trace-Util/Context.o
LANG_BINDINGS += $( OUTPUT) python/perf.so
endif
endif
endif
endif
2010-01-27 08:27:57 +00:00
e n d i f
2009-08-05 12:05:16 +00:00
i f d e f N O _ D E M A N G L E
BASIC_CFLAGS += -DNO_DEMANGLE
e l s e
2013-04-24 09:37:29 +00:00
ifdef HAVE_CPLUS_DEMANGLE
2010-07-01 13:19:26 +00:00
EXTLIBS += -liberty
BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
2013-04-24 09:37:29 +00:00
else
2012-09-19 07:29:02 +00:00
FLAGS_BFD = $( ALL_CFLAGS) $( ALL_LDFLAGS) $( EXTLIBS) -DPACKAGE= 'perf' -lbfd
2012-10-09 15:50:01 +00:00
has_bfd := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD) ,libbfd)
2010-07-01 13:19:26 +00:00
ifeq ( $( has_bfd) ,y)
EXTLIBS += -lbfd
2009-08-11 19:22:11 +00:00
else
2010-07-01 13:19:26 +00:00
FLAGS_BFD_IBERTY = $( FLAGS_BFD) -liberty
2012-10-09 15:50:01 +00:00
has_bfd_iberty := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD_IBERTY) ,liberty)
2010-07-01 13:19:26 +00:00
ifeq ( $( has_bfd_iberty) ,y)
EXTLIBS += -lbfd -liberty
2009-08-11 19:22:11 +00:00
else
2010-07-01 13:19:26 +00:00
FLAGS_BFD_IBERTY_Z = $( FLAGS_BFD_IBERTY) -lz
2012-10-09 15:50:01 +00:00
has_bfd_iberty_z := $( call try-cc,$( SOURCE_BFD) ,$( FLAGS_BFD_IBERTY_Z) ,libz)
2010-07-01 13:19:26 +00:00
ifeq ( $( has_bfd_iberty_z) ,y)
EXTLIBS += -lbfd -liberty -lz
2009-08-11 19:22:11 +00:00
else
2010-07-01 13:19:26 +00:00
FLAGS_CPLUS_DEMANGLE = $( ALL_CFLAGS) $( ALL_LDFLAGS) $( EXTLIBS) -liberty
2012-10-09 15:50:01 +00:00
has_cplus_demangle := $( call try-cc,$( SOURCE_CPLUS_DEMANGLE) ,$( FLAGS_CPLUS_DEMANGLE) ,demangle)
2010-07-01 13:19:26 +00:00
ifeq ( $( has_cplus_demangle) ,y)
EXTLIBS += -liberty
BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
else
msg := $( warning No bfd.h/libbfd found, install binutils-dev[ el] /zlib-static to gain symbol demangling)
BASIC_CFLAGS += -DNO_DEMANGLE
endif
2009-08-11 19:22:11 +00:00
endif
endif
endif
2009-08-05 12:05:16 +00:00
endif
e n d i f
2012-08-07 13:20:43 +00:00
i f e q ( $( NO_PERF_REGS ) , 0 )
ifeq ( $( ARCH) ,x86)
LIB_H += arch/x86/include/perf_regs.h
endif
e n d i f
2010-08-21 00:38:20 +00:00
2012-09-28 09:32:08 +00:00
i f n d e f N O _ S T R L C P Y
2012-10-09 15:50:01 +00:00
ifeq ( $( call try-cc,$( SOURCE_STRLCPY) ,,-DHAVE_STRLCPY) ,y)
2012-09-28 09:32:08 +00:00
BASIC_CFLAGS += -DHAVE_STRLCPY
2010-08-21 00:38:20 +00:00
endif
e n d i f
2012-10-08 06:43:26 +00:00
i f n d e f N O _ O N _ E X I T
2012-10-09 15:50:01 +00:00
ifeq ( $( call try-cc,$( SOURCE_ON_EXIT) ,,-DHAVE_ON_EXIT) ,y)
2012-10-08 06:43:26 +00:00
BASIC_CFLAGS += -DHAVE_ON_EXIT
endif
e n d i f
2012-10-01 16:32:51 +00:00
i f n d e f N O _ B A C K T R A C E
2012-10-09 15:50:01 +00:00
ifeq ( $( call try-cc,$( SOURCE_BACKTRACE) ,,-DBACKTRACE_SUPPORT) ,y)
2012-10-01 16:32:51 +00:00
BASIC_CFLAGS += -DBACKTRACE_SUPPORT
2012-09-08 00:43:23 +00:00
endif
e n d i f
2013-01-28 01:51:22 +00:00
i f n d e f N O _ L I B N U M A
FLAGS_LIBNUMA = $( ALL_CFLAGS) $( ALL_LDFLAGS) -lnuma
ifneq ( $( call try-cc,$( SOURCE_LIBNUMA) ,$( FLAGS_LIBNUMA) ,libnuma) ,y)
msg := $( warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numa-libs-devel or libnuma-dev) ;
else
BASIC_CFLAGS += -DLIBNUMA_SUPPORT
BUILTIN_OBJS += $( OUTPUT) bench/numa.o
EXTLIBS += -lnuma
endif
e n d i f
2009-04-20 11:32:07 +00:00
i f d e f A S C I I D O C 8
export ASCIIDOC8
e n d i f
2012-11-29 19:34:21 +00:00
e n d i f # MAKECMDGOALS != tags
2012-11-14 04:39:50 +00:00
e n d i f # MAKECMDGOALS != clean
2009-04-20 11:32:07 +00:00
# Shell quote (do not use $(call) to accommodate ancient setups);
2009-04-20 13:00:56 +00:00
ETC_PERFCONFIG_SQ = $( subst ',' \' ' ,$( ETC_PERFCONFIG) )
2009-04-20 11:32:07 +00:00
DESTDIR_SQ = $( subst ',' \' ' ,$( DESTDIR) )
bindir_SQ = $( subst ',' \' ' ,$( bindir) )
bindir_relative_SQ = $( subst ',' \' ' ,$( bindir_relative) )
mandir_SQ = $( subst ',' \' ' ,$( mandir) )
infodir_SQ = $( subst ',' \' ' ,$( infodir) )
2009-04-20 13:00:56 +00:00
perfexecdir_SQ = $( subst ',' \' ' ,$( perfexecdir) )
2009-04-20 11:32:07 +00:00
template_dir_SQ = $( subst ',' \' ' ,$( template_dir) )
htmldir_SQ = $( subst ',' \' ' ,$( htmldir) )
prefix_SQ = $( subst ',' \' ' ,$( prefix) )
2012-08-09 14:31:53 +00:00
sysconfdir_SQ = $( subst ',' \' ' ,$( sysconfdir) )
2009-04-20 11:32:07 +00:00
SHELL_PATH_SQ = $( subst ',' \' ' ,$( SHELL_PATH) )
2011-06-15 21:03:38 +00:00
LIBS = -Wl,--whole-archive $( PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $( EXTLIBS) -Wl,--end-group
2009-04-20 11:32:07 +00:00
ALL_CFLAGS += $( BASIC_CFLAGS)
2010-11-25 07:04:53 +00:00
ALL_CFLAGS += $( ARCH_CFLAGS)
2009-04-20 11:32:07 +00:00
ALL_LDFLAGS += $( BASIC_LDFLAGS)
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
export INSTALL SHELL_PATH
2009-04-20 11:32:07 +00:00
### Build rules
SHELL = $( SHELL_PATH)
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
all : shell_compatibility_test $( ALL_PROGRAMS ) $( LANG_BINDINGS ) $( OTHER_PROGRAMS )
2009-04-20 11:32:07 +00:00
please_set_SHELL_PATH_to_a_more_modern_shell :
@$$ ( :)
shell_compatibility_test : please_set_SHELL_PATH_to_a_more_modern_shell
2011-02-02 17:57:41 +00:00
strip : $( PROGRAMS ) $( OUTPUT ) perf
$( STRIP) $( STRIP_OPTS) $( PROGRAMS) $( OUTPUT) perf
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)perf.o : perf .c $( OUTPUT ) common -cmds .h $( OUTPUT ) PERF -CFLAGS
2013-01-16 11:59:53 +00:00
$( QUIET_CC) $( CC) -include $( OUTPUT) PERF-VERSION-FILE \
2009-04-20 13:00:56 +00:00
'-DPERF_HTML_PATH="$(htmldir_SQ)"' \
2010-03-27 17:30:45 +00:00
$( ALL_CFLAGS) -c $( filter %.c,$^) -o $@
2009-04-20 11:32:07 +00:00
2011-02-02 17:57:41 +00:00
$(OUTPUT)perf : $( OUTPUT ) perf .o $( BUILTIN_OBJS ) $( PERFLIBS )
2010-08-24 05:23:50 +00:00
$( QUIET_LINK) $( CC) $( ALL_CFLAGS) $( ALL_LDFLAGS) $( OUTPUT) perf.o \
$( BUILTIN_OBJS) $( LIBS) -o $@
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)builtin-help.o : builtin -help .c $( OUTPUT ) common -cmds .h $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) \
2009-04-20 13:00:56 +00:00
'-DPERF_HTML_PATH="$(htmldir_SQ)"' \
'-DPERF_MAN_PATH="$(mandir_SQ)"' \
2009-09-12 05:53:05 +00:00
'-DPERF_INFO_PATH="$(infodir_SQ)"' $<
2010-03-27 17:30:45 +00:00
$(OUTPUT)builtin-timechart.o : builtin -timechart .c $( OUTPUT ) common -cmds .h $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) \
2009-09-12 05:53:05 +00:00
'-DPERF_HTML_PATH="$(htmldir_SQ)"' \
'-DPERF_MAN_PATH="$(mandir_SQ)"' \
2009-04-20 13:00:56 +00:00
'-DPERF_INFO_PATH="$(infodir_SQ)"' $<
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)common-cmds.h : util /generate -cmdlist .sh command -list .txt
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)common-cmds.h : $( wildcard Documentation /perf -*.txt )
2009-09-25 19:01:41 +00:00
$( QUIET_GEN) . util/generate-cmdlist.sh > $@ + && mv $@ + $@
2009-04-20 11:32:07 +00:00
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
$(SCRIPTS) : % : %.sh
$( QUIET_GEN) $( INSTALL) '$@.sh' '$(OUTPUT)$@'
2009-04-20 11:32:07 +00:00
2009-04-20 13:00:56 +00:00
# These can record PERF_VERSION
2010-03-27 17:30:45 +00:00
$( OUTPUT ) p e r f . o p e r f . s p e c \
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
$( SCRIPTS) \
2010-03-27 17:30:45 +00:00
: $( OUTPUT) PERF-VERSION-FILE
2009-04-20 11:32:07 +00:00
2012-03-15 19:09:15 +00:00
.SUFFIXES :
.SUFFIXES : .o .c .S .s
2012-03-29 16:08:38 +00:00
# These two need to be here so that when O= is not used they take precedence
# over the general rule for .o
$(OUTPUT)util/%-flex.o : $( OUTPUT ) util /%-flex .c $( OUTPUT ) PERF -CFLAGS
2012-08-19 23:47:19 +00:00
$( QUIET_CC) $( CC) -o $@ -c -Iutil/ $( ALL_CFLAGS) -w $<
2012-03-29 16:08:38 +00:00
$(OUTPUT)util/%-bison.o : $( OUTPUT ) util /%-bison .c $( OUTPUT ) PERF -CFLAGS
2012-08-19 23:47:19 +00:00
$( QUIET_CC) $( CC) -o $@ -c -Iutil/ $( ALL_CFLAGS) -DYYENABLE_NLS= 0 -DYYLTYPE_IS_TRIVIAL= 0 -w $<
2012-03-29 16:08:38 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)%.o : %.c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $<
2012-03-08 09:29:28 +00:00
$(OUTPUT)%.i : %.c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -E $( ALL_CFLAGS) $<
2010-03-27 17:30:45 +00:00
$(OUTPUT)%.s : %.c $( OUTPUT ) PERF -CFLAGS
2012-03-08 09:29:28 +00:00
$( QUIET_CC) $( CC) -o $@ -S $( ALL_CFLAGS) $<
2010-03-27 17:30:45 +00:00
$(OUTPUT)%.o : %.S
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $<
2012-03-08 09:29:28 +00:00
$(OUTPUT)%.s : %.S
$( QUIET_CC) $( CC) -o $@ -E $( ALL_CFLAGS) $<
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)util/exec_cmd.o : util /exec_cmd .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) \
2009-04-20 13:00:56 +00:00
'-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \
2009-04-20 11:32:07 +00:00
'-DPREFIX="$(prefix_SQ)"' \
$<
2012-10-30 22:02:05 +00:00
$(OUTPUT)tests/attr.o : tests /attr .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) \
2012-12-17 07:25:01 +00:00
'-DBINDIR="$(bindir_SQ)"' -DPYTHON= '"$(PYTHON_WORD)"' \
2012-10-30 22:02:05 +00:00
$<
2012-12-14 16:06:13 +00:00
$(OUTPUT)tests/python-use.o : tests /python -use .c $( OUTPUT ) PERF -CFLAGS
2012-12-17 07:25:01 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) \
2012-12-19 08:52:21 +00:00
-DPYTHONPATH= '"$(OUTPUT)python"' \
2012-12-17 07:25:01 +00:00
-DPYTHON= '"$(PYTHON_WORD)"' \
$<
2012-12-14 16:06:13 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)util/config.o : util /config .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DETC_PERFCONFIG= '"$(ETC_PERFCONFIG_SQ)"' $<
2009-04-20 11:32:07 +00:00
2012-04-04 07:14:26 +00:00
$(OUTPUT)ui/browser.o : ui /browser .c $( OUTPUT ) PERF -CFLAGS
2010-08-06 20:35:02 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
2012-04-04 07:14:26 +00:00
$(OUTPUT)ui/browsers/annotate.o : ui /browsers /annotate .c $( OUTPUT ) PERF -CFLAGS
2010-08-10 17:54:09 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
2012-04-04 07:14:26 +00:00
$(OUTPUT)ui/browsers/hists.o : ui /browsers /hists .c $( OUTPUT ) PERF -CFLAGS
2010-08-10 18:49:07 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
2012-04-04 07:14:26 +00:00
$(OUTPUT)ui/browsers/map.o : ui /browsers /map .c $( OUTPUT ) PERF -CFLAGS
2010-08-10 18:37:34 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
2012-10-30 03:56:04 +00:00
$(OUTPUT)ui/browsers/scripts.o : ui /browsers /scripts .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<
2010-03-27 17:30:45 +00:00
$(OUTPUT)util/rbtree.o : ../../lib /rbtree .c $( OUTPUT ) PERF -CFLAGS
2012-10-09 18:01:56 +00:00
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG= '"$(ETC_PERFCONFIG_SQ)"' $<
2009-07-01 15:28:37 +00:00
2012-07-23 21:04:07 +00:00
$(OUTPUT)util/parse-events.o : util /parse -events .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) -Wno-redundant-decls $<
2010-03-27 17:30:45 +00:00
$(OUTPUT)util/scripting-engines/trace-event-perl.o : util /scripting -engines /trace -event -perl .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $( PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
2009-11-25 07:15:48 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o : scripts /perl /Perf -Trace -Util /Context .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $( PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
2009-11-25 07:15:50 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)util/scripting-engines/trace-event-python.o : util /scripting -engines /trace -event -python .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $( PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
2010-01-27 08:27:57 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)scripts/python/Perf-Trace-Util/Context.o : scripts /python /Perf -Trace -Util /Context .c $( OUTPUT ) PERF -CFLAGS
$( QUIET_CC) $( CC) -o $@ -c $( ALL_CFLAGS) $( PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
2010-01-27 08:27:57 +00:00
2011-02-02 17:57:41 +00:00
$(OUTPUT)perf-% : %.o $( PERFLIBS )
2009-04-20 11:32:07 +00:00
$( QUIET_LINK) $( CC) $( ALL_CFLAGS) -o $@ $( ALL_LDFLAGS) $( filter %.o,$^) $( LIBS)
$(LIB_OBJS) $(BUILTIN_OBJS) : $( LIB_H )
2011-02-02 17:57:41 +00:00
$(patsubst perf-%,%.o,$(PROGRAMS)) : $( LIB_H ) $( wildcard */*.h )
2009-04-20 11:32:07 +00:00
2010-08-17 15:22:08 +00:00
# we compile into subdirectories. if the target directory is not the source directory, they might not exists. So
# we depend the various files onto their directories.
DIRECTORY_DEPS = $( LIB_OBJS) $( BUILTIN_OBJS) $( OUTPUT) PERF-VERSION-FILE $( OUTPUT) common-cmds.h
2010-09-26 17:17:42 +00:00
$(DIRECTORY_DEPS) : | $( sort $ ( dir $ ( DIRECTORY_DEPS ) ) )
2010-08-17 15:22:08 +00:00
# In the second step, we make a rule to actually create these directories
$(sort $(dir $(DIRECTORY_DEPS))) :
$( QUIET_MKDIR) $( MKDIR) -p $@ 2>/dev/null
2009-04-20 11:32:07 +00:00
$(LIB_FILE) : $( LIB_OBJS )
$( QUIET_AR) $( RM) $@ && $( AR) rcs $@ $( LIB_OBJS)
2012-05-22 09:03:53 +00:00
# libtraceevent.a
$(LIBTRACEEVENT) :
2012-08-07 17:43:12 +00:00
$( QUIET_SUBDIR0) $( TRACE_EVENT_DIR) $( QUIET_SUBDIR1) O = $( OUTPUT) libtraceevent.a
2012-04-05 22:47:54 +00:00
2012-09-06 00:53:36 +00:00
$(LIBTRACEEVENT)-clean :
$( QUIET_SUBDIR0) $( TRACE_EVENT_DIR) $( QUIET_SUBDIR1) O = $( OUTPUT) clean
2013-02-20 15:32:30 +00:00
# if subdir is set, we've been called from above so target has been built
# already
$(LIBLK) :
i f e q ( $( subdir ) , )
$( QUIET_SUBDIR0) $( LK_DIR) $( QUIET_SUBDIR1) O = $( OUTPUT) liblk.a
e n d i f
$(LIBLK)-clean :
i f e q ( $( subdir ) , )
$( QUIET_SUBDIR0) $( LK_DIR) $( QUIET_SUBDIR1) O = $( OUTPUT) clean
e n d i f
2011-02-10 01:11:00 +00:00
help :
@echo 'Perf make targets:'
@echo ' doc - make *all* documentation (see below)'
@echo ' man - make manpage documentation (access with man <foo>)'
@echo ' html - make html documentation'
@echo ' info - make GNU info documentation (access with info <foo>)'
@echo ' pdf - make pdf documentation'
@echo ' TAGS - use etags to make tag information for source browsing'
@echo ' tags - use ctags to make tag information for source browsing'
@echo ' cscope - use cscope to make interactive browsing database'
@echo ''
@echo 'Perf install targets:'
@echo ' NOTE: documentation build requires asciidoc, xmlto packages to be installed'
@echo ' HINT: use "make prefix=<path> <install target>" to install to a particular'
@echo ' path like make prefix=/usr/local install install-doc'
@echo ' install - install compiled binaries'
@echo ' install-doc - install *all* documentation'
@echo ' install-man - install manpage documentation'
@echo ' install-html - install html documentation'
@echo ' install-info - install GNU info documentation'
@echo ' install-pdf - install pdf documentation'
@echo ''
@echo ' quick-install-doc - alias for quick-install-man'
@echo ' quick-install-man - install the documentation quickly'
@echo ' quick-install-html - install the html documentation quickly'
@echo ''
@echo 'Perf maintainer targets:'
@echo ' clean - clean all binary objects and build output'
2009-05-30 10:38:51 +00:00
2012-10-26 08:55:49 +00:00
DOC_TARGETS := doc man html info pdf
2009-05-30 10:38:51 +00:00
2012-10-26 08:55:49 +00:00
INSTALL_DOC_TARGETS := $( patsubst %,install-%,$( DOC_TARGETS) ) try-install-man
INSTALL_DOC_TARGETS += quick-install-doc quick-install-man quick-install-html
2009-05-30 10:38:51 +00:00
2012-10-26 08:55:49 +00:00
# 'make doc' should call 'make -C Documentation all'
$(DOC_TARGETS) :
2012-10-26 08:55:50 +00:00
$( QUIET_SUBDIR0) Documentation $( QUIET_SUBDIR1) $( @:doc= all)
2009-05-30 10:38:51 +00:00
2009-04-20 11:32:07 +00:00
TAGS :
$( RM) TAGS
$( FIND) . -name '*.[hcS]' -print | xargs etags -a
tags :
$( RM) tags
$( FIND) . -name '*.[hcS]' -print | xargs ctags -a
cscope :
$( RM) cscope*
$( FIND) . -name '*.[hcS]' -print | xargs cscope -b
### Detect prefix changes
TRACK_CFLAGS = $( subst ',' \' ' ,$( ALL_CFLAGS) ) :\
2009-04-20 13:00:56 +00:00
$( bindir_SQ) :$( perfexecdir_SQ) :$( template_dir_SQ) :$( prefix_SQ)
2009-04-20 11:32:07 +00:00
2010-03-27 17:30:45 +00:00
$(OUTPUT)PERF-CFLAGS : .FORCE -PERF -CFLAGS
2009-04-20 11:32:07 +00:00
@FLAGS= '$(TRACK_CFLAGS)' ; \
2010-03-27 17:30:45 +00:00
if test x" $$ FLAGS " != x" `cat $( OUTPUT) PERF-CFLAGS 2>/dev/null` " ; then \
2009-04-20 11:32:07 +00:00
echo 1>& 2 " * new build flags or prefix" ; \
2010-03-27 17:30:45 +00:00
echo " $$ FLAGS " >$( OUTPUT) PERF-CFLAGS; \
2009-04-20 11:32:07 +00:00
fi
### Testing rules
# GNU make supports exporting all variables by "export" without parameters.
# However, the environment gets quite big, and some programs have problems
# with that.
2010-03-27 17:30:45 +00:00
check : $( OUTPUT ) common -cmds .h
2009-04-20 11:32:07 +00:00
if sparse; \
then \
2009-04-27 06:02:14 +00:00
for i in *.c */*.c; \
2009-04-20 11:32:07 +00:00
do \
sparse $( ALL_CFLAGS) $( SPARSE_FLAGS) $$ i || exit; \
done ; \
else \
exit 1; \
fi
### Installation rules
2009-04-20 13:00:56 +00:00
i f n e q ( $( filter /%,$ ( firstword $ ( perfexecdir ) ) ) , )
perfexec_instdir = $( perfexecdir)
2009-04-20 11:32:07 +00:00
e l s e
2009-04-20 13:00:56 +00:00
perfexec_instdir = $( prefix) /$( perfexecdir)
2009-04-20 11:32:07 +00:00
e n d i f
2009-04-20 13:00:56 +00:00
perfexec_instdir_SQ = $( subst ',' \' ' ,$( perfexec_instdir) )
2009-04-20 11:32:07 +00:00
2012-12-11 12:54:21 +00:00
install-bin : all
2009-04-20 11:32:07 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
2011-02-02 17:57:41 +00:00
$( INSTALL) $( OUTPUT) perf '$(DESTDIR_SQ)$(bindir_SQ)'
2009-11-25 07:15:49 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin'
2010-03-27 17:30:45 +00:00
$( INSTALL) $( OUTPUT) perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
2009-11-25 07:15:49 +00:00
$( INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
$( INSTALL) scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl'
$( INSTALL) scripts/perl/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin'
2010-01-27 08:27:57 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'
2010-01-27 08:27:58 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
2010-01-27 08:27:57 +00:00
$( INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'
2010-01-27 08:27:58 +00:00
$( INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
$( INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
2012-08-09 14:31:53 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'
$( INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'
2012-10-30 22:02:05 +00:00
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'
$( INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'
$( INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
$( INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'
2010-01-27 08:27:55 +00:00
2012-12-11 12:54:21 +00:00
install : install -bin try -install -man
2011-07-22 11:33:07 +00:00
install-python_ext :
$( PYTHON_WORD) util/setup.py --quiet install --root= '/$(DESTDIR_SQ)'
2012-10-26 08:55:49 +00:00
# 'make install-doc' should call 'make -C Documentation install'
$(INSTALL_DOC_TARGETS) :
2012-10-26 08:55:50 +00:00
$( QUIET_SUBDIR0) Documentation $( QUIET_SUBDIR1) $( @:-doc= )
2009-05-30 10:38:51 +00:00
2009-04-20 11:32:07 +00:00
### Cleaning rules
2013-02-20 15:32:30 +00:00
clean : $( LIBTRACEEVENT ) -clean $( LIBLK ) -clean
2011-08-07 08:39:31 +00:00
$( RM) $( LIB_OBJS) $( BUILTIN_OBJS) $( LIB_FILE) $( OUTPUT) perf-archive $( OUTPUT) perf.o $( LANG_BINDINGS)
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
$( RM) $( ALL_PROGRAMS) perf
2010-03-27 17:30:45 +00:00
$( RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $( OUTPUT) common-cmds.h TAGS tags cscope*
2012-10-26 08:55:50 +00:00
$( QUIET_SUBDIR0) Documentation $( QUIET_SUBDIR1) clean
perf tools: Makefile: Remove various and sundry cruft
This commit squashes several commits that remove:
unnecessary uname calls
`sh -c'
BUILT_INS and QUIET_BUILT_IN
They have no effect, and the `fixup-builtins' and `check-builtins.sh'
scripts don't even exist.
RUNTIME_PREFIX
It's currently never anything but unset, and it's apparently
only meaningful when Microsoft Windows is the operating system
(according to the source for git).
TEST_PROGRAMS
EXTRA_PROGRAMS
unused SHELL_PATH_SQ portions
unused test for V=2
useless exports
Only when `V' is undefined (that is, only when the value of `V'
is empty) is `export V' performed, which just has the effect of
placing the empty-valued variable `V' in the environment.
The only other script to make use of `V' is `Documentation/Makefile',
which only checks whether `V' is undefined (that is, whether the value
of `V' is empty); hence, the `export V' has no effect whatsoever.
Similarly, `export QUIET_GEN' is useless because it will only have
a non-empty value when `V' has an empty-value, and when `V' has
an empty-value, `QUIET_GEN' is always explicitly set in every
script in which it is used.
`DESTDIR' is only ever defined by the user via the environment
or the command line, both of which are automatically exported
to sub-make processes. Furthermore, no non-make sub-scripts
make use of `DESTDIR' as an environment variable.
No other scripts use `perfexec_instdir'.
unused QUIET_SUBDIR{0,1}
TAR and RPMBUILD
PTHREAD_LIBS
Maintainer's dist rules and commands
distclean target
Test suite coverage testing
PRINT_DIR and NO_SUBDIR
`configure' target
NO_CURL
@@PERF_VERSION@@ substitution
Without the sed command, all of the rule's commands can be reduced
to a single line that copies a file and sets the permissions properly
in the process.
`make test' echo line
template_instdir
PERF-BUILD-OPTIONS
double-colon rules
The use of double-colon rules seems misguided or vestigial git.
Essentially hard-coded $(SCRIPTS) expansion
Signed-off-by: Michael Witten <mfwitten@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-02-02 20:22:08 +00:00
$( RM) $( OUTPUT) PERF-VERSION-FILE $( OUTPUT) PERF-CFLAGS
2012-07-29 21:54:43 +00:00
$( RM) $( OUTPUT) util/*-bison*
$( RM) $( OUTPUT) util/*-flex*
perf tools: Makefile: PYTHON{,_CONFIG} to bandage Python 3 incompatibility
Currently, Python 3 is not supported by perf's code; this
can cause the build to fail for systems that have Python 3
installed as the default python:
python{,-config}
The Correct Solution is to write compatibility code so that
Python 3 works out-of-the-box.
However, users often have an ancillary Python 2 installed:
python2{,-config}
Therefore, a quick fix is to allow the user to specify those
ancillary paths as the python binaries that Makefile should
use, thereby avoiding Python 3 altogether; as an added benefit,
the Python binaries may be installed in non-standard locations
without the need for updating any PATH variable.
This commit adds the ability to set PYTHON and/or PYTHON_CONFIG
either as environment variables or as make variables on the
command line; the paths may be relative, and usually only PYTHON
is necessary in order for PYTHON_CONFIG to be defined implicitly.
Some rudimentary error checking is performed when the user
explicitly specifies a value for any of these variables.
In addition, this commit introduces significantly robust makefile
infrastructure for working with paths and communicating with the
shell; it's currently only used for handling Python, but I hope
it will prove useful in refactoring the makefiles.
Thanks to:
Raghavendra D Prabhu <rprabhu@wnohang.net>
for motivating this patch.
Acked-by: Raghavendra D Prabhu <rprabhu@wnohang.net>
Link: http://lkml.kernel.org/r/e987828e-87ec-4973-95e7-47f10f5d9bab-mfwitten@gmail.com
Signed-off-by: Michael Witten <mfwitten@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2011-04-02 21:46:09 +00:00
$( python-clean)
2009-04-20 11:32:07 +00:00
2013-02-20 15:32:30 +00:00
.PHONY : all install clean strip $( LIBTRACEEVENT ) $( LIBLK )
2009-04-20 11:32:07 +00:00
.PHONY : shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
2009-04-20 13:00:56 +00:00
.PHONY : .FORCE -PERF -VERSION -FILE TAGS tags cscope .FORCE -PERF -CFLAGS