1 # SPDX-License-Identifier: GPL-2.0 !! 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(). 2 # 100 # 3 # This is a simple wrapper Makefile that calls !! 101 # Define NO_SOCKADDR_STORAGE if your platform does not have struct 4 # with a -j option to do parallel builds !! 102 # sockaddr_storage. 5 # 103 # 6 # If you want to invoke the perf build in some !! 104 # Define NO_ICONV if your libc does not properly support iconv. 7 # you can use the 'make -f Makefile.perf' meth << 8 # 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. 9 166 10 # 167 # 11 # Clear out the built-in rules GNU make define !! 168 # Include saner warnings here, which can catch bugs: 12 # so that we pass through all targets to Makef << 13 # 169 # 14 .SUFFIXES: !! 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) >> 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 = gcc >> 243 AR = 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 = 15 290 16 # 291 # 17 # We don't want to pass along options like -j: !! 292 # No scripts right now: 18 # 293 # 19 unexport MAKEFLAGS !! 294 >> 295 # SCRIPT_SH += perf-am.sh 20 296 21 # 297 # 22 # Do a parallel build with multiple jobs, base !! 298 # No Perl scripts right now: 23 # in this system: 'make -j8' on a 8-CPU system << 24 # 299 # 25 # (To override it, run 'make JOBS=1' and simil !! 300 >> 301 # SCRIPT_PERL += perf-add--interactive.perl >> 302 >> 303 SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ >> 304 $(patsubst %.perl,%,$(SCRIPT_PERL)) >> 305 >> 306 # Empty... >> 307 EXTRA_PROGRAMS = >> 308 >> 309 # ... and all the rest that could be moved out of bindir to perfexecdir >> 310 PROGRAMS += $(EXTRA_PROGRAMS) >> 311 26 # 312 # 27 ifeq ($(JOBS),) !! 313 # Single 'perf' binary right now: 28 JOBS := $(shell (getconf _NPROCESSORS_ONLN | !! 314 # 29 ifeq ($(JOBS),0) !! 315 PROGRAMS += perf 30 JOBS := 1 << 31 endif << 32 endif << 33 316 >> 317 # List built-in command $C whose implementation cmd_$C() is not in >> 318 # builtin-$C.o but is linked in as part of some other command. 34 # 319 # 35 # Only pass canonical directory names as the o !! 320 # None right now: 36 # 321 # 37 ifneq ($(O),) !! 322 # BUILT_INS += perf-init $X 38 FULL_O := $(shell cd $(PWD); readlink -f $(O !! 323 >> 324 # what 'all' will build and 'install' will install, in perfexecdir >> 325 ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) >> 326 >> 327 # what 'all' will build but not install in perfexecdir >> 328 OTHER_PROGRAMS = perf$X >> 329 >> 330 # Set paths to tools early so that they can be used for version tests. >> 331 ifndef SHELL_PATH >> 332 SHELL_PATH = /bin/sh 39 endif 333 endif >> 334 ifndef PERL_PATH >> 335 PERL_PATH = /usr/bin/perl >> 336 endif >> 337 >> 338 export PERL_PATH >> 339 >> 340 LIB_FILE=libperf.a >> 341 >> 342 LIB_H += ../../include/linux/perf_event.h >> 343 LIB_H += ../../include/linux/rbtree.h >> 344 LIB_H += ../../include/linux/list.h >> 345 LIB_H += util/include/linux/list.h >> 346 LIB_H += perf.h >> 347 LIB_H += util/types.h >> 348 LIB_H += util/levenshtein.h >> 349 LIB_H += util/parse-options.h >> 350 LIB_H += util/parse-events.h >> 351 LIB_H += util/quote.h >> 352 LIB_H += util/util.h >> 353 LIB_H += util/help.h >> 354 LIB_H += util/strbuf.h >> 355 LIB_H += util/string.h >> 356 LIB_H += util/strlist.h >> 357 LIB_H += util/run-command.h >> 358 LIB_H += util/sigchain.h >> 359 LIB_H += util/symbol.h >> 360 LIB_H += util/module.h >> 361 LIB_H += util/color.h >> 362 LIB_H += util/values.h >> 363 >> 364 LIB_OBJS += util/abspath.o >> 365 LIB_OBJS += util/alias.o >> 366 LIB_OBJS += util/config.o >> 367 LIB_OBJS += util/ctype.o >> 368 LIB_OBJS += util/environment.o >> 369 LIB_OBJS += util/exec_cmd.o >> 370 LIB_OBJS += util/help.o >> 371 LIB_OBJS += util/levenshtein.o >> 372 LIB_OBJS += util/parse-options.o >> 373 LIB_OBJS += util/parse-events.o >> 374 LIB_OBJS += util/path.o >> 375 LIB_OBJS += util/rbtree.o >> 376 LIB_OBJS += util/run-command.o >> 377 LIB_OBJS += util/quote.o >> 378 LIB_OBJS += util/strbuf.o >> 379 LIB_OBJS += util/string.o >> 380 LIB_OBJS += util/strlist.o >> 381 LIB_OBJS += util/usage.o >> 382 LIB_OBJS += util/wrapper.o >> 383 LIB_OBJS += util/sigchain.o >> 384 LIB_OBJS += util/symbol.o >> 385 LIB_OBJS += util/module.o >> 386 LIB_OBJS += util/color.o >> 387 LIB_OBJS += util/pager.o >> 388 LIB_OBJS += util/header.o >> 389 LIB_OBJS += util/callchain.o >> 390 LIB_OBJS += util/values.o >> 391 LIB_OBJS += util/debug.o >> 392 LIB_OBJS += util/map.o >> 393 LIB_OBJS += util/thread.o >> 394 LIB_OBJS += util/trace-event-parse.o >> 395 LIB_OBJS += util/trace-event-read.o >> 396 LIB_OBJS += util/trace-event-info.o >> 397 LIB_OBJS += util/svghelper.o >> 398 >> 399 BUILTIN_OBJS += builtin-annotate.o >> 400 BUILTIN_OBJS += builtin-help.o >> 401 BUILTIN_OBJS += builtin-sched.o >> 402 BUILTIN_OBJS += builtin-list.o >> 403 BUILTIN_OBJS += builtin-record.o >> 404 BUILTIN_OBJS += builtin-report.o >> 405 BUILTIN_OBJS += builtin-stat.o >> 406 BUILTIN_OBJS += builtin-timechart.o >> 407 BUILTIN_OBJS += builtin-top.o >> 408 BUILTIN_OBJS += builtin-trace.o >> 409 >> 410 PERFLIBS = $(LIB_FILE) 40 411 41 # 412 # 42 # Only accept the 'DEBUG' variable from the co !! 413 # Platform specific tweaks 43 # 414 # 44 ifeq ("$(origin DEBUG)", "command line") !! 415 45 ifeq ($(DEBUG),) !! 416 # We choose to avoid "if .. else if .. else .. endif endif" 46 override DEBUG = 0 !! 417 # because maintaining the nesting to match is a pain. If 47 else !! 418 # we had "elif" things would have been much nicer... 48 SET_DEBUG = "DEBUG=$(DEBUG)" !! 419 49 endif !! 420 -include config.mak.autogen >> 421 -include config.mak >> 422 >> 423 ifeq ($(uname_S),Darwin) >> 424 ifndef NO_FINK >> 425 ifeq ($(shell test -d /sw/lib && echo y),y) >> 426 BASIC_CFLAGS += -I/sw/include >> 427 BASIC_LDFLAGS += -L/sw/lib >> 428 endif >> 429 endif >> 430 ifndef NO_DARWIN_PORTS >> 431 ifeq ($(shell test -d /opt/local/lib && echo y),y) >> 432 BASIC_CFLAGS += -I/opt/local/include >> 433 BASIC_LDFLAGS += -L/opt/local/lib >> 434 endif >> 435 endif >> 436 PTHREAD_LIBS = >> 437 endif >> 438 >> 439 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) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) >> 440 msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); >> 441 endif >> 442 >> 443 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 $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) >> 444 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 $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y) >> 445 BASIC_CFLAGS += -DLIBELF_NO_MMAP >> 446 endif 50 else 447 else 51 override DEBUG = 0 !! 448 msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel); 52 endif 449 endif 53 450 54 ifeq ($(JOBS),1) !! 451 ifdef NO_DEMANGLE 55 BUILD_TYPE := sequential !! 452 BASIC_CFLAGS += -DNO_DEMANGLE >> 453 else ifdef HAVE_CPLUS_DEMANGLE >> 454 EXTLIBS += -liberty >> 455 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE 56 else 456 else 57 BUILD_TYPE := parallel !! 457 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") >> 458 >> 459 ifeq ($(has_bfd),y) >> 460 EXTLIBS += -lbfd >> 461 else >> 462 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") >> 463 ifeq ($(has_bfd_iberty),y) >> 464 EXTLIBS += -lbfd -liberty >> 465 else >> 466 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") >> 467 ifeq ($(has_bfd_iberty_z),y) >> 468 EXTLIBS += -lbfd -liberty -lz >> 469 else >> 470 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") >> 471 ifeq ($(has_cplus_demangle),y) >> 472 EXTLIBS += -liberty >> 473 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE >> 474 else >> 475 msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling) >> 476 BASIC_CFLAGS += -DNO_DEMANGLE >> 477 endif >> 478 endif >> 479 endif >> 480 endif 58 endif 481 endif 59 482 60 define print_msg !! 483 ifndef CC_LD_DYNPATH 61 @printf ' BUILD: Doing '\''make \033[33m- !! 484 ifdef NO_R_TO_GCC_LINKER 62 endef !! 485 # Some gcc does not accept and pass -R to the linker to specify >> 486 # the runtime dynamic library path. >> 487 CC_LD_DYNPATH = -Wl,-rpath, >> 488 else >> 489 CC_LD_DYNPATH = -R >> 490 endif >> 491 endif 63 492 64 define make !! 493 ifdef NEEDS_SOCKET 65 @$(MAKE) -f Makefile.perf --no-print-directo !! 494 EXTLIBS += -lsocket 66 endef !! 495 endif >> 496 ifdef NEEDS_NSL >> 497 EXTLIBS += -lnsl >> 498 endif >> 499 ifdef NO_D_TYPE_IN_DIRENT >> 500 BASIC_CFLAGS += -DNO_D_TYPE_IN_DIRENT >> 501 endif >> 502 ifdef NO_D_INO_IN_DIRENT >> 503 BASIC_CFLAGS += -DNO_D_INO_IN_DIRENT >> 504 endif >> 505 ifdef NO_ST_BLOCKS_IN_STRUCT_STAT >> 506 BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STRUCT_STAT >> 507 endif >> 508 ifdef USE_NSEC >> 509 BASIC_CFLAGS += -DUSE_NSEC >> 510 endif >> 511 ifdef USE_ST_TIMESPEC >> 512 BASIC_CFLAGS += -DUSE_ST_TIMESPEC >> 513 endif >> 514 ifdef NO_NSEC >> 515 BASIC_CFLAGS += -DNO_NSEC >> 516 endif >> 517 ifdef NO_C99_FORMAT >> 518 BASIC_CFLAGS += -DNO_C99_FORMAT >> 519 endif >> 520 ifdef SNPRINTF_RETURNS_BOGUS >> 521 COMPAT_CFLAGS += -DSNPRINTF_RETURNS_BOGUS >> 522 COMPAT_OBJS += compat/snprintf.o >> 523 endif >> 524 ifdef FREAD_READS_DIRECTORIES >> 525 COMPAT_CFLAGS += -DFREAD_READS_DIRECTORIES >> 526 COMPAT_OBJS += compat/fopen.o >> 527 endif >> 528 ifdef NO_SYMLINK_HEAD >> 529 BASIC_CFLAGS += -DNO_SYMLINK_HEAD >> 530 endif >> 531 ifdef NO_STRCASESTR >> 532 COMPAT_CFLAGS += -DNO_STRCASESTR >> 533 COMPAT_OBJS += compat/strcasestr.o >> 534 endif >> 535 ifdef NO_STRTOUMAX >> 536 COMPAT_CFLAGS += -DNO_STRTOUMAX >> 537 COMPAT_OBJS += compat/strtoumax.o >> 538 endif >> 539 ifdef NO_STRTOULL >> 540 COMPAT_CFLAGS += -DNO_STRTOULL >> 541 endif >> 542 ifdef NO_SETENV >> 543 COMPAT_CFLAGS += -DNO_SETENV >> 544 COMPAT_OBJS += compat/setenv.o >> 545 endif >> 546 ifdef NO_MKDTEMP >> 547 COMPAT_CFLAGS += -DNO_MKDTEMP >> 548 COMPAT_OBJS += compat/mkdtemp.o >> 549 endif >> 550 ifdef NO_UNSETENV >> 551 COMPAT_CFLAGS += -DNO_UNSETENV >> 552 COMPAT_OBJS += compat/unsetenv.o >> 553 endif >> 554 ifdef NO_SYS_SELECT_H >> 555 BASIC_CFLAGS += -DNO_SYS_SELECT_H >> 556 endif >> 557 ifdef NO_MMAP >> 558 COMPAT_CFLAGS += -DNO_MMAP >> 559 COMPAT_OBJS += compat/mmap.o >> 560 else >> 561 ifdef USE_WIN32_MMAP >> 562 COMPAT_CFLAGS += -DUSE_WIN32_MMAP >> 563 COMPAT_OBJS += compat/win32mmap.o >> 564 endif >> 565 endif >> 566 ifdef NO_PREAD >> 567 COMPAT_CFLAGS += -DNO_PREAD >> 568 COMPAT_OBJS += compat/pread.o >> 569 endif >> 570 ifdef NO_FAST_WORKING_DIRECTORY >> 571 BASIC_CFLAGS += -DNO_FAST_WORKING_DIRECTORY >> 572 endif >> 573 ifdef NO_TRUSTABLE_FILEMODE >> 574 BASIC_CFLAGS += -DNO_TRUSTABLE_FILEMODE >> 575 endif >> 576 ifdef NO_IPV6 >> 577 BASIC_CFLAGS += -DNO_IPV6 >> 578 endif >> 579 ifdef NO_UINTMAX_T >> 580 BASIC_CFLAGS += -Duintmax_t=uint32_t >> 581 endif >> 582 ifdef NO_SOCKADDR_STORAGE >> 583 ifdef NO_IPV6 >> 584 BASIC_CFLAGS += -Dsockaddr_storage=sockaddr_in >> 585 else >> 586 BASIC_CFLAGS += -Dsockaddr_storage=sockaddr_in6 >> 587 endif >> 588 endif >> 589 ifdef NO_INET_NTOP >> 590 LIB_OBJS += compat/inet_ntop.o >> 591 endif >> 592 ifdef NO_INET_PTON >> 593 LIB_OBJS += compat/inet_pton.o >> 594 endif >> 595 >> 596 ifdef NO_ICONV >> 597 BASIC_CFLAGS += -DNO_ICONV >> 598 endif >> 599 >> 600 ifdef OLD_ICONV >> 601 BASIC_CFLAGS += -DOLD_ICONV >> 602 endif >> 603 >> 604 ifdef NO_DEFLATE_BOUND >> 605 BASIC_CFLAGS += -DNO_DEFLATE_BOUND >> 606 endif >> 607 >> 608 ifdef PPC_SHA1 >> 609 SHA1_HEADER = "ppc/sha1.h" >> 610 LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o >> 611 else >> 612 ifdef ARM_SHA1 >> 613 SHA1_HEADER = "arm/sha1.h" >> 614 LIB_OBJS += arm/sha1.o arm/sha1_arm.o >> 615 else >> 616 ifdef MOZILLA_SHA1 >> 617 SHA1_HEADER = "mozilla-sha1/sha1.h" >> 618 LIB_OBJS += mozilla-sha1/sha1.o >> 619 else >> 620 SHA1_HEADER = <openssl/sha.h> >> 621 EXTLIBS += $(LIB_4_CRYPTO) >> 622 endif >> 623 endif >> 624 endif >> 625 ifdef NO_PERL_MAKEMAKER >> 626 export NO_PERL_MAKEMAKER >> 627 endif >> 628 ifdef NO_HSTRERROR >> 629 COMPAT_CFLAGS += -DNO_HSTRERROR >> 630 COMPAT_OBJS += compat/hstrerror.o >> 631 endif >> 632 ifdef NO_MEMMEM >> 633 COMPAT_CFLAGS += -DNO_MEMMEM >> 634 COMPAT_OBJS += compat/memmem.o >> 635 endif >> 636 ifdef INTERNAL_QSORT >> 637 COMPAT_CFLAGS += -DINTERNAL_QSORT >> 638 COMPAT_OBJS += compat/qsort.o >> 639 endif >> 640 ifdef RUNTIME_PREFIX >> 641 COMPAT_CFLAGS += -DRUNTIME_PREFIX >> 642 endif >> 643 >> 644 ifdef DIR_HAS_BSD_GROUP_SEMANTICS >> 645 COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS >> 646 endif >> 647 ifdef NO_EXTERNAL_GREP >> 648 BASIC_CFLAGS += -DNO_EXTERNAL_GREP >> 649 endif >> 650 >> 651 ifeq ($(PERL_PATH),) >> 652 NO_PERL=NoThanks >> 653 endif >> 654 >> 655 QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir >> 656 QUIET_SUBDIR1 = >> 657 >> 658 ifneq ($(findstring $(MAKEFLAGS),w),w) >> 659 PRINT_DIR = --no-print-directory >> 660 else # "make -w" >> 661 NO_SUBDIR = : >> 662 endif >> 663 >> 664 ifneq ($(findstring $(MAKEFLAGS),s),s) >> 665 ifndef V >> 666 QUIET_CC = @echo ' ' CC $@; >> 667 QUIET_AR = @echo ' ' AR $@; >> 668 QUIET_LINK = @echo ' ' LINK $@; >> 669 QUIET_BUILT_IN = @echo ' ' BUILTIN $@; >> 670 QUIET_GEN = @echo ' ' GEN $@; >> 671 QUIET_SUBDIR0 = +@subdir= >> 672 QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ >> 673 $(MAKE) $(PRINT_DIR) -C $$subdir >> 674 export V >> 675 export QUIET_GEN >> 676 export QUIET_BUILT_IN >> 677 endif >> 678 endif >> 679 >> 680 ifdef ASCIIDOC8 >> 681 export ASCIIDOC8 >> 682 endif >> 683 >> 684 # Shell quote (do not use $(call) to accommodate ancient setups); >> 685 >> 686 SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER)) >> 687 ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG)) >> 688 >> 689 DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) >> 690 bindir_SQ = $(subst ','\'',$(bindir)) >> 691 bindir_relative_SQ = $(subst ','\'',$(bindir_relative)) >> 692 mandir_SQ = $(subst ','\'',$(mandir)) >> 693 infodir_SQ = $(subst ','\'',$(infodir)) >> 694 perfexecdir_SQ = $(subst ','\'',$(perfexecdir)) >> 695 template_dir_SQ = $(subst ','\'',$(template_dir)) >> 696 htmldir_SQ = $(subst ','\'',$(htmldir)) >> 697 prefix_SQ = $(subst ','\'',$(prefix)) >> 698 >> 699 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) >> 700 PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH)) >> 701 >> 702 LIBS = $(PERFLIBS) $(EXTLIBS) >> 703 >> 704 BASIC_CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER_SQ)' \ >> 705 $(COMPAT_CFLAGS) >> 706 LIB_OBJS += $(COMPAT_OBJS) >> 707 >> 708 ALL_CFLAGS += $(BASIC_CFLAGS) >> 709 ALL_LDFLAGS += $(BASIC_LDFLAGS) >> 710 >> 711 export TAR INSTALL DESTDIR SHELL_PATH >> 712 >> 713 >> 714 ### Build rules >> 715 >> 716 SHELL = $(SHELL_PATH) >> 717 >> 718 all:: .perf.dev.null shell_compatibility_test $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS) PERF-BUILD-OPTIONS >> 719 ifneq (,$X) >> 720 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), test '$p' -ef '$p$X' || $(RM) '$p';) >> 721 endif >> 722 >> 723 all:: >> 724 >> 725 please_set_SHELL_PATH_to_a_more_modern_shell: >> 726 @$$(:) >> 727 >> 728 shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell >> 729 >> 730 strip: $(PROGRAMS) perf$X >> 731 $(STRIP) $(STRIP_OPTS) $(PROGRAMS) perf$X >> 732 >> 733 perf.o: perf.c common-cmds.h PERF-CFLAGS >> 734 $(QUIET_CC)$(CC) -DPERF_VERSION='"$(PERF_VERSION)"' \ >> 735 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 736 $(ALL_CFLAGS) -c $(filter %.c,$^) >> 737 >> 738 perf$X: perf.o $(BUILTIN_OBJS) $(PERFLIBS) >> 739 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ perf.o \ >> 740 $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS) >> 741 >> 742 builtin-help.o: builtin-help.c common-cmds.h PERF-CFLAGS >> 743 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ >> 744 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 745 '-DPERF_MAN_PATH="$(mandir_SQ)"' \ >> 746 '-DPERF_INFO_PATH="$(infodir_SQ)"' $< >> 747 >> 748 builtin-timechart.o: builtin-timechart.c common-cmds.h PERF-CFLAGS >> 749 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ >> 750 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 751 '-DPERF_MAN_PATH="$(mandir_SQ)"' \ >> 752 '-DPERF_INFO_PATH="$(infodir_SQ)"' $< >> 753 >> 754 $(BUILT_INS): perf$X >> 755 $(QUIET_BUILT_IN)$(RM) $@ && \ >> 756 ln perf$X $@ 2>/dev/null || \ >> 757 ln -s perf$X $@ 2>/dev/null || \ >> 758 cp perf$X $@ >> 759 >> 760 common-cmds.h: util/generate-cmdlist.sh command-list.txt >> 761 >> 762 common-cmds.h: $(wildcard Documentation/perf-*.txt) >> 763 $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@ >> 764 >> 765 $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh >> 766 $(QUIET_GEN)$(RM) $@ $@+ && \ >> 767 sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ >> 768 -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \ >> 769 -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \ >> 770 -e 's/@@PERF_VERSION@@/$(PERF_VERSION)/g' \ >> 771 -e 's/@@NO_CURL@@/$(NO_CURL)/g' \ >> 772 $@.sh >$@+ && \ >> 773 chmod +x $@+ && \ >> 774 mv $@+ $@ >> 775 >> 776 configure: configure.ac >> 777 $(QUIET_GEN)$(RM) $@ $<+ && \ >> 778 sed -e 's/@@PERF_VERSION@@/$(PERF_VERSION)/g' \ >> 779 $< > $<+ && \ >> 780 autoconf -o $@ $<+ && \ >> 781 $(RM) $<+ >> 782 >> 783 # These can record PERF_VERSION >> 784 perf.o perf.spec \ >> 785 $(patsubst %.sh,%,$(SCRIPT_SH)) \ >> 786 $(patsubst %.perl,%,$(SCRIPT_PERL)) \ >> 787 : PERF-VERSION-FILE >> 788 >> 789 %.o: %.c PERF-CFLAGS >> 790 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $< >> 791 %.s: %.c PERF-CFLAGS >> 792 $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $< >> 793 %.o: %.S >> 794 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $< >> 795 >> 796 util/exec_cmd.o: util/exec_cmd.c PERF-CFLAGS >> 797 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \ >> 798 '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \ >> 799 '-DBINDIR="$(bindir_relative_SQ)"' \ >> 800 '-DPREFIX="$(prefix_SQ)"' \ >> 801 $< >> 802 >> 803 builtin-init-db.o: builtin-init-db.c PERF-CFLAGS >> 804 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_PERF_TEMPLATE_DIR='"$(template_dir_SQ)"' $< >> 805 >> 806 util/config.o: util/config.c PERF-CFLAGS >> 807 $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< >> 808 >> 809 util/rbtree.o: ../../lib/rbtree.c PERF-CFLAGS >> 810 $(QUIET_CC)$(CC) -o util/rbtree.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< >> 811 >> 812 perf-%$X: %.o $(PERFLIBS) >> 813 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) >> 814 >> 815 $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) >> 816 $(patsubst perf-%$X,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) >> 817 builtin-revert.o wt-status.o: wt-status.h >> 818 >> 819 $(LIB_FILE): $(LIB_OBJS) >> 820 $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) >> 821 >> 822 doc: >> 823 $(MAKE) -C Documentation all >> 824 >> 825 man: >> 826 $(MAKE) -C Documentation man >> 827 >> 828 html: >> 829 $(MAKE) -C Documentation html >> 830 >> 831 info: >> 832 $(MAKE) -C Documentation info >> 833 >> 834 pdf: >> 835 $(MAKE) -C Documentation pdf >> 836 >> 837 TAGS: >> 838 $(RM) TAGS >> 839 $(FIND) . -name '*.[hcS]' -print | xargs etags -a >> 840 >> 841 tags: >> 842 $(RM) tags >> 843 $(FIND) . -name '*.[hcS]' -print | xargs ctags -a >> 844 >> 845 cscope: >> 846 $(RM) cscope* >> 847 $(FIND) . -name '*.[hcS]' -print | xargs cscope -b >> 848 >> 849 ### Detect prefix changes >> 850 TRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):\ >> 851 $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ) >> 852 >> 853 PERF-CFLAGS: .FORCE-PERF-CFLAGS >> 854 @FLAGS='$(TRACK_CFLAGS)'; \ >> 855 if test x"$$FLAGS" != x"`cat PERF-CFLAGS 2>/dev/null`" ; then \ >> 856 echo 1>&2 " * new build flags or prefix"; \ >> 857 echo "$$FLAGS" >PERF-CFLAGS; \ >> 858 fi >> 859 >> 860 # We need to apply sq twice, once to protect from the shell >> 861 # that runs PERF-BUILD-OPTIONS, and then again to protect it >> 862 # and the first level quoting from the shell that runs "echo". >> 863 PERF-BUILD-OPTIONS: .FORCE-PERF-BUILD-OPTIONS >> 864 @echo SHELL_PATH=\''$(subst ','\'',$(SHELL_PATH_SQ))'\' >$@ >> 865 @echo TAR=\''$(subst ','\'',$(subst ','\'',$(TAR)))'\' >>$@ >> 866 @echo NO_CURL=\''$(subst ','\'',$(subst ','\'',$(NO_CURL)))'\' >>$@ >> 867 @echo NO_PERL=\''$(subst ','\'',$(subst ','\'',$(NO_PERL)))'\' >>$@ >> 868 >> 869 ### Testing rules 67 870 68 # 871 # 69 # Needed if no target specified: !! 872 # None right now: 70 # (Except for tags and TAGS targets. The reaso << 71 # Makefile does not treat tags/TAGS as targets << 72 # and thus won't rebuilt them once they are in << 73 # 873 # 74 all tags TAGS: !! 874 # TEST_PROGRAMS += test-something$X 75 $(print_msg) !! 875 76 $(make) !! 876 all:: $(TEST_PROGRAMS) >> 877 >> 878 # GNU make supports exporting all variables by "export" without parameters. >> 879 # However, the environment gets quite big, and some programs have problems >> 880 # with that. >> 881 >> 882 export NO_SVN_TESTS >> 883 >> 884 check: common-cmds.h >> 885 if sparse; \ >> 886 then \ >> 887 for i in *.c */*.c; \ >> 888 do \ >> 889 sparse $(ALL_CFLAGS) $(SPARSE_FLAGS) $$i || exit; \ >> 890 done; \ >> 891 else \ >> 892 echo 2>&1 "Did you mean 'make test'?"; \ >> 893 exit 1; \ >> 894 fi >> 895 >> 896 remove-dashes: >> 897 ./fixup-builtins $(BUILT_INS) $(PROGRAMS) $(SCRIPTS) 77 898 78 ifdef MAKECMDGOALS !! 899 ### Installation rules 79 has_clean := 0 << 80 ifneq ($(filter clean,$(MAKECMDGOALS)),) << 81 has_clean := 1 << 82 endif # clean << 83 900 84 ifeq ($(has_clean),1) !! 901 ifneq ($(filter /%,$(firstword $(template_dir))),) 85 rest := $(filter-out clean,$(MAKECMDGOALS)) !! 902 template_instdir = $(template_dir) 86 ifneq ($(rest),) !! 903 else 87 $(rest): clean !! 904 template_instdir = $(prefix)/$(template_dir) 88 endif # rest !! 905 endif 89 endif # has_clean !! 906 export template_instdir 90 endif # MAKECMDGOALS !! 907 >> 908 ifneq ($(filter /%,$(firstword $(perfexecdir))),) >> 909 perfexec_instdir = $(perfexecdir) >> 910 else >> 911 perfexec_instdir = $(prefix)/$(perfexecdir) >> 912 endif >> 913 perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) >> 914 export perfexec_instdir >> 915 >> 916 install: all >> 917 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' >> 918 $(INSTALL) perf$X '$(DESTDIR_SQ)$(bindir_SQ)' >> 919 ifdef BUILT_INS >> 920 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' >> 921 $(INSTALL) $(BUILT_INS) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' >> 922 ifneq (,$X) >> 923 $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) perf$X)), $(RM) '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/$p';) >> 924 endif >> 925 endif >> 926 >> 927 install-doc: >> 928 $(MAKE) -C Documentation install >> 929 >> 930 install-man: >> 931 $(MAKE) -C Documentation install-man >> 932 >> 933 install-html: >> 934 $(MAKE) -C Documentation install-html >> 935 >> 936 install-info: >> 937 $(MAKE) -C Documentation install-info >> 938 >> 939 install-pdf: >> 940 $(MAKE) -C Documentation install-pdf >> 941 >> 942 quick-install-doc: >> 943 $(MAKE) -C Documentation quick-install >> 944 >> 945 quick-install-man: >> 946 $(MAKE) -C Documentation quick-install-man >> 947 >> 948 quick-install-html: >> 949 $(MAKE) -C Documentation quick-install-html 91 950 >> 951 >> 952 ### Maintainer's dist rules >> 953 # >> 954 # None right now 92 # 955 # 93 # Explicitly disable parallelism for the clean << 94 # 956 # >> 957 # perf.spec: perf.spec.in >> 958 # sed -e 's/@@VERSION@@/$(PERF_VERSION)/g' < $< > $@+ >> 959 # mv $@+ $@ >> 960 # >> 961 # PERF_TARNAME=perf-$(PERF_VERSION) >> 962 # dist: perf.spec perf-archive$(X) configure >> 963 # ./perf-archive --format=tar \ >> 964 # --prefix=$(PERF_TARNAME)/ HEAD^{tree} > $(PERF_TARNAME).tar >> 965 # @mkdir -p $(PERF_TARNAME) >> 966 # @cp perf.spec configure $(PERF_TARNAME) >> 967 # @echo $(PERF_VERSION) > $(PERF_TARNAME)/version >> 968 # $(TAR) rf $(PERF_TARNAME).tar \ >> 969 # $(PERF_TARNAME)/perf.spec \ >> 970 # $(PERF_TARNAME)/configure \ >> 971 # $(PERF_TARNAME)/version >> 972 # @$(RM) -r $(PERF_TARNAME) >> 973 # gzip -f -9 $(PERF_TARNAME).tar >> 974 # >> 975 # htmldocs = perf-htmldocs-$(PERF_VERSION) >> 976 # manpages = perf-manpages-$(PERF_VERSION) >> 977 # dist-doc: >> 978 # $(RM) -r .doc-tmp-dir >> 979 # mkdir .doc-tmp-dir >> 980 # $(MAKE) -C Documentation WEBDOC_DEST=../.doc-tmp-dir install-webdoc >> 981 # cd .doc-tmp-dir && $(TAR) cf ../$(htmldocs).tar . >> 982 # gzip -n -9 -f $(htmldocs).tar >> 983 # : >> 984 # $(RM) -r .doc-tmp-dir >> 985 # mkdir -p .doc-tmp-dir/man1 .doc-tmp-dir/man5 .doc-tmp-dir/man7 >> 986 # $(MAKE) -C Documentation DESTDIR=./ \ >> 987 # man1dir=../.doc-tmp-dir/man1 \ >> 988 # man5dir=../.doc-tmp-dir/man5 \ >> 989 # man7dir=../.doc-tmp-dir/man7 \ >> 990 # install >> 991 # cd .doc-tmp-dir && $(TAR) cf ../$(manpages).tar . >> 992 # gzip -n -9 -f $(manpages).tar >> 993 # $(RM) -r .doc-tmp-dir >> 994 # >> 995 # rpm: dist >> 996 # $(RPMBUILD) -ta $(PERF_TARNAME).tar.gz >> 997 >> 998 ### Cleaning rules >> 999 >> 1000 distclean: clean >> 1001 # $(RM) configure >> 1002 95 clean: 1003 clean: 96 $(make) -j1 !! 1004 $(RM) *.o */*.o $(LIB_FILE) >> 1005 $(RM) $(ALL_PROGRAMS) $(BUILT_INS) perf$X >> 1006 $(RM) $(TEST_PROGRAMS) >> 1007 $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope* >> 1008 $(RM) -r autom4te.cache >> 1009 $(RM) config.log config.mak.autogen config.mak.append config.status config.cache >> 1010 $(RM) -r $(PERF_TARNAME) .doc-tmp-dir >> 1011 $(RM) $(PERF_TARNAME).tar.gz perf-core_$(PERF_VERSION)-*.tar.gz >> 1012 $(RM) $(htmldocs).tar.gz $(manpages).tar.gz >> 1013 $(MAKE) -C Documentation/ clean >> 1014 $(RM) PERF-VERSION-FILE PERF-CFLAGS PERF-BUILD-OPTIONS >> 1015 >> 1016 .PHONY: all install clean strip >> 1017 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell >> 1018 .PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS >> 1019 .PHONY: .FORCE-PERF-BUILD-OPTIONS >> 1020 >> 1021 .perf.dev.null: >> 1022 touch .perf.dev.null 97 1023 >> 1024 .INTERMEDIATE: .perf.dev.null >> 1025 >> 1026 ### Make sure built-ins do not have dups and listed in perf.c 98 # 1027 # 99 # The build-test target is not really parallel !! 1028 check-builtins:: 100 # it also uses only the tests/make targets tha !! 1029 ./check-builtins.sh 101 # repository, i.e. that uses O= or builds the !! 1030 102 # repo directories. !! 1031 ### Test suite coverage testing 103 # 1032 # 104 # For a full test, use: !! 1033 # None right now 105 # 1034 # 106 # make -C tools/perf -f tests/make !! 1035 # .PHONY: coverage coverage-clean coverage-build coverage-report 107 # 1036 # 108 build-test: !! 1037 # coverage: 109 @$(MAKE) SHUF=1 -f tests/make REUSE_FE !! 1038 # $(MAKE) coverage-build 110 !! 1039 # $(MAKE) coverage-report 111 build-test-tarball: << 112 @$(MAKE) -f tests/make REUSE_FEATURES_ << 113 << 114 # 1040 # 115 # All other targets get passed through: !! 1041 # coverage-clean: >> 1042 # rm -f *.gcda *.gcno 116 # 1043 # 117 %: FORCE !! 1044 # COVERAGE_CFLAGS = $(CFLAGS) -O0 -ftest-coverage -fprofile-arcs 118 $(print_msg) !! 1045 # COVERAGE_LDFLAGS = $(CFLAGS) -O0 -lgcov 119 $(make) !! 1046 # 120 !! 1047 # coverage-build: coverage-clean 121 .PHONY: tags TAGS FORCE Makefile !! 1048 # $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" all >> 1049 # $(MAKE) CFLAGS="$(COVERAGE_CFLAGS)" LDFLAGS="$(COVERAGE_LDFLAGS)" \ >> 1050 # -j1 test >> 1051 # >> 1052 # coverage-report: >> 1053 # gcov -b *.c */*.c >> 1054 # grep '^function.*called 0 ' *.c.gcov */*.c.gcov \ >> 1055 # | sed -e 's/\([^:]*\)\.gcov: *function \([^ ]*\) called.*/\1: \2/' \ >> 1056 # | tee coverage-untested-functions
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.