2013-10-09

Arnaldo,

Please pull the tools/perf/build git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git tmp.tools/perf/build

# HEAD: 165108a92fc554d51e73b143b69b77e7c278da78 tools/perf/build: Clean up feature_print_code()

This tree contains the build system speedup series described at:

https://lkml.org/lkml/2013/10/7/199

Reviewed by David Ahern and Jiri Olsa (thanks guys!).

Thanks,

Ingo

------------------>

Ingo Molnar (52):

tools/perf: Standardize feature support define names to: HAVE_{FEATURE}_SUPPORT

tools/perf/build: Add feature check core code

tools/perf/build: Add 'autodep' functionality, generate feature test dependencies automatically

tools/perf/build: Split out feature check: 'libnuma'

tools/perf/build: Split out feature check: 'stackprotector-all'

tools/perf/build: Split out feature check: 'stackprotector'

tools/perf/build: Split out feature check: 'volatile-register-var'

tools/perf/build: Split out feature check: 'fortify-source'

tools/perf/build: Split out feature check: 'bionic'

tools/perf/build: Clean up the libelf logic in config/Makefile

tools/perf/build: Split out feature check: 'libelf'

tools/perf/build: Split out feature check: 'glibc'

tools/perf/build: Split out feature check: 'dwarf'

tools/perf/build: Clean up the mmap logic in config/Makefile

tools/perf/build: Split out feature check: 'libelf-mmap'

tools/perf/build: Split out feature check: 'libelf-getphdrnum'

tools/perf/build: Clean up the libunwind logic in config/Makefile

tools/perf/build: Split out feature check: 'libunwind'

tools/perf/build: Split out feature check: 'libaudit'

tools/perf/build: Split out feature check: 'libslang'

tools/perf/build: Split out feature check: 'gtk2'

tools/perf/build: Split out feature check: 'gtk2-infobar'

tools/perf/build: Split out feature check: 'libperl'

tools/perf/build: Split out feature check: 'libpython'

tools/perf/build: Split out feature check: 'libpython-version'

tools/perf/build: Split out feature check: 'libbfd'

tools/perf/build: Split out feature check: 'strlcpy'

tools/perf/build: Split out feature check: 'on-exit'

tools/perf/build: Split out feature check: 'backtrace'

tools/perf: Clean up util/include/linux/compiler.h

tools/perf: Turn strlcpy() into a __weak function

tools/perf/build: Speed up auto-detection of features by adding a 'test-all' target

tools/perf/build: Speed up git-version test on re-make

tools/perf/build: Speed up the final link

tools/perf: Fix double/triple-build of the feature detection logic during 'make install' et al

tools/perf/build: Invoke feature-checks 'clean' target from the main Makefile

tools/perf/build: Speed up auto-detection

tools/perf/build: Improve printout-of auto-detected features

tools/perf/build: Automatically build in parallel, based on number of CPUs in the system

tools/perf/build: Flip Makefile.parallel and Makefile.perf

tools/perf/build: Standardize the various messages output by parallel make

tools/perf/build: Split out feature checks: 'liberty', 'liberty-z', 'cplus-demangle'

tools/perf/build: Remove unused config/feature-tests.mak

tools/perf/build: Clean up various testcases

tools/perf/build: Collapse the test-all.c testcase

tools/perf/build: Pass through all targets to Makefile.perf

tools/perf/build: Make sure autodep feature binaries honor the O= setting

tools/perf/build: Exclude MAKEFLAGS from nested invocation

tools/perf/build: Fix non-canonical directory names in O=

tools/perf/build: Fix O=/some/dir perf.o type of targets

tools/perf/build: Harmonize the style of the feature testcases

tools/perf/build: Pass through LDFLAGS to feature tests

Jiri Olsa (1):

tools/perf/build: Clean up feature_print_code()

tools/perf/Documentation/Makefile | 17 +-

tools/perf/Makefile | 841 ++------------------

tools/perf/Makefile.perf | 856 +++++++++++++++++++++

tools/perf/arch/x86/include/perf_regs.h | 6 +-

tools/perf/arch/x86/util/unwind.c | 4 +-

tools/perf/bench/mem-memcpy-arch.h | 2 +-

tools/perf/bench/mem-memcpy.c | 2 +-

tools/perf/bench/mem-memset-arch.h | 2 +-

tools/perf/bench/mem-memset.c | 2 +-

tools/perf/builtin-bench.c | 4 +-

tools/perf/builtin-inject.c | 2 +-

tools/perf/builtin-probe.c | 14 +-

tools/perf/builtin-record.c | 12 +-

tools/perf/config/Makefile | 337 +++++---

tools/perf/config/feature-checks/Makefile | 148 ++++

tools/perf/config/feature-checks/test-all.c | 106 +++

tools/perf/config/feature-checks/test-backtrace.c | 13 +

tools/perf/config/feature-checks/test-bionic.c | 6 +

.../config/feature-checks/test-cplus-demangle.c | 14 +

tools/perf/config/feature-checks/test-dwarf.c | 10 +

.../config/feature-checks/test-fortify-source.c | 6 +

tools/perf/config/feature-checks/test-glibc.c | 8 +

.../perf/config/feature-checks/test-gtk2-infobar.c | 11 +

tools/perf/config/feature-checks/test-gtk2.c | 10 +

tools/perf/config/feature-checks/test-hello.c | 6 +

tools/perf/config/feature-checks/test-libaudit.c | 10 +

tools/perf/config/feature-checks/test-libbfd.c | 15 +

.../config/feature-checks/test-libelf-getphdrnum.c | 8 +

.../perf/config/feature-checks/test-libelf-mmap.c | 8 +

tools/perf/config/feature-checks/test-libelf.c | 8 +

tools/perf/config/feature-checks/test-libnuma.c | 9 +

tools/perf/config/feature-checks/test-libperl.c | 9 +

.../config/feature-checks/test-libpython-version.c | 10 +

tools/perf/config/feature-checks/test-libpython.c | 8 +

tools/perf/config/feature-checks/test-libslang.c | 6 +

tools/perf/config/feature-checks/test-libunwind.c | 27 +

tools/perf/config/feature-checks/test-on-exit.c | 15 +

.../feature-checks/test-stackprotector-all.c | 6 +

.../config/feature-checks/test-stackprotector.c | 6 +

.../feature-checks/test-volatile-register-var.c | 6 +

tools/perf/config/feature-tests.mak | 246 ------

tools/perf/config/utilities.mak | 14 -

tools/perf/perf.c | 4 +-

tools/perf/ui/gtk/browser.c | 2 +-

tools/perf/ui/gtk/gtk.h | 4 +-

tools/perf/ui/gtk/util.c | 4 +-

tools/perf/ui/ui.h | 4 +-

tools/perf/util/annotate.h | 4 +-

tools/perf/util/cache.h | 3 +-

tools/perf/util/generate-cmdlist.sh | 4 +-

tools/perf/util/hist.h | 4 +-

tools/perf/util/include/dwarf-regs.h | 2 +-

tools/perf/util/include/linux/compiler.h | 19 +-

tools/perf/util/map.c | 2 +-

tools/perf/util/path.c | 10 +-

tools/perf/util/perf_regs.h | 4 +-

tools/perf/util/probe-event.c | 4 +-

tools/perf/util/probe-finder.h | 4 +-

tools/perf/util/symbol-elf.c | 2 +-

tools/perf/util/symbol.h | 8 +-

tools/perf/util/unwind.h | 4 +-

tools/perf/util/util.c | 4 +-

62 files changed, 1688 insertions(+), 1258 deletions(-)

create mode 100644 tools/perf/Makefile.perf

create mode 100644 tools/perf/config/feature-checks/Makefile

create mode 100644 tools/perf/config/feature-checks/test-all.c

create mode 100644 tools/perf/config/feature-checks/test-backtrace.c

create mode 100644 tools/perf/config/feature-checks/test-bionic.c

create mode 100644 tools/perf/config/feature-checks/test-cplus-demangle.c

create mode 100644 tools/perf/config/feature-checks/test-dwarf.c

create mode 100644 tools/perf/config/feature-checks/test-fortify-source.c

create mode 100644 tools/perf/config/feature-checks/test-glibc.c

create mode 100644 tools/perf/config/feature-checks/test-gtk2-infobar.c

create mode 100644 tools/perf/config/feature-checks/test-gtk2.c

create mode 100644 tools/perf/config/feature-checks/test-hello.c

create mode 100644 tools/perf/config/feature-checks/test-libaudit.c

create mode 100644 tools/perf/config/feature-checks/test-libbfd.c

create mode 100644 tools/perf/config/feature-checks/test-libelf-getphdrnum.c

create mode 100644 tools/perf/config/feature-checks/test-libelf-mmap.c

create mode 100644 tools/perf/config/feature-checks/test-libelf.c

create mode 100644 tools/perf/config/feature-checks/test-libnuma.c

create mode 100644 tools/perf/config/feature-checks/test-libperl.c

create mode 100644 tools/perf/config/feature-checks/test-libpython-version.c

create mode 100644 tools/perf/config/feature-checks/test-libpython.c

create mode 100644 tools/perf/config/feature-checks/test-libslang.c

create mode 100644 tools/perf/config/feature-checks/test-libunwind.c

create mode 100644 tools/perf/config/feature-checks/test-on-exit.c

create mode 100644 tools/perf/config/feature-checks/test-stackprotector-all.c

create mode 100644 tools/perf/config/feature-checks/test-stackprotector.c

create mode 100644 tools/perf/config/feature-checks/test-volatile-register-var.c

delete mode 100644 tools/perf/config/feature-tests.mak

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

index 5a37a7c..eaa477f 100644

--- a/tools/perf/Documentation/Makefile

+++ b/tools/perf/Documentation/Makefile

@@ -192,13 +192,14 @@ do-install-man: man

install-man: check-man-tools man

-try-install-man:

ifdef missing_tools

- $(warning Please install $(missing_tools) to have the man pages installed)

+ DO_INSTALL_MAN = $(warning Please install $(missing_tools) to have the man pages installed)

else

- $(MAKE) do-install-man

+ DO_INSTALL_MAN = do-install-man

endif

+try-install-man: $(DO_INSTALL_MAN)

+

install-info: info

$(INSTALL) -d -m 755 $(DESTDIR)$(infodir)

$(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir)

@@ -216,14 +217,6 @@ install-pdf: pdf

#install-html: html

# '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)

-ifneq ($(MAKECMDGOALS),clean)

-ifneq ($(MAKECMDGOALS),tags)

-$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE

- $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) $(OUTPUT)PERF-VERSION-FILE

-

--include $(OUTPUT)PERF-VERSION-FILE

-endif

-endif

#

# Determine "include::" file references in asciidoc files.

@@ -342,5 +335,3 @@ $(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt

#quick-install-html:

# '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)

-

-.PHONY: .FORCE-PERF-VERSION-FILE

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

index 64c043b..9580ebe 100644

--- a/tools/perf/Makefile

+++ b/tools/perf/Makefile

@@ -1,819 +1,66 @@

-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

+# This is a simple wrapper Makefile that calls the main Makefile.perf

+# with a -j option to do parallel builds

#

-# Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72.

+# If you want to invoke the perf build in some non-standard way then

+# you can use the 'make -f Makefile.perf' method to invoke it.

#

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

+# Clear out the built-in rules GNU make defines by default (such as .o targets),

+# so that we pass through all targets to Makefile.perf:

#

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

+.SUFFIXES:

+

#

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

-# backtrace post unwind.

+# We don't want to pass along options like -j:

#

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

+unexport MAKEFLAGS

+

#

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

+# 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_LIBAUDIT if you do not want libaudit support

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

#

-# 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: .FORCE-PERF-VERSION-FILE

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

-

-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

+ifeq ($(JOBS),)

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

+ ifeq ($(JOBS),)

+ JOBS := 1

+ endif

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)

+#

+# Only pass canonical directory names as the output directory:

+#

+ifneq ($(O),)

+ FULL_O := $(shell readlink -f $(O))

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

+define print_msg

+ @printf ' BUILD: Doing '\''make \033[33m-j'$(JOBS)'\033[m'\'' parallel build\n'

+endef

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

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

+define make

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

+endef

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

+# Needed if no target specified:

#

-

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

+all:

+ $(print_msg)

+ $(make)

#

-# Single 'perf' binary right now:

+# The clean target is not really parallel, don't print the jobs info:

#

-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

+clean:

+ $(make)

-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

-$(LIBTRACEEVENT):

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

-

-$(LIBTRACEEVENT)-clean:

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

-

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

-

-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

-

-clean: $(LIBTRACEEVENT)-clean $(LIBLK)-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)

-

-.PHONY: all install clean strip $(LIBTRACEEVENT) $(LIBLK)

-.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell

-.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS

+#

+# All other targets get passed through:

+#

+%:

+ $(print_msg)

+ $(make)

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

new file mode 100644

index 0000000..a24f6c2

--- /dev/null

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

@@ -0,0 +1,856 @@

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

Show more