diff options
Diffstat (limited to 'tools/perf/Makefile')
-rw-r--r-- | tools/perf/Makefile | 230 |
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 @@ | |||
2 | all:: | 2 | all:: |
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 | ||
149 | PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE | 154 | PERF-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') | |||
157 | uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not') | 162 | uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not') |
158 | uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not') | 163 | uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not') |
159 | 164 | ||
160 | # | ||
161 | # Add -m32 for cross-builds: | ||
162 | # | ||
163 | ifdef NO_64BIT | ||
164 | MBITS := -m32 | ||
165 | else | ||
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 | ||
172 | endif | ||
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 | |||
200 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes | 191 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes |
201 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement | 192 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement |
202 | 193 | ||
203 | CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -fstack-protector-all -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) | 194 | ifeq ("$(origin DEBUG)", "command line") |
204 | LDFLAGS = -lpthread -lrt -lelf -lm | 195 | PERF_DEBUG = $(DEBUG) |
205 | ALL_CFLAGS = $(CFLAGS) | 196 | endif |
197 | ifndef PERF_DEBUG | ||
198 | CFLAGS_OPTIMIZE = -O6 | ||
199 | endif | ||
200 | |||
201 | CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) | ||
202 | EXTLIBS = -lpthread -lrt -lelf -lm | ||
203 | ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 | ||
206 | ALL_LDFLAGS = $(LDFLAGS) | 204 | ALL_LDFLAGS = $(LDFLAGS) |
207 | STRIP ?= strip | 205 | STRIP ?= 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 | ||
220 | ifndef DESTDIR | ||
221 | prefix = $(HOME) | 221 | prefix = $(HOME) |
222 | endif | ||
222 | bindir_relative = bin | 223 | bindir_relative = bin |
223 | bindir = $(prefix)/$(bindir_relative) | 224 | bindir = $(prefix)/$(bindir_relative) |
224 | mandir = share/man | 225 | mandir = share/man |
@@ -235,12 +236,11 @@ sysconfdir = $(prefix)/etc | |||
235 | ETC_PERFCONFIG = etc/perfconfig | 236 | ETC_PERFCONFIG = etc/perfconfig |
236 | endif | 237 | endif |
237 | lib = lib | 238 | lib = lib |
238 | # DESTDIR= | ||
239 | 239 | ||
240 | export prefix bindir sharedir sysconfdir | 240 | export prefix bindir sharedir sysconfdir |
241 | 241 | ||
242 | CC = gcc | 242 | CC = $(CROSS_COMPILE)gcc |
243 | AR = ar | 243 | AR = $(CROSS_COMPILE)ar |
244 | RM = rm -f | 244 | RM = rm -f |
245 | TAR = tar | 245 | TAR = tar |
246 | FIND = find | 246 | FIND = 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.. |
253 | SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ | 253 | SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ |
254 | 254 | ||
255 | ifeq ($(V), 2) | ||
256 | QUIET_STDERR = ">/dev/null" | ||
257 | else | ||
258 | QUIET_STDERR = ">/dev/null 2>&1" | ||
259 | endif | ||
260 | |||
261 | BITBUCKET = "/dev/null" | ||
262 | |||
263 | ifneq ($(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 | ||
265 | endif | ||
266 | |||
267 | ifeq ($(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 | ||
269 | endif | ||
255 | 270 | ||
256 | 271 | ||
257 | ### --- END CONFIGURATION SECTION --- | 272 | ### --- END CONFIGURATION SECTION --- |
@@ -273,11 +288,7 @@ SCRIPT_PERL = | |||
273 | SCRIPT_SH = | 288 | SCRIPT_SH = |
274 | TEST_PROGRAMS = | 289 | TEST_PROGRAMS = |
275 | 290 | ||
276 | # | 291 | SCRIPT_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 |
310 | ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) | 318 | ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) |
@@ -327,30 +335,70 @@ LIB_FILE=libperf.a | |||
327 | LIB_H += ../../include/linux/perf_event.h | 335 | LIB_H += ../../include/linux/perf_event.h |
328 | LIB_H += ../../include/linux/rbtree.h | 336 | LIB_H += ../../include/linux/rbtree.h |
329 | LIB_H += ../../include/linux/list.h | 337 | LIB_H += ../../include/linux/list.h |
338 | LIB_H += ../../include/linux/hash.h | ||
339 | LIB_H += ../../include/linux/stringify.h | ||
340 | LIB_H += util/include/linux/bitmap.h | ||
341 | LIB_H += util/include/linux/bitops.h | ||
342 | LIB_H += util/include/linux/compiler.h | ||
343 | LIB_H += util/include/linux/ctype.h | ||
344 | LIB_H += util/include/linux/kernel.h | ||
330 | LIB_H += util/include/linux/list.h | 345 | LIB_H += util/include/linux/list.h |
346 | LIB_H += util/include/linux/module.h | ||
347 | LIB_H += util/include/linux/poison.h | ||
348 | LIB_H += util/include/linux/prefetch.h | ||
349 | LIB_H += util/include/linux/rbtree.h | ||
350 | LIB_H += util/include/linux/string.h | ||
351 | LIB_H += util/include/linux/types.h | ||
352 | LIB_H += util/include/asm/asm-offsets.h | ||
353 | LIB_H += util/include/asm/bitops.h | ||
354 | LIB_H += util/include/asm/bug.h | ||
355 | LIB_H += util/include/asm/byteorder.h | ||
356 | LIB_H += util/include/asm/swab.h | ||
357 | LIB_H += util/include/asm/system.h | ||
358 | LIB_H += util/include/asm/uaccess.h | ||
331 | LIB_H += perf.h | 359 | LIB_H += perf.h |
360 | LIB_H += util/cache.h | ||
361 | LIB_H += util/callchain.h | ||
362 | LIB_H += util/build-id.h | ||
363 | LIB_H += util/debug.h | ||
364 | LIB_H += util/debugfs.h | ||
365 | LIB_H += util/event.h | ||
366 | LIB_H += util/exec_cmd.h | ||
332 | LIB_H += util/types.h | 367 | LIB_H += util/types.h |
333 | LIB_H += util/levenshtein.h | 368 | LIB_H += util/levenshtein.h |
369 | LIB_H += util/map.h | ||
334 | LIB_H += util/parse-options.h | 370 | LIB_H += util/parse-options.h |
335 | LIB_H += util/parse-events.h | 371 | LIB_H += util/parse-events.h |
336 | LIB_H += util/quote.h | 372 | LIB_H += util/quote.h |
337 | LIB_H += util/util.h | 373 | LIB_H += util/util.h |
374 | LIB_H += util/header.h | ||
338 | LIB_H += util/help.h | 375 | LIB_H += util/help.h |
376 | LIB_H += util/session.h | ||
339 | LIB_H += util/strbuf.h | 377 | LIB_H += util/strbuf.h |
340 | LIB_H += util/string.h | 378 | LIB_H += util/string.h |
341 | LIB_H += util/strlist.h | 379 | LIB_H += util/strlist.h |
380 | LIB_H += util/svghelper.h | ||
342 | LIB_H += util/run-command.h | 381 | LIB_H += util/run-command.h |
343 | LIB_H += util/sigchain.h | 382 | LIB_H += util/sigchain.h |
344 | LIB_H += util/symbol.h | 383 | LIB_H += util/symbol.h |
345 | LIB_H += util/module.h | ||
346 | LIB_H += util/color.h | 384 | LIB_H += util/color.h |
347 | LIB_H += util/values.h | 385 | LIB_H += util/values.h |
386 | LIB_H += util/sort.h | ||
387 | LIB_H += util/hist.h | ||
388 | LIB_H += util/thread.h | ||
389 | LIB_H += util/trace-event.h | ||
390 | LIB_H += util/probe-finder.h | ||
391 | LIB_H += util/probe-event.h | ||
392 | LIB_H += util/cpumap.h | ||
348 | 393 | ||
349 | LIB_OBJS += util/abspath.o | 394 | LIB_OBJS += util/abspath.o |
350 | LIB_OBJS += util/alias.o | 395 | LIB_OBJS += util/alias.o |
396 | LIB_OBJS += util/build-id.o | ||
351 | LIB_OBJS += util/config.o | 397 | LIB_OBJS += util/config.o |
352 | LIB_OBJS += util/ctype.o | 398 | LIB_OBJS += util/ctype.o |
399 | LIB_OBJS += util/debugfs.o | ||
353 | LIB_OBJS += util/environment.o | 400 | LIB_OBJS += util/environment.o |
401 | LIB_OBJS += util/event.o | ||
354 | LIB_OBJS += util/exec_cmd.o | 402 | LIB_OBJS += util/exec_cmd.o |
355 | LIB_OBJS += util/help.o | 403 | LIB_OBJS += util/help.o |
356 | LIB_OBJS += util/levenshtein.o | 404 | LIB_OBJS += util/levenshtein.o |
@@ -358,6 +406,9 @@ LIB_OBJS += util/parse-options.o | |||
358 | LIB_OBJS += util/parse-events.o | 406 | LIB_OBJS += util/parse-events.o |
359 | LIB_OBJS += util/path.o | 407 | LIB_OBJS += util/path.o |
360 | LIB_OBJS += util/rbtree.o | 408 | LIB_OBJS += util/rbtree.o |
409 | LIB_OBJS += util/bitmap.o | ||
410 | LIB_OBJS += util/hweight.o | ||
411 | LIB_OBJS += util/find_next_bit.o | ||
361 | LIB_OBJS += util/run-command.o | 412 | LIB_OBJS += util/run-command.o |
362 | LIB_OBJS += util/quote.o | 413 | LIB_OBJS += util/quote.o |
363 | LIB_OBJS += util/strbuf.o | 414 | LIB_OBJS += util/strbuf.o |
@@ -367,7 +418,6 @@ LIB_OBJS += util/usage.o | |||
367 | LIB_OBJS += util/wrapper.o | 418 | LIB_OBJS += util/wrapper.o |
368 | LIB_OBJS += util/sigchain.o | 419 | LIB_OBJS += util/sigchain.o |
369 | LIB_OBJS += util/symbol.o | 420 | LIB_OBJS += util/symbol.o |
370 | LIB_OBJS += util/module.o | ||
371 | LIB_OBJS += util/color.o | 421 | LIB_OBJS += util/color.o |
372 | LIB_OBJS += util/pager.o | 422 | LIB_OBJS += util/pager.o |
373 | LIB_OBJS += util/header.o | 423 | LIB_OBJS += util/header.o |
@@ -375,15 +425,33 @@ LIB_OBJS += util/callchain.o | |||
375 | LIB_OBJS += util/values.o | 425 | LIB_OBJS += util/values.o |
376 | LIB_OBJS += util/debug.o | 426 | LIB_OBJS += util/debug.o |
377 | LIB_OBJS += util/map.o | 427 | LIB_OBJS += util/map.o |
428 | LIB_OBJS += util/session.o | ||
378 | LIB_OBJS += util/thread.o | 429 | LIB_OBJS += util/thread.o |
379 | LIB_OBJS += util/trace-event-parse.o | 430 | LIB_OBJS += util/trace-event-parse.o |
380 | LIB_OBJS += util/trace-event-read.o | 431 | LIB_OBJS += util/trace-event-read.o |
381 | LIB_OBJS += util/trace-event-info.o | 432 | LIB_OBJS += util/trace-event-info.o |
433 | LIB_OBJS += util/trace-event-scripting.o | ||
382 | LIB_OBJS += util/svghelper.o | 434 | LIB_OBJS += util/svghelper.o |
435 | LIB_OBJS += util/sort.o | ||
436 | LIB_OBJS += util/hist.o | ||
437 | LIB_OBJS += util/probe-event.o | ||
438 | LIB_OBJS += util/util.o | ||
439 | LIB_OBJS += util/cpumap.o | ||
383 | 440 | ||
384 | BUILTIN_OBJS += builtin-annotate.o | 441 | BUILTIN_OBJS += builtin-annotate.o |
442 | |||
443 | BUILTIN_OBJS += builtin-bench.o | ||
444 | |||
445 | # Benchmark modules | ||
446 | BUILTIN_OBJS += bench/sched-messaging.o | ||
447 | BUILTIN_OBJS += bench/sched-pipe.o | ||
448 | BUILTIN_OBJS += bench/mem-memcpy.o | ||
449 | |||
450 | BUILTIN_OBJS += builtin-diff.o | ||
385 | BUILTIN_OBJS += builtin-help.o | 451 | BUILTIN_OBJS += builtin-help.o |
386 | BUILTIN_OBJS += builtin-sched.o | 452 | BUILTIN_OBJS += builtin-sched.o |
453 | BUILTIN_OBJS += builtin-buildid-list.o | ||
454 | BUILTIN_OBJS += builtin-buildid-cache.o | ||
387 | BUILTIN_OBJS += builtin-list.o | 455 | BUILTIN_OBJS += builtin-list.o |
388 | BUILTIN_OBJS += builtin-record.o | 456 | BUILTIN_OBJS += builtin-record.o |
389 | BUILTIN_OBJS += builtin-report.o | 457 | BUILTIN_OBJS += builtin-report.o |
@@ -391,6 +459,9 @@ BUILTIN_OBJS += builtin-stat.o | |||
391 | BUILTIN_OBJS += builtin-timechart.o | 459 | BUILTIN_OBJS += builtin-timechart.o |
392 | BUILTIN_OBJS += builtin-top.o | 460 | BUILTIN_OBJS += builtin-top.o |
393 | BUILTIN_OBJS += builtin-trace.o | 461 | BUILTIN_OBJS += builtin-trace.o |
462 | BUILTIN_OBJS += builtin-probe.o | ||
463 | BUILTIN_OBJS += builtin-kmem.o | ||
464 | BUILTIN_OBJS += builtin-lock.o | ||
394 | 465 | ||
395 | PERFLIBS = $(LIB_FILE) | 466 | PERFLIBS = $(LIB_FILE) |
396 | 467 | ||
@@ -421,36 +492,75 @@ ifeq ($(uname_S),Darwin) | |||
421 | PTHREAD_LIBS = | 492 | PTHREAD_LIBS = |
422 | endif | 493 | endif |
423 | 494 | ||
424 | ifeq ($(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) | 495 | ifeq ($(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) | 496 | ifneq ($(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); | ||
498 | endif | ||
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 |
428 | else | 503 | else |
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]); |
430 | endif | 505 | endif |
431 | 506 | ||
507 | ifneq ($(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 | ||
510 | else | ||
511 | BASIC_CFLAGS += -I/usr/include/elfutils | ||
512 | EXTLIBS += -lelf -ldw | ||
513 | LIB_OBJS += util/probe-finder.o | ||
514 | endif | ||
515 | |||
516 | ifndef NO_LIBPERL | ||
517 | PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null` | ||
518 | PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` | ||
519 | endif | ||
520 | |||
521 | ifneq ($(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 | ||
523 | else | ||
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 | ||
527 | endif | ||
528 | |||
529 | ifndef NO_LIBPYTHON | ||
530 | PYTHON_EMBED_LDOPTS = `python-config --ldflags 2>/dev/null` | ||
531 | PYTHON_EMBED_CCOPTS = `python-config --cflags 2>/dev/null` | ||
532 | endif | ||
533 | |||
534 | ifneq ($(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 | ||
536 | else | ||
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 | ||
540 | endif | ||
541 | |||
432 | ifdef NO_DEMANGLE | 542 | ifdef NO_DEMANGLE |
433 | BASIC_CFLAGS += -DNO_DEMANGLE | 543 | BASIC_CFLAGS += -DNO_DEMANGLE |
434 | else | 544 | else |
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 | ||
694 | SHELL = $(SHELL_PATH) | 804 | SHELL = $(SHELL_PATH) |
695 | 805 | ||
696 | all:: shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS | 806 | all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS |
697 | ifneq (,$X) | 807 | ifneq (,$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';) |
699 | endif | 809 | endif |
@@ -787,6 +897,31 @@ util/config.o: util/config.c PERF-CFLAGS | |||
787 | util/rbtree.o: ../../lib/rbtree.c PERF-CFLAGS | 897 | util/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. | ||
902 | KBITMAP_FLAGS=`echo $(ALL_CFLAGS) | sed s/-Wshadow// | sed s/-Wswitch-default// | sed s/-Wextra//` | ||
903 | |||
904 | util/bitmap.o: ../../lib/bitmap.c PERF-CFLAGS | ||
905 | $(QUIET_CC)$(CC) -o util/bitmap.o -c $(KBITMAP_FLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< | ||
906 | |||
907 | util/hweight.o: ../../lib/hweight.c PERF-CFLAGS | ||
908 | $(QUIET_CC)$(CC) -o util/hweight.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< | ||
909 | |||
910 | util/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 | |||
913 | util/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 | |||
916 | scripts/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 | |||
919 | util/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 | |||
922 | scripts/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 | |||
790 | perf-%$X: %.o $(PERFLIBS) | 925 | perf-%$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 | |||
894 | install: all | 1029 | install: 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 | |||
897 | ifdef BUILT_INS | 1044 | ifdef 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 | ||
981 | clean: | 1128 | clean: |
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 | # |
1001 | check-builtins:: | 1153 | check-builtins:: |