aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/Makefile')
-rw-r--r--tools/perf/Makefile230
1 files changed, 191 insertions, 39 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 7e190d522cd5..bc0f670a8338 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -2,6 +2,7 @@
2all:: 2all::
3 3
4# Define V=1 to have a more verbose compile. 4# Define V=1 to have a more verbose compile.
5# Define V=2 to have an even more verbose compile.
5# 6#
6# Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() 7# Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf()
7# or vsnprintf() return -1 instead of number of characters which would 8# or vsnprintf() return -1 instead of number of characters which would
@@ -145,6 +146,10 @@ all::
145# Define NO_EXTERNAL_GREP if you don't want "perf grep" to ever call 146# Define NO_EXTERNAL_GREP if you don't want "perf grep" to ever call
146# your external grep (e.g., if your system lacks grep, if its grep is 147# your external grep (e.g., if your system lacks grep, if its grep is
147# broken, or spawning external process is slower than built-in grep perf has). 148# broken, or spawning external process is slower than built-in grep perf has).
149#
150# Define LDFLAGS=-static to build a static binary.
151#
152# Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds.
148 153
149PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE 154PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
150 @$(SHELL_PATH) util/PERF-VERSION-GEN 155 @$(SHELL_PATH) util/PERF-VERSION-GEN
@@ -157,20 +162,6 @@ uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
157uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not') 162uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
158uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not') 163uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
159 164
160#
161# Add -m32 for cross-builds:
162#
163ifdef NO_64BIT
164 MBITS := -m32
165else
166 #
167 # If we're on a 64-bit kernel, use -m64:
168 #
169 ifneq ($(patsubst %64,%,$(uname_M)),$(uname_M))
170 MBITS := -m64
171 endif
172endif
173
174# CFLAGS and LDFLAGS are for the users to override from the command line. 165# CFLAGS and LDFLAGS are for the users to override from the command line.
175 166
176# 167#
@@ -200,9 +191,16 @@ EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition
200EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes 191EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes
201EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement 192EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement
202 193
203CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -fstack-protector-all -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) 194ifeq ("$(origin DEBUG)", "command line")
204LDFLAGS = -lpthread -lrt -lelf -lm 195 PERF_DEBUG = $(DEBUG)
205ALL_CFLAGS = $(CFLAGS) 196endif
197ifndef PERF_DEBUG
198 CFLAGS_OPTIMIZE = -O6
199endif
200
201CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
202EXTLIBS = -lpthread -lrt -lelf -lm
203ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
206ALL_LDFLAGS = $(LDFLAGS) 204ALL_LDFLAGS = $(LDFLAGS)
207STRIP ?= strip 205STRIP ?= strip
208 206
@@ -218,7 +216,10 @@ STRIP ?= strip
218# runtime figures out where they are based on the path to the executable. 216# runtime figures out where they are based on the path to the executable.
219# This can help installing the suite in a relocatable way. 217# This can help installing the suite in a relocatable way.
220 218
219# Make the path relative to DESTDIR, not to prefix
220ifndef DESTDIR
221prefix = $(HOME) 221prefix = $(HOME)
222endif
222bindir_relative = bin 223bindir_relative = bin
223bindir = $(prefix)/$(bindir_relative) 224bindir = $(prefix)/$(bindir_relative)
224mandir = share/man 225mandir = share/man
@@ -235,12 +236,11 @@ sysconfdir = $(prefix)/etc
235ETC_PERFCONFIG = etc/perfconfig 236ETC_PERFCONFIG = etc/perfconfig
236endif 237endif
237lib = lib 238lib = lib
238# DESTDIR=
239 239
240export prefix bindir sharedir sysconfdir 240export prefix bindir sharedir sysconfdir
241 241
242CC = gcc 242CC = $(CROSS_COMPILE)gcc
243AR = ar 243AR = $(CROSS_COMPILE)ar
244RM = rm -f 244RM = rm -f
245TAR = tar 245TAR = tar
246FIND = find 246FIND = find
@@ -252,6 +252,21 @@ PTHREAD_LIBS = -lpthread
252# explicitly what architecture to check for. Fix this up for yours.. 252# explicitly what architecture to check for. Fix this up for yours..
253SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ 253SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__
254 254
255ifeq ($(V), 2)
256 QUIET_STDERR = ">/dev/null"
257else
258 QUIET_STDERR = ">/dev/null 2>&1"
259endif
260
261BITBUCKET = "/dev/null"
262
263ifneq ($(shell sh -c "(echo '\#include <stdio.h>'; echo 'int main(void) { return puts(\"hi\"); }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y)
264 BITBUCKET = .perf.dev.null
265endif
266
267ifeq ($(shell sh -c "echo 'int foo(void) {char X[2]; return 3;}' | $(CC) -x c -c -Werror -fstack-protector-all - -o $(BITBUCKET) "$(QUIET_STDERR)" && echo y"), y)
268 CFLAGS := $(CFLAGS) -fstack-protector-all
269endif
255 270
256 271
257### --- END CONFIGURATION SECTION --- 272### --- END CONFIGURATION SECTION ---
@@ -273,11 +288,7 @@ SCRIPT_PERL =
273SCRIPT_SH = 288SCRIPT_SH =
274TEST_PROGRAMS = 289TEST_PROGRAMS =
275 290
276# 291SCRIPT_SH += perf-archive.sh
277# No scripts right now:
278#
279
280# SCRIPT_SH += perf-am.sh
281 292
282# 293#
283# No Perl scripts right now: 294# No Perl scripts right now:
@@ -302,9 +313,6 @@ PROGRAMS += perf
302# List built-in command $C whose implementation cmd_$C() is not in 313# List built-in command $C whose implementation cmd_$C() is not in
303# builtin-$C.o but is linked in as part of some other command. 314# builtin-$C.o but is linked in as part of some other command.
304# 315#
305# None right now:
306#
307# BUILT_INS += perf-init $X
308 316
309# what 'all' will build and 'install' will install, in perfexecdir 317# what 'all' will build and 'install' will install, in perfexecdir
310ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) 318ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
@@ -327,30 +335,70 @@ LIB_FILE=libperf.a
327LIB_H += ../../include/linux/perf_event.h 335LIB_H += ../../include/linux/perf_event.h
328LIB_H += ../../include/linux/rbtree.h 336LIB_H += ../../include/linux/rbtree.h
329LIB_H += ../../include/linux/list.h 337LIB_H += ../../include/linux/list.h
338LIB_H += ../../include/linux/hash.h
339LIB_H += ../../include/linux/stringify.h
340LIB_H += util/include/linux/bitmap.h
341LIB_H += util/include/linux/bitops.h
342LIB_H += util/include/linux/compiler.h
343LIB_H += util/include/linux/ctype.h
344LIB_H += util/include/linux/kernel.h
330LIB_H += util/include/linux/list.h 345LIB_H += util/include/linux/list.h
346LIB_H += util/include/linux/module.h
347LIB_H += util/include/linux/poison.h
348LIB_H += util/include/linux/prefetch.h
349LIB_H += util/include/linux/rbtree.h
350LIB_H += util/include/linux/string.h
351LIB_H += util/include/linux/types.h
352LIB_H += util/include/asm/asm-offsets.h
353LIB_H += util/include/asm/bitops.h
354LIB_H += util/include/asm/bug.h
355LIB_H += util/include/asm/byteorder.h
356LIB_H += util/include/asm/swab.h
357LIB_H += util/include/asm/system.h
358LIB_H += util/include/asm/uaccess.h
331LIB_H += perf.h 359LIB_H += perf.h
360LIB_H += util/cache.h
361LIB_H += util/callchain.h
362LIB_H += util/build-id.h
363LIB_H += util/debug.h
364LIB_H += util/debugfs.h
365LIB_H += util/event.h
366LIB_H += util/exec_cmd.h
332LIB_H += util/types.h 367LIB_H += util/types.h
333LIB_H += util/levenshtein.h 368LIB_H += util/levenshtein.h
369LIB_H += util/map.h
334LIB_H += util/parse-options.h 370LIB_H += util/parse-options.h
335LIB_H += util/parse-events.h 371LIB_H += util/parse-events.h
336LIB_H += util/quote.h 372LIB_H += util/quote.h
337LIB_H += util/util.h 373LIB_H += util/util.h
374LIB_H += util/header.h
338LIB_H += util/help.h 375LIB_H += util/help.h
376LIB_H += util/session.h
339LIB_H += util/strbuf.h 377LIB_H += util/strbuf.h
340LIB_H += util/string.h 378LIB_H += util/string.h
341LIB_H += util/strlist.h 379LIB_H += util/strlist.h
380LIB_H += util/svghelper.h
342LIB_H += util/run-command.h 381LIB_H += util/run-command.h
343LIB_H += util/sigchain.h 382LIB_H += util/sigchain.h
344LIB_H += util/symbol.h 383LIB_H += util/symbol.h
345LIB_H += util/module.h
346LIB_H += util/color.h 384LIB_H += util/color.h
347LIB_H += util/values.h 385LIB_H += util/values.h
386LIB_H += util/sort.h
387LIB_H += util/hist.h
388LIB_H += util/thread.h
389LIB_H += util/trace-event.h
390LIB_H += util/probe-finder.h
391LIB_H += util/probe-event.h
392LIB_H += util/cpumap.h
348 393
349LIB_OBJS += util/abspath.o 394LIB_OBJS += util/abspath.o
350LIB_OBJS += util/alias.o 395LIB_OBJS += util/alias.o
396LIB_OBJS += util/build-id.o
351LIB_OBJS += util/config.o 397LIB_OBJS += util/config.o
352LIB_OBJS += util/ctype.o 398LIB_OBJS += util/ctype.o
399LIB_OBJS += util/debugfs.o
353LIB_OBJS += util/environment.o 400LIB_OBJS += util/environment.o
401LIB_OBJS += util/event.o
354LIB_OBJS += util/exec_cmd.o 402LIB_OBJS += util/exec_cmd.o
355LIB_OBJS += util/help.o 403LIB_OBJS += util/help.o
356LIB_OBJS += util/levenshtein.o 404LIB_OBJS += util/levenshtein.o
@@ -358,6 +406,9 @@ LIB_OBJS += util/parse-options.o
358LIB_OBJS += util/parse-events.o 406LIB_OBJS += util/parse-events.o
359LIB_OBJS += util/path.o 407LIB_OBJS += util/path.o
360LIB_OBJS += util/rbtree.o 408LIB_OBJS += util/rbtree.o
409LIB_OBJS += util/bitmap.o
410LIB_OBJS += util/hweight.o
411LIB_OBJS += util/find_next_bit.o
361LIB_OBJS += util/run-command.o 412LIB_OBJS += util/run-command.o
362LIB_OBJS += util/quote.o 413LIB_OBJS += util/quote.o
363LIB_OBJS += util/strbuf.o 414LIB_OBJS += util/strbuf.o
@@ -367,7 +418,6 @@ LIB_OBJS += util/usage.o
367LIB_OBJS += util/wrapper.o 418LIB_OBJS += util/wrapper.o
368LIB_OBJS += util/sigchain.o 419LIB_OBJS += util/sigchain.o
369LIB_OBJS += util/symbol.o 420LIB_OBJS += util/symbol.o
370LIB_OBJS += util/module.o
371LIB_OBJS += util/color.o 421LIB_OBJS += util/color.o
372LIB_OBJS += util/pager.o 422LIB_OBJS += util/pager.o
373LIB_OBJS += util/header.o 423LIB_OBJS += util/header.o
@@ -375,15 +425,33 @@ LIB_OBJS += util/callchain.o
375LIB_OBJS += util/values.o 425LIB_OBJS += util/values.o
376LIB_OBJS += util/debug.o 426LIB_OBJS += util/debug.o
377LIB_OBJS += util/map.o 427LIB_OBJS += util/map.o
428LIB_OBJS += util/session.o
378LIB_OBJS += util/thread.o 429LIB_OBJS += util/thread.o
379LIB_OBJS += util/trace-event-parse.o 430LIB_OBJS += util/trace-event-parse.o
380LIB_OBJS += util/trace-event-read.o 431LIB_OBJS += util/trace-event-read.o
381LIB_OBJS += util/trace-event-info.o 432LIB_OBJS += util/trace-event-info.o
433LIB_OBJS += util/trace-event-scripting.o
382LIB_OBJS += util/svghelper.o 434LIB_OBJS += util/svghelper.o
435LIB_OBJS += util/sort.o
436LIB_OBJS += util/hist.o
437LIB_OBJS += util/probe-event.o
438LIB_OBJS += util/util.o
439LIB_OBJS += util/cpumap.o
383 440
384BUILTIN_OBJS += builtin-annotate.o 441BUILTIN_OBJS += builtin-annotate.o
442
443BUILTIN_OBJS += builtin-bench.o
444
445# Benchmark modules
446BUILTIN_OBJS += bench/sched-messaging.o
447BUILTIN_OBJS += bench/sched-pipe.o
448BUILTIN_OBJS += bench/mem-memcpy.o
449
450BUILTIN_OBJS += builtin-diff.o
385BUILTIN_OBJS += builtin-help.o 451BUILTIN_OBJS += builtin-help.o
386BUILTIN_OBJS += builtin-sched.o 452BUILTIN_OBJS += builtin-sched.o
453BUILTIN_OBJS += builtin-buildid-list.o
454BUILTIN_OBJS += builtin-buildid-cache.o
387BUILTIN_OBJS += builtin-list.o 455BUILTIN_OBJS += builtin-list.o
388BUILTIN_OBJS += builtin-record.o 456BUILTIN_OBJS += builtin-record.o
389BUILTIN_OBJS += builtin-report.o 457BUILTIN_OBJS += builtin-report.o
@@ -391,6 +459,9 @@ BUILTIN_OBJS += builtin-stat.o
391BUILTIN_OBJS += builtin-timechart.o 459BUILTIN_OBJS += builtin-timechart.o
392BUILTIN_OBJS += builtin-top.o 460BUILTIN_OBJS += builtin-top.o
393BUILTIN_OBJS += builtin-trace.o 461BUILTIN_OBJS += builtin-trace.o
462BUILTIN_OBJS += builtin-probe.o
463BUILTIN_OBJS += builtin-kmem.o
464BUILTIN_OBJS += builtin-lock.o
394 465
395PERFLIBS = $(LIB_FILE) 466PERFLIBS = $(LIB_FILE)
396 467
@@ -421,36 +492,75 @@ ifeq ($(uname_S),Darwin)
421 PTHREAD_LIBS = 492 PTHREAD_LIBS =
422endif 493endif
423 494
424ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) > /dev/null 2>&1 && echo y"), y) 495ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
425 ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o /dev/null $(ALL_LDFLAGS) > /dev/null 2>&1 && echo y"), y) 496ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
497 msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
498endif
499
500 ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
426 BASIC_CFLAGS += -DLIBELF_NO_MMAP 501 BASIC_CFLAGS += -DLIBELF_NO_MMAP
427 endif 502 endif
428else 503else
429 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); 504 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
430endif 505endif
431 506
507ifneq ($(shell sh -c "(echo '\#include <dwarf.h>'; echo '\#include <libdw.h>'; echo 'int main(void) { Dwarf *dbg; dbg = dwarf_begin(0, DWARF_C_READ); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -I/usr/include/elfutils -ldw -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
508 msg := $(warning No libdw.h found or old libdw.h found, disables dwarf support. Please install elfutils-devel/elfutils-dev);
509 BASIC_CFLAGS += -DNO_DWARF_SUPPORT
510else
511 BASIC_CFLAGS += -I/usr/include/elfutils
512 EXTLIBS += -lelf -ldw
513 LIB_OBJS += util/probe-finder.o
514endif
515
516ifndef NO_LIBPERL
517PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null`
518PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
519endif
520
521ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o $(BITBUCKET) $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y)
522 BASIC_CFLAGS += -DNO_LIBPERL
523else
524 ALL_LDFLAGS += $(PERL_EMBED_LDOPTS)
525 LIB_OBJS += util/scripting-engines/trace-event-perl.o
526 LIB_OBJS += scripts/perl/Perf-Trace-Util/Context.o
527endif
528
529ifndef NO_LIBPYTHON
530PYTHON_EMBED_LDOPTS = `python-config --ldflags 2>/dev/null`
531PYTHON_EMBED_CCOPTS = `python-config --cflags 2>/dev/null`
532endif
533
534ifneq ($(shell sh -c "(echo '\#include <Python.h>'; echo 'int main(void) { Py_Initialize(); return 0; }') | $(CC) -x c - $(PYTHON_EMBED_CCOPTS) -o /dev/null $(PYTHON_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y)
535 BASIC_CFLAGS += -DNO_LIBPYTHON
536else
537 ALL_LDFLAGS += $(PYTHON_EMBED_LDOPTS)
538 LIB_OBJS += util/scripting-engines/trace-event-python.o
539 LIB_OBJS += scripts/python/Perf-Trace-Util/Context.o
540endif
541
432ifdef NO_DEMANGLE 542ifdef NO_DEMANGLE
433 BASIC_CFLAGS += -DNO_DEMANGLE 543 BASIC_CFLAGS += -DNO_DEMANGLE
434else 544else
435 has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) -lbfd > /dev/null 2>&1 && echo y") 545 has_bfd := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd "$(QUIET_STDERR)" && echo y")
436 546
437 ifeq ($(has_bfd),y) 547 ifeq ($(has_bfd),y)
438 EXTLIBS += -lbfd 548 EXTLIBS += -lbfd
439 else 549 else
440 has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) -lbfd -liberty > /dev/null 2>&1 && echo y") 550 has_bfd_iberty := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty "$(QUIET_STDERR)" && echo y")
441 ifeq ($(has_bfd_iberty),y) 551 ifeq ($(has_bfd_iberty),y)
442 EXTLIBS += -lbfd -liberty 552 EXTLIBS += -lbfd -liberty
443 else 553 else
444 has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) -lbfd -liberty -lz > /dev/null 2>&1 && echo y") 554 has_bfd_iberty_z := $(shell sh -c "(echo '\#include <bfd.h>'; echo 'int main(void) { bfd_demangle(0, 0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -lbfd -liberty -lz "$(QUIET_STDERR)" && echo y")
445 ifeq ($(has_bfd_iberty_z),y) 555 ifeq ($(has_bfd_iberty_z),y)
446 EXTLIBS += -lbfd -liberty -lz 556 EXTLIBS += -lbfd -liberty -lz
447 else 557 else
448 has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o /dev/null $(ALL_LDFLAGS) -liberty > /dev/null 2>&1 && echo y") 558 has_cplus_demangle := $(shell sh -c "(echo 'extern char *cplus_demangle(const char *, int);'; echo 'int main(void) { cplus_demangle(0, 0); return 0; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) -liberty "$(QUIET_STDERR)" && echo y")
449 ifeq ($(has_cplus_demangle),y) 559 ifeq ($(has_cplus_demangle),y)
450 EXTLIBS += -liberty 560 EXTLIBS += -liberty
451 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE 561 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE
452 else 562 else
453 msg := $(warning No bfd.h/libbfd found, install binutils-dev[el] to gain symbol demangling) 563 msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling)
454 BASIC_CFLAGS += -DNO_DEMANGLE 564 BASIC_CFLAGS += -DNO_DEMANGLE
455 endif 565 endif
456 endif 566 endif
@@ -693,7 +803,7 @@ export TAR INSTALL DESTDIR SHELL_PATH
693 803
694SHELL = $(SHELL_PATH) 804SHELL = $(SHELL_PATH)
695 805
696all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS 806all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS
697ifneq (,$X) 807ifneq (,$X)
698 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) 808 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';)
699endif 809endif
@@ -787,6 +897,31 @@ util/config.o: util/config.c PERF-CFLAGS
787util/rbtree.o: ../../lib/rbtree.c PERF-CFLAGS 897util/rbtree.o: ../../lib/rbtree.c PERF-CFLAGS
788 $(QUIET_CC)$(CC) -o util/rbtree.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< 898 $(QUIET_CC)$(CC) -o util/rbtree.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
789 899
900# some perf warning policies can't fit to lib/bitmap.c, eg: it warns about variable shadowing
901# from <string.h> that comes from kernel headers wrapping.
902KBITMAP_FLAGS=`echo $(ALL_CFLAGS) | sed s/-Wshadow// | sed s/-Wswitch-default// | sed s/-Wextra//`
903
904util/bitmap.o: ../../lib/bitmap.c PERF-CFLAGS
905 $(QUIET_CC)$(CC) -o util/bitmap.o -c $(KBITMAP_FLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
906
907util/hweight.o: ../../lib/hweight.c PERF-CFLAGS
908 $(QUIET_CC)$(CC) -o util/hweight.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
909
910util/find_next_bit.o: ../../lib/find_next_bit.c PERF-CFLAGS
911 $(QUIET_CC)$(CC) -o util/find_next_bit.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
912
913util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c PERF-CFLAGS
914 $(QUIET_CC)$(CC) -o util/scripting-engines/trace-event-perl.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
915
916scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c PERF-CFLAGS
917 $(QUIET_CC)$(CC) -o scripts/perl/Perf-Trace-Util/Context.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
918
919util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c PERF-CFLAGS
920 $(QUIET_CC)$(CC) -o util/scripting-engines/trace-event-python.o -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
921
922scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Util/Context.c PERF-CFLAGS
923 $(QUIET_CC)$(CC) -o scripts/python/Perf-Trace-Util/Context.o -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
924
790perf-%$X: %.o $(PERFLIBS) 925perf-%$X: %.o $(PERFLIBS)
791 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) 926 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
792 927
@@ -894,6 +1029,18 @@ export perfexec_instdir
894install: all 1029install: all
895 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' 1030 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
896 $(INSTALL) perf$X '$(DESTDIR_SQ)$(bindir_SQ)' 1031 $(INSTALL) perf$X '$(DESTDIR_SQ)$(bindir_SQ)'
1032 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
1033 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin'
1034 $(INSTALL) perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
1035 $(INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
1036 $(INSTALL) scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl'
1037 $(INSTALL) scripts/perl/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin'
1038 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'
1039 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
1040 $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'
1041 $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'
1042 $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
1043
897ifdef BUILT_INS 1044ifdef BUILT_INS
898 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' 1045 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
899 $(INSTALL) $(BUILT_INS) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' 1046 $(INSTALL) $(BUILT_INS) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
@@ -979,7 +1126,7 @@ distclean: clean
979# $(RM) configure 1126# $(RM) configure
980 1127
981clean: 1128clean:
982 $(RM) *.o */*.o $(LIB_FILE) 1129 $(RM) *.o */*.o */*/*.o */*/*/*.o $(LIB_FILE)
983 $(RM) $(ALL_PROGRAMS) $(BUILT_INS) perf$X 1130 $(RM) $(ALL_PROGRAMS) $(BUILT_INS) perf$X
984 $(RM) $(TEST_PROGRAMS) 1131 $(RM) $(TEST_PROGRAMS)
985 $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope* 1132 $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope*
@@ -996,6 +1143,11 @@ clean:
996.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS 1143.PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS
997.PHONY: .FORCE-PERF-BUILD-OPTIONS 1144.PHONY: .FORCE-PERF-BUILD-OPTIONS
998 1145
1146.perf.dev.null:
1147 touch .perf.dev.null
1148
1149.INTERMEDIATE: .perf.dev.null
1150
999### Make sure built-ins do not have dups and listed in perf.c 1151### Make sure built-ins do not have dups and listed in perf.c
1000# 1152#
1001check-builtins:: 1153check-builtins::