diff options
| author | David Vrabel <david.vrabel@citrix.com> | 2014-04-07 08:52:12 -0400 |
|---|---|---|
| committer | David Vrabel <david.vrabel@citrix.com> | 2014-04-07 08:52:12 -0400 |
| commit | 2c5cb2770392fb9c5d8518688c8bc61986d70dc6 (patch) | |
| tree | b19210e709de6ee0d22b67ef605a569500cf1a18 /tools/perf/config/Makefile | |
| parent | cd979883b9ede90643e019f33cb317933eb867b4 (diff) | |
| parent | 683b6c6f82a60fabf47012581c2cfbf1b037ab95 (diff) | |
Merge commit '683b6c6f82a60fabf47012581c2cfbf1b037ab95' into stable/for-linus-3.15
This merge of the irq-core-for-linus branch broke the ARM build when
Xen is enabled.
Conflicts:
drivers/xen/events/events_base.c
Diffstat (limited to 'tools/perf/config/Makefile')
| -rw-r--r-- | tools/perf/config/Makefile | 234 |
1 files changed, 170 insertions, 64 deletions
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile index c48d44958172..c23418225c2c 100644 --- a/tools/perf/config/Makefile +++ b/tools/perf/config/Makefile | |||
| @@ -59,6 +59,18 @@ ifeq ($(NO_PERF_REGS),0) | |||
| 59 | CFLAGS += -DHAVE_PERF_REGS_SUPPORT | 59 | CFLAGS += -DHAVE_PERF_REGS_SUPPORT |
| 60 | endif | 60 | endif |
| 61 | 61 | ||
| 62 | ifndef NO_LIBELF | ||
| 63 | # for linking with debug library, run like: | ||
| 64 | # make DEBUG=1 LIBDW_DIR=/opt/libdw/ | ||
| 65 | ifdef LIBDW_DIR | ||
| 66 | LIBDW_CFLAGS := -I$(LIBDW_DIR)/include | ||
| 67 | LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib | ||
| 68 | |||
| 69 | FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS) | ||
| 70 | FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) -ldw | ||
| 71 | endif | ||
| 72 | endif | ||
| 73 | |||
| 62 | # include ARCH specific config | 74 | # include ARCH specific config |
| 63 | -include $(src-perf)/arch/$(ARCH)/Makefile | 75 | -include $(src-perf)/arch/$(ARCH)/Makefile |
| 64 | 76 | ||
| @@ -147,7 +159,35 @@ CORE_FEATURE_TESTS = \ | |||
| 147 | libunwind \ | 159 | libunwind \ |
| 148 | on-exit \ | 160 | on-exit \ |
| 149 | stackprotector-all \ | 161 | stackprotector-all \ |
| 150 | timerfd | 162 | timerfd \ |
| 163 | libdw-dwarf-unwind | ||
| 164 | |||
| 165 | LIB_FEATURE_TESTS = \ | ||
| 166 | dwarf \ | ||
| 167 | glibc \ | ||
| 168 | gtk2 \ | ||
| 169 | libaudit \ | ||
| 170 | libbfd \ | ||
| 171 | libelf \ | ||
| 172 | libnuma \ | ||
| 173 | libperl \ | ||
| 174 | libpython \ | ||
| 175 | libslang \ | ||
| 176 | libunwind \ | ||
| 177 | libdw-dwarf-unwind | ||
| 178 | |||
| 179 | VF_FEATURE_TESTS = \ | ||
| 180 | backtrace \ | ||
| 181 | fortify-source \ | ||
| 182 | gtk2-infobar \ | ||
| 183 | libelf-getphdrnum \ | ||
| 184 | libelf-mmap \ | ||
| 185 | libpython-version \ | ||
| 186 | on-exit \ | ||
| 187 | stackprotector-all \ | ||
| 188 | timerfd \ | ||
| 189 | libunwind-debug-frame \ | ||
| 190 | bionic | ||
| 151 | 191 | ||
| 152 | # Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features. | 192 | # Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features. |
| 153 | # If in the future we need per-feature checks/flags for features not | 193 | # If in the future we need per-feature checks/flags for features not |
| @@ -161,17 +201,6 @@ endef | |||
| 161 | $(foreach feat,$(CORE_FEATURE_TESTS),$(call set_test_all_flags,$(feat))) | 201 | $(foreach feat,$(CORE_FEATURE_TESTS),$(call set_test_all_flags,$(feat))) |
| 162 | 202 | ||
| 163 | # | 203 | # |
| 164 | # So here we detect whether test-all was rebuilt, to be able | ||
| 165 | # to skip the print-out of the long features list if the file | ||
| 166 | # existed before and after it was built: | ||
| 167 | # | ||
| 168 | ifeq ($(wildcard $(OUTPUT)config/feature-checks/test-all.bin),) | ||
| 169 | test-all-failed := 1 | ||
| 170 | else | ||
| 171 | test-all-failed := 0 | ||
| 172 | endif | ||
| 173 | |||
| 174 | # | ||
| 175 | # Special fast-path for the 'all features are available' case: | 204 | # Special fast-path for the 'all features are available' case: |
| 176 | # | 205 | # |
| 177 | $(call feature_check,all,$(MSG)) | 206 | $(call feature_check,all,$(MSG)) |
| @@ -180,15 +209,6 @@ $(call feature_check,all,$(MSG)) | |||
| 180 | # Just in case the build freshly failed, make sure we print the | 209 | # Just in case the build freshly failed, make sure we print the |
| 181 | # feature matrix: | 210 | # feature matrix: |
| 182 | # | 211 | # |
| 183 | ifeq ($(feature-all), 0) | ||
| 184 | test-all-failed := 1 | ||
| 185 | endif | ||
| 186 | |||
| 187 | ifeq ($(test-all-failed),1) | ||
| 188 | $(info ) | ||
| 189 | $(info Auto-detecting system features:) | ||
| 190 | endif | ||
| 191 | |||
| 192 | ifeq ($(feature-all), 1) | 212 | ifeq ($(feature-all), 1) |
| 193 | # | 213 | # |
| 194 | # test-all.c passed - just set all the core feature flags to 1: | 214 | # test-all.c passed - just set all the core feature flags to 1: |
| @@ -199,27 +219,6 @@ else | |||
| 199 | $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_check,$(feat))) | 219 | $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_check,$(feat))) |
| 200 | endif | 220 | endif |
| 201 | 221 | ||
| 202 | # | ||
| 203 | # Print the result of the feature test: | ||
| 204 | # | ||
| 205 | feature_print = $(eval $(feature_print_code)) $(info $(MSG)) | ||
| 206 | |||
| 207 | define feature_print_code | ||
| 208 | ifeq ($(feature-$(1)), 1) | ||
| 209 | MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) | ||
| 210 | else | ||
| 211 | MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) | ||
| 212 | endif | ||
| 213 | endef | ||
| 214 | |||
| 215 | # | ||
| 216 | # Only print out our features if we rebuilt the testcases or if a test failed: | ||
| 217 | # | ||
| 218 | ifeq ($(test-all-failed), 1) | ||
| 219 | $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_print,$(feat))) | ||
| 220 | $(info ) | ||
| 221 | endif | ||
| 222 | |||
| 223 | ifeq ($(feature-stackprotector-all), 1) | 222 | ifeq ($(feature-stackprotector-all), 1) |
| 224 | CFLAGS += -fstack-protector-all | 223 | CFLAGS += -fstack-protector-all |
| 225 | endif | 224 | endif |
| @@ -264,6 +263,7 @@ ifdef NO_LIBELF | |||
| 264 | NO_DWARF := 1 | 263 | NO_DWARF := 1 |
| 265 | NO_DEMANGLE := 1 | 264 | NO_DEMANGLE := 1 |
| 266 | NO_LIBUNWIND := 1 | 265 | NO_LIBUNWIND := 1 |
| 266 | NO_LIBDW_DWARF_UNWIND := 1 | ||
| 267 | else | 267 | else |
| 268 | ifeq ($(feature-libelf), 0) | 268 | ifeq ($(feature-libelf), 0) |
| 269 | ifeq ($(feature-glibc), 1) | 269 | ifeq ($(feature-glibc), 1) |
| @@ -282,13 +282,12 @@ else | |||
| 282 | msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); | 282 | msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static); |
| 283 | endif | 283 | endif |
| 284 | else | 284 | else |
| 285 | # for linking with debug library, run like: | 285 | ifndef NO_LIBDW_DWARF_UNWIND |
| 286 | # make DEBUG=1 LIBDW_DIR=/opt/libdw/ | 286 | ifneq ($(feature-libdw-dwarf-unwind),1) |
| 287 | ifdef LIBDW_DIR | 287 | NO_LIBDW_DWARF_UNWIND := 1 |
| 288 | LIBDW_CFLAGS := -I$(LIBDW_DIR)/include | 288 | msg := $(warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR); |
| 289 | LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib | 289 | endif |
| 290 | endif | 290 | endif |
| 291 | |||
| 292 | ifneq ($(feature-dwarf), 1) | 291 | ifneq ($(feature-dwarf), 1) |
| 293 | 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); | 292 | 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); |
| 294 | NO_DWARF := 1 | 293 | NO_DWARF := 1 |
| @@ -324,25 +323,51 @@ endif # NO_LIBELF | |||
| 324 | 323 | ||
| 325 | ifndef NO_LIBUNWIND | 324 | ifndef NO_LIBUNWIND |
| 326 | ifneq ($(feature-libunwind), 1) | 325 | ifneq ($(feature-libunwind), 1) |
| 327 | msg := $(warning No libunwind found, disabling post unwind support. Please install libunwind-dev[el] >= 1.1); | 326 | msg := $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR); |
| 328 | NO_LIBUNWIND := 1 | 327 | NO_LIBUNWIND := 1 |
| 328 | endif | ||
| 329 | endif | ||
| 330 | |||
| 331 | dwarf-post-unwind := 1 | ||
| 332 | dwarf-post-unwind-text := BUG | ||
| 333 | |||
| 334 | # setup DWARF post unwinder | ||
| 335 | ifdef NO_LIBUNWIND | ||
| 336 | ifdef NO_LIBDW_DWARF_UNWIND | ||
| 337 | msg := $(warning Disabling post unwind, no support found.); | ||
| 338 | dwarf-post-unwind := 0 | ||
| 329 | else | 339 | else |
| 330 | ifeq ($(ARCH),arm) | 340 | dwarf-post-unwind-text := libdw |
| 331 | $(call feature_check,libunwind-debug-frame) | 341 | endif |
| 332 | ifneq ($(feature-libunwind-debug-frame), 1) | 342 | else |
| 333 | msg := $(warning No debug_frame support found in libunwind); | 343 | dwarf-post-unwind-text := libunwind |
| 334 | CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME | 344 | # Enable libunwind support by default. |
| 335 | endif | 345 | ifndef NO_LIBDW_DWARF_UNWIND |
| 336 | else | 346 | NO_LIBDW_DWARF_UNWIND := 1 |
| 337 | # non-ARM has no dwarf_find_debug_frame() function: | 347 | endif |
| 348 | endif | ||
| 349 | |||
| 350 | ifeq ($(dwarf-post-unwind),1) | ||
| 351 | CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT | ||
| 352 | else | ||
| 353 | NO_DWARF_UNWIND := 1 | ||
| 354 | endif | ||
| 355 | |||
| 356 | ifndef NO_LIBUNWIND | ||
| 357 | ifeq ($(ARCH),arm) | ||
| 358 | $(call feature_check,libunwind-debug-frame) | ||
| 359 | ifneq ($(feature-libunwind-debug-frame), 1) | ||
| 360 | msg := $(warning No debug_frame support found in libunwind); | ||
| 338 | CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME | 361 | CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME |
| 339 | endif | 362 | endif |
| 340 | 363 | else | |
| 341 | CFLAGS += -DHAVE_LIBUNWIND_SUPPORT | 364 | # non-ARM has no dwarf_find_debug_frame() function: |
| 342 | EXTLIBS += $(LIBUNWIND_LIBS) | 365 | CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME |
| 343 | CFLAGS += $(LIBUNWIND_CFLAGS) | 366 | endif |
| 344 | LDFLAGS += $(LIBUNWIND_LDFLAGS) | 367 | CFLAGS += -DHAVE_LIBUNWIND_SUPPORT |
| 345 | endif # ifneq ($(feature-libunwind), 1) | 368 | EXTLIBS += $(LIBUNWIND_LIBS) |
| 369 | CFLAGS += $(LIBUNWIND_CFLAGS) | ||
| 370 | LDFLAGS += $(LIBUNWIND_LDFLAGS) | ||
| 346 | endif | 371 | endif |
| 347 | 372 | ||
| 348 | ifndef NO_LIBAUDIT | 373 | ifndef NO_LIBAUDIT |
| @@ -478,7 +503,7 @@ else | |||
| 478 | endif | 503 | endif |
| 479 | 504 | ||
| 480 | ifeq ($(feature-libbfd), 1) | 505 | ifeq ($(feature-libbfd), 1) |
| 481 | EXTLIBS += -lbfd | 506 | EXTLIBS += -lbfd -lz -liberty |
| 482 | endif | 507 | endif |
| 483 | 508 | ||
| 484 | ifdef NO_DEMANGLE | 509 | ifdef NO_DEMANGLE |
| @@ -602,3 +627,84 @@ ifdef DESTDIR | |||
| 602 | plugindir=$(libdir)/traceevent/plugins | 627 | plugindir=$(libdir)/traceevent/plugins |
| 603 | plugindir_SQ= $(subst ','\'',$(plugindir)) | 628 | plugindir_SQ= $(subst ','\'',$(plugindir)) |
| 604 | endif | 629 | endif |
| 630 | |||
| 631 | # | ||
| 632 | # Print the result of the feature test: | ||
| 633 | # | ||
| 634 | feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) | ||
| 635 | |||
| 636 | define feature_print_status_code | ||
| 637 | ifeq ($(feature-$(1)), 1) | ||
| 638 | MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) | ||
| 639 | else | ||
| 640 | MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) | ||
| 641 | endif | ||
| 642 | endef | ||
| 643 | |||
| 644 | feature_print_var = $(eval $(feature_print_var_code)) $(info $(MSG)) | ||
| 645 | define feature_print_var_code | ||
| 646 | MSG = $(shell printf '...%30s: %s' $(1) $($(1))) | ||
| 647 | endef | ||
| 648 | |||
| 649 | feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) | ||
| 650 | define feature_print_text_code | ||
| 651 | MSG = $(shell printf '...%30s: %s' $(1) $(2)) | ||
| 652 | endef | ||
| 653 | |||
| 654 | PERF_FEATURES := $(foreach feat,$(LIB_FEATURE_TESTS),feature-$(feat)($(feature-$(feat)))) | ||
| 655 | PERF_FEATURES_FILE := $(shell touch $(OUTPUT)PERF-FEATURES; cat $(OUTPUT)PERF-FEATURES) | ||
| 656 | |||
| 657 | ifeq ($(dwarf-post-unwind),1) | ||
| 658 | PERF_FEATURES += dwarf-post-unwind($(dwarf-post-unwind-text)) | ||
| 659 | endif | ||
| 660 | |||
| 661 | # The $(display_lib) controls the default detection message | ||
| 662 | # output. It's set if: | ||
| 663 | # - detected features differes from stored features from | ||
| 664 | # last build (in PERF-FEATURES file) | ||
| 665 | # - one of the $(LIB_FEATURE_TESTS) is not detected | ||
| 666 | # - VF is enabled | ||
| 667 | |||
| 668 | ifneq ("$(PERF_FEATURES)","$(PERF_FEATURES_FILE)") | ||
| 669 | $(shell echo "$(PERF_FEATURES)" > $(OUTPUT)PERF-FEATURES) | ||
| 670 | display_lib := 1 | ||
| 671 | endif | ||
| 672 | |||
| 673 | feature_check = $(eval $(feature_check_code)) | ||
| 674 | define feature_check_code | ||
| 675 | ifneq ($(feature-$(1)), 1) | ||
| 676 | display_lib := 1 | ||
| 677 | endif | ||
| 678 | endef | ||
| 679 | |||
| 680 | $(foreach feat,$(LIB_FEATURE_TESTS),$(call feature_check,$(feat))) | ||
| 681 | |||
| 682 | ifeq ($(VF),1) | ||
| 683 | display_lib := 1 | ||
| 684 | display_vf := 1 | ||
| 685 | endif | ||
| 686 | |||
| 687 | ifeq ($(display_lib),1) | ||
| 688 | $(info ) | ||
| 689 | $(info Auto-detecting system features:) | ||
| 690 | $(foreach feat,$(LIB_FEATURE_TESTS),$(call feature_print_status,$(feat),)) | ||
| 691 | |||
| 692 | ifeq ($(dwarf-post-unwind),1) | ||
| 693 | $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) | ||
| 694 | endif | ||
| 695 | endif | ||
| 696 | |||
| 697 | ifeq ($(display_vf),1) | ||
| 698 | $(foreach feat,$(VF_FEATURE_TESTS),$(call feature_print_status,$(feat),)) | ||
| 699 | $(info ) | ||
| 700 | $(call feature_print_var,prefix) | ||
| 701 | $(call feature_print_var,bindir) | ||
| 702 | $(call feature_print_var,libdir) | ||
| 703 | $(call feature_print_var,sysconfdir) | ||
| 704 | $(call feature_print_var,LIBUNWIND_DIR) | ||
| 705 | $(call feature_print_var,LIBDW_DIR) | ||
| 706 | endif | ||
| 707 | |||
| 708 | ifeq ($(display_lib),1) | ||
| 709 | $(info ) | ||
| 710 | endif | ||
