2013-10-08

To make it more apparent that there is not change in functionality we introduced

Makefile.parallel separately and now flip it with the main Makefile, which

moves into Makefile.perf.

The renames are:

Makefile.parallel => Makefile

Makefile => Makefile.perf

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>

Cc: Namhyung Kim <namhyung@kernel.org>

Cc: David Ahern <dsahern@gmail.com>

Cc: Jiri Olsa <jolsa@redhat.com>

Link: http://lkml.kernel.org/n/tip-igRfuw9ugbnnpixLd6wpptzl@git.kernel.org

Signed-off-by: Ingo Molnar <mingo@kernel.org>

---

tools/perf/Makefile | 844 ++-------------------------------------------------------------

tools/perf/Makefile.parallel | 26 --

tools/perf/Makefile.perf | 842 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3 files changed, 856 insertions(+), 856 deletions(-)

diff --git a/tools/perf/Makefile b/tools/perf/Makefile

index 6b7779b..ce7874b 100644

--- a/tools/perf/Makefile

+++ b/tools/perf/Makefile

@@ -1,841 +1,25 @@

-include ../scripts/Makefile.include

-

-# The default target of this Makefile is...

-all:

-

-include config/utilities.mak

-

-# Define V to have a more verbose compile.

-#

-# 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.

-#

-# 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.

-#

-# 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.

-#

-# Define LDFLAGS=-static to build a static binary.

-#

-# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.

-#

-# Define NO_DWARF if you do not want debug-info analysis feature at all.

-#

-# Define WERROR=0 to disable treating any warnings as errors.

-#

-# Define NO_NEWT if you do not want TUI support. (deprecated)

-#

-# Define NO_SLANG if you do not want TUI support.

-#

-# Define NO_GTK2 if you do not want GTK+ GUI support.

-#

-# Define NO_DEMANGLE if you do not want C++ symbol demangling.

-#

-# Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds)

-#

-# Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf

-# backtrace post unwind.

#

-# Define NO_BACKTRACE if you do not want stack backtrace debug feature

+# Do a parallel build with multiple jobs, based on the number of CPUs online

+# in this system: 'make -j8' on a 8-CPU system, etc.

#

-# Define NO_LIBNUMA if you do not want numa perf benchmark

+# (To override it, run 'make JOBS=1' and similar.)

#

-# Define NO_LIBAUDIT if you do not want libaudit support

-#

-# Define NO_LIBBIONIC if you do not want bionic support

-

-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

-

-$(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD

- @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)

- @touch $(OUTPUT)PERF-VERSION-FILE

-

-CC = $(CROSS_COMPILE)gcc

-AR = $(CROSS_COMPILE)ar

-

-RM = rm -f

-MKDIR = mkdir

-FIND = find

-INSTALL = install

-FLEX = flex

-BISON = bison

-STRIP = strip

-

-LK_DIR = $(srctree)/tools/lib/lk/

-TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/

-

-# 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

-endif

-

-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 =

-PYRF_OBJS =

-SCRIPT_SH =

-

-SCRIPT_SH += perf-archive.sh

-

-grep-libs = $(filter -l%,$(1))

-strip-libs = $(filter-out -l%,$(1))

-

-ifneq ($(OUTPUT),)

- TE_PATH=$(OUTPUT)

-ifneq ($(subdir),)

- LK_PATH=$(OUTPUT)/../lib/lk/

-else

- LK_PATH=$(OUTPUT)

-endif

-else

- TE_PATH=$(TRACE_EVENT_DIR)

- LK_PATH=$(LK_DIR)

-endif

-

-LIBTRACEEVENT = $(TE_PATH)libtraceevent.a

-export LIBTRACEEVENT

-

-LIBLK = $(LK_PATH)liblk.a

-export LIBLK

-

-# 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

-

-PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources)

-PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBLK)

-

-$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS)

- $(QUIET_GEN)CFLAGS='$(CFLAGS)' $(PYTHON_WORD) util/setup.py \

- --quiet build_ext; \

- mkdir -p $(OUTPUT)python && \

- cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/

-#

-# No Perl scripts right now:

-#

-

-SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH))

-

-#

-# Single 'perf' binary right now:

-#

-PROGRAMS += $(OUTPUT)perf

-

-# what 'all' will build and 'install' will install, in perfexecdir

-ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)

-

-# what 'all' will build but not install in perfexecdir

-OTHER_PROGRAMS = $(OUTPUT)perf

-

-# 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

-

-$(OUTPUT)util/parse-events-flex.c: util/parse-events.l $(OUTPUT)util/parse-events-bison.c

- $(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

-

-$(OUTPUT)util/parse-events-bison.c: util/parse-events.y

- $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c -p parse_events_

-

-$(OUTPUT)util/pmu-flex.c: util/pmu.l $(OUTPUT)util/pmu-bison.c

- $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c

-

-$(OUTPUT)util/pmu-bison.c: util/pmu.y

- $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_

-

-$(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

-

-LIB_FILE=$(OUTPUT)libperf.a

-

-LIB_H += ../../include/uapi/linux/perf_event.h

-LIB_H += ../../include/linux/rbtree.h

-LIB_H += ../../include/linux/list.h

-LIB_H += ../../include/uapi/linux/const.h

-LIB_H += ../../include/linux/hash.h

-LIB_H += ../../include/linux/stringify.h

-LIB_H += util/include/linux/bitmap.h

-LIB_H += util/include/linux/bitops.h

-LIB_H += util/include/linux/compiler.h

-LIB_H += util/include/linux/const.h

-LIB_H += util/include/linux/ctype.h

-LIB_H += util/include/linux/kernel.h

-LIB_H += util/include/linux/list.h

-LIB_H += util/include/linux/export.h

-LIB_H += util/include/linux/magic.h

-LIB_H += util/include/linux/poison.h

-LIB_H += util/include/linux/prefetch.h

-LIB_H += util/include/linux/rbtree.h

-LIB_H += util/include/linux/rbtree_augmented.h

-LIB_H += util/include/linux/string.h

-LIB_H += util/include/linux/types.h

-LIB_H += util/include/linux/linkage.h

-LIB_H += util/include/asm/asm-offsets.h

-LIB_H += util/include/asm/bug.h

-LIB_H += util/include/asm/byteorder.h

-LIB_H += util/include/asm/hweight.h

-LIB_H += util/include/asm/swab.h

-LIB_H += util/include/asm/system.h

-LIB_H += util/include/asm/uaccess.h

-LIB_H += util/include/dwarf-regs.h

-LIB_H += util/include/asm/dwarf2.h

-LIB_H += util/include/asm/cpufeature.h

-LIB_H += util/include/asm/unistd_32.h

-LIB_H += util/include/asm/unistd_64.h

-LIB_H += perf.h

-LIB_H += util/annotate.h

-LIB_H += util/cache.h

-LIB_H += util/callchain.h

-LIB_H += util/build-id.h

-LIB_H += util/debug.h

-LIB_H += util/sysfs.h

-LIB_H += util/pmu.h

-LIB_H += util/event.h

-LIB_H += util/evsel.h

-LIB_H += util/evlist.h

-LIB_H += util/exec_cmd.h

-LIB_H += util/types.h

-LIB_H += util/levenshtein.h

-LIB_H += util/machine.h

-LIB_H += util/map.h

-LIB_H += util/parse-options.h

-LIB_H += util/parse-events.h

-LIB_H += util/quote.h

-LIB_H += util/util.h

-LIB_H += util/xyarray.h

-LIB_H += util/header.h

-LIB_H += util/help.h

-LIB_H += util/session.h

-LIB_H += util/strbuf.h

-LIB_H += util/strlist.h

-LIB_H += util/strfilter.h

-LIB_H += util/svghelper.h

-LIB_H += util/tool.h

-LIB_H += util/run-command.h

-LIB_H += util/sigchain.h

-LIB_H += util/dso.h

-LIB_H += util/symbol.h

-LIB_H += util/color.h

-LIB_H += util/values.h

-LIB_H += util/sort.h

-LIB_H += util/hist.h

-LIB_H += util/thread.h

-LIB_H += util/thread_map.h

-LIB_H += util/trace-event.h

-LIB_H += util/probe-finder.h

-LIB_H += util/dwarf-aux.h

-LIB_H += util/probe-event.h

-LIB_H += util/pstack.h

-LIB_H += util/cpumap.h

-LIB_H += util/top.h

-LIB_H += $(ARCH_INCLUDE)

-LIB_H += util/cgroup.h

-LIB_H += $(LIB_INCLUDE)traceevent/event-parse.h

-LIB_H += util/target.h

-LIB_H += util/rblist.h

-LIB_H += util/intlist.h

-LIB_H += util/perf_regs.h

-LIB_H += util/unwind.h

-LIB_H += util/vdso.h

-LIB_H += ui/helpline.h

-LIB_H += ui/progress.h

-LIB_H += ui/util.h

-LIB_H += ui/ui.h

-

-LIB_OBJS += $(OUTPUT)util/abspath.o

-LIB_OBJS += $(OUTPUT)util/alias.o

-LIB_OBJS += $(OUTPUT)util/annotate.o

-LIB_OBJS += $(OUTPUT)util/build-id.o

-LIB_OBJS += $(OUTPUT)util/config.o

-LIB_OBJS += $(OUTPUT)util/ctype.o

-LIB_OBJS += $(OUTPUT)util/sysfs.o

-LIB_OBJS += $(OUTPUT)util/pmu.o

-LIB_OBJS += $(OUTPUT)util/environment.o

-LIB_OBJS += $(OUTPUT)util/event.o

-LIB_OBJS += $(OUTPUT)util/evlist.o

-LIB_OBJS += $(OUTPUT)util/evsel.o

-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

-LIB_OBJS += $(OUTPUT)util/strfilter.o

-LIB_OBJS += $(OUTPUT)util/top.o

-LIB_OBJS += $(OUTPUT)util/usage.o

-LIB_OBJS += $(OUTPUT)util/wrapper.o

-LIB_OBJS += $(OUTPUT)util/sigchain.o

-LIB_OBJS += $(OUTPUT)util/dso.o

-LIB_OBJS += $(OUTPUT)util/symbol.o

-LIB_OBJS += $(OUTPUT)util/symbol-elf.o

-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

-LIB_OBJS += $(OUTPUT)util/machine.o

-LIB_OBJS += $(OUTPUT)util/map.o

-LIB_OBJS += $(OUTPUT)util/pstack.o

-LIB_OBJS += $(OUTPUT)util/session.o

-LIB_OBJS += $(OUTPUT)util/thread.o

-LIB_OBJS += $(OUTPUT)util/thread_map.o

-LIB_OBJS += $(OUTPUT)util/trace-event-parse.o

-LIB_OBJS += $(OUTPUT)util/parse-events-flex.o

-LIB_OBJS += $(OUTPUT)util/parse-events-bison.o

-LIB_OBJS += $(OUTPUT)util/pmu-flex.o

-LIB_OBJS += $(OUTPUT)util/pmu-bison.o

-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

-LIB_OBJS += $(OUTPUT)util/xyarray.o

-LIB_OBJS += $(OUTPUT)util/cpumap.o

-LIB_OBJS += $(OUTPUT)util/cgroup.o

-LIB_OBJS += $(OUTPUT)util/target.o

-LIB_OBJS += $(OUTPUT)util/rblist.o

-LIB_OBJS += $(OUTPUT)util/intlist.o

-LIB_OBJS += $(OUTPUT)util/vdso.o

-LIB_OBJS += $(OUTPUT)util/stat.o

-LIB_OBJS += $(OUTPUT)util/record.o

-

-LIB_OBJS += $(OUTPUT)ui/setup.o

-LIB_OBJS += $(OUTPUT)ui/helpline.o

-LIB_OBJS += $(OUTPUT)ui/progress.o

-LIB_OBJS += $(OUTPUT)ui/util.o

-LIB_OBJS += $(OUTPUT)ui/hist.o

-LIB_OBJS += $(OUTPUT)ui/stdio/hist.o

-

-LIB_OBJS += $(OUTPUT)arch/common.o

-

-LIB_OBJS += $(OUTPUT)tests/parse-events.o

-LIB_OBJS += $(OUTPUT)tests/dso-data.o

-LIB_OBJS += $(OUTPUT)tests/attr.o

-LIB_OBJS += $(OUTPUT)tests/vmlinux-kallsyms.o

-LIB_OBJS += $(OUTPUT)tests/open-syscall.o

-LIB_OBJS += $(OUTPUT)tests/open-syscall-all-cpus.o

-LIB_OBJS += $(OUTPUT)tests/open-syscall-tp-fields.o

-LIB_OBJS += $(OUTPUT)tests/mmap-basic.o

-LIB_OBJS += $(OUTPUT)tests/perf-record.o

-LIB_OBJS += $(OUTPUT)tests/rdpmc.o

-LIB_OBJS += $(OUTPUT)tests/evsel-roundtrip-name.o

-LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o

-LIB_OBJS += $(OUTPUT)tests/pmu.o

-LIB_OBJS += $(OUTPUT)tests/hists_link.o

-LIB_OBJS += $(OUTPUT)tests/python-use.o

-LIB_OBJS += $(OUTPUT)tests/bp_signal.o

-LIB_OBJS += $(OUTPUT)tests/bp_signal_overflow.o

-LIB_OBJS += $(OUTPUT)tests/task-exit.o

-LIB_OBJS += $(OUTPUT)tests/sw-clock.o

-ifeq ($(ARCH),x86)

-LIB_OBJS += $(OUTPUT)tests/perf-time-to-tsc.o

-endif

-LIB_OBJS += $(OUTPUT)tests/code-reading.o

-LIB_OBJS += $(OUTPUT)tests/sample-parsing.o

-LIB_OBJS += $(OUTPUT)tests/parse-no-sample-id-all.o

-

-BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o

-BUILTIN_OBJS += $(OUTPUT)builtin-bench.o

-# Benchmark modules

-BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o

-BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o

-ifeq ($(RAW_ARCH),x86_64)

-BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o

-BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o

-endif

-BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o

-BUILTIN_OBJS += $(OUTPUT)bench/mem-memset.o

-

-BUILTIN_OBJS += $(OUTPUT)builtin-diff.o

-BUILTIN_OBJS += $(OUTPUT)builtin-evlist.o

-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

-BUILTIN_OBJS += $(OUTPUT)builtin-script.o

-BUILTIN_OBJS += $(OUTPUT)builtin-probe.o

-BUILTIN_OBJS += $(OUTPUT)builtin-kmem.o

-BUILTIN_OBJS += $(OUTPUT)builtin-lock.o

-BUILTIN_OBJS += $(OUTPUT)builtin-kvm.o

-BUILTIN_OBJS += $(OUTPUT)builtin-inject.o

-BUILTIN_OBJS += $(OUTPUT)tests/builtin-test.o

-BUILTIN_OBJS += $(OUTPUT)builtin-mem.o

-

-PERFLIBS = $(LIB_FILE) $(LIBLK) $(LIBTRACEEVENT)

-

-# 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...

-

--include arch/$(ARCH)/Makefile

-

-ifneq ($(OUTPUT),)

- 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

-ifndef NO_DWARF

- LIB_OBJS += $(OUTPUT)util/probe-finder.o

- LIB_OBJS += $(OUTPUT)util/dwarf-aux.o

-endif # NO_DWARF

-endif # NO_LIBELF

-

-ifndef NO_LIBUNWIND

- LIB_OBJS += $(OUTPUT)util/unwind.o

-endif

-LIB_OBJS += $(OUTPUT)tests/keep-tracking.o

-

-ifndef NO_LIBAUDIT

- BUILTIN_OBJS += $(OUTPUT)builtin-trace.o

-endif

-

-ifndef NO_SLANG

- 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

-endif

-

-ifndef NO_GTK2

- 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

-endif

-

-ifndef NO_LIBPERL

- LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o

- LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o

-endif

-

-ifndef NO_LIBPYTHON

- LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o

- LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o

-endif

-

-ifeq ($(NO_PERF_REGS),0)

- ifeq ($(ARCH),x86)

- LIB_H += arch/x86/include/perf_regs.h

+ifeq ($(JOBS),)

+ JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)

+ ifeq ($(JOBS),)

+ JOBS := 1

endif

endif

-ifndef NO_LIBNUMA

- BUILTIN_OBJS += $(OUTPUT)bench/numa.o

-endif

-

-ifdef ASCIIDOC8

- export ASCIIDOC8

-endif

-

-LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group

-

-export INSTALL SHELL_PATH

-

-### Build rules

-

-SHELL = $(SHELL_PATH)

-

-all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS)

-

-please_set_SHELL_PATH_to_a_more_modern_shell:

- @$$(:)

-

-shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell

-

-strip: $(PROGRAMS) $(OUTPUT)perf

- $(STRIP) $(STRIP_OPTS) $(PROGRAMS) $(OUTPUT)perf

-

-$(OUTPUT)perf.o: perf.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -include $(OUTPUT)PERF-VERSION-FILE \

- '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

- $(CFLAGS) -c $(filter %.c,$^) -o $@

-

-$(OUTPUT)perf: $(OUTPUT)perf.o $(BUILTIN_OBJS) $(PERFLIBS)

- $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(OUTPUT)perf.o \

- $(BUILTIN_OBJS) $(LIBS) -o $@

-

-$(OUTPUT)builtin-help.o: builtin-help.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

- '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

- '-DPERF_MAN_PATH="$(mandir_SQ)"' \

- '-DPERF_INFO_PATH="$(infodir_SQ)"' $<

-

-$(OUTPUT)builtin-timechart.o: builtin-timechart.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

- '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

- '-DPERF_MAN_PATH="$(mandir_SQ)"' \

- '-DPERF_INFO_PATH="$(infodir_SQ)"' $<

-

-$(OUTPUT)common-cmds.h: util/generate-cmdlist.sh command-list.txt

-

-$(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)

- $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@

-

-$(SCRIPTS) : % : %.sh

- $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'

-

-# These can record PERF_VERSION

-$(OUTPUT)perf.o perf.spec \

- $(SCRIPTS) \

- : $(OUTPUT)PERF-VERSION-FILE

-

-.SUFFIXES:

-.SUFFIXES: .o .c .S .s

-

-# 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

- $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(CFLAGS) -w $<

-

-$(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -w $<

-

-$(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $<

-$(OUTPUT)%.i: %.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -E $(CFLAGS) $<

-$(OUTPUT)%.s: %.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -S $(CFLAGS) $<

-$(OUTPUT)%.o: %.S

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $<

-$(OUTPUT)%.s: %.S

- $(QUIET_CC)$(CC) -o $@ -E $(CFLAGS) $<

-

-$(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

- '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \

- '-DPREFIX="$(prefix_SQ)"' \

- $<

-

-$(OUTPUT)tests/attr.o: tests/attr.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

- '-DBINDIR="$(bindir_SQ)"' -DPYTHON='"$(PYTHON_WORD)"' \

- $<

-

-$(OUTPUT)tests/python-use.o: tests/python-use.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

- -DPYTHONPATH='"$(OUTPUT)python"' \

- -DPYTHON='"$(PYTHON_WORD)"' \

- $<

-

-$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<

-

-$(OUTPUT)ui/browser.o: ui/browser.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

-

-$(OUTPUT)ui/browsers/annotate.o: ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

-

-$(OUTPUT)ui/browsers/hists.o: ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

-

-$(OUTPUT)ui/browsers/map.o: ui/browsers/map.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+export JOBS

-$(OUTPUT)ui/browsers/scripts.o: ui/browsers/scripts.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

-

-$(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<

-

-$(OUTPUT)util/parse-events.o: util/parse-events.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-redundant-decls $<

-

-$(OUTPUT)util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-undef -Wno-switch-default $<

-

-$(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs -Wno-undef -Wno-switch-default $<

-

-$(OUTPUT)util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<

-

-$(OUTPUT)scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS

- $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<

-

-$(OUTPUT)perf-%: %.o $(PERFLIBS)

- $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS)

-

-$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)

-$(patsubst perf-%,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)

-

-# 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

-$(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS)))

-# In the second step, we make a rule to actually create these directories

-$(sort $(dir $(DIRECTORY_DEPS))):

- $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null

-

-$(LIB_FILE): $(LIB_OBJS)

- $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)

-

-# libtraceevent.a

-TE_SOURCES = $(wildcard $(TRACE_EVENT_DIR)*.[ch])

-

-$(LIBTRACEEVENT): $(TE_SOURCES)

- $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a

-

-$(LIBTRACEEVENT)-clean:

- $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean

-

-LIBLK_SOURCES = $(wildcard $(LK_PATH)*.[ch])

-

-# if subdir is set, we've been called from above so target has been built

-# already

-$(LIBLK): $(LIBLK_SOURCES)

-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

-

-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'

-

-

-DOC_TARGETS := doc man html info pdf

-

-INSTALL_DOC_TARGETS := $(patsubst %,install-%,$(DOC_TARGETS)) try-install-man

-INSTALL_DOC_TARGETS += quick-install-doc quick-install-man quick-install-html

-

-# 'make doc' should call 'make -C Documentation all'

-$(DOC_TARGETS):

- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:doc=all)

-

-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 ','\'',$(CFLAGS)):\

- $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)

-

-$(OUTPUT)PERF-CFLAGS: .FORCE-PERF-CFLAGS

- @FLAGS='$(TRACK_CFLAGS)'; \

- if test x"$$FLAGS" != x"`cat $(OUTPUT)PERF-CFLAGS 2>/dev/null`" ; then \

- echo 1>&2 " * new build flags or prefix"; \

- echo "$$FLAGS" >$(OUTPUT)PERF-CFLAGS; \

- 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.

-

-check: $(OUTPUT)common-cmds.h

- if sparse; \

- then \

- for i in *.c */*.c; \

- do \

- sparse $(CFLAGS) $(SPARSE_FLAGS) $$i || exit; \

- done; \

- else \

- exit 1; \

- fi

-

-### Installation rules

-

-install-bin: all

- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'

- $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)'

- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'

- $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'

-ifndef NO_LIBPERL

- $(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'

- $(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'

-endif

-ifndef NO_LIBPYTHON

- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'

- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'

- $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'

- $(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'

-endif

- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d'

- $(INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf'

- $(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'

-

-install: install-bin try-install-man

-

-install-python_ext:

- $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)'

-

-# 'make install-doc' should call 'make -C Documentation install'

-$(INSTALL_DOC_TARGETS):

- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:-doc=)

-

-### Cleaning rules

+$(info $(shell printf '# [ perf build: Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel build. ]\n'))

#

-# This is here, not in config/Makefile, because config/Makefile does

-# not get included for the clean target:

+# Needed if no target specified:

#

-config-clean:

- @$(MAKE) -C config/feature-checks clean

-

-clean: $(LIBTRACEEVENT)-clean $(LIBLK)-clean config-clean

- $(RM) $(LIB_OBJS) $(BUILTIN_OBJS) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf.o $(LANG_BINDINGS)

- $(RM) $(ALL_PROGRAMS) perf

- $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope*

- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean

- $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS

- $(RM) $(OUTPUT)util/*-bison*

- $(RM) $(OUTPUT)util/*-flex*

- $(python-clean)

-

-#

-# Trick: if ../../.git does not exist - we are building out of tree for example,

-# then force version regeneration:

-#

-ifeq ($(wildcard ../../.git/HEAD),)

- GIT-HEAD-PHONY = ../../.git/HEAD

-else

- GIT-HEAD-PHONY =

-endif

+all:

+ @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) $@

-.PHONY: all install clean config-clean strip

-.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell

-.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope .FORCE-PERF-CFLAGS

+%:

+ @$(MAKE) -f Makefile.perf --no-print-directory -j$(JOBS) $@

diff --git a/tools/perf/Makefile.parallel b/tools/perf/Makefile.parallel

deleted file mode 100644

index ec5e08b..0000000

--- a/tools/perf/Makefile.parallel

+++ /dev/null

@@ -1,26 +0,0 @@

-#

-# Do a parallel build with multiple jobs, based on the number of CPUs online

-# in this system: 'make -j8' on a 8-CPU system, etc.

-#

-# (To override it, run 'make JOBS=1' and similar.)

-#

-ifeq ($(JOBS),)

- JOBS := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)

- ifeq ($(JOBS),)

- JOBS := 1

- endif

-endif

-

-export JOBS

-

-$(info $(shell printf '# [ perf build: Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel build. ]\n'))

-

-#

-# Needed if no target specified:

-#

-all:

- @$(MAKE) --no-print-directory -j$(JOBS) $@

-

-%:

- @$(MAKE) --no-print-directory -j$(JOBS) $@

-

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf

new file mode 100644

index 0000000..178a1c8

--- /dev/null

+++ b/tools/perf/Makefile.perf

@@ -0,0 +1,842 @@

+include ../scripts/Makefile.include

+

+# The default target of this Makefile is...

+all:

+

+include config/utilities.mak

+

+# Define V to have a more verbose compile.

+#

+# 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.

+#

+# 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.

+#

+# 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.

+#

+# Define LDFLAGS=-static to build a static binary.

+#

+# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.

+#

+# Define NO_DWARF if you do not want debug-info analysis feature at all.

+#

+# Define WERROR=0 to disable treating any warnings as errors.

+#

+# Define NO_NEWT if you do not want TUI support. (deprecated)

+#

+# Define NO_SLANG if you do not want TUI support.

+#

+# Define NO_GTK2 if you do not want GTK+ GUI support.

+#

+# Define NO_DEMANGLE if you do not want C++ symbol demangling.

+#

+# Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds)

+#

+# Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf

+# backtrace post unwind.

+#

+# Define NO_BACKTRACE if you do not want stack backtrace debug feature

+#

+# Define NO_LIBNUMA if you do not want numa perf benchmark

+#

+# Define NO_LIBAUDIT if you do not want libaudit support

+#

+# Define NO_LIBBIONIC if you do not want bionic support

+

+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

+

+$(OUTPUT)PERF-VERSION-FILE: ../../.git/HEAD

+ @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT)

+ @touch $(OUTPUT)PERF-VERSION-FILE

+

+CC = $(CROSS_COMPILE)gcc

+AR = $(CROSS_COMPILE)ar

+

+RM = rm -f

+MKDIR = mkdir

+FIND = find

+INSTALL = install

+FLEX = flex

+BISON = bison

+STRIP = strip

+

+LK_DIR = $(srctree)/tools/lib/lk/

+TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/

+

+# 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

+endif

+

+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 =

+PYRF_OBJS =

+SCRIPT_SH =

+

+SCRIPT_SH += perf-archive.sh

+

+grep-libs = $(filter -l%,$(1))

+strip-libs = $(filter-out -l%,$(1))

+

+ifneq ($(OUTPUT),)

+ TE_PATH=$(OUTPUT)

+ifneq ($(subdir),)

+ LK_PATH=$(OUTPUT)/../lib/lk/

+else

+ LK_PATH=$(OUTPUT)

+endif

+else

+ TE_PATH=$(TRACE_EVENT_DIR)

+ LK_PATH=$(LK_DIR)

+endif

+

+LIBTRACEEVENT = $(TE_PATH)libtraceevent.a

+export LIBTRACEEVENT

+

+LIBLK = $(LK_PATH)liblk.a

+export LIBLK

+

+# 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

+

+PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources)

+PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBLK)

+

+$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS)

+ $(QUIET_GEN)CFLAGS='$(CFLAGS)' $(PYTHON_WORD) util/setup.py \

+ --quiet build_ext; \

+ mkdir -p $(OUTPUT)python && \

+ cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/

+#

+# No Perl scripts right now:

+#

+

+SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH))

+

+#

+# Single 'perf' binary right now:

+#

+PROGRAMS += $(OUTPUT)perf

+

+# what 'all' will build and 'install' will install, in perfexecdir

+ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)

+

+# what 'all' will build but not install in perfexecdir

+OTHER_PROGRAMS = $(OUTPUT)perf

+

+# 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

+

+$(OUTPUT)util/parse-events-flex.c: util/parse-events.l $(OUTPUT)util/parse-events-bison.c

+ $(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

+

+$(OUTPUT)util/parse-events-bison.c: util/parse-events.y

+ $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c -p parse_events_

+

+$(OUTPUT)util/pmu-flex.c: util/pmu.l $(OUTPUT)util/pmu-bison.c

+ $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c

+

+$(OUTPUT)util/pmu-bison.c: util/pmu.y

+ $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_

+

+$(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

+

+LIB_FILE=$(OUTPUT)libperf.a

+

+LIB_H += ../../include/uapi/linux/perf_event.h

+LIB_H += ../../include/linux/rbtree.h

+LIB_H += ../../include/linux/list.h

+LIB_H += ../../include/uapi/linux/const.h

+LIB_H += ../../include/linux/hash.h

+LIB_H += ../../include/linux/stringify.h

+LIB_H += util/include/linux/bitmap.h

+LIB_H += util/include/linux/bitops.h

+LIB_H += util/include/linux/compiler.h

+LIB_H += util/include/linux/const.h

+LIB_H += util/include/linux/ctype.h

+LIB_H += util/include/linux/kernel.h

+LIB_H += util/include/linux/list.h

+LIB_H += util/include/linux/export.h

+LIB_H += util/include/linux/magic.h

+LIB_H += util/include/linux/poison.h

+LIB_H += util/include/linux/prefetch.h

+LIB_H += util/include/linux/rbtree.h

+LIB_H += util/include/linux/rbtree_augmented.h

+LIB_H += util/include/linux/string.h

+LIB_H += util/include/linux/types.h

+LIB_H += util/include/linux/linkage.h

+LIB_H += util/include/asm/asm-offsets.h

+LIB_H += util/include/asm/bug.h

+LIB_H += util/include/asm/byteorder.h

+LIB_H += util/include/asm/hweight.h

+LIB_H += util/include/asm/swab.h

+LIB_H += util/include/asm/system.h

+LIB_H += util/include/asm/uaccess.h

+LIB_H += util/include/dwarf-regs.h

+LIB_H += util/include/asm/dwarf2.h

+LIB_H += util/include/asm/cpufeature.h

+LIB_H += util/include/asm/unistd_32.h

+LIB_H += util/include/asm/unistd_64.h

+LIB_H += perf.h

+LIB_H += util/annotate.h

+LIB_H += util/cache.h

+LIB_H += util/callchain.h

+LIB_H += util/build-id.h

+LIB_H += util/debug.h

+LIB_H += util/sysfs.h

+LIB_H += util/pmu.h

+LIB_H += util/event.h

+LIB_H += util/evsel.h

+LIB_H += util/evlist.h

+LIB_H += util/exec_cmd.h

+LIB_H += util/types.h

+LIB_H += util/levenshtein.h

+LIB_H += util/machine.h

+LIB_H += util/map.h

+LIB_H += util/parse-options.h

+LIB_H += util/parse-events.h

+LIB_H += util/quote.h

+LIB_H += util/util.h

+LIB_H += util/xyarray.h

+LIB_H += util/header.h

+LIB_H += util/help.h

+LIB_H += util/session.h

+LIB_H += util/strbuf.h

+LIB_H += util/strlist.h

+LIB_H += util/strfilter.h

+LIB_H += util/svghelper.h

+LIB_H += util/tool.h

+LIB_H += util/run-command.h

+LIB_H += util/sigchain.h

+LIB_H += util/dso.h

+LIB_H += util/symbol.h

+LIB_H += util/color.h

+LIB_H += util/values.h

+LIB_H += util/sort.h

+LIB_H += util/hist.h

+LIB_H += util/thread.h

+LIB_H += util/thread_map.h

+LIB_H += util/trace-event.h

+LIB_H += util/probe-finder.h

+LIB_H += util/dwarf-aux.h

+LIB_H += util/probe-event.h

+LIB_H += util/pstack.h

+LIB_H += util/cpumap.h

+LIB_H += util/top.h

+LIB_H += $(ARCH_INCLUDE)

+LIB_H += util/cgroup.h

+LIB_H += $(LIB_INCLUDE)traceevent/event-parse.h

+LIB_H += util/target.h

+LIB_H += util/rblist.h

+LIB_H += util/intlist.h

+LIB_H += util/perf_regs.h

+LIB_H += util/unwind.h

+LIB_H += util/vdso.h

+LIB_H += ui/helpline.h

+LIB_H += ui/progress.h

+LIB_H += ui/util.h

+LIB_H += ui/ui.h

+

+LIB_OBJS += $(OUTPUT)util/abspath.o

+LIB_OBJS += $(OUTPUT)util/alias.o

+LIB_OBJS += $(OUTPUT)util/annotate.o

+LIB_OBJS += $(OUTPUT)util/build-id.o

+LIB_OBJS += $(OUTPUT)util/config.o

+LIB_OBJS += $(OUTPUT)util/ctype.o

+LIB_OBJS += $(OUTPUT)util/sysfs.o

+LIB_OBJS += $(OUTPUT)util/pmu.o

+LIB_OBJS += $(OUTPUT)util/environment.o

+LIB_OBJS += $(OUTPUT)util/event.o

+LIB_OBJS += $(OUTPUT)util/evlist.o

+LIB_OBJS += $(OUTPUT)util/evsel.o

+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

+LIB_OBJS += $(OUTPUT)util/strfilter.o

+LIB_OBJS += $(OUTPUT)util/top.o

+LIB_OBJS += $(OUTPUT)util/usage.o

+LIB_OBJS += $(OUTPUT)util/wrapper.o

+LIB_OBJS += $(OUTPUT)util/sigchain.o

+LIB_OBJS += $(OUTPUT)util/dso.o

+LIB_OBJS += $(OUTPUT)util/symbol.o

+LIB_OBJS += $(OUTPUT)util/symbol-elf.o

+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

+LIB_OBJS += $(OUTPUT)util/machine.o

+LIB_OBJS += $(OUTPUT)util/map.o

+LIB_OBJS += $(OUTPUT)util/pstack.o

+LIB_OBJS += $(OUTPUT)util/session.o

+LIB_OBJS += $(OUTPUT)util/thread.o

+LIB_OBJS += $(OUTPUT)util/thread_map.o

+LIB_OBJS += $(OUTPUT)util/trace-event-parse.o

+LIB_OBJS += $(OUTPUT)util/parse-events-flex.o

+LIB_OBJS += $(OUTPUT)util/parse-events-bison.o

+LIB_OBJS += $(OUTPUT)util/pmu-flex.o

+LIB_OBJS += $(OUTPUT)util/pmu-bison.o

+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

+LIB_OBJS += $(OUTPUT)util/xyarray.o

+LIB_OBJS += $(OUTPUT)util/cpumap.o

+LIB_OBJS += $(OUTPUT)util/cgroup.o

+LIB_OBJS += $(OUTPUT)util/target.o

+LIB_OBJS += $(OUTPUT)util/rblist.o

+LIB_OBJS += $(OUTPUT)util/intlist.o

+LIB_OBJS += $(OUTPUT)util/vdso.o

+LIB_OBJS += $(OUTPUT)util/stat.o

+LIB_OBJS += $(OUTPUT)util/record.o

+

+LIB_OBJS += $(OUTPUT)ui/setup.o

+LIB_OBJS += $(OUTPUT)ui/helpline.o

+LIB_OBJS += $(OUTPUT)ui/progress.o

+LIB_OBJS += $(OUTPUT)ui/util.o

+LIB_OBJS += $(OUTPUT)ui/hist.o

+LIB_OBJS += $(OUTPUT)ui/stdio/hist.o

+

+LIB_OBJS += $(OUTPUT)arch/common.o

+

+LIB_OBJS += $(OUTPUT)tests/parse-events.o

+LIB_OBJS += $(OUTPUT)tests/dso-data.o

+LIB_OBJS += $(OUTPUT)tests/attr.o

+LIB_OBJS += $(OUTPUT)tests/vmlinux-kallsyms.o

+LIB_OBJS += $(OUTPUT)tests/open-syscall.o

+LIB_OBJS += $(OUTPUT)tests/open-syscall-all-cpus.o

+LIB_OBJS += $(OUTPUT)tests/open-syscall-tp-fields.o

+LIB_OBJS += $(OUTPUT)tests/mmap-basic.o

+LIB_OBJS += $(OUTPUT)tests/perf-record.o

+LIB_OBJS += $(OUTPUT)tests/rdpmc.o

+LIB_OBJS += $(OUTPUT)tests/evsel-roundtrip-name.o

+LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o

+LIB_OBJS += $(OUTPUT)tests/pmu.o

+LIB_OBJS += $(OUTPUT)tests/hists_link.o

+LIB_OBJS += $(OUTPUT)tests/python-use.o

+LIB_OBJS += $(OUTPUT)tests/bp_signal.o

+LIB_OBJS += $(OUTPUT)tests/bp_signal_overflow.o

+LIB_OBJS += $(OUTPUT)tests/task-exit.o

+LIB_OBJS += $(OUTPUT)tests/sw-clock.o

+ifeq ($(ARCH),x86)

+LIB_OBJS += $(OUTPUT)tests/perf-time-to-tsc.o

+endif

+LIB_OBJS += $(OUTPUT)tests/code-reading.o

+LIB_OBJS += $(OUTPUT)tests/sample-parsing.o

+LIB_OBJS += $(OUTPUT)tests/parse-no-sample-id-all.o

+

+BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o

+BUILTIN_OBJS += $(OUTPUT)builtin-bench.o

+# Benchmark modules

+BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o

+BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o

+ifeq ($(RAW_ARCH),x86_64)

+BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o

+BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o

+endif

+BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o

+BUILTIN_OBJS += $(OUTPUT)bench/mem-memset.o

+

+BUILTIN_OBJS += $(OUTPUT)builtin-diff.o

+BUILTIN_OBJS += $(OUTPUT)builtin-evlist.o

+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

+BUILTIN_OBJS += $(OUTPUT)builtin-script.o

+BUILTIN_OBJS += $(OUTPUT)builtin-probe.o

+BUILTIN_OBJS += $(OUTPUT)builtin-kmem.o

+BUILTIN_OBJS += $(OUTPUT)builtin-lock.o

+BUILTIN_OBJS += $(OUTPUT)builtin-kvm.o

+BUILTIN_OBJS += $(OUTPUT)builtin-inject.o

+BUILTIN_OBJS += $(OUTPUT)tests/builtin-test.o

+BUILTIN_OBJS += $(OUTPUT)builtin-mem.o

+

+PERFLIBS = $(LIB_FILE) $(LIBLK) $(LIBTRACEEVENT)

+

+# 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...

+

+-include arch/$(ARCH)/Makefile

+

+ifneq ($(OUTPUT),)

+ 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

+ifndef NO_DWARF

+ LIB_OBJS += $(OUTPUT)util/probe-finder.o

+ LIB_OBJS += $(OUTPUT)util/dwarf-aux.o

+endif # NO_DWARF

+endif # NO_LIBELF

+

+ifndef NO_LIBUNWIND

+ LIB_OBJS += $(OUTPUT)util/unwind.o

+endif

+LIB_OBJS += $(OUTPUT)tests/keep-tracking.o

+

+ifndef NO_LIBAUDIT

+ BUILTIN_OBJS += $(OUTPUT)builtin-trace.o

+endif

+

+ifndef NO_SLANG

+ 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

+endif

+

+ifndef NO_GTK2

+ 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

+endif

+

+ifndef NO_LIBPERL

+ LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o

+ LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o

+endif

+

+ifndef NO_LIBPYTHON

+ LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o

+ LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o

+endif

+

+ifeq ($(NO_PERF_REGS),0)

+ ifeq ($(ARCH),x86)

+ LIB_H += arch/x86/include/perf_regs.h

+ endif

+endif

+

+ifndef NO_LIBNUMA

+ BUILTIN_OBJS += $(OUTPUT)bench/numa.o

+endif

+

+ifdef ASCIIDOC8

+ export ASCIIDOC8

+endif

+

+LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group

+

+export INSTALL SHELL_PATH

+

+### Build rules

+

+SHELL = $(SHELL_PATH)

+

+all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS)

+

+please_set_SHELL_PATH_to_a_more_modern_shell:

+ @$$(:)

+

+shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell

+

+strip: $(PROGRAMS) $(OUTPUT)perf

+ $(STRIP) $(STRIP_OPTS) $(PROGRAMS) $(OUTPUT)perf

+

+$(OUTPUT)perf.o: perf.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -include $(OUTPUT)PERF-VERSION-FILE \

+ '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

+ $(CFLAGS) -c $(filter %.c,$^) -o $@

+

+$(OUTPUT)perf: $(OUTPUT)perf.o $(BUILTIN_OBJS) $(PERFLIBS)

+ $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(OUTPUT)perf.o \

+ $(BUILTIN_OBJS) $(LIBS) -o $@

+

+$(OUTPUT)builtin-help.o: builtin-help.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

+ '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

+ '-DPERF_MAN_PATH="$(mandir_SQ)"' \

+ '-DPERF_INFO_PATH="$(infodir_SQ)"' $<

+

+$(OUTPUT)builtin-timechart.o: builtin-timechart.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

+ '-DPERF_HTML_PATH="$(htmldir_SQ)"' \

+ '-DPERF_MAN_PATH="$(mandir_SQ)"' \

+ '-DPERF_INFO_PATH="$(infodir_SQ)"' $<

+

+$(OUTPUT)common-cmds.h: util/generate-cmdlist.sh command-list.txt

+

+$(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)

+ $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@

+

+$(SCRIPTS) : % : %.sh

+ $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'

+

+# These can record PERF_VERSION

+$(OUTPUT)perf.o perf.spec \

+ $(SCRIPTS) \

+ : $(OUTPUT)PERF-VERSION-FILE

+

+.SUFFIXES:

+.SUFFIXES: .o .c .S .s

+

+# 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

+ $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(CFLAGS) -w $<

+

+$(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -w $<

+

+$(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $<

+$(OUTPUT)%.i: %.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -E $(CFLAGS) $<

+$(OUTPUT)%.s: %.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -S $(CFLAGS) $<

+$(OUTPUT)%.o: %.S

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $<

+$(OUTPUT)%.s: %.S

+ $(QUIET_CC)$(CC) -o $@ -E $(CFLAGS) $<

+

+$(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

+ '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \

+ '-DPREFIX="$(prefix_SQ)"' \

+ $<

+

+$(OUTPUT)tests/attr.o: tests/attr.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

+ '-DBINDIR="$(bindir_SQ)"' -DPYTHON='"$(PYTHON_WORD)"' \

+ $<

+

+$(OUTPUT)tests/python-use.o: tests/python-use.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \

+ -DPYTHONPATH='"$(OUTPUT)python"' \

+ -DPYTHON='"$(PYTHON_WORD)"' \

+ $<

+

+$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<

+

+$(OUTPUT)ui/browser.o: ui/browser.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+

+$(OUTPUT)ui/browsers/annotate.o: ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+

+$(OUTPUT)ui/browsers/hists.o: ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+

+$(OUTPUT)ui/browsers/map.o: ui/browsers/map.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+

+$(OUTPUT)ui/browsers/scripts.o: ui/browsers/scripts.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -DENABLE_SLFUTURE_CONST $<

+

+$(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<

+

+$(OUTPUT)util/parse-events.o: util/parse-events.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) -Wno-redundant-decls $<

+

+$(OUTPUT)util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-undef -Wno-switch-default $<

+

+$(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs -Wno-undef -Wno-switch-default $<

+

+$(OUTPUT)util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<

+

+$(OUTPUT)scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS

+ $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<

+

+$(OUTPUT)perf-%: %.o $(PERFLIBS)

+ $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS)

+

+$(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)

+$(patsubst perf-%,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)

+

+# 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

+$(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS)))

+# In the second step, we make a rule to actually create these directories

+$(sort $(dir $(DIRECTORY_DEPS))):

+ $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null

+

+$(LIB_FILE): $(LIB_OBJS)

+ $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)

+

+# libtraceevent.a

+TE_SOURCES = $(wildcard $(TRACE_EVENT_DIR)*.[ch])

+

+$(LIBTRACEEVENT): $(TE_SOURCES)

+ $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a

+

+$(LIBTRACEEVENT)-clean:

+ $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean

+

+LIBLK_SOURCES = $(wildcard $(LK_PATH)*.[ch])

+

+# if subdir is set, we've been called from above so target has been built

+# already

+$(LIBLK): $(LIBLK_SOURCES)

+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

+

+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'

+

+

+DOC_TARGETS := doc man html info pdf

+

+INSTALL_DOC_TARGETS := $(patsubst %,install-%,$(DOC_TARGETS)) try-install-man

+INSTALL_DOC_TARGETS += quick-install-doc quick-install-man quick-install-html

+

+# 'make doc' should call 'make -C Documentation all'

+$(DOC_TARGETS):

+ $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:doc=all)

+

+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 ','\'',$(CFLAGS)):\

+ $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)

+

+$(OUTPUT)PERF-CFLAGS: .FORCE-PERF-CFLAGS

+ @FLAGS='$(TRACK_CFLAGS)'; \

+ if test x"$$FLAGS" != x"`cat $(OUTPUT)PERF-CFLAGS 2>/dev/null`" ; then \

+ echo 1>&2 " * new build flags or prefix"; \

+ echo "$$FLAGS" >$(OUTPUT)PERF-CFLAGS; \

+ 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.

+

+check: $(OUTPUT)common-cmds.h

+ if sparse; \

+ then \

+ for i in *.c */*.c; \

+ do \

+ sparse $(CFLAGS) $(SPARSE_FLAGS) $$i || exit; \

+ done; \

+ else \

+ exit 1; \

+ fi

+

+### Installation rules

+

+install-bin: all

+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'

+ $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)'

+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'

+ $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'

+ifndef NO_LIBPERL

+ $(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'

+ $(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'

+endif

+ifndef N

Show more