diff options
Diffstat (limited to 'tools/perf/Makefile')
-rw-r--r-- | tools/perf/Makefile | 97 |
1 files changed, 77 insertions, 20 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index aaf4dd3fd803..b5276c7e9be2 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
@@ -5,6 +5,8 @@ endif | |||
5 | # The default target of this Makefile is... | 5 | # The default target of this Makefile is... |
6 | all: | 6 | all: |
7 | 7 | ||
8 | include config/utilities.mak | ||
9 | |||
8 | ifneq ($(OUTPUT),) | 10 | ifneq ($(OUTPUT),) |
9 | # check that the output directory actually exists | 11 | # check that the output directory actually exists |
10 | OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) | 12 | OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd) |
@@ -13,6 +15,12 @@ endif | |||
13 | 15 | ||
14 | # Define V to have a more verbose compile. | 16 | # Define V to have a more verbose compile. |
15 | # | 17 | # |
18 | # Define PYTHON to point to the python binary if the default | ||
19 | # `python' is not correct; for example: PYTHON=python2 | ||
20 | # | ||
21 | # Define PYTHON_CONFIG to point to the python-config binary if | ||
22 | # the default `$(PYTHON)-config' is not correct. | ||
23 | # | ||
16 | # Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8 | 24 | # Define ASCIIDOC8 if you want to format documentation with AsciiDoc 8 |
17 | # | 25 | # |
18 | # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72. | 26 | # Define DOCBOOK_XSL_172 if you want to format man pages with DocBook XSL v1.72. |
@@ -165,7 +173,7 @@ grep-libs = $(filter -l%,$(1)) | |||
165 | strip-libs = $(filter-out -l%,$(1)) | 173 | strip-libs = $(filter-out -l%,$(1)) |
166 | 174 | ||
167 | $(OUTPUT)python/perf.so: $(PYRF_OBJS) | 175 | $(OUTPUT)python/perf.so: $(PYRF_OBJS) |
168 | $(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' python util/setup.py \ | 176 | $(QUIET_GEN)CFLAGS='$(BASIC_CFLAGS)' $(PYTHON_WORD) util/setup.py \ |
169 | --quiet build_ext \ | 177 | --quiet build_ext \ |
170 | --build-lib='$(OUTPUT)python' \ | 178 | --build-lib='$(OUTPUT)python' \ |
171 | --build-temp='$(OUTPUT)python/temp' | 179 | --build-temp='$(OUTPUT)python/temp' |
@@ -473,24 +481,74 @@ else | |||
473 | endif | 481 | endif |
474 | endif | 482 | endif |
475 | 483 | ||
476 | ifdef NO_LIBPYTHON | 484 | disable-python = $(eval $(disable-python_code)) |
477 | BASIC_CFLAGS += -DNO_LIBPYTHON | 485 | define disable-python_code |
486 | BASIC_CFLAGS += -DNO_LIBPYTHON | ||
487 | $(if $(1),$(warning No $(1) was found)) | ||
488 | $(warning Python support won't be built) | ||
489 | endef | ||
490 | |||
491 | override PYTHON := \ | ||
492 | $(call get-executable-or-default,PYTHON,python) | ||
493 | |||
494 | ifndef PYTHON | ||
495 | $(call disable-python,python interpreter) | ||
496 | python-clean := | ||
478 | else | 497 | else |
479 | PYTHON_EMBED_LDOPTS = $(shell python-config --ldflags 2>/dev/null) | 498 | |
480 | PYTHON_EMBED_LDFLAGS = $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) | 499 | PYTHON_WORD := $(call shell-wordify,$(PYTHON)) |
481 | PYTHON_EMBED_LIBADD = $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) | 500 | |
482 | PYTHON_EMBED_CCOPTS = `python-config --cflags 2>/dev/null` | 501 | python-clean := $(PYTHON_WORD) util/setup.py clean \ |
483 | FLAGS_PYTHON_EMBED=$(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) | 502 | --build-lib='$(OUTPUT)python' \ |
484 | ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y) | 503 | --build-temp='$(OUTPUT)python/temp' |
485 | msg := $(warning No Python.h found, install python-dev[el] to have python support in 'perf script' and to build the python bindings) | 504 | |
486 | BASIC_CFLAGS += -DNO_LIBPYTHON | 505 | ifdef NO_LIBPYTHON |
487 | else | 506 | $(call disable-python) |
488 | ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS) | 507 | else |
489 | EXTLIBS += $(PYTHON_EMBED_LIBADD) | 508 | |
490 | LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o | 509 | override PYTHON_CONFIG := \ |
491 | LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o | 510 | $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON)-config) |
492 | LANG_BINDINGS += $(OUTPUT)python/perf.so | 511 | |
493 | endif | 512 | ifndef PYTHON_CONFIG |
513 | $(call disable-python,python-config tool) | ||
514 | else | ||
515 | |||
516 | PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG)) | ||
517 | |||
518 | PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null) | ||
519 | PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS)) | ||
520 | PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) | ||
521 | PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --cflags 2>/dev/null) | ||
522 | FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS) | ||
523 | |||
524 | ifneq ($(call try-cc,$(SOURCE_PYTHON_EMBED),$(FLAGS_PYTHON_EMBED)),y) | ||
525 | $(call disable-python,Python.h (for Python 2.x)) | ||
526 | else | ||
527 | |||
528 | ifneq ($(call try-cc,$(SOURCE_PYTHON_VERSION),$(FLAGS_PYTHON_EMBED)),y) | ||
529 | $(warning Python 3 is not yet supported; please set) | ||
530 | $(warning PYTHON and/or PYTHON_CONFIG appropriately.) | ||
531 | $(warning If you also have Python 2 installed, then) | ||
532 | $(warning try something like:) | ||
533 | $(warning $(and ,)) | ||
534 | $(warning $(and ,) make PYTHON=python2) | ||
535 | $(warning $(and ,)) | ||
536 | $(warning Otherwise, disable Python support entirely:) | ||
537 | $(warning $(and ,)) | ||
538 | $(warning $(and ,) make NO_LIBPYTHON=1) | ||
539 | $(warning $(and ,)) | ||
540 | $(error $(and ,)) | ||
541 | else | ||
542 | ALL_LDFLAGS += $(PYTHON_EMBED_LDFLAGS) | ||
543 | EXTLIBS += $(PYTHON_EMBED_LIBADD) | ||
544 | LIB_OBJS += $(OUTPUT)util/scripting-engines/trace-event-python.o | ||
545 | LIB_OBJS += $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o | ||
546 | LANG_BINDINGS += $(OUTPUT)python/perf.so | ||
547 | endif | ||
548 | |||
549 | endif | ||
550 | endif | ||
551 | endif | ||
494 | endif | 552 | endif |
495 | 553 | ||
496 | ifdef NO_DEMANGLE | 554 | ifdef NO_DEMANGLE |
@@ -831,8 +889,7 @@ clean: | |||
831 | $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* | 889 | $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* |
832 | $(MAKE) -C Documentation/ clean | 890 | $(MAKE) -C Documentation/ clean |
833 | $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS | 891 | $(RM) $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS |
834 | @python util/setup.py clean --build-lib='$(OUTPUT)python' \ | 892 | $(python-clean) |
835 | --build-temp='$(OUTPUT)python/temp' | ||
836 | 893 | ||
837 | .PHONY: all install clean strip | 894 | .PHONY: all install clean strip |
838 | .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell | 895 | .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell |