1 # SPDX-License-Identifier: GPL-2.0 !! 1 include ../scripts/Makefile.include >> 2 >> 3 # The default target of this Makefile is... >> 4 all: >> 5 >> 6 include config/utilities.mak >> 7 >> 8 # Define V to have a more verbose compile. 2 # 9 # 3 # This is a simple wrapper Makefile that calls !! 10 # Define O to save output files in a separate directory. 4 # with a -j option to do parallel builds << 5 # 11 # 6 # If you want to invoke the perf build in some !! 12 # Define ARCH as name of target architecture if you want cross-builds. 7 # you can use the 'make -f Makefile.perf' meth << 8 # 13 # 9 !! 14 # Define CROSS_COMPILE as prefix name of compiler if you want cross-builds. 10 # 15 # 11 # Clear out the built-in rules GNU make define !! 16 # Define NO_LIBPERL to disable perl script extension. 12 # so that we pass through all targets to Makef << 13 # 17 # 14 .SUFFIXES: !! 18 # Define NO_LIBPYTHON to disable python script extension. 15 << 16 # 19 # 17 # We don't want to pass along options like -j: !! 20 # Define PYTHON to point to the python binary if the default >> 21 # `python' is not correct; for example: PYTHON=python2 18 # 22 # 19 unexport MAKEFLAGS !! 23 # Define PYTHON_CONFIG to point to the python-config binary if 20 !! 24 # the default `$(PYTHON)-config' is not correct. 21 # 25 # 22 # Do a parallel build with multiple jobs, base !! 26 # Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8 23 # in this system: 'make -j8' on a 8-CPU system << 24 # 27 # 25 # (To override it, run 'make JOBS=1' and simil !! 28 # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72. 26 # 29 # 27 ifeq ($(JOBS),) !! 30 # Define LDFLAGS=-static to build a static binary. 28 JOBS := $(shell (getconf _NPROCESSORS_ONLN | << 29 ifeq ($(JOBS),0) << 30 JOBS := 1 << 31 endif << 32 endif << 33 << 34 # 31 # 35 # Only pass canonical directory names as the o !! 32 # Define EXTRA_CFLAGS=-m64 or EXTRA_CFLAGS=-m32 as appropriate for cross-builds. 36 # 33 # 37 ifneq ($(O),) !! 34 # Define NO_DWARF if you do not want debug-info analysis feature at all. 38 FULL_O := $(shell cd $(PWD); readlink -f $(O !! 35 # 39 endif !! 36 # Define WERROR=0 to disable treating any warnings as errors. 40 !! 37 # >> 38 # Define NO_NEWT if you do not want TUI support. (deprecated) >> 39 # >> 40 # Define NO_SLANG if you do not want TUI support. >> 41 # >> 42 # Define NO_GTK2 if you do not want GTK+ GUI support. 41 # 43 # 42 # Only accept the 'DEBUG' variable from the co !! 44 # Define NO_DEMANGLE if you do not want C++ symbol demangling. 43 # 45 # >> 46 # Define NO_LIBELF if you do not want libelf dependency (e.g. cross-builds) >> 47 # >> 48 # Define NO_LIBUNWIND if you do not want libunwind dependency for dwarf >> 49 # backtrace post unwind. >> 50 # >> 51 # Define NO_BACKTRACE if you do not want stack backtrace debug feature >> 52 # >> 53 # Define NO_LIBNUMA if you do not want numa perf benchmark >> 54 >> 55 $(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE >> 56 @$(SHELL_PATH) util/PERF-VERSION-GEN $(OUTPUT) >> 57 >> 58 uname_M := $(shell uname -m 2>/dev/null || echo not) >> 59 >> 60 ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ >> 61 -e s/arm.*/arm/ -e s/sa110/arm/ \ >> 62 -e s/s390x/s390/ -e s/parisc64/parisc/ \ >> 63 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \ >> 64 -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ ) >> 65 NO_PERF_REGS := 1 >> 66 >> 67 CC = $(CROSS_COMPILE)gcc >> 68 AR = $(CROSS_COMPILE)ar >> 69 >> 70 # Additional ARCH settings for x86 >> 71 ifeq ($(ARCH),i386) >> 72 override ARCH := x86 >> 73 NO_PERF_REGS := 0 >> 74 LIBUNWIND_LIBS = -lunwind -lunwind-x86 >> 75 endif >> 76 ifeq ($(ARCH),x86_64) >> 77 override ARCH := x86 >> 78 IS_X86_64 := 0 >> 79 ifeq (, $(findstring m32,$(EXTRA_CFLAGS))) >> 80 IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -x c - | tail -n 1) >> 81 endif >> 82 ifeq (${IS_X86_64}, 1) >> 83 RAW_ARCH := x86_64 >> 84 ARCH_CFLAGS := -DARCH_X86_64 >> 85 ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S >> 86 endif >> 87 NO_PERF_REGS := 0 >> 88 LIBUNWIND_LIBS = -lunwind -lunwind-x86_64 >> 89 endif >> 90 >> 91 # Treat warnings as errors unless directed not to >> 92 ifneq ($(WERROR),0) >> 93 CFLAGS_WERROR := -Werror >> 94 endif >> 95 44 ifeq ("$(origin DEBUG)", "command line") 96 ifeq ("$(origin DEBUG)", "command line") 45 ifeq ($(DEBUG),) !! 97 PERF_DEBUG = $(DEBUG) 46 override DEBUG = 0 !! 98 endif 47 else !! 99 ifndef PERF_DEBUG 48 SET_DEBUG = "DEBUG=$(DEBUG)" !! 100 CFLAGS_OPTIMIZE = -O6 49 endif !! 101 endif >> 102 >> 103 ifdef PARSER_DEBUG >> 104 PARSER_DEBUG_BISON := -t >> 105 PARSER_DEBUG_FLEX := -d >> 106 PARSER_DEBUG_CFLAGS := -DPARSER_DEBUG >> 107 endif >> 108 >> 109 ifdef NO_NEWT >> 110 NO_SLANG=1 >> 111 endif >> 112 >> 113 CFLAGS = -fno-omit-frame-pointer -ggdb3 -funwind-tables -Wall -Wextra -std=gnu99 $(CFLAGS_WERROR) $(CFLAGS_OPTIMIZE) $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) $(PARSER_DEBUG_CFLAGS) >> 114 EXTLIBS = -lpthread -lrt -lelf -lm >> 115 ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE >> 116 ALL_LDFLAGS = $(LDFLAGS) >> 117 STRIP ?= strip >> 118 >> 119 # Among the variables below, these: >> 120 # perfexecdir >> 121 # template_dir >> 122 # mandir >> 123 # infodir >> 124 # htmldir >> 125 # ETC_PERFCONFIG (but not sysconfdir) >> 126 # can be specified as a relative path some/where/else; >> 127 # this is interpreted as relative to $(prefix) and "perf" at >> 128 # runtime figures out where they are based on the path to the executable. >> 129 # This can help installing the suite in a relocatable way. >> 130 >> 131 # Make the path relative to DESTDIR, not to prefix >> 132 ifndef DESTDIR >> 133 prefix = $(HOME) >> 134 endif >> 135 bindir_relative = bin >> 136 bindir = $(prefix)/$(bindir_relative) >> 137 mandir = share/man >> 138 infodir = share/info >> 139 perfexecdir = libexec/perf-core >> 140 sharedir = $(prefix)/share >> 141 template_dir = share/perf-core/templates >> 142 htmldir = share/doc/perf-doc >> 143 ifeq ($(prefix),/usr) >> 144 sysconfdir = /etc >> 145 ETC_PERFCONFIG = $(sysconfdir)/perfconfig 50 else 146 else 51 override DEBUG = 0 !! 147 sysconfdir = $(prefix)/etc >> 148 ETC_PERFCONFIG = etc/perfconfig >> 149 endif >> 150 lib = lib >> 151 >> 152 export prefix bindir sharedir sysconfdir >> 153 >> 154 RM = rm -f >> 155 MKDIR = mkdir >> 156 FIND = find >> 157 INSTALL = install >> 158 FLEX = flex >> 159 BISON= bison >> 160 >> 161 # sparse is architecture-neutral, which means that we need to tell it >> 162 # explicitly what architecture to check for. Fix this up for yours.. >> 163 SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ >> 164 >> 165 ifneq ($(MAKECMDGOALS),clean) >> 166 ifneq ($(MAKECMDGOALS),tags) >> 167 -include config/feature-tests.mak >> 168 >> 169 ifeq ($(call get-executable,$(FLEX)),) >> 170 dummy := $(error Error: $(FLEX) is missing on this system, please install it) >> 171 endif >> 172 >> 173 ifeq ($(call get-executable,$(BISON)),) >> 174 dummy := $(error Error: $(BISON) is missing on this system, please install it) >> 175 endif >> 176 >> 177 ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -fstack-protector-all,-fstack-protector-all),y) >> 178 CFLAGS := $(CFLAGS) -fstack-protector-all >> 179 endif >> 180 >> 181 ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -Wstack-protector,-Wstack-protector),y) >> 182 CFLAGS := $(CFLAGS) -Wstack-protector >> 183 endif >> 184 >> 185 ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -Werror -Wvolatile-register-var,-Wvolatile-register-var),y) >> 186 CFLAGS := $(CFLAGS) -Wvolatile-register-var >> 187 endif >> 188 >> 189 ifndef PERF_DEBUG >> 190 ifeq ($(call try-cc,$(SOURCE_HELLO),$(CFLAGS) -D_FORTIFY_SOURCE=2,-D_FORTIFY_SOURCE=2),y) >> 191 CFLAGS := $(CFLAGS) -D_FORTIFY_SOURCE=2 >> 192 endif >> 193 endif >> 194 >> 195 ### --- END CONFIGURATION SECTION --- >> 196 >> 197 ifeq ($(srctree),) >> 198 srctree := $(patsubst %/,%,$(dir $(shell pwd))) >> 199 srctree := $(patsubst %/,%,$(dir $(srctree))) >> 200 #$(info Determined 'srctree' to be $(srctree)) >> 201 endif >> 202 >> 203 ifneq ($(objtree),) >> 204 #$(info Determined 'objtree' to be $(objtree)) 52 endif 205 endif 53 206 54 ifeq ($(JOBS),1) !! 207 ifneq ($(OUTPUT),) 55 BUILD_TYPE := sequential !! 208 #$(info Determined 'OUTPUT' to be $(OUTPUT)) >> 209 endif >> 210 >> 211 BASIC_CFLAGS = \ >> 212 -Iutil/include \ >> 213 -Iarch/$(ARCH)/include \ >> 214 $(if $(objtree),-I$(objtree)/arch/$(ARCH)/include/generated/uapi) \ >> 215 -I$(srctree)/arch/$(ARCH)/include/uapi \ >> 216 -I$(srctree)/arch/$(ARCH)/include \ >> 217 $(if $(objtree),-I$(objtree)/include/generated/uapi) \ >> 218 -I$(srctree)/include/uapi \ >> 219 -I$(srctree)/include \ >> 220 -I$(OUTPUT)util \ >> 221 -Iutil \ >> 222 -I. \ >> 223 -I$(TRACE_EVENT_DIR) \ >> 224 -I../lib/ \ >> 225 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE >> 226 >> 227 BASIC_LDFLAGS = >> 228 >> 229 ifeq ($(call try-cc,$(SOURCE_BIONIC),$(CFLAGS),bionic),y) >> 230 BIONIC := 1 >> 231 EXTLIBS := $(filter-out -lrt,$(EXTLIBS)) >> 232 EXTLIBS := $(filter-out -lpthread,$(EXTLIBS)) >> 233 BASIC_CFLAGS += -I. >> 234 endif >> 235 endif # MAKECMDGOALS != tags >> 236 endif # MAKECMDGOALS != clean >> 237 >> 238 # Guard against environment variables >> 239 BUILTIN_OBJS = >> 240 LIB_H = >> 241 LIB_OBJS = >> 242 PYRF_OBJS = >> 243 SCRIPT_SH = >> 244 >> 245 SCRIPT_SH += perf-archive.sh >> 246 >> 247 grep-libs = $(filter -l%,$(1)) >> 248 strip-libs = $(filter-out -l%,$(1)) >> 249 >> 250 LK_DIR = ../lib/lk/ >> 251 TRACE_EVENT_DIR = ../lib/traceevent/ >> 252 >> 253 LK_PATH=$(LK_DIR) >> 254 >> 255 ifneq ($(OUTPUT),) >> 256 TE_PATH=$(OUTPUT) >> 257 ifneq ($(subdir),) >> 258 LK_PATH=$(OUTPUT)$(LK_DIR) >> 259 else >> 260 LK_PATH=$(OUTPUT) >> 261 endif 56 else 262 else 57 BUILD_TYPE := parallel !! 263 TE_PATH=$(TRACE_EVENT_DIR) 58 endif 264 endif 59 265 60 define print_msg !! 266 LIBTRACEEVENT = $(TE_PATH)libtraceevent.a 61 @printf ' BUILD: Doing '\''make \033[33m- !! 267 export LIBTRACEEVENT 62 endef << 63 268 64 define make !! 269 LIBLK = $(LK_PATH)liblk.a 65 @$(MAKE) -f Makefile.perf --no-print-directo !! 270 export LIBLK 66 endef << 67 271 68 # !! 272 # python extension build directories 69 # Needed if no target specified: !! 273 PYTHON_EXTBUILD := $(OUTPUT)python_ext_build/ 70 # (Except for tags and TAGS targets. The reaso !! 274 PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/ 71 # Makefile does not treat tags/TAGS as targets !! 275 PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/ 72 # and thus won't rebuilt them once they are in !! 276 export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP 73 # << 74 all tags TAGS: << 75 $(print_msg) << 76 $(make) << 77 277 78 ifdef MAKECMDGOALS !! 278 python-clean := rm -rf $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so 79 has_clean := 0 << 80 ifneq ($(filter clean,$(MAKECMDGOALS)),) << 81 has_clean := 1 << 82 endif # clean << 83 279 84 ifeq ($(has_clean),1) !! 280 PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources) 85 rest := $(filter-out clean,$(MAKECMDGOALS)) !! 281 PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) 86 ifneq ($(rest),) << 87 $(rest): clean << 88 endif # rest << 89 endif # has_clean << 90 endif # MAKECMDGOALS << 91 282 >> 283 $(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) >> 284 $(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \ >> 285 --quiet build_ext; \ >> 286 mkdir -p $(OUTPUT)python && \ >> 287 cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/ 92 # 288 # 93 # Explicitly disable parallelism for the clean !! 289 # No Perl scripts right now: 94 # 290 # 95 clean: !! 291 96 $(make) -j1 !! 292 SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) 97 293 98 # 294 # 99 # The build-test target is not really parallel !! 295 # Single 'perf' binary right now: 100 # it also uses only the tests/make targets tha << 101 # repository, i.e. that uses O= or builds the << 102 # repo directories. << 103 # << 104 # For a full test, use: << 105 # << 106 # make -C tools/perf -f tests/make << 107 # 296 # 108 build-test: !! 297 PROGRAMS += $(OUTPUT)perf 109 @$(MAKE) SHUF=1 -f tests/make REUSE_FE !! 298 >> 299 LANG_BINDINGS = >> 300 >> 301 # what 'all' will build and 'install' will install, in perfexecdir >> 302 ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) >> 303 >> 304 # what 'all' will build but not install in perfexecdir >> 305 OTHER_PROGRAMS = $(OUTPUT)perf >> 306 >> 307 # Set paths to tools early so that they can be used for version tests. >> 308 ifndef SHELL_PATH >> 309 SHELL_PATH = /bin/sh >> 310 endif >> 311 ifndef PERL_PATH >> 312 PERL_PATH = /usr/bin/perl >> 313 endif >> 314 >> 315 export PERL_PATH >> 316 >> 317 $(OUTPUT)util/parse-events-flex.c: util/parse-events.l $(OUTPUT)util/parse-events-bison.c >> 318 $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/parse-events-flex.h $(PARSER_DEBUG_FLEX) -t util/parse-events.l > $(OUTPUT)util/parse-events-flex.c >> 319 >> 320 $(OUTPUT)util/parse-events-bison.c: util/parse-events.y >> 321 $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c -p parse_events_ >> 322 >> 323 $(OUTPUT)util/pmu-flex.c: util/pmu.l $(OUTPUT)util/pmu-bison.c >> 324 $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c >> 325 >> 326 $(OUTPUT)util/pmu-bison.c: util/pmu.y >> 327 $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_ 110 328 111 build-test-tarball: !! 329 $(OUTPUT)util/parse-events.o: $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c 112 @$(MAKE) -f tests/make REUSE_FEATURES_ !! 330 $(OUTPUT)util/pmu.o: $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c >> 331 >> 332 LIB_FILE=$(OUTPUT)libperf.a >> 333 >> 334 LIB_H += ../../include/uapi/linux/perf_event.h >> 335 LIB_H += ../../include/linux/rbtree.h >> 336 LIB_H += ../../include/linux/list.h >> 337 LIB_H += ../../include/uapi/linux/const.h >> 338 LIB_H += ../../include/linux/hash.h >> 339 LIB_H += ../../include/linux/stringify.h >> 340 LIB_H += util/include/linux/bitmap.h >> 341 LIB_H += util/include/linux/bitops.h >> 342 LIB_H += util/include/linux/compiler.h >> 343 LIB_H += util/include/linux/const.h >> 344 LIB_H += util/include/linux/ctype.h >> 345 LIB_H += util/include/linux/kernel.h >> 346 LIB_H += util/include/linux/list.h >> 347 LIB_H += util/include/linux/export.h >> 348 LIB_H += util/include/linux/magic.h >> 349 LIB_H += util/include/linux/poison.h >> 350 LIB_H += util/include/linux/prefetch.h >> 351 LIB_H += util/include/linux/rbtree.h >> 352 LIB_H += util/include/linux/rbtree_augmented.h >> 353 LIB_H += util/include/linux/string.h >> 354 LIB_H += util/include/linux/types.h >> 355 LIB_H += util/include/linux/linkage.h >> 356 LIB_H += util/include/asm/asm-offsets.h >> 357 LIB_H += util/include/asm/bug.h >> 358 LIB_H += util/include/asm/byteorder.h >> 359 LIB_H += util/include/asm/hweight.h >> 360 LIB_H += util/include/asm/swab.h >> 361 LIB_H += util/include/asm/system.h >> 362 LIB_H += util/include/asm/uaccess.h >> 363 LIB_H += util/include/dwarf-regs.h >> 364 LIB_H += util/include/asm/dwarf2.h >> 365 LIB_H += util/include/asm/cpufeature.h >> 366 LIB_H += util/include/asm/unistd_32.h >> 367 LIB_H += util/include/asm/unistd_64.h >> 368 LIB_H += perf.h >> 369 LIB_H += util/annotate.h >> 370 LIB_H += util/cache.h >> 371 LIB_H += util/callchain.h >> 372 LIB_H += util/build-id.h >> 373 LIB_H += util/debug.h >> 374 LIB_H += util/sysfs.h >> 375 LIB_H += util/pmu.h >> 376 LIB_H += util/event.h >> 377 LIB_H += util/evsel.h >> 378 LIB_H += util/evlist.h >> 379 LIB_H += util/exec_cmd.h >> 380 LIB_H += util/types.h >> 381 LIB_H += util/levenshtein.h >> 382 LIB_H += util/machine.h >> 383 LIB_H += util/map.h >> 384 LIB_H += util/parse-options.h >> 385 LIB_H += util/parse-events.h >> 386 LIB_H += util/quote.h >> 387 LIB_H += util/util.h >> 388 LIB_H += util/xyarray.h >> 389 LIB_H += util/header.h >> 390 LIB_H += util/help.h >> 391 LIB_H += util/session.h >> 392 LIB_H += util/strbuf.h >> 393 LIB_H += util/strlist.h >> 394 LIB_H += util/strfilter.h >> 395 LIB_H += util/svghelper.h >> 396 LIB_H += util/tool.h >> 397 LIB_H += util/run-command.h >> 398 LIB_H += util/sigchain.h >> 399 LIB_H += util/dso.h >> 400 LIB_H += util/symbol.h >> 401 LIB_H += util/color.h >> 402 LIB_H += util/values.h >> 403 LIB_H += util/sort.h >> 404 LIB_H += util/hist.h >> 405 LIB_H += util/thread.h >> 406 LIB_H += util/thread_map.h >> 407 LIB_H += util/trace-event.h >> 408 LIB_H += util/probe-finder.h >> 409 LIB_H += util/dwarf-aux.h >> 410 LIB_H += util/probe-event.h >> 411 LIB_H += util/pstack.h >> 412 LIB_H += util/cpumap.h >> 413 LIB_H += util/top.h >> 414 LIB_H += $(ARCH_INCLUDE) >> 415 LIB_H += util/cgroup.h >> 416 LIB_H += $(TRACE_EVENT_DIR)event-parse.h >> 417 LIB_H += util/target.h >> 418 LIB_H += util/rblist.h >> 419 LIB_H += util/intlist.h >> 420 LIB_H += util/perf_regs.h >> 421 LIB_H += util/unwind.h >> 422 LIB_H += util/vdso.h >> 423 LIB_H += ui/helpline.h >> 424 LIB_H += ui/progress.h >> 425 LIB_H += ui/util.h >> 426 LIB_H += ui/ui.h >> 427 >> 428 LIB_OBJS += $(OUTPUT)util/abspath.o >> 429 LIB_OBJS += $(OUTPUT)util/alias.o >> 430 LIB_OBJS += $(OUTPUT)util/annotate.o >> 431 LIB_OBJS += $(OUTPUT)util/build-id.o >> 432 LIB_OBJS += $(OUTPUT)util/config.o >> 433 LIB_OBJS += $(OUTPUT)util/ctype.o >> 434 LIB_OBJS += $(OUTPUT)util/sysfs.o >> 435 LIB_OBJS += $(OUTPUT)util/pmu.o >> 436 LIB_OBJS += $(OUTPUT)util/environment.o >> 437 LIB_OBJS += $(OUTPUT)util/event.o >> 438 LIB_OBJS += $(OUTPUT)util/evlist.o >> 439 LIB_OBJS += $(OUTPUT)util/evsel.o >> 440 LIB_OBJS += $(OUTPUT)util/exec_cmd.o >> 441 LIB_OBJS += $(OUTPUT)util/help.o >> 442 LIB_OBJS += $(OUTPUT)util/levenshtein.o >> 443 LIB_OBJS += $(OUTPUT)util/parse-options.o >> 444 LIB_OBJS += $(OUTPUT)util/parse-events.o >> 445 LIB_OBJS += $(OUTPUT)util/path.o >> 446 LIB_OBJS += $(OUTPUT)util/rbtree.o >> 447 LIB_OBJS += $(OUTPUT)util/bitmap.o >> 448 LIB_OBJS += $(OUTPUT)util/hweight.o >> 449 LIB_OBJS += $(OUTPUT)util/run-command.o >> 450 LIB_OBJS += $(OUTPUT)util/quote.o >> 451 LIB_OBJS += $(OUTPUT)util/strbuf.o >> 452 LIB_OBJS += $(OUTPUT)util/string.o >> 453 LIB_OBJS += $(OUTPUT)util/strlist.o >> 454 LIB_OBJS += $(OUTPUT)util/strfilter.o >> 455 LIB_OBJS += $(OUTPUT)util/top.o >> 456 LIB_OBJS += $(OUTPUT)util/usage.o >> 457 LIB_OBJS += $(OUTPUT)util/wrapper.o >> 458 LIB_OBJS += $(OUTPUT)util/sigchain.o >> 459 LIB_OBJS += $(OUTPUT)util/dso.o >> 460 LIB_OBJS += $(OUTPUT)util/symbol.o >> 461 LIB_OBJS += $(OUTPUT)util/symbol-elf.o >> 462 LIB_OBJS += $(OUTPUT)util/color.o >> 463 LIB_OBJS += $(OUTPUT)util/pager.o >> 464 LIB_OBJS += $(OUTPUT)util/header.o >> 465 LIB_OBJS += $(OUTPUT)util/callchain.o >> 466 LIB_OBJS += $(OUTPUT)util/values.o >> 467 LIB_OBJS += $(OUTPUT)util/debug.o >> 468 LIB_OBJS += $(OUTPUT)util/machine.o >> 469 LIB_OBJS += $(OUTPUT)util/map.o >> 470 LIB_OBJS += $(OUTPUT)util/pstack.o >> 471 LIB_OBJS += $(OUTPUT)util/session.o >> 472 LIB_OBJS += $(OUTPUT)util/thread.o >> 473 LIB_OBJS += $(OUTPUT)util/thread_map.o >> 474 LIB_OBJS += $(OUTPUT)util/trace-event-parse.o >> 475 LIB_OBJS += $(OUTPUT)util/parse-events-flex.o >> 476 LIB_OBJS += $(OUTPUT)util/parse-events-bison.o >> 477 LIB_OBJS += $(OUTPUT)util/pmu-flex.o >> 478 LIB_OBJS += $(OUTPUT)util/pmu-bison.o >> 479 LIB_OBJS += $(OUTPUT)util/trace-event-read.o >> 480 LIB_OBJS += $(OUTPUT)util/trace-event-info.o >> 481 LIB_OBJS += $(OUTPUT)util/trace-event-scripting.o >> 482 LIB_OBJS += $(OUTPUT)util/svghelper.o >> 483 LIB_OBJS += $(OUTPUT)util/sort.o >> 484 LIB_OBJS += $(OUTPUT)util/hist.o >> 485 LIB_OBJS += $(OUTPUT)util/probe-event.o >> 486 LIB_OBJS += $(OUTPUT)util/util.o >> 487 LIB_OBJS += $(OUTPUT)util/xyarray.o >> 488 LIB_OBJS += $(OUTPUT)util/cpumap.o >> 489 LIB_OBJS += $(OUTPUT)util/cgroup.o >> 490 LIB_OBJS += $(OUTPUT)util/target.o >> 491 LIB_OBJS += $(OUTPUT)util/rblist.o >> 492 LIB_OBJS += $(OUTPUT)util/intlist.o >> 493 LIB_OBJS += $(OUTPUT)util/vdso.o >> 494 LIB_OBJS += $(OUTPUT)util/stat.o >> 495 >> 496 LIB_OBJS += $(OUTPUT)ui/setup.o >> 497 LIB_OBJS += $(OUTPUT)ui/helpline.o >> 498 LIB_OBJS += $(OUTPUT)ui/progress.o >> 499 LIB_OBJS += $(OUTPUT)ui/util.o >> 500 LIB_OBJS += $(OUTPUT)ui/hist.o >> 501 LIB_OBJS += $(OUTPUT)ui/stdio/hist.o >> 502 >> 503 LIB_OBJS += $(OUTPUT)arch/common.o >> 504 >> 505 LIB_OBJS += $(OUTPUT)tests/parse-events.o >> 506 LIB_OBJS += $(OUTPUT)tests/dso-data.o >> 507 LIB_OBJS += $(OUTPUT)tests/attr.o >> 508 LIB_OBJS += $(OUTPUT)tests/vmlinux-kallsyms.o >> 509 LIB_OBJS += $(OUTPUT)tests/open-syscall.o >> 510 LIB_OBJS += $(OUTPUT)tests/open-syscall-all-cpus.o >> 511 LIB_OBJS += $(OUTPUT)tests/open-syscall-tp-fields.o >> 512 LIB_OBJS += $(OUTPUT)tests/mmap-basic.o >> 513 LIB_OBJS += $(OUTPUT)tests/perf-record.o >> 514 LIB_OBJS += $(OUTPUT)tests/rdpmc.o >> 515 LIB_OBJS += $(OUTPUT)tests/evsel-roundtrip-name.o >> 516 LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o >> 517 LIB_OBJS += $(OUTPUT)tests/pmu.o >> 518 LIB_OBJS += $(OUTPUT)tests/hists_link.o >> 519 LIB_OBJS += $(OUTPUT)tests/python-use.o >> 520 LIB_OBJS += $(OUTPUT)tests/bp_signal.o >> 521 LIB_OBJS += $(OUTPUT)tests/bp_signal_overflow.o >> 522 LIB_OBJS += $(OUTPUT)tests/task-exit.o >> 523 LIB_OBJS += $(OUTPUT)tests/sw-clock.o >> 524 >> 525 BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o >> 526 BUILTIN_OBJS += $(OUTPUT)builtin-bench.o >> 527 # Benchmark modules >> 528 BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o >> 529 BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o >> 530 ifeq ($(RAW_ARCH),x86_64) >> 531 BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o >> 532 BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o >> 533 endif >> 534 BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o >> 535 BUILTIN_OBJS += $(OUTPUT)bench/mem-memset.o >> 536 >> 537 BUILTIN_OBJS += $(OUTPUT)builtin-diff.o >> 538 BUILTIN_OBJS += $(OUTPUT)builtin-evlist.o >> 539 BUILTIN_OBJS += $(OUTPUT)builtin-help.o >> 540 BUILTIN_OBJS += $(OUTPUT)builtin-sched.o >> 541 BUILTIN_OBJS += $(OUTPUT)builtin-buildid-list.o >> 542 BUILTIN_OBJS += $(OUTPUT)builtin-buildid-cache.o >> 543 BUILTIN_OBJS += $(OUTPUT)builtin-list.o >> 544 BUILTIN_OBJS += $(OUTPUT)builtin-record.o >> 545 BUILTIN_OBJS += $(OUTPUT)builtin-report.o >> 546 BUILTIN_OBJS += $(OUTPUT)builtin-stat.o >> 547 BUILTIN_OBJS += $(OUTPUT)builtin-timechart.o >> 548 BUILTIN_OBJS += $(OUTPUT)builtin-top.o >> 549 BUILTIN_OBJS += $(OUTPUT)builtin-script.o >> 550 BUILTIN_OBJS += $(OUTPUT)builtin-probe.o >> 551 BUILTIN_OBJS += $(OUTPUT)builtin-kmem.o >> 552 BUILTIN_OBJS += $(OUTPUT)builtin-lock.o >> 553 BUILTIN_OBJS += $(OUTPUT)builtin-kvm.o >> 554 BUILTIN_OBJS += $(OUTPUT)builtin-inject.o >> 555 BUILTIN_OBJS += $(OUTPUT)tests/builtin-test.o >> 556 BUILTIN_OBJS += $(OUTPUT)builtin-mem.o >> 557 >> 558 PERFLIBS = $(LIB_FILE) $(LIBLK) $(LIBTRACEEVENT) 113 559 114 # 560 # 115 # All other targets get passed through: !! 561 # Platform specific tweaks 116 # 562 # 117 %: FORCE !! 563 ifneq ($(MAKECMDGOALS),clean) 118 $(print_msg) !! 564 ifneq ($(MAKECMDGOALS),tags) 119 $(make) !! 565 >> 566 # We choose to avoid "if .. else if .. else .. endif endif" >> 567 # because maintaining the nesting to match is a pain. If >> 568 # we had "elif" things would have been much nicer... >> 569 >> 570 ifdef NO_LIBELF >> 571 NO_DWARF := 1 >> 572 NO_DEMANGLE := 1 >> 573 NO_LIBUNWIND := 1 >> 574 else >> 575 FLAGS_LIBELF=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) >> 576 ifneq ($(call try-cc,$(SOURCE_LIBELF),$(FLAGS_LIBELF),libelf),y) >> 577 FLAGS_GLIBC=$(ALL_CFLAGS) $(ALL_LDFLAGS) >> 578 ifeq ($(call try-cc,$(SOURCE_GLIBC),$(FLAGS_GLIBC),glibc),y) >> 579 LIBC_SUPPORT := 1 >> 580 endif >> 581 ifeq ($(BIONIC),1) >> 582 LIBC_SUPPORT := 1 >> 583 endif >> 584 ifeq ($(LIBC_SUPPORT),1) >> 585 msg := $(warning No libelf found, disables 'probe' tool, please install elfutils-libelf-devel/libelf-dev); >> 586 >> 587 NO_LIBELF := 1 >> 588 NO_DWARF := 1 >> 589 NO_DEMANGLE := 1 >> 590 else >> 591 msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); >> 592 endif >> 593 else >> 594 # for linking with debug library, run like: >> 595 # make DEBUG=1 LIBDW_DIR=/opt/libdw/ >> 596 ifdef LIBDW_DIR >> 597 LIBDW_CFLAGS := -I$(LIBDW_DIR)/include >> 598 LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib >> 599 endif >> 600 >> 601 FLAGS_DWARF=$(ALL_CFLAGS) $(LIBDW_CFLAGS) -ldw -lelf $(LIBDW_LDFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) >> 602 ifneq ($(call try-cc,$(SOURCE_DWARF),$(FLAGS_DWARF),libdw),y) >> 603 msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev); >> 604 NO_DWARF := 1 >> 605 endif # Dwarf support >> 606 endif # SOURCE_LIBELF >> 607 endif # NO_LIBELF >> 608 >> 609 # There's only x86 (both 32 and 64) support for CFI unwind so far >> 610 ifneq ($(ARCH),x86) >> 611 NO_LIBUNWIND := 1 >> 612 endif >> 613 >> 614 ifndef NO_LIBUNWIND >> 615 # for linking with debug library, run like: >> 616 # make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/ >> 617 ifdef LIBUNWIND_DIR >> 618 LIBUNWIND_CFLAGS := -I$(LIBUNWIND_DIR)/include >> 619 LIBUNWIND_LDFLAGS := -L$(LIBUNWIND_DIR)/lib >> 620 endif >> 621 >> 622 FLAGS_UNWIND=$(LIBUNWIND_CFLAGS) $(ALL_CFLAGS) $(LIBUNWIND_LDFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(LIBUNWIND_LIBS) >> 623 ifneq ($(call try-cc,$(SOURCE_LIBUNWIND),$(FLAGS_UNWIND),libunwind),y) >> 624 msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 0.99); >> 625 NO_LIBUNWIND := 1 >> 626 endif # Libunwind support >> 627 endif # NO_LIBUNWIND >> 628 >> 629 -include arch/$(ARCH)/Makefile >> 630 >> 631 ifneq ($(OUTPUT),) >> 632 BASIC_CFLAGS += -I$(OUTPUT) >> 633 endif >> 634 >> 635 ifdef NO_LIBELF >> 636 EXTLIBS := $(filter-out -lelf,$(EXTLIBS)) >> 637 >> 638 # Remove ELF/DWARF dependent codes >> 639 LIB_OBJS := $(filter-out $(OUTPUT)util/symbol-elf.o,$(LIB_OBJS)) >> 640 LIB_OBJS := $(filter-out $(OUTPUT)util/dwarf-aux.o,$(LIB_OBJS)) >> 641 LIB_OBJS := $(filter-out $(OUTPUT)util/probe-event.o,$(LIB_OBJS)) >> 642 LIB_OBJS := $(filter-out $(OUTPUT)util/probe-finder.o,$(LIB_OBJS)) >> 643 >> 644 BUILTIN_OBJS := $(filter-out $(OUTPUT)builtin-probe.o,$(BUILTIN_OBJS)) >> 645 >> 646 # Use minimal symbol handling >> 647 LIB_OBJS += $(OUTPUT)util/symbol-minimal.o >> 648 >> 649 else # NO_LIBELF >> 650 BASIC_CFLAGS += -DLIBELF_SUPPORT >> 651 >> 652 FLAGS_LIBELF=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) >> 653 ifeq ($(call try-cc,$(SOURCE_ELF_MMAP),$(FLAGS_LIBELF),-DLIBELF_MMAP),y) >> 654 BASIC_CFLAGS += -DLIBELF_MMAP >> 655 endif >> 656 >> 657 ifndef NO_DWARF >> 658 ifeq ($(origin PERF_HAVE_DWARF_REGS), undefined) >> 659 msg := $(warning DWARF register mappings have not been defined for architecture $(ARCH), DWARF support disabled); >> 660 else >> 661 BASIC_CFLAGS := -DDWARF_SUPPORT $(LIBDW_CFLAGS) $(BASIC_CFLAGS) >> 662 BASIC_LDFLAGS := $(LIBDW_LDFLAGS) $(BASIC_LDFLAGS) >> 663 EXTLIBS += -lelf -ldw >> 664 LIB_OBJS += $(OUTPUT)util/probe-finder.o >> 665 LIB_OBJS += $(OUTPUT)util/dwarf-aux.o >> 666 endif # PERF_HAVE_DWARF_REGS >> 667 endif # NO_DWARF >> 668 endif # NO_LIBELF >> 669 >> 670 ifndef NO_LIBUNWIND >> 671 BASIC_CFLAGS += -DLIBUNWIND_SUPPORT >> 672 EXTLIBS += $(LIBUNWIND_LIBS) >> 673 BASIC_CFLAGS := $(LIBUNWIND_CFLAGS) $(BASIC_CFLAGS) >> 674 BASIC_LDFLAGS := $(LIBUNWIND_LDFLAGS) $(BASIC_LDFLAGS) >> 675 LIB_OBJS += $(OUTPUT)util/unwind.o >> 676 endif >> 677 >> 678 ifndef NO_LIBAUDIT >> 679 FLAGS_LIBAUDIT = $(ALL_CFLAGS) $(ALL_LDFLAGS) -laudit >> 680 ifneq ($(call try-cc,$(SOURCE_LIBAUDIT),$(FLAGS_LIBAUDIT),libaudit),y) >> 681 msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev); >> 682 else >> 683 BASIC_CFLAGS += -DLIBAUDIT_SUPPORT >> 684 BUILTIN_OBJS += $(OUTPUT)builtin-trace.o >> 685 EXTLIBS += -laudit >> 686 endif >> 687 endif >> 688 >> 689 ifndef NO_SLANG >> 690 FLAGS_SLANG=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -I/usr/include/slang -lslang >> 691 ifneq ($(call try-cc,$(SOURCE_SLANG),$(FLAGS_SLANG),libslang),y) >> 692 msg := $(warning slang not found, disables TUI support. Please install slang-devel or libslang-dev); >> 693 else >> 694 # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h >> 695 BASIC_CFLAGS += -I/usr/include/slang >> 696 BASIC_CFLAGS += -DSLANG_SUPPORT >> 697 EXTLIBS += -lslang >> 698 LIB_OBJS += $(OUTPUT)ui/browser.o >> 699 LIB_OBJS += $(OUTPUT)ui/browsers/annotate.o >> 700 LIB_OBJS += $(OUTPUT)ui/browsers/hists.o >> 701 LIB_OBJS += $(OUTPUT)ui/browsers/map.o >> 702 LIB_OBJS += $(OUTPUT)ui/browsers/scripts.o >> 703 LIB_OBJS += $(OUTPUT)ui/tui/setup.o >> 704 LIB_OBJS += $(OUTPUT)ui/tui/util.o >> 705 LIB_OBJS += $(OUTPUT)ui/tui/helpline.o >> 706 LIB_OBJS += $(OUTPUT)ui/tui/progress.o >> 707 LIB_H += ui/browser.h >> 708 LIB_H += ui/browsers/map.h >> 709 LIB_H += ui/keysyms.h >> 710 LIB_H += ui/libslang.h >> 711 endif >> 712 endif >> 713 >> 714 ifndef NO_GTK2 >> 715 FLAGS_GTK2=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) $(shell pkg-config --libs --cflags gtk+-2.0 2>/dev/null) >> 716 ifneq ($(call try-cc,$(SOURCE_GTK2),$(FLAGS_GTK2),gtk2),y) >> 717 msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev); >> 718 else >> 719 ifeq ($(call try-cc,$(SOURCE_GTK2_INFOBAR),$(FLAGS_GTK2),-DHAVE_GTK_INFO_BAR),y) >> 720 BASIC_CFLAGS += -DHAVE_GTK_INFO_BAR >> 721 endif >> 722 BASIC_CFLAGS += -DGTK2_SUPPORT >> 723 BASIC_CFLAGS += $(shell pkg-config --cflags gtk+-2.0 2>/dev/null) >> 724 EXTLIBS += $(shell pkg-config --libs gtk+-2.0 2>/dev/null) >> 725 LIB_OBJS += $(OUTPUT)ui/gtk/browser.o >> 726 LIB_OBJS += $(OUTPUT)ui/gtk/hists.o >> 727 LIB_OBJS += $(OUTPUT)ui/gtk/setup.o >> 728 LIB_OBJS += $(OUTPUT)ui/gtk/util.o >> 729 LIB_OBJS += $(OUTPUT)ui/gtk/helpline.o >> 730 LIB_OBJS += $(OUTPUT)ui/gtk/progress.o >> 731 LIB_OBJS += $(OUTPUT)ui/gtk/annotate.o >> 732 endif >> 733 endif >> 734 >> 735 ifdef NO_LIBPERL >> 736 BASIC_CFLAGS += -DNO_LIBPERL >> 737 else >> 738 PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) >> 739 PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) >> 740 PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) >> 741 PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` >> 742 FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) >> 743 >> 744 ifneq ($(call try-cc,$(SOURCE_PERL_EMBED),$(FLAGS_PERL_EMBED),perl),y) >> 745 BASIC_CFLAGS += -DNO_LIBPERL >> 746 else >> 747 ALL_LDFLAGS += $(PERL_EMBED_LDFLAGS) >> 748 EXTLIBS += $(PERL_EMBED_LIBADD) >> 749 LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-perl.o >> 750 LIB_OBJS += $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o >> 751 endif >> 752 endif >> 753 >> 754 disable-python = $(eval $(disable-python_code)) >> 755 define disable-python_code >> 756 BASIC_CFLAGS += -DNO_LIBPYTHON >> 757 $(if $(1),$(warning No $(1) was found)) >> 758 $(warning Python support will not be built) >> 759 endef >> 760 >> 761 override PYTHON := \ >> 762 $(call get-executable-or-default,PYTHON,python) >> 763 >> 764 ifndef PYTHON >> 765 $(call disable-python,python interpreter) >> 766 else >> 767 >> 768 PYTHON_WORD := $(call shell-wordify,$(PYTHON)) >> 769 >> 770 ifdef NO_LIBPYTHON >> 771 $(call disable-python) >> 772 else >> 773 >> 774 override PYTHON_CONFIG := \ >> 775 $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON)-config) >> 776 >> 777 ifndef PYTHON_CONFIG >> 778 $(call disable-python,python-config tool) >> 779 else >> 780 >> 781 PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) >> 782 >> 783 PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) >> 784 PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) >> 785 PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) >> 786 PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) >> 787 FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) >> 788 >> 789 ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED),python),y) >> 790 $(call disable-python,Python.h (for Python 2.x)) >> 791 else >> 792 >> 793 ifneq ($(call try-cc,$(SOURCE_PYTHON_VERSION),$(FLAGS_PYTHON_EMBED),python version),y) >> 794 $(warning Python 3 is not yet supported; please set) >> 795 $(warning PYTHON and/or PYTHON_CONFIG appropriately.) >> 796 $(warning If you also have Python 2 installed, then) >> 797 $(warning try something like:) >> 798 $(warning $(and ,)) >> 799 $(warning $(and ,) make PYTHON=python2) >> 800 $(warning $(and ,)) >> 801 $(warning Otherwise, disable Python support entirely:) >> 802 $(warning $(and ,)) >> 803 $(warning $(and ,) make NO_LIBPYTHON=1) >> 804 $(warning $(and ,)) >> 805 $(error $(and ,)) >> 806 else >> 807 ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS) >> 808 EXTLIBS += $(PYTHON_EMBED_LIBADD) >> 809 LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o >> 810 LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o >> 811 LANG_BINDINGS += $(OUTPUT)python/perf.so >> 812 endif >> 813 >> 814 endif >> 815 endif >> 816 endif >> 817 endif >> 818 >> 819 ifdef NO_DEMANGLE >> 820 BASIC_CFLAGS += -DNO_DEMANGLE >> 821 else >> 822 ifdef HAVE_CPLUS_DEMANGLE >> 823 EXTLIBS += -liberty >> 824 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE >> 825 else >> 826 FLAGS_BFD=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -DPACKAGE='perf' -lbfd >> 827 has_bfd := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD),libbfd) >> 828 ifeq ($(has_bfd),y) >> 829 EXTLIBS += -lbfd >> 830 else >> 831 FLAGS_BFD_IBERTY=$(FLAGS_BFD) -liberty >> 832 has_bfd_iberty := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY),liberty) >> 833 ifeq ($(has_bfd_iberty),y) >> 834 EXTLIBS += -lbfd -liberty >> 835 else >> 836 FLAGS_BFD_IBERTY_Z=$(FLAGS_BFD_IBERTY) -lz >> 837 has_bfd_iberty_z := $(call try-cc,$(SOURCE_BFD),$(FLAGS_BFD_IBERTY_Z),libz) >> 838 ifeq ($(has_bfd_iberty_z),y) >> 839 EXTLIBS += -lbfd -liberty -lz >> 840 else >> 841 FLAGS_CPLUS_DEMANGLE=$(ALL_CFLAGS) $(ALL_LDFLAGS) $(EXTLIBS) -liberty >> 842 has_cplus_demangle := $(call try-cc,$(SOURCE_CPLUS_DEMANGLE),$(FLAGS_CPLUS_DEMANGLE),demangle) >> 843 ifeq ($(has_cplus_demangle),y) >> 844 EXTLIBS += -liberty >> 845 BASIC_CFLAGS += -DHAVE_CPLUS_DEMANGLE >> 846 else >> 847 msg := $(warning No bfd.h/libbfd found, install binutils-dev[el]/zlib-static to gain symbol demangling) >> 848 BASIC_CFLAGS += -DNO_DEMANGLE >> 849 endif >> 850 endif >> 851 endif >> 852 endif >> 853 endif >> 854 endif >> 855 >> 856 ifeq ($(NO_PERF_REGS),0) >> 857 ifeq ($(ARCH),x86) >> 858 LIB_H += arch/x86/include/perf_regs.h >> 859 endif >> 860 BASIC_CFLAGS += -DHAVE_PERF_REGS >> 861 endif >> 862 >> 863 ifndef NO_STRLCPY >> 864 ifeq ($(call try-cc,$(SOURCE_STRLCPY),,-DHAVE_STRLCPY),y) >> 865 BASIC_CFLAGS += -DHAVE_STRLCPY >> 866 endif >> 867 endif >> 868 >> 869 ifndef NO_ON_EXIT >> 870 ifeq ($(call try-cc,$(SOURCE_ON_EXIT),,-DHAVE_ON_EXIT),y) >> 871 BASIC_CFLAGS += -DHAVE_ON_EXIT >> 872 endif >> 873 endif >> 874 >> 875 ifndef NO_BACKTRACE >> 876 ifeq ($(call try-cc,$(SOURCE_BACKTRACE),,-DBACKTRACE_SUPPORT),y) >> 877 BASIC_CFLAGS += -DBACKTRACE_SUPPORT >> 878 endif >> 879 endif >> 880 >> 881 ifndef NO_LIBNUMA >> 882 FLAGS_LIBNUMA = $(ALL_CFLAGS) $(ALL_LDFLAGS) -lnuma >> 883 ifneq ($(call try-cc,$(SOURCE_LIBNUMA),$(FLAGS_LIBNUMA),libnuma),y) >> 884 msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numa-libs-devel or libnuma-dev); >> 885 else >> 886 BASIC_CFLAGS += -DLIBNUMA_SUPPORT >> 887 BUILTIN_OBJS += $(OUTPUT)bench/numa.o >> 888 EXTLIBS += -lnuma >> 889 endif >> 890 endif >> 891 >> 892 ifdef ASCIIDOC8 >> 893 export ASCIIDOC8 >> 894 endif >> 895 >> 896 endif # MAKECMDGOALS != tags >> 897 endif # MAKECMDGOALS != clean >> 898 >> 899 # Shell quote (do not use $(call) to accommodate ancient setups); >> 900 >> 901 ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG)) >> 902 >> 903 DESTDIR_SQ = $(subst ','\'',$(DESTDIR)) >> 904 bindir_SQ = $(subst ','\'',$(bindir)) >> 905 bindir_relative_SQ = $(subst ','\'',$(bindir_relative)) >> 906 mandir_SQ = $(subst ','\'',$(mandir)) >> 907 infodir_SQ = $(subst ','\'',$(infodir)) >> 908 perfexecdir_SQ = $(subst ','\'',$(perfexecdir)) >> 909 template_dir_SQ = $(subst ','\'',$(template_dir)) >> 910 htmldir_SQ = $(subst ','\'',$(htmldir)) >> 911 prefix_SQ = $(subst ','\'',$(prefix)) >> 912 sysconfdir_SQ = $(subst ','\'',$(sysconfdir)) >> 913 >> 914 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) >> 915 >> 916 LIBS = -Wl,--whole-archive $(PERFLIBS) -Wl,--no-whole-archive -Wl,--start-group $(EXTLIBS) -Wl,--end-group >> 917 >> 918 ALL_CFLAGS += $(BASIC_CFLAGS) >> 919 ALL_CFLAGS += $(ARCH_CFLAGS) >> 920 ALL_LDFLAGS += $(BASIC_LDFLAGS) >> 921 >> 922 export INSTALL SHELL_PATH >> 923 >> 924 >> 925 ### Build rules >> 926 >> 927 SHELL = $(SHELL_PATH) >> 928 >> 929 all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS) >> 930 >> 931 please_set_SHELL_PATH_to_a_more_modern_shell: >> 932 @$$(:) >> 933 >> 934 shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell >> 935 >> 936 strip: $(PROGRAMS) $(OUTPUT)perf >> 937 $(STRIP) $(STRIP_OPTS) $(PROGRAMS) $(OUTPUT)perf >> 938 >> 939 $(OUTPUT)perf.o: perf.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS >> 940 $(QUIET_CC)$(CC) -include $(OUTPUT)PERF-VERSION-FILE \ >> 941 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 942 $(ALL_CFLAGS) -c $(filter %.c,$^) -o $@ >> 943 >> 944 $(OUTPUT)perf: $(OUTPUT)perf.o $(BUILTIN_OBJS) $(PERFLIBS) >> 945 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(OUTPUT)perf.o \ >> 946 $(BUILTIN_OBJS) $(LIBS) -o $@ >> 947 >> 948 $(OUTPUT)builtin-help.o: builtin-help.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS >> 949 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ >> 950 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 951 '-DPERF_MAN_PATH="$(mandir_SQ)"' \ >> 952 '-DPERF_INFO_PATH="$(infodir_SQ)"' $< >> 953 >> 954 $(OUTPUT)builtin-timechart.o: builtin-timechart.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS >> 955 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ >> 956 '-DPERF_HTML_PATH="$(htmldir_SQ)"' \ >> 957 '-DPERF_MAN_PATH="$(mandir_SQ)"' \ >> 958 '-DPERF_INFO_PATH="$(infodir_SQ)"' $< >> 959 >> 960 $(OUTPUT)common-cmds.h: util/generate-cmdlist.sh command-list.txt >> 961 >> 962 $(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt) >> 963 $(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@ >> 964 >> 965 $(SCRIPTS) : % : %.sh >> 966 $(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@' >> 967 >> 968 # These can record PERF_VERSION >> 969 $(OUTPUT)perf.o perf.spec \ >> 970 $(SCRIPTS) \ >> 971 : $(OUTPUT)PERF-VERSION-FILE >> 972 >> 973 .SUFFIXES: >> 974 .SUFFIXES: .o .c .S .s >> 975 >> 976 # These two need to be here so that when O= is not used they take precedence >> 977 # over the general rule for .o >> 978 >> 979 $(OUTPUT)util/%-flex.o: $(OUTPUT)util/%-flex.c $(OUTPUT)PERF-CFLAGS >> 980 $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(ALL_CFLAGS) -w $< >> 981 >> 982 $(OUTPUT)util/%-bison.o: $(OUTPUT)util/%-bison.c $(OUTPUT)PERF-CFLAGS >> 983 $(QUIET_CC)$(CC) -o $@ -c -Iutil/ $(ALL_CFLAGS) -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -w $< >> 984 >> 985 $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS >> 986 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< >> 987 $(OUTPUT)%.i: %.c $(OUTPUT)PERF-CFLAGS >> 988 $(QUIET_CC)$(CC) -o $@ -E $(ALL_CFLAGS) $< >> 989 $(OUTPUT)%.s: %.c $(OUTPUT)PERF-CFLAGS >> 990 $(QUIET_CC)$(CC) -o $@ -S $(ALL_CFLAGS) $< >> 991 $(OUTPUT)%.o: %.S >> 992 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< >> 993 $(OUTPUT)%.s: %.S >> 994 $(QUIET_CC)$(CC) -o $@ -E $(ALL_CFLAGS) $< >> 995 >> 996 $(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS >> 997 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ >> 998 '-DPERF_EXEC_PATH="$(perfexecdir_SQ)"' \ >> 999 '-DPREFIX="$(prefix_SQ)"' \ >> 1000 $< >> 1001 >> 1002 $(OUTPUT)tests/attr.o: tests/attr.c $(OUTPUT)PERF-CFLAGS >> 1003 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ >> 1004 '-DBINDIR="$(bindir_SQ)"' -DPYTHON='"$(PYTHON_WORD)"' \ >> 1005 $< >> 1006 >> 1007 $(OUTPUT)tests/python-use.o: tests/python-use.c $(OUTPUT)PERF-CFLAGS >> 1008 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \ >> 1009 -DPYTHONPATH='"$(OUTPUT)python"' \ >> 1010 -DPYTHON='"$(PYTHON_WORD)"' \ >> 1011 $< >> 1012 >> 1013 $(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS >> 1014 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< >> 1015 >> 1016 $(OUTPUT)ui/browser.o: ui/browser.c $(OUTPUT)PERF-CFLAGS >> 1017 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< >> 1018 >> 1019 $(OUTPUT)ui/browsers/annotate.o: ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS >> 1020 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< >> 1021 >> 1022 $(OUTPUT)ui/browsers/hists.o: ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS >> 1023 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< >> 1024 >> 1025 $(OUTPUT)ui/browsers/map.o: ui/browsers/map.c $(OUTPUT)PERF-CFLAGS >> 1026 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< >> 1027 >> 1028 $(OUTPUT)ui/browsers/scripts.o: ui/browsers/scripts.c $(OUTPUT)PERF-CFLAGS >> 1029 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $< >> 1030 >> 1031 $(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS >> 1032 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Wno-unused-parameter -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $< >> 1033 >> 1034 $(OUTPUT)util/parse-events.o: util/parse-events.c $(OUTPUT)PERF-CFLAGS >> 1035 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -Wno-redundant-decls $< >> 1036 >> 1037 $(OUTPUT)util/scripting-engines/trace-event-perl.o: util/scripting-engines/trace-event-perl.c $(OUTPUT)PERF-CFLAGS >> 1038 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $< >> 1039 >> 1040 $(OUTPUT)scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS >> 1041 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $< >> 1042 >> 1043 $(OUTPUT)util/scripting-engines/trace-event-python.o: util/scripting-engines/trace-event-python.c $(OUTPUT)PERF-CFLAGS >> 1044 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $< >> 1045 >> 1046 $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Util/Context.c $(OUTPUT)PERF-CFLAGS >> 1047 $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $< >> 1048 >> 1049 $(OUTPUT)perf-%: %.o $(PERFLIBS) >> 1050 $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) >> 1051 >> 1052 $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H) >> 1053 $(patsubst perf-%,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h) >> 1054 >> 1055 # we compile into subdirectories. if the target directory is not the source directory, they might not exists. So >> 1056 # we depend the various files onto their directories. >> 1057 DIRECTORY_DEPS = $(LIB_OBJS) $(BUILTIN_OBJS) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h >> 1058 $(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS))) >> 1059 # In the second step, we make a rule to actually create these directories >> 1060 $(sort $(dir $(DIRECTORY_DEPS))): >> 1061 $(QUIET_MKDIR)$(MKDIR) -p $@ 2>/dev/null >> 1062 >> 1063 $(LIB_FILE): $(LIB_OBJS) >> 1064 $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS) >> 1065 >> 1066 # libtraceevent.a >> 1067 $(LIBTRACEEVENT): >> 1068 $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a >> 1069 >> 1070 $(LIBTRACEEVENT)-clean: >> 1071 $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean >> 1072 >> 1073 # if subdir is set, we've been called from above so target has been built >> 1074 # already >> 1075 $(LIBLK): >> 1076 ifeq ($(subdir),) >> 1077 $(QUIET_SUBDIR0)$(LK_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) liblk.a >> 1078 endif >> 1079 >> 1080 $(LIBLK)-clean: >> 1081 ifeq ($(subdir),) >> 1082 $(QUIET_SUBDIR0)$(LK_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) clean >> 1083 endif >> 1084 >> 1085 help: >> 1086 @echo 'Perf make targets:' >> 1087 @echo ' doc - make *all* documentation (see below)' >> 1088 @echo ' man - make manpage documentation (access with man <foo>)' >> 1089 @echo ' html - make html documentation' >> 1090 @echo ' info - make GNU info documentation (access with info <foo>)' >> 1091 @echo ' pdf - make pdf documentation' >> 1092 @echo ' TAGS - use etags to make tag information for source browsing' >> 1093 @echo ' tags - use ctags to make tag information for source browsing' >> 1094 @echo ' cscope - use cscope to make interactive browsing database' >> 1095 @echo '' >> 1096 @echo 'Perf install targets:' >> 1097 @echo ' NOTE: documentation build requires asciidoc, xmlto packages to be installed' >> 1098 @echo ' HINT: use "make prefix=<path> <install target>" to install to a particular' >> 1099 @echo ' path like make prefix=/usr/local install install-doc' >> 1100 @echo ' install - install compiled binaries' >> 1101 @echo ' install-doc - install *all* documentation' >> 1102 @echo ' install-man - install manpage documentation' >> 1103 @echo ' install-html - install html documentation' >> 1104 @echo ' install-info - install GNU info documentation' >> 1105 @echo ' install-pdf - install pdf documentation' >> 1106 @echo '' >> 1107 @echo ' quick-install-doc - alias for quick-install-man' >> 1108 @echo ' quick-install-man - install the documentation quickly' >> 1109 @echo ' quick-install-html - install the html documentation quickly' >> 1110 @echo '' >> 1111 @echo 'Perf maintainer targets:' >> 1112 @echo ' clean - clean all binary objects and build output' >> 1113 >> 1114 >> 1115 DOC_TARGETS := doc man html info pdf >> 1116 >> 1117 INSTALL_DOC_TARGETS := $(patsubst %,install-%,$(DOC_TARGETS)) try-install-man >> 1118 INSTALL_DOC_TARGETS += quick-install-doc quick-install-man quick-install-html >> 1119 >> 1120 # 'make doc' should call 'make -C Documentation all' >> 1121 $(DOC_TARGETS): >> 1122 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:doc=all) >> 1123 >> 1124 TAGS: >> 1125 $(RM) TAGS >> 1126 $(FIND) . -name '*.[hcS]' -print | xargs etags -a >> 1127 >> 1128 tags: >> 1129 $(RM) tags >> 1130 $(FIND) . -name '*.[hcS]' -print | xargs ctags -a >> 1131 >> 1132 cscope: >> 1133 $(RM) cscope* >> 1134 $(FIND) . -name '*.[hcS]' -print | xargs cscope -b >> 1135 >> 1136 ### Detect prefix changes >> 1137 TRACK_CFLAGS = $(subst ','\'',$(ALL_CFLAGS)):\ >> 1138 $(bindir_SQ):$(perfexecdir_SQ):$(template_dir_SQ):$(prefix_SQ) >> 1139 >> 1140 $(OUTPUT)PERF-CFLAGS: .FORCE-PERF-CFLAGS >> 1141 @FLAGS='$(TRACK_CFLAGS)'; \ >> 1142 if test x"$$FLAGS" != x"`cat $(OUTPUT)PERF-CFLAGS 2>/dev/null`" ; then \ >> 1143 echo 1>&2 " * new build flags or prefix"; \ >> 1144 echo "$$FLAGS" >$(OUTPUT)PERF-CFLAGS; \ >> 1145 fi >> 1146 >> 1147 ### Testing rules >> 1148 >> 1149 # GNU make supports exporting all variables by "export" without parameters. >> 1150 # However, the environment gets quite big, and some programs have problems >> 1151 # with that. >> 1152 >> 1153 check: $(OUTPUT)common-cmds.h >> 1154 if sparse; \ >> 1155 then \ >> 1156 for i in *.c */*.c; \ >> 1157 do \ >> 1158 sparse $(ALL_CFLAGS) $(SPARSE_FLAGS) $$i || exit; \ >> 1159 done; \ >> 1160 else \ >> 1161 exit 1; \ >> 1162 fi >> 1163 >> 1164 ### Installation rules >> 1165 >> 1166 ifneq ($(filter /%,$(firstword $(perfexecdir))),) >> 1167 perfexec_instdir = $(perfexecdir) >> 1168 else >> 1169 perfexec_instdir = $(prefix)/$(perfexecdir) >> 1170 endif >> 1171 perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir)) >> 1172 >> 1173 install-bin: all >> 1174 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)' >> 1175 $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)' >> 1176 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace' >> 1177 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin' >> 1178 $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)' >> 1179 $(INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace' >> 1180 $(INSTALL) scripts/perl/*.pl -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl' >> 1181 $(INSTALL) scripts/perl/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/bin' >> 1182 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace' >> 1183 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' >> 1184 $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace' >> 1185 $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python' >> 1186 $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin' >> 1187 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d' >> 1188 $(INSTALL) bash_completion '$(DESTDIR_SQ)$(sysconfdir_SQ)/bash_completion.d/perf' >> 1189 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests' >> 1190 $(INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests' >> 1191 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr' >> 1192 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr' >> 1193 >> 1194 install: install-bin try-install-man >> 1195 >> 1196 install-python_ext: >> 1197 $(PYTHON_WORD) util/setup.py --quiet install --root='/$(DESTDIR_SQ)' >> 1198 >> 1199 # 'make install-doc' should call 'make -C Documentation install' >> 1200 $(INSTALL_DOC_TARGETS): >> 1201 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:-doc=) >> 1202 >> 1203 ### Cleaning rules >> 1204 >> 1205 clean: $(LIBTRACEEVENT)-clean $(LIBLK)-clean >> 1206 $(RM) $(LIB_OBJS) $(BUILTIN_OBJS) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf.o $(LANG_BINDINGS) >> 1207 $(RM) $(ALL_PROGRAMS) perf >> 1208 $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* >> 1209 $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean >> 1210 $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS >> 1211 $(RM) $(OUTPUT)util/*-bison* >> 1212 $(RM) $(OUTPUT)util/*-flex* >> 1213 $(python-clean) 120 1214 121 .PHONY: tags TAGS FORCE Makefile !! 1215 .PHONY: all install clean strip $(LIBTRACEEVENT) $(LIBLK) >> 1216 .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell >> 1217 .PHONY: .FORCE-PERF-VERSION-FILE TAGS tags cscope .FORCE-PERF-CFLAGS
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.