~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/Makefile

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/Makefile (Version linux-6.12-rc7) and /tools/perf/Makefile (Version linux-2.6.32.71)


  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
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php