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
|
|
|
|
|
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
|
2013-03-24 23:56:08 +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
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/browsers/scripts.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/tui/setup.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/tui/util.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/tui/helpline.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/tui/progress.o
|
|
|
|
LIB_H += ui/browser.h
|
|
|
|
LIB_H += ui/browsers/map.h
|
|
|
|
LIB_H += ui/keysyms.h
|
|
|
|
LIB_H += ui/libslang.h
|
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
|
2013-03-17 23:09:24 +00:00
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/browser.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/hists.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/setup.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/util.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/helpline.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/progress.o
|
|
|
|
LIB_OBJS += $(OUTPUT)ui/gtk/annotate.o
|
2012-03-19 18:13:29 +00:00
|
|
|
endif
|
|
|
|
|
2013-03-17 23:19:44 +00:00
|
|
|
ifndef NO_LIBPERL
|
|
|
|
LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o
|
|
|
|
LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o
|
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
|