2012-04-11 16:36:14 +00:00
|
|
|
include ../scripts/Makefile.include
|
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
|
|
|
include config/utilities.mak
|
|
|
|
|
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
|
|
|
|
2013-03-24 23:40:48 +00:00
|
|
|
ifeq ($(srctree),)
|
|
|
|
srctree := $(patsubst %/,%,$(dir $(shell pwd)))
|
|
|
|
srctree := $(patsubst %/,%,$(dir $(srctree)))
|
|
|
|
#$(info Determined 'srctree' to be $(srctree))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(objtree),)
|
|
|
|
#$(info Determined 'objtree' to be $(objtree))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(OUTPUT),)
|
|
|
|
#$(info Determined 'OUTPUT' to be $(OUTPUT))
|
|
|
|
endif
|
|
|
|
|
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-24 23:40:48 +00:00
|
|
|
LK_DIR = ../lib/lk/
|
|
|
|
TRACE_EVENT_DIR = ../lib/traceevent/
|
|
|
|
|
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
|
|
|
|
|
|
|
|
ifdef MAKECMDGOALS
|
|
|
|
ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
|
|
|
|
config := 0
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(config),1)
|
|
|
|
include config/Makefile
|
2010-04-20 06:58:32 +00:00
|
|
|
endif
|
|
|
|
|
2013-03-28 14:34:10 +00:00
|
|
|
ifdef NO_NEWT
|
|
|
|
NO_SLANG=1
|
|
|
|
endif
|
|
|
|
|
2009-04-20 11:32:07 +00:00
|
|
|
# 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
|
|
|
|
ifndef DESTDIR
|
2009-04-20 11:32:07 +00:00
|
|
|
prefix = $(HOME)
|
2010-03-11 12:57:00 +00:00
|
|
|
endif
|
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
|
|
|
ifeq ($(prefix),/usr)
|
|
|
|
sysconfdir = /etc
|
2009-04-20 13:00:56 +00:00
|
|
|
ETC_PERFCONFIG = $(sysconfdir)/perfconfig
|
2009-04-20 11:32:07 +00:00
|
|
|
else
|
|
|
|
sysconfdir = $(prefix)/etc
|
2009-04-20 13:00:56 +00:00
|
|
|
ETC_PERFCONFIG = etc/perfconfig
|
2009-04-20 11:32:07 +00:00
|
|
|
endif
|
|
|
|
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__
|
|
|
|
|
|
|
|
# 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_PATH=$(LK_DIR)
|
|
|
|
|
2012-10-18 14:38:35 +00:00
|
|
|
ifneq ($(OUTPUT),)
|
|
|
|
TE_PATH=$(OUTPUT)
|
2013-02-20 15:32:30 +00:00
|
|
|
ifneq ($(subdir),)
|
|
|
|
LK_PATH=$(OUTPUT)$(LK_DIR)
|
|
|
|
else
|
|
|
|
LK_PATH=$(OUTPUT)
|
|
|
|
endif
|
2012-10-18 14:38:35 +00:00
|
|
|
else
|
|
|
|
TE_PATH=$(TRACE_EVENT_DIR)
|
|
|
|
endif
|
|
|
|
|
|
|
|
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.
|
|
|
|
ifndef SHELL_PATH
|
|
|
|
SHELL_PATH = /bin/sh
|
|
|
|
endif
|
|
|
|
ifndef PERL_PATH
|
|
|
|
PERL_PATH = /usr/bin/perl
|
|
|
|
endif
|
|
|
|
|
|
|
|
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
|
|
|
ifeq ($(RAW_ARCH),x86_64)
|
|
|
|
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
|
|
|
endif
|
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
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
2012-11-29 19:34:21 +00:00
|
|
|
ifneq ($(MAKECMDGOALS),tags)
|
2009-04-20 11:32:07 +00:00
|
|
|
|
2013-03-24 23:40:48 +00:00
|
|
|
-include config/feature-tests.mak
|
|
|
|
|
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
|
|
|
-include arch/$(ARCH)/Makefile
|
|
|
|
|
|
|
|
ifneq ($(OUTPUT),)
|
|
|
|
BASIC_CFLAGS += -I$(OUTPUT)
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef NO_LIBELF
|
|
|
|
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
|
|
|
|
|
|
|
|
else # NO_LIBELF
|
2010-03-22 16:10:27 +00:00
|
|
|
ifndef NO_DWARF
|
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
|
|
|
endif # NO_DWARF
|
2012-08-06 04:41:21 +00:00
|
|
|
endif # NO_LIBELF
|
2009-10-08 21:17:38 +00:00
|
|
|
|
2012-09-28 09:32:00 +00:00
|
|
|
ifndef NO_LIBUNWIND
|
2012-08-07 13:20:46 +00:00
|
|
|
LIB_OBJS += $(OUTPUT)util/unwind.o
|
2012-08-07 13:20:44 +00:00
|
|
|
endif
|
|
|
|
|
2012-09-28 09:32:01 +00:00
|
|
|
ifndef NO_LIBAUDIT
|
2013-03-24 23:54:36 +00:00
|
|
|
BUILTIN_OBJS += $(OUTPUT)builtin-trace.o
|
2012-09-27 11:23:38 +00:00
|
|
|
endif
|
|
|
|
|
2013-03-28 14:34:10 +00:00
|
|
|
ifndef NO_SLANG
|
|
|
|
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
|
|
|
endif
|
2009-11-25 07:15:48 +00:00
|
|
|
|
2012-09-28 09:32:03 +00:00
|
|
|
ifndef NO_GTK2
|
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
|
|
|
|
endif
|
|
|
|
|
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
|
|
|
ifdef NO_LIBPERL
|
2009-11-25 07:15:48 +00:00
|
|
|
BASIC_CFLAGS += -DNO_LIBPERL
|
|
|
|
else
|
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
|
|
|
endif
|
|
|
|
|
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))
|
|
|
|
define disable-python_code
|
|
|
|
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
|
|
|
endef
|
|
|
|
|
|
|
|
override PYTHON := \
|
|
|
|
$(call get-executable-or-default,PYTHON,python)
|
|
|
|
|
|
|
|
ifndef PYTHON
|
|
|
|
$(call disable-python,python interpreter)
|
2010-01-27 08:27:57 +00:00
|
|
|
else
|
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
|
|
|
endif
|
|
|
|
|
2009-08-05 12:05:16 +00:00
|
|
|
ifdef NO_DEMANGLE
|
|
|
|
BASIC_CFLAGS += -DNO_DEMANGLE
|
|
|
|
else
|
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
|
|
|
|
endif
|
|
|
|
|
2012-08-07 13:20:43 +00:00
|
|
|
ifeq ($(NO_PERF_REGS),0)
|
|
|
|
ifeq ($(ARCH),x86)
|
|
|
|
LIB_H += arch/x86/include/perf_regs.h
|
|
|
|
endif
|
|
|
|
endif
|
2010-08-21 00:38:20 +00:00
|
|
|
|
2012-09-28 09:32:08 +00:00
|
|
|
ifndef NO_STRLCPY
|
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
|
|
|
|
endif
|
|
|
|
|
2012-10-08 06:43:26 +00:00
|
|
|
ifndef NO_ON_EXIT
|
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
|
|
|
|
endif
|
|
|
|
|
2012-10-01 16:32:51 +00:00
|
|
|
ifndef NO_BACKTRACE
|
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
|
|
|
|
endif
|
|
|
|
|
2013-01-28 01:51:22 +00:00
|
|
|
ifndef NO_LIBNUMA
|
|
|
|
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
|
|
|
|
endif
|
|
|
|
|
2009-04-20 11:32:07 +00:00
|
|
|
ifdef ASCIIDOC8
|
|
|
|
export ASCIIDOC8
|
|
|
|
endif
|
|
|
|
|
2012-11-29 19:34:21 +00:00
|
|
|
endif # MAKECMDGOALS != tags
|
2012-11-14 04:39:50 +00:00
|
|
|
endif # 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)perf.o perf.spec \
|
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):
|
|
|
|
ifeq ($(subdir),)
|
|
|
|
$(QUIET_SUBDIR0)$(LK_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) liblk.a
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(LIBLK)-clean:
|
|
|
|
ifeq ($(subdir),)
|
|
|
|
$(QUIET_SUBDIR0)$(LK_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean
|
|
|
|
endif
|
|
|
|
|
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
|
|
|
ifneq ($(filter /%,$(firstword $(perfexecdir))),)
|
|
|
|
perfexec_instdir = $(perfexecdir)
|
2009-04-20 11:32:07 +00:00
|
|
|
else
|
2009-04-20 13:00:56 +00:00
|
|
|
perfexec_instdir = $(prefix)/$(perfexecdir)
|
2009-04-20 11:32:07 +00:00
|
|
|
endif
|
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
|