Root/
1 | # The default target of this Makefile is... |
2 | all:: |
3 | |
4 | # Define V=1 to have a more verbose compile. |
5 | # Define V=2 to have an even more verbose compile. |
6 | # |
7 | # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() |
8 | # or vsnprintf() return -1 instead of number of characters which would |
9 | # have been written to the final string if enough space had been available. |
10 | # |
11 | # Define FREAD_READS_DIRECTORIES if your are on a system which succeeds |
12 | # when attempting to read from an fopen'ed directory. |
13 | # |
14 | # Define NO_OPENSSL environment variable if you do not have OpenSSL. |
15 | # This also implies MOZILLA_SHA1. |
16 | # |
17 | # Define CURLDIR=/foo/bar if your curl header and library files are in |
18 | # /foo/bar/include and /foo/bar/lib directories. |
19 | # |
20 | # Define EXPATDIR=/foo/bar if your expat header and library files are in |
21 | # /foo/bar/include and /foo/bar/lib directories. |
22 | # |
23 | # Define NO_D_INO_IN_DIRENT if you don't have d_ino in your struct dirent. |
24 | # |
25 | # Define NO_D_TYPE_IN_DIRENT if your platform defines DT_UNKNOWN but lacks |
26 | # d_type in struct dirent (latest Cygwin -- will be fixed soonish). |
27 | # |
28 | # Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.) |
29 | # do not support the 'size specifiers' introduced by C99, namely ll, hh, |
30 | # j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). |
31 | # some C compilers supported these specifiers prior to C99 as an extension. |
32 | # |
33 | # Define NO_STRCASESTR if you don't have strcasestr. |
34 | # |
35 | # Define NO_MEMMEM if you don't have memmem. |
36 | # |
37 | # Define NO_STRTOUMAX if you don't have strtoumax in the C library. |
38 | # If your compiler also does not support long long or does not have |
39 | # strtoull, define NO_STRTOULL. |
40 | # |
41 | # Define NO_SETENV if you don't have setenv in the C library. |
42 | # |
43 | # Define NO_UNSETENV if you don't have unsetenv in the C library. |
44 | # |
45 | # Define NO_MKDTEMP if you don't have mkdtemp in the C library. |
46 | # |
47 | # Define NO_SYS_SELECT_H if you don't have sys/select.h. |
48 | # |
49 | # Define NO_SYMLINK_HEAD if you never want .perf/HEAD to be a symbolic link. |
50 | # Enable it on Windows. By default, symrefs are still used. |
51 | # |
52 | # Define NO_SVN_TESTS if you want to skip time-consuming SVN interoperability |
53 | # tests. These tests take up a significant amount of the total test time |
54 | # but are not needed unless you plan to talk to SVN repos. |
55 | # |
56 | # Define NO_FINK if you are building on Darwin/Mac OS X, have Fink |
57 | # installed in /sw, but don't want PERF to link against any libraries |
58 | # installed there. If defined you may specify your own (or Fink's) |
59 | # include directories and library directories by defining CFLAGS |
60 | # and LDFLAGS appropriately. |
61 | # |
62 | # Define NO_DARWIN_PORTS if you are building on Darwin/Mac OS X, |
63 | # have DarwinPorts installed in /opt/local, but don't want PERF to |
64 | # link against any libraries installed there. If defined you may |
65 | # specify your own (or DarwinPort's) include directories and |
66 | # library directories by defining CFLAGS and LDFLAGS appropriately. |
67 | # |
68 | # Define PPC_SHA1 environment variable when running make to make use of |
69 | # a bundled SHA1 routine optimized for PowerPC. |
70 | # |
71 | # Define ARM_SHA1 environment variable when running make to make use of |
72 | # a bundled SHA1 routine optimized for ARM. |
73 | # |
74 | # Define MOZILLA_SHA1 environment variable when running make to make use of |
75 | # a bundled SHA1 routine coming from Mozilla. It is GPL'd and should be fast |
76 | # on non-x86 architectures (e.g. PowerPC), while the OpenSSL version (default |
77 | # choice) has very fast version optimized for i586. |
78 | # |
79 | # Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin). |
80 | # |
81 | # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin). |
82 | # |
83 | # Define NEEDS_SOCKET if linking with libc is not enough (SunOS, |
84 | # Patrick Mauritz). |
85 | # |
86 | # Define NO_MMAP if you want to avoid mmap. |
87 | # |
88 | # Define NO_PTHREADS if you do not have or do not want to use Pthreads. |
89 | # |
90 | # Define NO_PREAD if you have a problem with pread() system call (e.g. |
91 | # cygwin.dll before v1.5.22). |
92 | # |
93 | # Define NO_FAST_WORKING_DIRECTORY if accessing objects in pack files is |
94 | # generally faster on your platform than accessing the working directory. |
95 | # |
96 | # Define NO_TRUSTABLE_FILEMODE if your filesystem may claim to support |
97 | # the executable mode bit, but doesn't really do so. |
98 | # |
99 | # Define NO_IPV6 if you lack IPv6 support and getaddrinfo(). |
100 | # |
101 | # Define NO_SOCKADDR_STORAGE if your platform does not have struct |
102 | # sockaddr_storage. |
103 | # |
104 | # Define NO_ICONV if your libc does not properly support iconv. |
105 | # |
106 | # Define OLD_ICONV if your library has an old iconv(), where the second |
107 | # (input buffer pointer) parameter is declared with type (const char **). |
108 | # |
109 | # Define NO_DEFLATE_BOUND if your zlib does not have deflateBound. |
110 | # |
111 | # Define NO_R_TO_GCC_LINKER if your gcc does not like "-R/path/lib" |
112 | # that tells runtime paths to dynamic libraries; |
113 | # "-Wl,-rpath=/path/lib" is used instead. |
114 | # |
115 | # Define USE_NSEC below if you want perf to care about sub-second file mtimes |
116 | # and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and |
117 | # it will BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely |
118 | # randomly break unless your underlying filesystem supports those sub-second |
119 | # times (my ext3 doesn't). |
120 | # |
121 | # Define USE_ST_TIMESPEC if your "struct stat" uses "st_ctimespec" instead of |
122 | # "st_ctim" |
123 | # |
124 | # Define NO_NSEC if your "struct stat" does not have "st_ctim.tv_nsec" |
125 | # available. This automatically turns USE_NSEC off. |
126 | # |
127 | # Define USE_STDEV below if you want perf to care about the underlying device |
128 | # change being considered an inode change from the update-index perspective. |
129 | # |
130 | # Define NO_ST_BLOCKS_IN_STRUCT_STAT if your platform does not have st_blocks |
131 | # field that counts the on-disk footprint in 512-byte blocks. |
132 | # |
133 | # Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8 |
134 | # |
135 | # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72. |
136 | # |
137 | # Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's |
138 | # MakeMaker (e.g. using ActiveState under Cygwin). |
139 | # |
140 | # Define NO_PERL if you do not want Perl scripts or libraries at all. |
141 | # |
142 | # Define INTERNAL_QSORT to use Git's implementation of qsort(), which |
143 | # is a simplified version of the merge sort used in glibc. This is |
144 | # recommended if Git triggers O(n^2) behavior in your platform's qsort(). |
145 | # |
146 | # Define NO_EXTERNAL_GREP if you don't want "perf grep" to ever call |
147 | # your external grep (e.g., if your system lacks grep, if its grep is |
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. |
153 | |
154 | PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE |
155 | @$(SHELL_PATH) util/PERF-VERSION-GEN |
156 | -include PERF-VERSION-FILE |
157 | |
158 | uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') |
159 | uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not') |
160 | uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') |
161 | uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not') |
162 | uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not') |
163 | uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not') |
164 | |
165 | # CFLAGS and LDFLAGS are for the users to override from the command line. |
166 | |
167 | # |
168 | # Include saner warnings here, which can catch bugs: |
169 | # |
170 | |
171 | EXTRA_WARNINGS := -Wformat |
172 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security |
173 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k |
174 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow |
175 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self |
176 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked |
177 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls |
178 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstack-protector |
179 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 |
180 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default |
181 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum |
182 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers |
183 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef |
184 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wvolatile-register-var |
185 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings |
186 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast |
187 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations |
188 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-prototypes |
189 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wnested-externs |
190 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition |
191 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes |
192 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement |
193 | |
194 | ifeq ("$(origin DEBUG)", "command line") |
195 | PERF_DEBUG = $(DEBUG) |
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 |
204 | ALL_LDFLAGS = $(LDFLAGS) |
205 | STRIP ?= strip |
206 | |
207 | # Among the variables below, these: |
208 | # perfexecdir |
209 | # template_dir |
210 | # mandir |
211 | # infodir |
212 | # htmldir |
213 | # ETC_PERFCONFIG (but not sysconfdir) |
214 | # can be specified as a relative path some/where/else; |
215 | # this is interpreted as relative to $(prefix) and "perf" at |
216 | # runtime figures out where they are based on the path to the executable. |
217 | # This can help installing the suite in a relocatable way. |
218 | |
219 | # Make the path relative to DESTDIR, not to prefix |
220 | ifndef DESTDIR |
221 | prefix = $(HOME) |
222 | endif |
223 | bindir_relative = bin |
224 | bindir = $(prefix)/$(bindir_relative) |
225 | mandir = share/man |
226 | infodir = share/info |
227 | perfexecdir = libexec/perf-core |
228 | sharedir = $(prefix)/share |
229 | template_dir = share/perf-core/templates |
230 | htmldir = share/doc/perf-doc |
231 | ifeq ($(prefix),/usr) |
232 | sysconfdir = /etc |
233 | ETC_PERFCONFIG = $(sysconfdir)/perfconfig |
234 | else |
235 | sysconfdir = $(prefix)/etc |
236 | ETC_PERFCONFIG = etc/perfconfig |
237 | endif |
238 | lib = lib |
239 | |
240 | export prefix bindir sharedir sysconfdir |
241 | |
242 | CC = $(CROSS_COMPILE)gcc |
243 | AR = $(CROSS_COMPILE)ar |
244 | RM = rm -f |
245 | TAR = tar |
246 | FIND = find |
247 | INSTALL = install |
248 | RPMBUILD = rpmbuild |
249 | PTHREAD_LIBS = -lpthread |
250 | |
251 | # sparse is architecture-neutral, which means that we need to tell it |
252 | # explicitly what architecture to check for. Fix this up for yours.. |
253 | SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ |
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 |
270 | |
271 | |
272 | ### --- END CONFIGURATION SECTION --- |
273 | |
274 | # Those must not be GNU-specific; they are shared with perl/ which may |
275 | # be built by a different compiler. (Note that this is an artifact now |
276 | # but it still might be nice to keep that distinction.) |
277 | BASIC_CFLAGS = -Iutil/include |
278 | BASIC_LDFLAGS = |
279 | |
280 | # Guard against environment variables |
281 | BUILTIN_OBJS = |
282 | BUILT_INS = |
283 | COMPAT_CFLAGS = |
284 | COMPAT_OBJS = |
285 | LIB_H = |
286 | LIB_OBJS = |
287 | SCRIPT_PERL = |
288 | SCRIPT_SH = |
289 | TEST_PROGRAMS = |
290 | |
291 | SCRIPT_SH += perf-archive.sh |
292 | |
293 | # |
294 | # No Perl scripts right now: |
295 | # |
296 | |
297 | # SCRIPT_PERL += perf-add--interactive.perl |
298 | |
299 | SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ |
300 | $(patsubst %.perl,%,$(SCRIPT_PERL)) |
301 | |
302 | # Empty... |
303 | EXTRA_PROGRAMS = |
304 | |
305 | # ... and all the rest that could be moved out of bindir to perfexecdir |
306 | PROGRAMS += $(EXTRA_PROGRAMS) |
307 | |
308 | # |
309 | # Single 'perf' binary right now: |
310 | # |
311 | PROGRAMS += perf |
312 | |
313 | # List built-in command $C whose implementation cmd_$C() is not in |
314 | # builtin-$C.o but is linked in as part of some other command. |
315 | # |
316 | |
317 | # what 'all' will build and 'install' will install, in perfexecdir |
318 | ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) |
319 | |
320 | # what 'all' will build but not install in perfexecdir |
321 | OTHER_PROGRAMS = perf$X |
322 | |
323 | # Set paths to tools early so that they can be used for version tests. |
324 | ifndef SHELL_PATH |
325 | SHELL_PATH = /bin/sh |
326 | endif |
327 | ifndef PERL_PATH |
328 | PERL_PATH = /usr/bin/perl |
329 | endif |
330 | |
331 | export PERL_PATH |
332 | |
333 | LIB_FILE=libperf.a |
334 | |
335 | LIB_H += ../../include/linux/perf_event.h |
336 | LIB_H += ../../include/linux/rbtree.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 |
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 |
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 |
367 | LIB_H += util/types.h |
368 | LIB_H += util/levenshtein.h |
369 | LIB_H += util/map.h |
370 | LIB_H += util/parse-options.h |
371 | LIB_H += util/parse-events.h |
372 | LIB_H += util/quote.h |
373 | LIB_H += util/util.h |
374 | LIB_H += util/header.h |
375 | LIB_H += util/help.h |
376 | LIB_H += util/session.h |
377 | LIB_H += util/strbuf.h |
378 | LIB_H += util/string.h |
379 | LIB_H += util/strlist.h |
380 | LIB_H += util/svghelper.h |
381 | LIB_H += util/run-command.h |
382 | LIB_H += util/sigchain.h |
383 | LIB_H += util/symbol.h |
384 | LIB_H += util/color.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 |
393 | |
394 | LIB_OBJS += util/abspath.o |
395 | LIB_OBJS += util/alias.o |
396 | LIB_OBJS += util/build-id.o |
397 | LIB_OBJS += util/config.o |
398 | LIB_OBJS += util/ctype.o |
399 | LIB_OBJS += util/debugfs.o |
400 | LIB_OBJS += util/environment.o |
401 | LIB_OBJS += util/event.o |
402 | LIB_OBJS += util/exec_cmd.o |
403 | LIB_OBJS += util/help.o |
404 | LIB_OBJS += util/levenshtein.o |
405 | LIB_OBJS += util/parse-options.o |
406 | LIB_OBJS += util/parse-events.o |
407 | LIB_OBJS += util/path.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 |
412 | LIB_OBJS += util/run-command.o |
413 | LIB_OBJS += util/quote.o |
414 | LIB_OBJS += util/strbuf.o |
415 | LIB_OBJS += util/string.o |
416 | LIB_OBJS += util/strlist.o |
417 | LIB_OBJS += util/usage.o |
418 | LIB_OBJS += util/wrapper.o |
419 | LIB_OBJS += util/sigchain.o |
420 | LIB_OBJS += util/symbol.o |
421 | LIB_OBJS += util/color.o |
422 | LIB_OBJS += util/pager.o |
423 | LIB_OBJS += util/header.o |
424 | LIB_OBJS += util/callchain.o |
425 | LIB_OBJS += util/values.o |
426 | LIB_OBJS += util/debug.o |
427 | LIB_OBJS += util/map.o |
428 | LIB_OBJS += util/session.o |
429 | LIB_OBJS += util/thread.o |
430 | LIB_OBJS += util/trace-event-parse.o |
431 | LIB_OBJS += util/trace-event-read.o |
432 | LIB_OBJS += util/trace-event-info.o |
433 | LIB_OBJS += util/trace-event-scripting.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 |
440 | |
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 |
451 | BUILTIN_OBJS += builtin-help.o |
452 | BUILTIN_OBJS += builtin-sched.o |
453 | BUILTIN_OBJS += builtin-buildid-list.o |
454 | BUILTIN_OBJS += builtin-buildid-cache.o |
455 | BUILTIN_OBJS += builtin-list.o |
456 | BUILTIN_OBJS += builtin-record.o |
457 | BUILTIN_OBJS += builtin-report.o |
458 | BUILTIN_OBJS += builtin-stat.o |
459 | BUILTIN_OBJS += builtin-timechart.o |
460 | BUILTIN_OBJS += builtin-top.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 |
465 | |
466 | PERFLIBS = $(LIB_FILE) |
467 | |
468 | # |
469 | # Platform specific tweaks |
470 | # |
471 | |
472 | # We choose to avoid "if .. else if .. else .. endif endif" |
473 | # because maintaining the nesting to match is a pain. If |
474 | # we had "elif" things would have been much nicer... |
475 | |
476 | -include config.mak.autogen |
477 | -include config.mak |
478 | |
479 | ifeq ($(uname_S),Darwin) |
480 | ifndef NO_FINK |
481 | ifeq ($(shell test -d /sw/lib && echo y),y) |
482 | BASIC_CFLAGS += -I/sw/include |
483 | BASIC_LDFLAGS += -L/sw/lib |
484 | endif |
485 | endif |
486 | ifndef NO_DARWIN_PORTS |
487 | ifeq ($(shell test -d /opt/local/lib && echo y),y) |
488 | BASIC_CFLAGS += -I/opt/local/include |
489 | BASIC_LDFLAGS += -L/opt/local/lib |
490 | endif |
491 | endif |
492 | PTHREAD_LIBS = |
493 | endif |
494 | |
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) |
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) |
501 | BASIC_CFLAGS += -DLIBELF_NO_MMAP |
502 | endif |
503 | else |
504 | msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]); |
505 | endif |
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 | |
542 | ifdef NO_DEMANGLE |
543 | BASIC_CFLAGS += -DNO_DEMANGLE |
544 | else |
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") |
546 | |
547 | ifeq ($(has_bfd),y) |
548 | EXTLIBS += -lbfd |
549 | else |
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") |
551 | ifeq ($(has_bfd_iberty),y) |
552 | EXTLIBS += -lbfd -liberty |
553 | else |
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") |
555 | ifeq ($(has_bfd_iberty_z),y) |
556 | EXTLIBS += -lbfd -liberty -lz |
557 | else |
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") |
559 | ifeq ($(has_cplus_demangle),y) |
560 | EXTLIBS += -liberty |
561 | BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE |
562 | else |
563 | msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling) |
564 | BASIC_CFLAGS += -DNO_DEMANGLE |
565 | endif |
566 | endif |
567 | endif |
568 | endif |
569 | endif |
570 | |
571 | ifndef CC_LD_DYNPATH |
572 | ifdef NO_R_TO_GCC_LINKER |
573 | # Some gcc does not accept and pass -R to the linker to specify |
574 | # the runtime dynamic library path. |
575 | CC_LD_DYNPATH = -Wl,-rpath, |
576 | else |
577 | CC_LD_DYNPATH = -R |
578 | endif |
579 | endif |
580 | |
581 | ifdef NEEDS_SOCKET |
582 | EXTLIBS += -lsocket |
583 | endif |
584 | ifdef NEEDS_NSL |
585 | EXTLIBS += -lnsl |
586 | endif |
587 | ifdef NO_D_TYPE_IN_DIRENT |
588 | BASIC_CFLAGS += -DNO_D_TYPE_IN_DIRENT |
589 | endif |
590 | ifdef NO_D_INO_IN_DIRENT |
591 | BASIC_CFLAGS += -DNO_D_INO_IN_DIRENT |
592 | endif |
593 | ifdef NO_ST_BLOCKS_IN_STRUCT_STAT |
594 | BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT |
595 | endif |
596 | ifdef USE_NSEC |
597 | BASIC_CFLAGS += -DUSE_NSEC |
598 | endif |
599 | ifdef USE_ST_TIMESPEC |
600 | BASIC_CFLAGS += -DUSE_ST_TIMESPEC |
601 | endif |
602 | ifdef NO_NSEC |
603 | BASIC_CFLAGS += -DNO_NSEC |
604 | endif |
605 | ifdef NO_C99_FORMAT |
606 | BASIC_CFLAGS += -DNO_C99_FORMAT |
607 | endif |
608 | ifdef SNPRINTF_RETURNS_BOGUS |
609 | COMPAT_CFLAGS += -DSNPRINTF_RETURNS_BOGUS |
610 | COMPAT_OBJS += compat/snprintf.o |
611 | endif |
612 | ifdef FREAD_READS_DIRECTORIES |
613 | COMPAT_CFLAGS += -DFREAD_READS_DIRECTORIES |
614 | COMPAT_OBJS += compat/fopen.o |
615 | endif |
616 | ifdef NO_SYMLINK_HEAD |
617 | BASIC_CFLAGS += -DNO_SYMLINK_HEAD |
618 | endif |
619 | ifdef NO_STRCASESTR |
620 | COMPAT_CFLAGS += -DNO_STRCASESTR |
621 | COMPAT_OBJS += compat/strcasestr.o |
622 | endif |
623 | ifdef NO_STRTOUMAX |
624 | COMPAT_CFLAGS += -DNO_STRTOUMAX |
625 | COMPAT_OBJS += compat/strtoumax.o |
626 | endif |
627 | ifdef NO_STRTOULL |
628 | COMPAT_CFLAGS += -DNO_STRTOULL |
629 | endif |
630 | ifdef NO_SETENV |
631 | COMPAT_CFLAGS += -DNO_SETENV |
632 | COMPAT_OBJS += compat/setenv.o |
633 | endif |
634 | ifdef NO_MKDTEMP |
635 | COMPAT_CFLAGS += -DNO_MKDTEMP |
636 | COMPAT_OBJS += compat/mkdtemp.o |
637 | endif |
638 | ifdef NO_UNSETENV |
639 | COMPAT_CFLAGS += -DNO_UNSETENV |
640 | COMPAT_OBJS += compat/unsetenv.o |
641 | endif |
642 | ifdef NO_SYS_SELECT_H |
643 | BASIC_CFLAGS += -DNO_SYS_SELECT_H |
644 | endif |
645 | ifdef NO_MMAP |
646 | COMPAT_CFLAGS += -DNO_MMAP |
647 | COMPAT_OBJS += compat/mmap.o |
648 | else |
649 | ifdef USE_WIN32_MMAP |
650 | COMPAT_CFLAGS += -DUSE_WIN32_MMAP |
651 | COMPAT_OBJS += compat/win32mmap.o |
652 | endif |
653 | endif |
654 | ifdef NO_PREAD |
655 | COMPAT_CFLAGS += -DNO_PREAD |
656 | COMPAT_OBJS += compat/pread.o |
657 | endif |
658 | ifdef NO_FAST_WORKING_DIRECTORY |
659 | BASIC_CFLAGS += -DNO_FAST_WORKING_DIRECTORY |
660 | endif |
661 | ifdef NO_TRUSTABLE_FILEMODE |
662 | BASIC_CFLAGS += -DNO_TRUSTABLE_FILEMODE |
663 | endif |
664 | ifdef NO_IPV6 |
665 | BASIC_CFLAGS += -DNO_IPV6 |
666 | endif |
667 | ifdef NO_UINTMAX_T |
668 | BASIC_CFLAGS += -Duintmax_t=uint32_t |
669 | endif |
670 | ifdef NO_SOCKADDR_STORAGE |
671 | ifdef NO_IPV6 |
672 | BASIC_CFLAGS += -Dsockaddr_storage=sockaddr_in |
673 | else |
674 | BASIC_CFLAGS += -Dsockaddr_storage=sockaddr_in6 |
675 | endif |
676 | endif |
677 | ifdef NO_INET_NTOP |
678 | LIB_OBJS += compat/inet_ntop.o |
679 | endif |
680 | ifdef NO_INET_PTON |
681 | LIB_OBJS += compat/inet_pton.o |
682 | endif |
683 | |
684 | ifdef NO_ICONV |
685 | BASIC_CFLAGS += -DNO_ICONV |
686 | endif |
687 | |
688 | ifdef OLD_ICONV |
689 | BASIC_CFLAGS += -DOLD_ICONV |
690 | endif |
691 | |
692 | ifdef NO_DEFLATE_BOUND |
693 | BASIC_CFLAGS += -DNO_DEFLATE_BOUND |
694 | endif |
695 | |
696 | ifdef PPC_SHA1 |
697 | SHA1_HEADER = "ppc/sha1.h" |
698 | LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o |
699 | else |
700 | ifdef ARM_SHA1 |
701 | SHA1_HEADER = "arm/sha1.h" |
702 | LIB_OBJS += arm/sha1.o arm/sha1_arm.o |
703 | else |
704 | ifdef MOZILLA_SHA1 |
705 | SHA1_HEADER = "mozilla-sha1/sha1.h" |
706 | LIB_OBJS += mozilla-sha1/sha1.o |
707 | else |
708 | SHA1_HEADER = <openssl/sha.h> |
709 | EXTLIBS += $(LIB_4_CRYPTO) |
710 | endif |
711 | endif |
712 | endif |
713 | ifdef NO_PERL_MAKEMAKER |
714 | export NO_PERL_MAKEMAKER |
715 | endif |
716 | ifdef NO_HSTRERROR |
717 | COMPAT_CFLAGS += -DNO_HSTRERROR |
718 | COMPAT_OBJS += compat/hstrerror.o |
719 | endif |
720 | ifdef NO_MEMMEM |
721 | COMPAT_CFLAGS += -DNO_MEMMEM |
722 | COMPAT_OBJS += compat/memmem.o |
723 | endif |
724 | ifdef INTERNAL_QSORT |
725 | COMPAT_CFLAGS += -DINTERNAL_QSORT |
726 | COMPAT_OBJS += compat/qsort.o |
727 | endif |
728 | ifdef RUNTIME_PREFIX |
729 | COMPAT_CFLAGS += -DRUNTIME_PREFIX |
730 | endif |
731 | |
732 | ifdef DIR_HAS_BSD_GROUP_SEMANTICS |
733 | COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS |
734 | endif |
735 | ifdef NO_EXTERNAL_GREP |
736 | BASIC_CFLAGS += -DNO_EXTERNAL_GREP |
737 | endif |
738 | |
739 | ifeq ($(PERL_PATH),) |
740 | NO_PERL=NoThanks |
741 | endif |
742 | |
743 | QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir |
744 | QUIET_SUBDIR1 = |
745 | |
746 | ifneq ($(findstring $(MAKEFLAGS),w),w) |
747 | PRINT_DIR = --no-print-directory |
748 | else # "make -w" |
749 | NO_SUBDIR = : |
750 | endif |
751 | |
752 | ifneq ($(findstring $(MAKEFLAGS),s),s) |
753 | ifndef V |
754 | QUIET_CC = @echo ' ' CC $@; |
755 | QUIET_AR = @echo ' ' AR $@; |
756 | QUIET_LINK = @echo ' ' LINK $@; |
757 | QUIET_BUILT_IN = @echo ' ' BUILTIN $@; |
758 | QUIET_GEN = @echo ' ' GEN $@; |
759 | QUIET_SUBDIR0 = +@subdir= |
760 | QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ |
761 | $(MAKE) $(PRINT_DIR) -C $$subdir |
762 | export V |
763 | export QUIET_GEN |
764 | export QUIET_BUILT_IN |
765 | endif |
766 | endif |
767 | |
768 | ifdef ASCIIDOC8 |
769 | export ASCIIDOC8 |
770 | endif |
771 | |
772 | # Shell quote (do not use $(call) to accommodate ancient setups); |
773 | |
774 | SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER)) |
775 | ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG)) |
776 | |
777 | DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) |
778 | bindir_SQ = $(subst ','\'',$(bindir)) |
779 | bindir_relative_SQ = $(subst ','\'',$(bindir_relative)) |
780 | mandir_SQ = $(subst ','\'',$(mandir)) |
781 | infodir_SQ = $(subst ','\'',$(infodir)) |
782 | perfexecdir_SQ = $(subst ','\'',$(perfexecdir)) |
783 | template_dir_SQ = $(subst ','\'',$(template_dir)) |
784 | htmldir_SQ = $(subst ','\'',$(htmldir)) |
785 | prefix_SQ = $(subst ','\'',$(prefix)) |
786 | |
787 | SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) |
788 | PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) |
789 | |
790 | LIBS = $(PERFLIBS) $(EXTLIBS) |
791 | |
792 | BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \ |
793 | $(COMPAT_CFLAGS) |
794 | LIB_OBJS += $(COMPAT_OBJS) |
795 | |
796 | ALL_CFLAGS += $(BASIC_CFLAGS) |
797 | ALL_LDFLAGS += $(BASIC_LDFLAGS) |
798 | |
799 | export TAR INSTALL DESTDIR SHELL_PATH |
800 | |
801 | |
802 | ### Build rules |
803 | |
804 | SHELL = $(SHELL_PATH) |
805 | |
806 | all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS |
807 | ifneq (,$X) |
808 | $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) |
809 | endif |
810 | |
811 | all:: |
812 | |
813 | please_set_SHELL_PATH_to_a_more_modern_shell: |
814 | @$$(:) |
815 | |
816 | shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell |
817 | |
818 | strip: $(PROGRAMS) perf$X |
819 | $(STRIP) $(STRIP_OPTS) $(PROGRAMS) perf$X |
820 | |
821 | perf.o: perf.c common-cmds.h PERF-CFLAGS |
822 | $(QUIET_CC)$(CC) -DPERF_VERSION='"$(PERF_VERSION)"' \ |
823 | '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ |
824 | $(ALL_CFLAGS) -c $(filter %.c,$^) |
825 | |
826 | perf$X: perf.o $(BUILTIN_OBJS) $(PERFLIBS) |
827 | $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ perf.o \ |
828 | $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS) |
829 | |
830 | builtin-help.o: builtin-help.c common-cmds.h PERF-CFLAGS |
831 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ |
832 | '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ |
833 | '-DPERF_MAN_PATH="$(mandir_SQ)"' \ |
834 | '-DPERF_INFO_PATH="$(infodir_SQ)"' $< |
835 | |
836 | builtin-timechart.o: builtin-timechart.c common-cmds.h PERF-CFLAGS |
837 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ |
838 | '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ |
839 | '-DPERF_MAN_PATH="$(mandir_SQ)"' \ |
840 | '-DPERF_INFO_PATH="$(infodir_SQ)"' $< |
841 | |
842 | $(BUILT_INS): perf$X |
843 | $(QUIET_BUILT_IN)$(RM) $@ && \ |
844 | ln perf$X $@ 2>/dev/null || \ |
845 | ln -s perf$X $@ 2>/dev/null || \ |
846 | cp perf$X $@ |
847 | |
848 | common-cmds.h: util/generate-cmdlist.sh command-list.txt |
849 | |
850 | common-cmds.h: $(wildcard Documentation/perf-*.txt) |
851 | $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@ |
852 | |
853 | $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh |
854 | $(QUIET_GEN)$(RM) $@ $@+ && \ |
855 | sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ |
856 | -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \ |
857 | -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \ |
858 | -e 's/@@PERF_VERSION@@/$(PERF_VERSION)/g' \ |
859 | -e 's/@@NO_CURL@@/$(NO_CURL)/g' \ |
860 | $@.sh >$@+ && \ |
861 | chmod +x $@+ && \ |
862 | mv $@+ $@ |
863 | |
864 | configure: configure.ac |
865 | $(QUIET_GEN)$(RM) $@ $<+ && \ |
866 | sed -e 's/@@PERF_VERSION@@/$(PERF_VERSION)/g' \ |
867 | $< > $<+ && \ |
868 | autoconf -o $@ $<+ && \ |
869 | $(RM) $<+ |
870 | |
871 | # These can record PERF_VERSION |
872 | perf.o perf.spec \ |
873 | $(patsubst %.sh,%,$(SCRIPT_SH)) \ |
874 | $(patsubst %.perl,%,$(SCRIPT_PERL)) \ |
875 | : PERF-VERSION-FILE |
876 | |
877 | %.o: %.c PERF-CFLAGS |
878 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $< |
879 | %.s: %.c PERF-CFLAGS |
880 | $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $< |
881 | %.o: %.S |
882 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $< |
883 | |
884 | util/exec_cmd.o: util/exec_cmd.c PERF-CFLAGS |
885 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ |
886 | '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \ |
887 | '-DBINDIR="$(bindir_relative_SQ)"' \ |
888 | '-DPREFIX="$(prefix_SQ)"' \ |
889 | $< |
890 | |
891 | builtin-init-db.o: builtin-init-db.c PERF-CFLAGS |
892 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_PERF_TEMPLATE_DIR='"$(template_dir_SQ)"' $< |
893 | |
894 | util/config.o: util/config.c PERF-CFLAGS |
895 | $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< |
896 | |
897 | util/rbtree.o: ../../lib/rbtree.c PERF-CFLAGS |
898 | $(QUIET_CC)$(CC) -o util/rbtree.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< |
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 | |
925 | perf-%$X: %.o $(PERFLIBS) |
926 | $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) |
927 | |
928 | $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) |
929 | $(patsubst perf-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) |
930 | builtin-revert.o wt-status.o: wt-status.h |
931 | |
932 | $(LIB_FILE): $(LIB_OBJS) |
933 | $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) |
934 | |
935 | doc: |
936 | $(MAKE) -C Documentation all |
937 | |
938 | man: |
939 | $(MAKE) -C Documentation man |
940 | |
941 | html: |
942 | $(MAKE) -C Documentation html |
943 | |
944 | info: |
945 | $(MAKE) -C Documentation info |
946 | |
947 | pdf: |
948 | $(MAKE) -C Documentation pdf |
949 | |
950 | TAGS: |
951 | $(RM) TAGS |
952 | $(FIND) . -name '*.[hcS]' -print | xargs etags -a |
953 | |
954 | tags: |
955 | $(RM) tags |
956 | $(FIND) . -name '*.[hcS]' -print | xargs ctags -a |
957 | |
958 | cscope: |
959 | $(RM) cscope* |
960 | $(FIND) . -name '*.[hcS]' -print | xargs cscope -b |
961 | |
962 | ### Detect prefix changes |
963 | TRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):\ |
964 | $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ) |
965 | |
966 | PERF-CFLAGS: .FORCE-PERF-CFLAGS |
967 | @FLAGS='$(TRACK_CFLAGS)'; \ |
968 | if test x"$$FLAGS" != x"`cat PERF-CFLAGS 2>/dev/null`" ; then \ |
969 | echo 1>&2 " * new build flags or prefix"; \ |
970 | echo "$$FLAGS" >PERF-CFLAGS; \ |
971 | fi |
972 | |
973 | # We need to apply sq twice, once to protect from the shell |
974 | # that runs PERF-BUILD-OPTIONS, and then again to protect it |
975 | # and the first level quoting from the shell that runs "echo". |
976 | PERF-BUILD-OPTIONS: .FORCE-PERF-BUILD-OPTIONS |
977 | @echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@ |
978 | @echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@ |
979 | @echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@ |
980 | @echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@ |
981 | |
982 | ### Testing rules |
983 | |
984 | # |
985 | # None right now: |
986 | # |
987 | # TEST_PROGRAMS += test-something$X |
988 | |
989 | all:: $(TEST_PROGRAMS) |
990 | |
991 | # GNU make supports exporting all variables by "export" without parameters. |
992 | # However, the environment gets quite big, and some programs have problems |
993 | # with that. |
994 | |
995 | export NO_SVN_TESTS |
996 | |
997 | check: common-cmds.h |
998 | if sparse; \ |
999 | then \ |
1000 | for i in *.c */*.c; \ |
1001 | do \ |
1002 | sparse $(ALL_CFLAGS) $(SPARSE_FLAGS) $$i || exit; \ |
1003 | done; \ |
1004 | else \ |
1005 | echo 2>&1 "Did you mean 'make test'?"; \ |
1006 | exit 1; \ |
1007 | fi |
1008 | |
1009 | remove-dashes: |
1010 | ./fixup-builtins $(BUILT_INS) $(PROGRAMS) $(SCRIPTS) |
1011 | |
1012 | ### Installation rules |
1013 | |
1014 | ifneq ($(filter /%,$(firstword $(template_dir))),) |
1015 | template_instdir = $(template_dir) |
1016 | else |
1017 | template_instdir = $(prefix)/$(template_dir) |
1018 | endif |
1019 | export template_instdir |
1020 | |
1021 | ifneq ($(filter /%,$(firstword $(perfexecdir))),) |
1022 | perfexec_instdir = $(perfexecdir) |
1023 | else |
1024 | perfexec_instdir = $(prefix)/$(perfexecdir) |
1025 | endif |
1026 | perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) |
1027 | export perfexec_instdir |
1028 | |
1029 | install: all |
1030 | $(INSTALL) -d -m 755 '$(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 | |
1044 | ifdef BUILT_INS |
1045 | $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' |
1046 | $(INSTALL) $(BUILT_INS) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' |
1047 | ifneq (,$X) |
1048 | $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), $(RM) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/$p';) |
1049 | endif |
1050 | endif |
1051 | |
1052 | install-doc: |
1053 | $(MAKE) -C Documentation install |
1054 | |
1055 | install-man: |
1056 | $(MAKE) -C Documentation install-man |
1057 | |
1058 | install-html: |
1059 | $(MAKE) -C Documentation install-html |
1060 | |
1061 | install-info: |
1062 | $(MAKE) -C Documentation install-info |
1063 | |
1064 | install-pdf: |
1065 | $(MAKE) -C Documentation install-pdf |
1066 | |
1067 | quick-install-doc: |
1068 | $(MAKE) -C Documentation quick-install |
1069 | |
1070 | quick-install-man: |
1071 | $(MAKE) -C Documentation quick-install-man |
1072 | |
1073 | quick-install-html: |
1074 | $(MAKE) -C Documentation quick-install-html |
1075 | |
1076 | |
1077 | ### Maintainer's dist rules |
1078 | # |
1079 | # None right now |
1080 | # |
1081 | # |
1082 | # perf.spec: perf.spec.in |
1083 | # sed -e 's/@@VERSION@@/$(PERF_VERSION)/g' < $< > $@+ |
1084 | # mv $@+ $@ |
1085 | # |
1086 | # PERF_TARNAME=perf-$(PERF_VERSION) |
1087 | # dist: perf.spec perf-archive$(X) configure |
1088 | # ./perf-archive --format=tar \ |
1089 | # --prefix=$(PERF_TARNAME)/ HEAD^{tree} > $(PERF_TARNAME).tar |
1090 | # @mkdir -p $(PERF_TARNAME) |
1091 | # @cp perf.spec configure $(PERF_TARNAME) |
1092 | # @echo $(PERF_VERSION) > $(PERF_TARNAME)/version |
1093 | # $(TAR) rf $(PERF_TARNAME).tar \ |
1094 | # $(PERF_TARNAME)/perf.spec \ |
1095 | # $(PERF_TARNAME)/configure \ |
1096 | # $(PERF_TARNAME)/version |
1097 | # @$(RM) -r $(PERF_TARNAME) |
1098 | # gzip -f -9 $(PERF_TARNAME).tar |
1099 | # |
1100 | # htmldocs = perf-htmldocs-$(PERF_VERSION) |
1101 | # manpages = perf-manpages-$(PERF_VERSION) |
1102 | # dist-doc: |
1103 | # $(RM) -r .doc-tmp-dir |
1104 | # mkdir .doc-tmp-dir |
1105 | # $(MAKE) -C Documentation WEBDOC_DEST=../.doc-tmp-dir install-webdoc |
1106 | # cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar . |
1107 | # gzip -n -9 -f $(htmldocs).tar |
1108 | # : |
1109 | # $(RM) -r .doc-tmp-dir |
1110 | # mkdir -p .doc-tmp-dir/man1 .doc-tmp-dir/man5 .doc-tmp-dir/man7 |
1111 | # $(MAKE) -C Documentation DESTDIR=./ \ |
1112 | # man1dir=../.doc-tmp-dir/man1 \ |
1113 | # man5dir=../.doc-tmp-dir/man5 \ |
1114 | # man7dir=../.doc-tmp-dir/man7 \ |
1115 | # install |
1116 | # cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar . |
1117 | # gzip -n -9 -f $(manpages).tar |
1118 | # $(RM) -r .doc-tmp-dir |
1119 | # |
1120 | # rpm: dist |
1121 | # $(RPMBUILD) -ta $(PERF_TARNAME).tar.gz |
1122 | |
1123 | ### Cleaning rules |
1124 | |
1125 | distclean: clean |
1126 | # $(RM) configure |
1127 | |
1128 | clean: |
1129 | $(RM) *.o */*.o */*/*.o */*/*/*.o $(LIB_FILE) |
1130 | $(RM) $(ALL_PROGRAMS) $(BUILT_INS) perf$X |
1131 | $(RM) $(TEST_PROGRAMS) |
1132 | $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope* |
1133 | $(RM) -r autom4te.cache |
1134 | $(RM) config.log config.mak.autogen config.mak.append config.status config.cache |
1135 | $(RM) -r $(PERF_TARNAME) .doc-tmp-dir |
1136 | $(RM) $(PERF_TARNAME).tar.gz perf-core_$(PERF_VERSION)-*.tar.gz |
1137 | $(RM) $(htmldocs).tar.gz $(manpages).tar.gz |
1138 | $(MAKE) -C Documentation/ clean |
1139 | $(RM) PERF-VERSION-FILE PERF-CFLAGS PERF-BUILD-OPTIONS |
1140 | |
1141 | .PHONY: all install clean strip |
1142 | .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell |
1143 | .PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS |
1144 | .PHONY: .FORCE-PERF-BUILD-OPTIONS |
1145 | |
1146 | .perf.dev.null: |
1147 | touch .perf.dev.null |
1148 | |
1149 | .INTERMEDIATE: .perf.dev.null |
1150 | |
1151 | ### Make sure built-ins do not have dups and listed in perf.c |
1152 | # |
1153 | check-builtins:: |
1154 | ./check-builtins.sh |
1155 | |
1156 | ### Test suite coverage testing |
1157 | # |
1158 | # None right now |
1159 | # |
1160 | # .PHONY: coverage coverage-clean coverage-build coverage-report |
1161 | # |
1162 | # coverage: |
1163 | # $(MAKE) coverage-build |
1164 | # $(MAKE) coverage-report |
1165 | # |
1166 | # coverage-clean: |
1167 | # rm -f *.gcda *.gcno |
1168 | # |
1169 | # COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs |
1170 | # COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov |
1171 | # |
1172 | # coverage-build: coverage-clean |
1173 | # $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" all |
1174 | # $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" \ |
1175 | # -j1 test |
1176 | # |
1177 | # coverage-report: |
1178 | # gcov -b *.c */*.c |
1179 | # grep '^function.*called 0 ' *.c.gcov */*.c.gcov \ |
1180 | # | sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \ |
1181 | # | tee coverage-untested-functions |
1182 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9