tools build: Move features framework into tools/build
Jiri Olsa
reviewercover tools build: Move features framework into tools/build
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.
It's also available in:git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/build
thanks,
jirka
---
Jiri Olsa (14):
tools build: Remove Copyright from credits message
perf build: Get rid of LIB_INCLUDE variable
perf build: Rename CORE_FEATURE_TESTS to FEATURE_TESTS perf build: Get rid of VF_FEATURE_TESTS
perf build: Rename display_lib into feature_display
perf build: Rename display_vf to feature_verbose
perf build: Rename PERF-FEATURES into FEATURE-DUMP
perf build: Rename feature_print_var_code to print_var_code perf build: Separate feature make support into config/Makefile.feature perf build: Make features checks directory configurable tools build: Move feature checks code under tools/build tools build: Allow to override feature checks setup
tools build: Fix feature_check name clash
tools build: Disable default check for libbabeltrace
tools/build/Documentation/Feature.txt | 93 +++++++++
tools/build/Makefile.build | 9 +-
tools/build/Makefile.feature | 169 ++++++++++++++++
.../feature-checks => build/feature}/.gitignore | 0
.../feature-checks => build/feature}/Makefile | 2 +-
.../feature-checks => build/feature}/test-all.c | 8 +
.../feature}/test-backtrace.c | 0
.../feature-checks => build/feature}/test-bionic.c | 0
.../feature}/test-compile.c | 0
.../feature}/test-cplus-demangle.c | 0
.../feature-checks => build/feature}/test-dwarf.c | 0
.../feature}/test-fortify-source.c | 0
.../feature-checks => build/feature}/test-glibc.c | 0
.../feature}/test-gtk2-infobar.c | 0
.../feature-checks => build/feature}/test-gtk2.c | 0
.../feature-checks => build/feature}/test-hello.c | 0
.../feature}/test-libaudit.c | 0
.../feature}/test-libbabeltrace.c | 0
.../feature-checks => build/feature}/test-libbfd.c | 0
.../feature}/test-libdw-dwarf-unwind.c | 0
.../feature}/test-libelf-getphdrnum.c | 0
.../feature}/test-libelf-mmap.c | 0
.../feature-checks => build/feature}/test-libelf.c | 0
.../feature}/test-libnuma.c | 0
.../feature}/test-libperl.c | 0
.../feature}/test-libpython-version.c | 0
.../feature}/test-libpython.c | 0
.../feature}/test-libslang.c | 0
.../feature}/test-libunwind-debug-frame.c | 0
.../feature}/test-libunwind.c | 0
.../feature}/test-pthread-attr-setaffinity-np.c | 0
.../feature}/test-stackprotector-all.c | 0
.../feature}/test-sync-compare-and-swap.c | 0
.../feature}/test-timerfd.c | 0
.../feature-checks => build/feature}/test-zlib.c | 0
tools/build/tests/features/Makefile | 23 +++
tools/build/tests/features/Makefile.test1 | 16 ++
tools/build/tests/run.sh | 4 +-
tools/perf/Makefile.perf | 4 +-
tools/perf/config/Makefile | 212 ++-------------------
40 files changed, 334 insertions(+), 206 deletions(-)
create mode 100644 tools/build/Documentation/Feature.txt
create mode 100644 tools/build/Makefile.feature
rename tools/{perf/config/feature-checks => build/feature}/.gitignore (100%)
rename tools/{perf/config/feature-checks => build/feature}/Makefile (97%)
rename tools/{perf/config/feature-checks => build/feature}/test-all.c (94%)
rename tools/{perf/config/feature-checks => build/feature}/test-backtrace.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-bionic.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-compile.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-cplus-demangle.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-dwarf.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-fortify-source.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-glibc.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-gtk2-infobar.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-gtk2.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-hello.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libaudit.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libbabeltrace.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libbfd.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libdw-dwarf-unwind.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf-getphdrnum.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf-mmap.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libnuma.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libperl.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libpython-version.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libpython.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libslang.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libunwind-debug-frame.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libunwind.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-pthread-attr-setaffinity-np.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-stackprotector-all.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-sync-compare-and-swap.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-timerfd.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-zlib.c (100%)
create mode 100644 tools/build/tests/features/Makefile
create mode 100644 tools/build/tests/features/Makefile.test1Jiri Olsa
reviewerPATCH 1/14 tools build: Remove Copyright from credits message
It's not a 'Copyright' message just credits.
--- tools/build/Makefile.build | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
tools/build/Makefile.build +4 -5
@@ -1,12 +1,11 @@ ### # Main build makefile. # -# Lots of this code have been borrowed or heavily inspired from parts -# of kbuild code, which is not credited, but mostly developed by: -# -# Copyright (C) Sam Ravnborg <[email protected]>, 2015 -# Copyright (C) Linus Torvalds <[email protected]>, 2015 +# Lots of this code have been borrowed or heavily inspired +# from parts of kbuild code, which was mostly developed by: # +# Sam Ravnborg <[email protected]> +# Linus Torvalds <[email protected]> PHONY := __build __build:
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 2/14 perf build: Get rid of LIB_INCLUDE variable
In reply to Jiri OlsaIt has no use, so we can directly use the value for CFLAGS.
--- tools/perf/config/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/perf/config/Makefile +1 -2
@@ -15,7 +15,6 @@ $(shell echo -n > .config-detected) detected = $(shell echo "$(1)=y" >> .config-detected) detected_var = $(shell echo "$(1)=$($(1))" >> .config-detected) -LIB_INCLUDE := $(srctree)/tools/lib/ CFLAGS := $(EXTRA_CFLAGS) $(EXTRA_WARNINGS) include $(src-perf)/config/Makefile.arch
@@ -322,7 +321,7 @@ endif CFLAGS += -I$(src-perf)/util CFLAGS += -I$(src-perf) -CFLAGS += -I$(LIB_INCLUDE) +CFLAGS += -I$(srctree)/tools/lib/ CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 3/14 perf build: Rename CORE_FEATURE_TESTS to FEATURE_TESTS
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.
--- tools/perf/config/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
@@ -203,7 +203,7 @@ endef # the rule that uses them - an example for that is the 'bionic' # feature check. ] # -CORE_FEATURE_TESTS = \ +FEATURE_TESTS = \ backtrace \ dwarf \ fortify-source \
@@ -264,7 +264,7 @@ VF_FEATURE_TESTS = \ compile-32 \ compile-x32 -# Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features. +# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. # If in the future we need per-feature checks/flags for features not # mentioned in this list we need to refactor this ;-). set_test_all_flags = $(eval $(set_test_all_flags_code))
@@ -273,7 +273,7 @@ define set_test_all_flags_code FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) endef -$(foreach feat,$(CORE_FEATURE_TESTS),$(call set_test_all_flags,$(feat))) +$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) # # Special fast-path for the 'all features are available' case:
@@ -288,10 +288,10 @@ ifeq ($(feature-all), 1) # # test-all.c passed - just set all the core feature flags to 1: # - $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_set,$(feat))) + $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(CORE_FEATURE_TESTS)) >/dev/null 2>&1) - $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_check,$(feat))) + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif ifeq ($(feature-stackprotector-all), 1)
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 4/14 perf build: Get rid of VF_FEATURE_TESTS
In reply to Jiri OlsaIt only contains (FEATURE_TESTS - FEATURE_DISPLAY) tests to display the rest of the checks on 'make VF=1'. But we can actually compute this list, which is less confusing.
Also renaming LIB_FEATURE_TESTS into FEATURE_DISPLAY, so it reflects what this variable actually does - display its tests status to user.
--- tools/perf/config/Makefile | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-)
tools/perf/config/Makefile +7 -25
@@ -229,7 +229,7 @@ FEATURE_TESTS = \ libbabeltrace \ zlib -LIB_FEATURE_TESTS = \ +FEATURE_DISPLAY = \ dwarf \ glibc \ gtk2 \
@@ -245,25 +245,6 @@ LIB_FEATURE_TESTS = \ libbabeltrace \ zlib -VF_FEATURE_TESTS = \ - backtrace \ - fortify-source \ - sync-compare-and-swap \ - gtk2-infobar \ - libelf-getphdrnum \ - libelf-mmap \ - libpython-version \ - pthread-attr-setaffinity-np \ - stackprotector-all \ - timerfd \ - libunwind-debug-frame \ - bionic \ - liberty \ - liberty-z \ - cplus-demangle \ - compile-32 \ - compile-x32 - # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. # If in the future we need per-feature checks/flags for features not # mentioned in this list we need to refactor this ;-).
@@ -806,7 +787,7 @@ define feature_print_text_code MSG = $(shell printf '...%30s: %s' $(1) $(2)) endef -PERF_FEATURES := $(foreach feat,$(LIB_FEATURE_TESTS),feature-$(feat)($(feature-$(feat)))) +PERF_FEATURES := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) PERF_FEATURES_FILE := $(shell touch $(OUTPUT)PERF-FEATURES; cat $(OUTPUT)PERF-FEATURES) ifeq ($(dwarf-post-unwind),1)
@@ -817,7 +798,7 @@ endif # output. It's set if: # - detected features differes from stored features from # last build (in PERF-FEATURES file) -# - one of the $(LIB_FEATURE_TESTS) is not detected +# - one of the $(FEATURE_DISPLAY) is not detected # - VF is enabled ifneq ("$(PERF_FEATURES)","$(PERF_FEATURES_FILE)")
@@ -832,7 +813,7 @@ define feature_check_code endif endef -$(foreach feat,$(LIB_FEATURE_TESTS),$(call feature_check,$(feat))) +$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) ifeq ($(VF),1) display_lib := 1
@@ -842,7 +823,7 @@ endif ifeq ($(display_lib),1) $(info ) $(info Auto-detecting system features:) - $(foreach feat,$(LIB_FEATURE_TESTS),$(call feature_print_status,$(feat),)) + $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) ifeq ($(dwarf-post-unwind),1) $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
@@ -850,7 +831,8 @@ ifeq ($(display_lib),1) endif ifeq ($(display_vf),1) - $(foreach feat,$(VF_FEATURE_TESTS),$(call feature_print_status,$(feat),)) + TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) + $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info ) $(call feature_print_var,prefix) $(call feature_print_var,bindir)
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 5/14 perf build: Rename display_lib into feature_display
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'feature*' namespace.
--- tools/perf/config/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
@@ -794,7 +794,7 @@ ifeq ($(dwarf-post-unwind),1) PERF_FEATURES += dwarf-post-unwind($(dwarf-post-unwind-text)) endif -# The $(display_lib) controls the default detection message +# The $(feature_display) controls the default detection message # output. It's set if: # - detected features differes from stored features from # last build (in PERF-FEATURES file)
@@ -803,24 +803,24 @@ endif ifneq ("$(PERF_FEATURES)","$(PERF_FEATURES_FILE)") $(shell echo "$(PERF_FEATURES)" > $(OUTPUT)PERF-FEATURES) - display_lib := 1 + feature_display := 1 endif feature_check = $(eval $(feature_check_code)) define feature_check_code ifneq ($(feature-$(1)), 1) - display_lib := 1 + feature_display := 1 endif endef $(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) ifeq ($(VF),1) - display_lib := 1 + feature_display := 1 display_vf := 1 endif -ifeq ($(display_lib),1) +ifeq ($(feature_display),1) $(info ) $(info Auto-detecting system features:) $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),))
@@ -842,7 +842,7 @@ ifeq ($(display_vf),1) $(call feature_print_var,LIBDW_DIR) endif -ifeq ($(display_lib),1) +ifeq ($(feature_display),1) $(info ) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 6/14 perf build: Rename display_vf to feature_verbose
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'feature*' namespace.
--- tools/perf/config/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/perf/config/Makefile +2 -2
@@ -817,7 +817,7 @@ $(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) ifeq ($(VF),1) feature_display := 1 - display_vf := 1 + feature_verbose := 1 endif ifeq ($(feature_display),1)
@@ -830,7 +830,7 @@ ifeq ($(feature_display),1) endif endif -ifeq ($(display_vf),1) +ifeq ($(feature_verbose),1) TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info )
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 7/14 perf build: Rename PERF-FEATURES into FEATURE-DUMP
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.
--- tools/perf/Makefile.perf | 2 +- tools/perf/config/Makefile | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-)
tools/perf/Makefile.perf +1 -1
@@ -528,7 +528,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean config-clean $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) .config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 - $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-FEATURES $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* + $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)
tools/perf/config/Makefile +6 -6
@@ -787,22 +787,22 @@ define feature_print_text_code MSG = $(shell printf '...%30s: %s' $(1) $(2)) endef -PERF_FEATURES := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) -PERF_FEATURES_FILE := $(shell touch $(OUTPUT)PERF-FEATURES; cat $(OUTPUT)PERF-FEATURES) +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) +FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) ifeq ($(dwarf-post-unwind),1) - PERF_FEATURES += dwarf-post-unwind($(dwarf-post-unwind-text)) + FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) endif # The $(feature_display) controls the default detection message # output. It's set if: # - detected features differes from stored features from -# last build (in PERF-FEATURES file) +# last build (in FEATURE-DUMP file) # - one of the $(FEATURE_DISPLAY) is not detected # - VF is enabled -ifneq ("$(PERF_FEATURES)","$(PERF_FEATURES_FILE)") - $(shell echo "$(PERF_FEATURES)" > $(OUTPUT)PERF-FEATURES) +ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") + $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) feature_display := 1 endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 8/14 perf build: Rename feature_print_var_code to print_var_code
In reply to Jiri OlsaAs it has nothing to do with features and won't be moved into tools/build.
--- tools/perf/config/Makefile | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
tools/perf/config/Makefile +12 -11
@@ -777,8 +777,8 @@ define feature_print_status_code endif endef -feature_print_var = $(eval $(feature_print_var_code)) $(info $(MSG)) -define feature_print_var_code +print_var = $(eval $(print_var_code)) $(info $(MSG)) +define print_var_code MSG = $(shell printf '...%30s: %s' $(1) $($(1))) endef
@@ -828,21 +828,22 @@ ifeq ($(feature_display),1) ifeq ($(dwarf-post-unwind),1) $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) endif + + ifneq ($(feature_verbose),1) + $(info ) + endif endif ifeq ($(feature_verbose),1) TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info ) - $(call feature_print_var,prefix) - $(call feature_print_var,bindir) - $(call feature_print_var,libdir) - $(call feature_print_var,sysconfdir) - $(call feature_print_var,LIBUNWIND_DIR) - $(call feature_print_var,LIBDW_DIR) -endif - -ifeq ($(feature_display),1) + $(call print_var,prefix) + $(call print_var,bindir) + $(call print_var,libdir) + $(call print_var,sysconfdir) + $(call print_var,LIBUNWIND_DIR) + $(call print_var,LIBDW_DIR) $(info ) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 9/14 perf build: Separate feature make support into config/Makefile.feature
In reply to Jiri OlsaMove feature related code into separate makefile. The new Makefile.feature is included from config/Makefile. It will be moved later into tools/build.
--- tools/perf/config/Makefile | 167 +----------------------------------- tools/perf/config/Makefile.feature | 169 +++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 166 deletions(-) create mode 100644 tools/perf/config/Makefile.feature
tools/perf/config/Makefile +1 -166
@@ -176,104 +176,7 @@ LDFLAGS += -Wl,-z,noexecstack EXTLIBS = -lpthread -lrt -lm -ldl -ifneq ($(OUTPUT),) - OUTPUT_FEATURES = $(OUTPUT)config/feature-checks/ - $(shell mkdir -p $(OUTPUT_FEATURES)) -endif - -feature_check = $(eval $(feature_check_code)) -define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C config/feature-checks test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) -endef - -feature_set = $(eval $(feature_set_code)) -define feature_set_code - feature-$(1) := 1 -endef - -# -# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output: -# - -# -# Note that this is not a complete list of all feature tests, just -# those that are typically built on a fully configured system. -# -# [ Feature tests not mentioned here have to be built explicitly in -# the rule that uses them - an example for that is the 'bionic' -# feature check. ] -# -FEATURE_TESTS = \ - backtrace \ - dwarf \ - fortify-source \ - sync-compare-and-swap \ - glibc \ - gtk2 \ - gtk2-infobar \ - libaudit \ - libbfd \ - libelf \ - libelf-getphdrnum \ - libelf-mmap \ - libnuma \ - libperl \ - libpython \ - libpython-version \ - libslang \ - libunwind \ - pthread-attr-setaffinity-np \ - stackprotector-all \ - timerfd \ - libdw-dwarf-unwind \ - libbabeltrace \ - zlib - -FEATURE_DISPLAY = \ - dwarf \ - glibc \ - gtk2 \ - libaudit \ - libbfd \ - libelf \ - libnuma \ - libperl \ - libpython \ - libslang \ - libunwind \ - libdw-dwarf-unwind \ - libbabeltrace \ - zlib - -# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. -# If in the future we need per-feature checks/flags for features not -# mentioned in this list we need to refactor this ;-). -set_test_all_flags = $(eval $(set_test_all_flags_code)) -define set_test_all_flags_code - FEATURE_CHECK_CFLAGS-all += $(FEATURE_CHECK_CFLAGS-$(1)) - FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) -endef - -$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) - -# -# Special fast-path for the 'all features are available' case: -# -$(call feature_check,all,$(MSG)) - -# -# Just in case the build freshly failed, make sure we print the -# feature matrix: -# -ifeq ($(feature-all), 1) - # - # test-all.c passed - just set all the core feature flags to 1: - # - $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) -else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) - $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) -endif +include $(src-perf)/config/Makefile.feature ifeq ($(feature-stackprotector-all), 1) CFLAGS += -fstack-protector-all
@@ -764,80 +667,12 @@ plugindir=$(libdir)/traceevent/plugins plugindir_SQ= $(subst ','\'',$(plugindir)) endif -# -# Print the result of the feature test: -# -feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) - -define feature_print_status_code - ifeq ($(feature-$(1)), 1) - MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) - else - MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) - endif -endef - print_var = $(eval $(print_var_code)) $(info $(MSG)) define print_var_code MSG = $(shell printf '...%30s: %s' $(1) $($(1))) endef -feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) -define feature_print_text_code - MSG = $(shell printf '...%30s: %s' $(1) $(2)) -endef - -FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) -FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) - -ifeq ($(dwarf-post-unwind),1) - FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) -endif - -# The $(feature_display) controls the default detection message -# output. It's set if: -# - detected features differes from stored features from -# last build (in FEATURE-DUMP file) -# - one of the $(FEATURE_DISPLAY) is not detected -# - VF is enabled - -ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") - $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) - feature_display := 1 -endif - -feature_check = $(eval $(feature_check_code)) -define feature_check_code - ifneq ($(feature-$(1)), 1) - feature_display := 1 - endif -endef - -$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) - ifeq ($(VF),1) - feature_display := 1 - feature_verbose := 1 -endif - -ifeq ($(feature_display),1) - $(info ) - $(info Auto-detecting system features:) - $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) - - ifeq ($(dwarf-post-unwind),1) - $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) - endif - - ifneq ($(feature_verbose),1) - $(info ) - endif -endif - -ifeq ($(feature_verbose),1) - TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) - $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) - $(info ) $(call print_var,prefix) $(call print_var,bindir) $(call print_var,libdir)
tools/perf/config/Makefile.feature new file +169 -0
169 lines not on this page · raw message
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 10/14 perf build: Make features checks directory configurable
In reply to Jiri OlsaPutting feature checks directory into $feature_dir, so it's easy to configure when we move it to bools/build later.
--- tools/perf/config/Makefile.feature | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
tools/perf/config/Makefile.feature +4 -2
@@ -1,3 +1,5 @@ +feature_dir := $(srctree)/tools/perf/config/feature-checks + ifneq ($(OUTPUT),) OUTPUT_FEATURES = $(OUTPUT)config/feature-checks/ $(shell mkdir -p $(OUTPUT_FEATURES))
@@ -5,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C config/feature-checks test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))
@@ -93,7 +95,7 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 11/14 tools build: Move feature checks code under tools/build
In reply to Jiri OlsaMoving feature checks code under tools/build directory.
Changing also $feature_dir to point to new feature directory location and perf Makefiles to include Makefile.feature from new location.
--- tools/build/Makefile.feature | 171 +++++++++++++++++++++ tools/build/feature/.gitignore | 2 + tools/build/feature/Makefile | 159 +++++++++++++++++++ tools/build/feature/test-all.c | 136 ++++++++++++++++ tools/build/feature/test-backtrace.c | 13 ++ tools/build/feature/test-bionic.c | 6 + tools/build/feature/test-compile.c | 4 + tools/build/feature/test-cplus-demangle.c | 14 ++ tools/build/feature/test-dwarf.c | 10 ++ tools/build/feature/test-fortify-source.c | 6 + tools/build/feature/test-glibc.c | 8 + tools/build/feature/test-gtk2-infobar.c | 11 ++ tools/build/feature/test-gtk2.c | 10 ++ tools/build/feature/test-hello.c | 6 + tools/build/feature/test-libaudit.c | 10 ++ tools/build/feature/test-libbabeltrace.c | 8 + tools/build/feature/test-libbfd.c | 15 ++ tools/build/feature/test-libdw-dwarf-unwind.c | 13 ++ tools/build/feature/test-libelf-getphdrnum.c | 8 + tools/build/feature/test-libelf-mmap.c | 8 + tools/build/feature/test-libelf.c | 8 + tools/build/feature/test-libnuma.c | 9 ++ tools/build/feature/test-libperl.c | 9 ++ tools/build/feature/test-libpython-version.c | 10 ++ tools/build/feature/test-libpython.c | 8 + tools/build/feature/test-libslang.c | 6 + tools/build/feature/test-libunwind-debug-frame.c | 16 ++ tools/build/feature/test-libunwind.c | 27 ++++ .../feature/test-pthread-attr-setaffinity-np.c | 17 ++ tools/build/feature/test-stackprotector-all.c | 6 + tools/build/feature/test-sync-compare-and-swap.c | 14 ++ tools/build/feature/test-timerfd.c | 18 +++ tools/build/feature/test-zlib.c | 9 ++ tools/perf/Makefile.perf | 2 +- tools/perf/config/Makefile | 2 +- tools/perf/config/Makefile.feature | 171 --------------------- tools/perf/config/feature-checks/.gitignore | 2 - tools/perf/config/feature-checks/Makefile | 159 ------------------- tools/perf/config/feature-checks/test-all.c | 136 ---------------- tools/perf/config/feature-checks/test-backtrace.c | 13 -- tools/perf/config/feature-checks/test-bionic.c | 6 - tools/perf/config/feature-checks/test-compile.c | 4 - .../config/feature-checks/test-cplus-demangle.c | 14 -- tools/perf/config/feature-checks/test-dwarf.c | 10 -- .../config/feature-checks/test-fortify-source.c | 6 - tools/perf/config/feature-checks/test-glibc.c | 8 - .../perf/config/feature-checks/test-gtk2-infobar.c | 11 -- tools/perf/config/feature-checks/test-gtk2.c | 10 -- tools/perf/config/feature-checks/test-hello.c | 6 - tools/perf/config/feature-checks/test-libaudit.c | 10 -- .../config/feature-checks/test-libbabeltrace.c | 8 - tools/perf/config/feature-checks/test-libbfd.c | 15 -- .../feature-checks/test-libdw-dwarf-unwind.c | 13 -- .../config/feature-checks/test-libelf-getphdrnum.c | 8 - .../perf/config/feature-checks/test-libelf-mmap.c | 8 - tools/perf/config/feature-checks/test-libelf.c | 8 - tools/perf/config/feature-checks/test-libnuma.c | 9 -- tools/perf/config/feature-checks/test-libperl.c | 9 -- .../config/feature-checks/test-libpython-version.c | 10 -- tools/perf/config/feature-checks/test-libpython.c | 8 - tools/perf/config/feature-checks/test-libslang.c | 6 - .../feature-checks/test-libunwind-debug-frame.c | 16 -- tools/perf/config/feature-checks/test-libunwind.c | 27 ---- .../test-pthread-attr-setaffinity-np.c | 17 -- .../feature-checks/test-stackprotector-all.c | 6 - .../feature-checks/test-sync-compare-and-swap.c | 14 -- tools/perf/config/feature-checks/test-timerfd.c | 18 --- tools/perf/config/feature-checks/test-zlib.c | 9 -- 68 files changed, 777 insertions(+), 777 deletions(-) create mode 100644 tools/build/Makefile.feature create mode 100644 tools/build/feature/.gitignore create mode 100644 tools/build/feature/Makefile create mode 100644 tools/build/feature/test-all.c create mode 100644 tools/build/feature/test-backtrace.c create mode 100644 tools/build/feature/test-bionic.c create mode 100644 tools/build/feature/test-compile.c create mode 100644 tools/build/feature/test-cplus-demangle.c create mode 100644 tools/build/feature/test-dwarf.c create mode 100644 tools/build/feature/test-fortify-source.c create mode 100644 tools/build/feature/test-glibc.c create mode 100644 tools/build/feature/test-gtk2-infobar.c create mode 100644 tools/build/feature/test-gtk2.c create mode 100644 tools/build/feature/test-hello.c create mode 100644 tools/build/feature/test-libaudit.c create mode 100644 tools/build/feature/test-libbabeltrace.c create mode 100644 tools/build/feature/test-libbfd.c create mode 100644 tools/build/feature/test-libdw-dwarf-unwind.c create mode 100644 tools/build/feature/test-libelf-getphdrnum.c create mode 100644 tools/build/feature/test-libelf-mmap.c create mode 100644 tools/build/feature/test-libelf.c create mode 100644 tools/build/feature/test-libnuma.c create mode 100644 tools/build/feature/test-libperl.c create mode 100644 tools/build/feature/test-libpython-version.c create mode 100644 tools/build/feature/test-libpython.c create mode 100644 tools/build/feature/test-libslang.c create mode 100644 tools/build/feature/test-libunwind-debug-frame.c create mode 100644 tools/build/feature/test-libunwind.c create mode 100644 tools/build/feature/test-pthread-attr-setaffinity-np.c create mode 100644 tools/build/feature/test-stackprotector-all.c create mode 100644 tools/build/feature/test-sync-compare-and-swap.c create mode 100644 tools/build/feature/test-timerfd.c create mode 100644 tools/build/feature/test-zlib.c delete mode 100644 tools/perf/config/Makefile.feature delete mode 100644 tools/perf/config/feature-checks/.gitignore delete mode 100644 tools/perf/config/feature-checks/Makefile delete mode 100644 tools/perf/config/feature-checks/test-all.c delete mode 100644 tools/perf/config/feature-checks/test-backtrace.c delete mode 100644 tools/perf/config/feature-checks/test-bionic.c delete mode 100644 tools/perf/config/feature-checks/test-compile.c delete mode 100644 tools/perf/config/feature-checks/test-cplus-demangle.c delete mode 100644 tools/perf/config/feature-checks/test-dwarf.c delete mode 100644 tools/perf/config/feature-checks/test-fortify-source.c delete mode 100644 tools/perf/config/feature-checks/test-glibc.c delete mode 100644 tools/perf/config/feature-checks/test-gtk2-infobar.c delete mode 100644 tools/perf/config/feature-checks/test-gtk2.c delete mode 100644 tools/perf/config/feature-checks/test-hello.c delete mode 100644 tools/perf/config/feature-checks/test-libaudit.c delete mode 100644 tools/perf/config/feature-checks/test-libbabeltrace.c delete mode 100644 tools/perf/config/feature-checks/test-libbfd.c delete mode 100644 tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c delete mode 100644 tools/perf/config/feature-checks/test-libelf-getphdrnum.c delete mode 100644 tools/perf/config/feature-checks/test-libelf-mmap.c delete mode 100644 tools/perf/config/feature-checks/test-libelf.c delete mode 100644 tools/perf/config/feature-checks/test-libnuma.c delete mode 100644 tools/perf/config/feature-checks/test-libperl.c delete mode 100644 tools/perf/config/feature-checks/test-libpython-version.c delete mode 100644 tools/perf/config/feature-checks/test-libpython.c delete mode 100644 tools/perf/config/feature-checks/test-libslang.c delete mode 100644 tools/perf/config/feature-checks/test-libunwind-debug-frame.c delete mode 100644 tools/perf/config/feature-checks/test-libunwind.c delete mode 100644 tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c delete mode 100644 tools/perf/config/feature-checks/test-stackprotector-all.c delete mode 100644 tools/perf/config/feature-checks/test-sync-compare-and-swap.c delete mode 100644 tools/perf/config/feature-checks/test-timerfd.c delete mode 100644 tools/perf/config/feature-checks/test-zlib.c
tools/build/Makefile.feature new file +171 -0
@@ -0,0 +1,171 @@ +feature_dir := $(srctree)/tools/build/feature + +ifneq ($(OUTPUT),) + OUTPUT_FEATURES = $(OUTPUT)feature/ + $(shell mkdir -p $(OUTPUT_FEATURES)) +endif + +feature_check = $(eval $(feature_check_code)) +define feature_check_code + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) +endef + +feature_set = $(eval $(feature_set_code)) +define feature_set_code + feature-$(1) := 1 +endef + +# +# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output: +# + +# +# Note that this is not a complete list of all feature tests, just +# those that are typically built on a fully configured system. +# +# [ Feature tests not mentioned here have to be built explicitly in +# the rule that uses them - an example for that is the 'bionic' +# feature check. ] +# +FEATURE_TESTS = \ + backtrace \ + dwarf \ + fortify-source \ + sync-compare-and-swap \ + glibc \ + gtk2 \ + gtk2-infobar \ + libaudit \ + libbfd \ + libelf \ + libelf-getphdrnum \ + libelf-mmap \ + libnuma \ + libperl \ + libpython \ + libpython-version \ + libslang \ + libunwind \ + pthread-attr-setaffinity-np \ + stackprotector-all \ + timerfd \ + libdw-dwarf-unwind \ + libbabeltrace \ + zlib + +FEATURE_DISPLAY = \ + dwarf \ + glibc \ + gtk2 \ + libaudit \ + libbfd \ + libelf \ + libnuma \ + libperl \ + libpython \ + libslang \ + libunwind \ + libdw-dwarf-unwind \ + libbabeltrace \ + zlib + +# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. +# If in the future we need per-feature checks/flags for features not +# mentioned in this list we need to refactor this ;-). +set_test_all_flags = $(eval $(set_test_all_flags_code)) +define set_test_all_flags_code + FEATURE_CHECK_CFLAGS-all += $(FEATURE_CHECK_CFLAGS-$(1)) + FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) +endef + +$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) + +# +# Special fast-path for the 'all features are available' case: +# +$(call feature_check,all,$(MSG)) + +# +# Just in case the build freshly failed, make sure we print the +# feature matrix: +# +ifeq ($(feature-all), 1) + # + # test-all.c passed - just set all the core feature flags to 1: + # + $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) +else + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) +endif + +# +# Print the result of the feature test: +# +feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) + +define feature_print_status_code + ifeq ($(feature-$(1)), 1) + MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) + else + MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) + endif +endef + +feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) +define feature_print_text_code + MSG = $(shell printf '...%30s: %s' $(1) $(2)) +endef + +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) +FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) + +ifeq ($(dwarf-post-unwind),1) + FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) +endif + +# The $(feature_display) controls the default detection message +# output. It's set if: +# - detected features differes from stored features from +# last build (in FEATURE-DUMP file) +# - one of the $(FEATURE_DISPLAY) is not detected +# - VF is enabled + +ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") + $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) + feature_display := 1 +endif + +feature_check = $(eval $(feature_check_code)) +define feature_check_code + ifneq ($(feature-$(1)), 1) + feature_display := 1 + endif +endef + +$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) + +ifeq ($(VF),1) + feature_display := 1 + feature_verbose := 1 +endif + +ifeq ($(feature_display),1) + $(info ) + $(info Auto-detecting system features:) + $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) + + ifeq ($(dwarf-post-unwind),1) + $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) + endif + + ifneq ($(feature_verbose),1) + $(info ) + endif +endif + +ifeq ($(feature_verbose),1) + TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) + $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) + $(info ) +endif
tools/build/feature/.gitignore new file +2 -0
@@ -0,0 +1,2 @@ +*.d +*.bin
tools/build/feature/Makefile new file +159 -0
159 lines not on this page · raw message
tools/build/feature/test-all.c new file +136 -0
136 lines not on this page · raw message
tools/build/feature/test-backtrace.c new file +13 -0
@@ -0,0 +1,13 @@ +#include <execinfo.h> +#include <stdio.h> + +int main (void ) +{ +void *backtrace_fns[10 ]; +size_t entries; + + entries =backtrace (backtrace_fns,10 ); +backtrace_symbols_fd (backtrace_fns, entries,1 ); + +return 0 ; +}
tools/build/feature/test-bionic.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <android/api-level.h> + +int main (void ) +{ +return __ANDROID_API__; +}
tools/build/feature/test-compile.c new file +4 -0
@@ -0,0 +1,4 @@ +int main (void ) +{ +return 0 ; +}
tools/build/feature/test-cplus-demangle.c new file +14 -0
@@ -0,0 +1,14 @@ +extern int printf (const char *format, ...); +extern char *cplus_demangle (const char *,int ); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =cplus_demangle (symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}
tools/build/feature/test-dwarf.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <dwarf.h> +#include <elfutils/libdw.h> +#include <elfutils/version.h> + +int main (void ) +{ +Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); + +return (long )dbg; +}
tools/build/feature/test-fortify-source.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-glibc.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <gnu/libc-version.h> + +int main (void ) +{ +const char *version =gnu_get_libc_version (); + +return (long )version; +}
tools/build/feature/test-gtk2-infobar.c new file +11 -0
@@ -0,0 +1,11 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); +gtk_info_bar_new (); + +return 0 ; +}
tools/build/feature/test-gtk2.c new file +10 -0
@@ -0,0 +1,10 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); + +return 0 ; +}
tools/build/feature/test-hello.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-libaudit.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <libaudit.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +printf ("error message: %s\n" ,audit_errno_to_name (0 )); + +return audit_open (); +}
tools/build/feature/test-libbabeltrace.c new file +8 -0
@@ -0,0 +1,8 @@ + +#include <babeltrace/ctf-writer/writer.h> + +int main (void ) +{ +bt_ctf_stream_class_get_packet_context_type ((void *)0 ); +return 0 ; +}
tools/build/feature/test-libbfd.c new file +15 -0
@@ -0,0 +1,15 @@ +#include <bfd.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =bfd_demangle (0 , symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}
tools/build/feature/test-libdw-dwarf-unwind.c new file +13 -0
@@ -0,0 +1,13 @@ + +#include <elfutils/libdwfl.h> + +int main (void ) +{ +/* +* This function is guarded via: __nonnull_attribute__ (1, 2). +* Passing '1' as arguments value. This code is never executed, +* only compiled. +*/ +dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); +return 0 ; +}
tools/build/feature/test-libelf-getphdrnum.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +size_t dst; + +return elf_getphdrnum (0 , &dst); +}
tools/build/feature/test-libelf-mmap.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); + +return (long )elf; +}
tools/build/feature/test-libelf.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); + +return (long )elf; +}
tools/build/feature/test-libnuma.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <numa.h> +#include <numaif.h> + +int main (void ) +{ +numa_available (); + +return 0 ; +}
tools/build/feature/test-libperl.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <EXTERN.h> +#include <perl.h> + +int main (void ) +{ +perl_alloc (); + +return 0 ; +}
tools/build/feature/test-libpython-version.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <Python.h> + +#if PY_VERSION_HEX >=0x03000000 +#error +#endif + +int main (void ) +{ +return 0 ; +}
tools/build/feature/test-libpython.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <Python.h> + +int main (void ) +{ +Py_Initialize (); + +return 0 ; +}
tools/build/feature/test-libslang.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <slang.h> + +int main (void ) +{ +return SLsmg_init_smg (); +}
tools/build/feature/test-libunwind-debug-frame.c new file +16 -0
@@ -0,0 +1,16 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int +UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, +unw_word_t ip,unw_word_t segbase, +const char *obj_name,unw_word_t start, +unw_word_t end); + +#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) + +int main (void ) +{ +dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); +return 0 ; +}
tools/build/feature/test-libunwind.c new file +27 -0
@@ -0,0 +1,27 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, +unw_word_t ip, +unw_dyn_info_t *di, +unw_proc_info_t *pi, +int need_unwind_info,void *arg); + + +#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) + +static unw_accessors_t accessors; + +int main (void ) +{ +unw_addr_space_t addr_space; + + addr_space =unw_create_addr_space (&accessors,0 ); +if (addr_space) +return 0 ; + +unw_init_remote (NULL , addr_space,NULL ); +dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); + +return 0 ; +}
tools/build/feature/test-pthread-attr-setaffinity-np.c new file +17 -0
@@ -0,0 +1,17 @@ +#include <stdint.h> +#include <pthread.h> +#include <sched.h> + +int main (void ) +{ +int ret =0 ; +pthread_attr_t thread_attr; +cpu_set_t cs; + +pthread_attr_init (&thread_attr); +CPU_ZERO (&cs); + + ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); + +return ret; +}
tools/build/feature/test-stackprotector-all.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-sync-compare-and-swap.c new file +14 -0
@@ -0,0 +1,14 @@ +#include <stdint.h> + +volatile uint64_t x; + +int main (int argc,char *argv[]) +{ +uint64_t old, new = argc; + + argv = argv; +do { + old =__sync_val_compare_and_swap (&x,0 ,0 ); + }while (!__sync_bool_compare_and_swap (&x, old, new)); +return old == new; +}
tools/build/feature/test-timerfd.c new file +18 -0
@@ -0,0 +1,18 @@ +/* +* test for timerfd functions used by perf-kvm-stat-live +*/ +#include <sys/timerfd.h> + +int main (void ) +{ +struct itimerspec new_value; + +int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); +if (fd <0 ) +return 1 ; + +if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) +return 1 ; + +return 0 ; +}
tools/build/feature/test-zlib.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <zlib.h> + +int main (void ) +{ +z_stream zs; + +inflateInit (&zs); +return 0 ; +}
tools/perf/Makefile.perf +1 -1
@@ -521,7 +521,7 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C config/feature-checks clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
tools/perf/config/Makefile +1 -1
@@ -176,7 +176,7 @@ LDFLAGS += -Wl,-z,noexecstack EXTLIBS = -lpthread -lrt -lm -ldl -include $(src-perf)/config/Makefile.feature +include $(srctree)/tools/build/Makefile.feature ifeq ($(feature-stackprotector-all), 1) CFLAGS += -fstack-protector-all
tools/perf/config/Makefile.feature deleted +0 -171
171 lines not on this page · raw message
tools/perf/config/feature-checks/.gitignore deleted +0 -2
@@ -1,2 +0,0 @@ -*.d -*.bin
tools/perf/config/feature-checks/Makefile deleted +0 -159
159 lines not on this page · raw message
tools/perf/config/feature-checks/test-all.c deleted +0 -136
136 lines not on this page · raw message
tools/perf/config/feature-checks/test-backtrace.c deleted +0 -13
@@ -1,13 +0,0 @@ -#include <execinfo.h> -#include <stdio.h> - -int main (void ) -{ -void *backtrace_fns[10 ]; -size_t entries; - - entries =backtrace (backtrace_fns,10 ); -backtrace_symbols_fd (backtrace_fns, entries,1 ); - -return 0 ; -}
tools/perf/config/feature-checks/test-bionic.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <android/api-level.h> - -int main (void ) -{ -return __ANDROID_API__; -}
tools/perf/config/feature-checks/test-compile.c deleted +0 -4
@@ -1,4 +0,0 @@ -int main (void ) -{ -return 0 ; -}
tools/perf/config/feature-checks/test-cplus-demangle.c deleted +0 -14
@@ -1,14 +0,0 @@ -extern int printf (const char *format, ...); -extern char *cplus_demangle (const char *,int ); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =cplus_demangle (symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}
tools/perf/config/feature-checks/test-dwarf.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <dwarf.h> -#include <elfutils/libdw.h> -#include <elfutils/version.h> - -int main (void ) -{ -Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); - -return (long )dbg; -}
tools/perf/config/feature-checks/test-fortify-source.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-glibc.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <gnu/libc-version.h> - -int main (void ) -{ -const char *version =gnu_get_libc_version (); - -return (long )version; -}
tools/perf/config/feature-checks/test-gtk2-infobar.c deleted +0 -11
@@ -1,11 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); -gtk_info_bar_new (); - -return 0 ; -}
tools/perf/config/feature-checks/test-gtk2.c deleted +0 -10
@@ -1,10 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); - -return 0 ; -}
tools/perf/config/feature-checks/test-hello.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-libaudit.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <libaudit.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -printf ("error message: %s\n" ,audit_errno_to_name (0 )); - -return audit_open (); -}
tools/perf/config/feature-checks/test-libbabeltrace.c deleted +0 -8
@@ -1,8 +0,0 @@ - -#include <babeltrace/ctf-writer/writer.h> - -int main (void ) -{ -bt_ctf_stream_class_get_packet_context_type ((void *)0 ); -return 0 ; -}
tools/perf/config/feature-checks/test-libbfd.c deleted +0 -15
@@ -1,15 +0,0 @@ -#include <bfd.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =bfd_demangle (0 , symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}
tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c deleted +0 -13
@@ -1,13 +0,0 @@ - -#include <elfutils/libdwfl.h> - -int main (void ) -{ -/* -* This function is guarded via: __nonnull_attribute__ (1, 2). -* Passing '1' as arguments value. This code is never executed, -* only compiled. -*/ -dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); -return 0 ; -}
tools/perf/config/feature-checks/test-libelf-getphdrnum.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -size_t dst; - -return elf_getphdrnum (0 , &dst); -}
tools/perf/config/feature-checks/test-libelf-mmap.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); - -return (long )elf; -}
tools/perf/config/feature-checks/test-libelf.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); - -return (long )elf; -}
tools/perf/config/feature-checks/test-libnuma.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <numa.h> -#include <numaif.h> - -int main (void ) -{ -numa_available (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libperl.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <EXTERN.h> -#include <perl.h> - -int main (void ) -{ -perl_alloc (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libpython-version.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <Python.h> - -#if PY_VERSION_HEX >=0x03000000 -#error -#endif - -int main (void ) -{ -return 0 ; -}
tools/perf/config/feature-checks/test-libpython.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <Python.h> - -int main (void ) -{ -Py_Initialize (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libslang.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <slang.h> - -int main (void ) -{ -return SLsmg_init_smg (); -}
tools/perf/config/feature-checks/test-libunwind-debug-frame.c deleted +0 -16
@@ -1,16 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int -UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, -unw_word_t ip,unw_word_t segbase, -const char *obj_name,unw_word_t start, -unw_word_t end); - -#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) - -int main (void ) -{ -dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); -return 0 ; -}
tools/perf/config/feature-checks/test-libunwind.c deleted +0 -27
@@ -1,27 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, -unw_word_t ip, -unw_dyn_info_t *di, -unw_proc_info_t *pi, -int need_unwind_info,void *arg); - - -#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) - -static unw_accessors_t accessors; - -int main (void ) -{ -unw_addr_space_t addr_space; - - addr_space =unw_create_addr_space (&accessors,0 ); -if (addr_space) -return 0 ; - -unw_init_remote (NULL , addr_space,NULL ); -dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); - -return 0 ; -}
tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c deleted +0 -17
@@ -1,17 +0,0 @@ -#include <stdint.h> -#include <pthread.h> -#include <sched.h> - -int main (void ) -{ -int ret =0 ; -pthread_attr_t thread_attr; -cpu_set_t cs; - -pthread_attr_init (&thread_attr); -CPU_ZERO (&cs); - - ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); - -return ret; -}
tools/perf/config/feature-checks/test-stackprotector-all.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-sync-compare-and-swap.c deleted +0 -14
@@ -1,14 +0,0 @@ -#include <stdint.h> - -volatile uint64_t x; - -int main (int argc,char *argv[]) -{ -uint64_t old, new = argc; - - argv = argv; -do { - old =__sync_val_compare_and_swap (&x,0 ,0 ); - }while (!__sync_bool_compare_and_swap (&x, old, new)); -return old == new; -}
tools/perf/config/feature-checks/test-timerfd.c deleted +0 -18
@@ -1,18 +0,0 @@ -/* -* test for timerfd functions used by perf-kvm-stat-live -*/ -#include <sys/timerfd.h> - -int main (void ) -{ -struct itimerspec new_value; - -int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); -if (fd <0 ) -return 1 ; - -if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) -return 1 ; - -return 0 ; -}
tools/perf/config/feature-checks/test-zlib.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <zlib.h> - -int main (void ) -{ -z_stream zs; - -inflateInit (&zs); -return 0 ; -}
Signature · 1 line
1.9.3
Re: [PATCH 11/14] tools build: Move feature checks code under tools/build
Quoted 1 line · Jiri Olsa
Moving feature checks code under
tools/builddirectory.
How does a specific tool specify which features are of interest? I can't imagine all features for perf are wanted by other tools.
David
Quoted 2,123 lines
Changing also $feature_dir to point to new feature directory location and perf Makefiles to include Makefile.feature from new location.
Signed-off-by Jiri Olsa <[email protected]>Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Ingo Molnar <[email protected]>Cc Namhyung Kim <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>--- tools/build/Makefile.feature | 171 +++++++++++++++++++++ tools/build/feature/.gitignore | 2 + tools/build/feature/Makefile | 159 +++++++++++++++++++ tools/build/feature/test-all.c | 136 ++++++++++++++++ tools/build/feature/test-backtrace.c | 13 ++ tools/build/feature/test-bionic.c | 6 + tools/build/feature/test-compile.c | 4 + tools/build/feature/test-cplus-demangle.c | 14 ++ tools/build/feature/test-dwarf.c | 10 ++ tools/build/feature/test-fortify-source.c | 6 + tools/build/feature/test-glibc.c | 8 + tools/build/feature/test-gtk2-infobar.c | 11 ++ tools/build/feature/test-gtk2.c | 10 ++ tools/build/feature/test-hello.c | 6 + tools/build/feature/test-libaudit.c | 10 ++ tools/build/feature/test-libbabeltrace.c | 8 + tools/build/feature/test-libbfd.c | 15 ++ tools/build/feature/test-libdw-dwarf-unwind.c | 13 ++ tools/build/feature/test-libelf-getphdrnum.c | 8 + tools/build/feature/test-libelf-mmap.c | 8 + tools/build/feature/test-libelf.c | 8 + tools/build/feature/test-libnuma.c | 9 ++ tools/build/feature/test-libperl.c | 9 ++ tools/build/feature/test-libpython-version.c | 10 ++ tools/build/feature/test-libpython.c | 8 + tools/build/feature/test-libslang.c | 6 + tools/build/feature/test-libunwind-debug-frame.c | 16 ++ tools/build/feature/test-libunwind.c | 27 ++++ .../feature/test-pthread-attr-setaffinity-np.c | 17 ++ tools/build/feature/test-stackprotector-all.c | 6 + tools/build/feature/test-sync-compare-and-swap.c | 14 ++ tools/build/feature/test-timerfd.c | 18 +++ tools/build/feature/test-zlib.c | 9 ++ tools/perf/Makefile.perf | 2 +- tools/perf/config/Makefile | 2 +- tools/perf/config/Makefile.feature | 171 --------------------- tools/perf/config/feature-checks/.gitignore | 2 - tools/perf/config/feature-checks/Makefile | 159 ------------------- tools/perf/config/feature-checks/test-all.c | 136 ---------------- tools/perf/config/feature-checks/test-backtrace.c | 13 -- tools/perf/config/feature-checks/test-bionic.c | 6 - tools/perf/config/feature-checks/test-compile.c | 4 - .../config/feature-checks/test-cplus-demangle.c | 14 -- tools/perf/config/feature-checks/test-dwarf.c | 10 -- .../config/feature-checks/test-fortify-source.c | 6 - tools/perf/config/feature-checks/test-glibc.c | 8 - .../perf/config/feature-checks/test-gtk2-infobar.c | 11 -- tools/perf/config/feature-checks/test-gtk2.c | 10 -- tools/perf/config/feature-checks/test-hello.c | 6 - tools/perf/config/feature-checks/test-libaudit.c | 10 -- .../config/feature-checks/test-libbabeltrace.c | 8 - tools/perf/config/feature-checks/test-libbfd.c | 15 -- .../feature-checks/test-libdw-dwarf-unwind.c | 13 -- .../config/feature-checks/test-libelf-getphdrnum.c | 8 - .../perf/config/feature-checks/test-libelf-mmap.c | 8 - tools/perf/config/feature-checks/test-libelf.c | 8 - tools/perf/config/feature-checks/test-libnuma.c | 9 -- tools/perf/config/feature-checks/test-libperl.c | 9 -- .../config/feature-checks/test-libpython-version.c | 10 -- tools/perf/config/feature-checks/test-libpython.c | 8 - tools/perf/config/feature-checks/test-libslang.c | 6 - .../feature-checks/test-libunwind-debug-frame.c | 16 -- tools/perf/config/feature-checks/test-libunwind.c | 27 ---- .../test-pthread-attr-setaffinity-np.c | 17 -- .../feature-checks/test-stackprotector-all.c | 6 - .../feature-checks/test-sync-compare-and-swap.c | 14 -- tools/perf/config/feature-checks/test-timerfd.c | 18 --- tools/perf/config/feature-checks/test-zlib.c | 9 -- 68 files changed, 777 insertions(+), 777 deletions(-)create mode 100644
tools/build/Makefile.feature
create mode 100644tools/build/feature/.gitignore
create mode 100644tools/build/feature/Makefile
create mode 100644tools/build/feature/test-all.c
create mode 100644tools/build/feature/test-backtrace.c
create mode 100644tools/build/feature/test-bionic.c
create mode 100644tools/build/feature/test-compile.c
create mode 100644tools/build/feature/test-cplus-demangle.c
create mode 100644tools/build/feature/test-dwarf.c
create mode 100644tools/build/feature/test-fortify-source.c
create mode 100644tools/build/feature/test-glibc.c
create mode 100644tools/build/feature/test-gtk2-infobar.c
create mode 100644tools/build/feature/test-gtk2.c
create mode 100644tools/build/feature/test-hello.c
create mode 100644tools/build/feature/test-libaudit.c
create mode 100644tools/build/feature/test-libbabeltrace.c
create mode 100644tools/build/feature/test-libbfd.c
create mode 100644tools/build/feature/test-libdw-dwarf-unwind.c
create mode 100644tools/build/feature/test-libelf-getphdrnum.c
create mode 100644tools/build/feature/test-libelf-mmap.c
create mode 100644tools/build/feature/test-libelf.c
create mode 100644tools/build/feature/test-libnuma.c
create mode 100644tools/build/feature/test-libperl.c
create mode 100644tools/build/feature/test-libpython-version.c
create mode 100644tools/build/feature/test-libpython.c
create mode 100644tools/build/feature/test-libslang.c
create mode 100644tools/build/feature/test-libunwind-debug-frame.ccreate mode 100644tools/build/feature/test-libunwind.c
create mode 100644tools/build/feature/test-pthread-attr-setaffinity-np.ccreate mode 100644tools/build/feature/test-stackprotector-all.c
create mode 100644tools/build/feature/test-sync-compare-and-swap.ccreate mode 100644tools/build/feature/test-timerfd.c
create mode 100644tools/build/feature/test-zlib.c
delete mode 100644tools/perf/config/Makefile.feature
delete mode 100644tools/perf/config/feature-checks/.gitignore
delete mode 100644tools/perf/config/feature-checks/Makefile
delete mode 100644tools/perf/config/feature-checks/test-all.c
delete mode 100644tools/perf/config/feature-checks/test-backtrace.cdelete mode 100644tools/perf/config/feature-checks/test-bionic.c
delete mode 100644tools/perf/config/feature-checks/test-compile.cdelete mode 100644tools/perf/config/feature-checks/test-cplus-demangle.cdelete mode 100644tools/perf/config/feature-checks/test-dwarf.c
delete mode 100644tools/perf/config/feature-checks/test-fortify-source.cdelete mode 100644tools/perf/config/feature-checks/test-glibc.c
delete mode 100644tools/perf/config/feature-checks/test-gtk2-infobar.cdelete mode 100644tools/perf/config/feature-checks/test-gtk2.c
delete mode 100644tools/perf/config/feature-checks/test-hello.c
delete mode 100644tools/perf/config/feature-checks/test-libaudit.cdelete mode 100644tools/perf/config/feature-checks/test-libbabeltrace.cdelete mode 100644tools/perf/config/feature-checks/test-libbfd.c
delete mode 100644tools/perf/config/feature-checks/test-libdw-dwarf-unwind.cdelete mode 100644tools/perf/config/feature-checks/test-libelf-getphdrnum.cdelete mode 100644tools/perf/config/feature-checks/test-libelf-mmap.cdelete mode 100644tools/perf/config/feature-checks/test-libelf.c
delete mode 100644tools/perf/config/feature-checks/test-libnuma.cdelete mode 100644tools/perf/config/feature-checks/test-libperl.cdelete mode 100644tools/perf/config/feature-checks/test-libpython-version.cdelete mode 100644tools/perf/config/feature-checks/test-libpython.cdelete mode 100644tools/perf/config/feature-checks/test-libslang.cdelete mode 100644tools/perf/config/feature-checks/test-libunwind-debug-frame.cdelete mode 100644tools/perf/config/feature-checks/test-libunwind.cdelete mode 100644tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.cdelete mode 100644tools/perf/config/feature-checks/test-stackprotector-all.cdelete mode 100644tools/perf/config/feature-checks/test-sync-compare-and-swap.cdelete mode 100644tools/perf/config/feature-checks/test-timerfd.cdelete mode 100644tools/perf/config/feature-checks/test-zlib.ctools/build/Makefile.feature new file +171
-0@@ -0,0 +1,171 @@ +feature_dir := $(srctree)/tools/build/feature + +ifneq ($(OUTPUT),) + OUTPUT_FEATURES = $(OUTPUT)feature/ + $(shell mkdir -p $(OUTPUT_FEATURES)) +endif + +feature_check = $(eval $(feature_check_code)) +define feature_check_code + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) +endef + +feature_set = $(eval $(feature_set_code)) +define feature_set_code + feature-$(1) := 1 +endef + +# +# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output: +# + +# +# Note that this is not a complete list of all feature tests, just +# those that are typically built on a fully configured system. +# +# [ Feature tests not mentioned here have to be built explicitly in +# the rule that uses them - an example for that is the 'bionic' +# feature check. ] +# +FEATURE_TESTS = \ + backtrace \ + dwarf \ + fortify-source \ + sync-compare-and-swap \ + glibc \ + gtk2 \ + gtk2-infobar \ + libaudit \ + libbfd \ + libelf \ + libelf-getphdrnum \ + libelf-mmap \ + libnuma \ + libperl \ + libpython \ + libpython-version \ + libslang \ + libunwind \ + pthread-attr-setaffinity-np \ + stackprotector-all \ + timerfd \ + libdw-dwarf-unwind \ + libbabeltrace \ + zlib + +FEATURE_DISPLAY = \ + dwarf \ + glibc \ + gtk2 \ + libaudit \ + libbfd \ + libelf \ + libnuma \ + libperl \ + libpython \ + libslang \ + libunwind \ + libdw-dwarf-unwind \ + libbabeltrace \ + zlib + +# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. +# If in the future we need per-feature checks/flags for features not +# mentioned in this list we need to refactor this ;-). +set_test_all_flags = $(eval $(set_test_all_flags_code)) +define set_test_all_flags_code + FEATURE_CHECK_CFLAGS-all += $(FEATURE_CHECK_CFLAGS-$(1)) + FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) +endef + +$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) + +# +# Special fast-path for the 'all features are available' case: +# +$(call feature_check,all,$(MSG)) + +# +# Just in case the build freshly failed, make sure we print the +# feature matrix: +# +ifeq ($(feature-all), 1) + # + # test-all.c passed - just set all the core feature flags to 1: + # + $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) +else + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) +endif + +# +# Print the result of the feature test: +# +feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) + +define feature_print_status_code + ifeq ($(feature-$(1)), 1) + MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) + else + MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) + endif +endef + +feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) +define feature_print_text_code + MSG = $(shell printf '...%30s: %s' $(1) $(2)) +endef + +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) +FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) + +ifeq ($(dwarf-post-unwind),1) + FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) +endif + +# The $(feature_display) controls the default detection message +# output. It's set if: +# - detected features differes from stored features from +# last build (in FEATURE-DUMP file) +# - one of the $(FEATURE_DISPLAY) is not detected +# - VF is enabled + +ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") + $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) + feature_display := 1 +endif + +feature_check = $(eval $(feature_check_code)) +define feature_check_code + ifneq ($(feature-$(1)), 1) + feature_display := 1 + endif +endef + +$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) + +ifeq ($(VF),1) + feature_display := 1 + feature_verbose := 1 +endif + +ifeq ($(feature_display),1) + $(info ) + $(info Auto-detecting system features:) + $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) + + ifeq ($(dwarf-post-unwind),1) + $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) + endif + + ifneq ($(feature_verbose),1) + $(info ) + endif +endif + +ifeq ($(feature_verbose),1) + TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) + $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) + $(info ) +endiftools/build/feature/.gitignore new file +2
-0@@ -0,0 +1,2 @@ +*.d +*.bintools/build/feature/Makefile new file +159
-0@@ -0,0 +1,159 @@ + +FILES= \ + test-all.bin \ + test-backtrace.bin \ + test-bionic.bin \ + test-dwarf.bin \ + test-fortify-source.bin \ + test-sync-compare-and-swap.bin \ + test-glibc.bin \ + test-gtk2.bin \ + test-gtk2-infobar.bin \ + test-hello.bin \ + test-libaudit.bin \ + test-libbfd.bin \ + test-liberty.bin \ + test-liberty-z.bin \ + test-cplus-demangle.bin \ + test-libelf.bin \ + test-libelf-getphdrnum.bin \ + test-libelf-mmap.bin \ + test-libnuma.bin \ + test-libperl.bin \ + test-libpython.bin \ + test-libpython-version.bin \ + test-libslang.bin \ + test-libunwind.bin \ + test-libunwind-debug-frame.bin \ + test-pthread-attr-setaffinity-np.bin \ + test-stackprotector-all.bin \ + test-timerfd.bin \ + test-libdw-dwarf-unwind.bin \ + test-libbabeltrace.bin \ + test-compile-32.bin \ + test-compile-x32.bin \ + test-zlib.bin + +CC := $(CROSS_COMPILE)gcc -MD +PKG_CONFIG := $(CROSS_COMPILE)pkg-config + +all: $(FILES) + +BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) + +############################### + +test-all.bin: + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace + +test-hello.bin: + $(BUILD) + +test-pthread-attr-setaffinity-np.bin: + $(BUILD) -D_GNU_SOURCE -lpthread + +test-stackprotector-all.bin: + $(BUILD) -fstack-protector-all + +test-fortify-source.bin: + $(BUILD) -O2 -D_FORTIFY_SOURCE=2 + +test-bionic.bin: + $(BUILD) + +test-libelf.bin: + $(BUILD) -lelf + +test-glibc.bin: + $(BUILD) + +test-dwarf.bin: + $(BUILD) -ldw + +test-libelf-mmap.bin: + $(BUILD) -lelf + +test-libelf-getphdrnum.bin: + $(BUILD) -lelf + +test-libnuma.bin: + $(BUILD) -lnuma + +test-libunwind.bin: + $(BUILD) -lelf + +test-libunwind-debug-frame.bin: + $(BUILD) -lelf + +test-libaudit.bin: + $(BUILD) -laudit + +test-libslang.bin: + $(BUILD) -I/usr/include/slang -lslang + +test-gtk2.bin: + $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) + +test-gtk2-infobar.bin: + $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) + +grep-libs = $(filter -l%,$(1)) +strip-libs = $(filter-out -l%,$(1)) + +PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) +PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) +PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) +PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` +FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) + +test-libperl.bin: + $(BUILD) $(FLAGS_PERL_EMBED) + +test-libpython.bin: + $(BUILD) + +test-libpython-version.bin: + $(BUILD) + +test-libbfd.bin: + $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl + +test-liberty.bin: + $(CC) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' -lbfd -ldl -liberty + +test-liberty-z.bin: + $(CC) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' -lbfd -ldl -liberty -lz + +test-cplus-demangle.bin: + $(BUILD) -liberty + +test-backtrace.bin: + $(BUILD) + +test-timerfd.bin: + $(BUILD) + +test-libdw-dwarf-unwind.bin: + $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) + +test-libbabeltrace.bin: + $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) + +test-sync-compare-and-swap.bin: + $(BUILD) + +test-compile-32.bin: + $(CC) -m32 -o $(OUTPUT)$@ test-compile.c + +test-compile-x32.bin: + $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c + +test-zlib.bin: + $(BUILD) -lz + +-include *.d + +############################### + +clean: + rm -f $(FILES) *.dtools/build/feature/test-all.c new file +136
-0@@ -0,0 +1,136 @@ +/* +* test-all.c: Try to build all the main testcases at once. +* +* A well-configured system will have all the prereqs installed, so we can speed +* up auto-detection on such systems. +*/ + +/* +* Quirk: Python and Perl headers cannot be in arbitrary places, so keep +* these 3 testcases at the top: +*/ +#define main main_test_libpython +# include "test-libpython.c" +#undef main + +#define main main_test_libpython_version +# include "test-libpython-version.c" +#undef main + +#define main main_test_libperl +# include "test-libperl.c" +#undef main + +#define main main_test_hello +# include "test-hello.c" +#undef main + +#define main main_test_libelf +# include "test-libelf.c" +#undef main + +#define main main_test_libelf_mmap +# include "test-libelf-mmap.c" +#undef main + +#define main main_test_glibc +# include "test-glibc.c" +#undef main + +#define main main_test_dwarf +# include "test-dwarf.c" +#undef main + +#define main main_test_libelf_getphdrnum +# include "test-libelf-getphdrnum.c" +#undef main + +#define main main_test_libunwind +# include "test-libunwind.c" +#undef main + +#define main main_test_libaudit +# include "test-libaudit.c" +#undef main + +#define main main_test_libslang +# include "test-libslang.c" +#undef main + +#define main main_test_gtk2 +# include "test-gtk2.c" +#undef main + +#define main main_test_gtk2_infobar +# include "test-gtk2-infobar.c" +#undef main + +#define main main_test_libbfd +# include "test-libbfd.c" +#undef main + +#define main main_test_backtrace +# include "test-backtrace.c" +#undef main + +#define main main_test_libnuma +# include "test-libnuma.c" +#undef main + +#define main main_test_timerfd +# include "test-timerfd.c" +#undef main + +#define main main_test_stackprotector_all +# include "test-stackprotector-all.c" +#undef main + +#define main main_test_libdw_dwarf_unwind +# include "test-libdw-dwarf-unwind.c" +#undef main + +#define main main_test_sync_compare_and_swap +# include "test-sync-compare-and-swap.c" +#undef main + +#define main main_test_zlib +# include "test-zlib.c" +#undef main + +#define main main_test_pthread_attr_setaffinity_np +# include "test-pthread_attr_setaffinity_np.c" +#undef main + +#define main main_test_libbabeltrace +# include "test-libbabeltrace.c" +#undef main + +int main (int argc,char *argv[]) +{ +main_test_libpython (); +main_test_libpython_version (); +main_test_libperl (); +main_test_hello (); +main_test_libelf (); +main_test_libelf_mmap (); +main_test_glibc (); +main_test_dwarf (); +main_test_libelf_getphdrnum (); +main_test_libunwind (); +main_test_libaudit (); +main_test_libslang (); +main_test_gtk2 (argc, argv); +main_test_gtk2_infobar (argc, argv); +main_test_libbfd (); +main_test_backtrace (); +main_test_libnuma (); +main_test_timerfd (); +main_test_stackprotector_all (); +main_test_libdw_dwarf_unwind (); +main_test_sync_compare_and_swap (argc, argv); +main_test_zlib (); +main_test_pthread_attr_setaffinity_np (); +main_test_libbabeltrace (); + +return 0 ; +}tools/build/feature/test-backtrace.c new file +13
-0@@ -0,0 +1,13 @@ +#include <execinfo.h> +#include <stdio.h> + +int main (void ) +{ +void *backtrace_fns[10 ]; +size_t entries; + + entries =backtrace (backtrace_fns,10 ); +backtrace_symbols_fd (backtrace_fns, entries,1 ); + +return 0 ; +}tools/build/feature/test-bionic.c new file +6
-0@@ -0,0 +1,6 @@ +#include <android/api-level.h> + +int main (void ) +{ +return __ANDROID_API__; +}tools/build/feature/test-compile.c new file +4
-0@@ -0,0 +1,4 @@ +int main (void ) +{ +return 0 ; +}tools/build/feature/test-cplus-demangle.c new file +14
-0@@ -0,0 +1,14 @@ +extern int printf (const char *format, ...); +extern char *cplus_demangle (const char *,int ); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =cplus_demangle (symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}tools/build/feature/test-dwarf.c new file +10
-0@@ -0,0 +1,10 @@ +#include <dwarf.h> +#include <elfutils/libdw.h> +#include <elfutils/version.h> + +int main (void ) +{ +Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); + +return (long )dbg; +}tools/build/feature/test-fortify-source.c new file +6
-0@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}tools/build/feature/test-glibc.c new file +8
-0@@ -0,0 +1,8 @@ +#include <gnu/libc-version.h> + +int main (void ) +{ +const char *version =gnu_get_libc_version (); + +return (long )version; +}tools/build/feature/test-gtk2-infobar.c new file +11
-0@@ -0,0 +1,11 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); +gtk_info_bar_new (); + +return 0 ; +}tools/build/feature/test-gtk2.c new file +10
-0@@ -0,0 +1,10 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); + +return 0 ; +}tools/build/feature/test-hello.c new file +6
-0@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}tools/build/feature/test-libaudit.c new file +10
-0@@ -0,0 +1,10 @@ +#include <libaudit.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +printf ("error message: %s\n" ,audit_errno_to_name (0 )); + +return audit_open (); +}tools/build/feature/test-libbabeltrace.c new file +8
-0@@ -0,0 +1,8 @@ + +#include <babeltrace/ctf-writer/writer.h> + +int main (void ) +{ +bt_ctf_stream_class_get_packet_context_type ((void *)0 ); +return 0 ; +}tools/build/feature/test-libbfd.c new file +15
-0@@ -0,0 +1,15 @@ +#include <bfd.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =bfd_demangle (0 , symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}tools/build/feature/test-libdw-dwarf-unwind.c new file +13
-0@@ -0,0 +1,13 @@ + +#include <elfutils/libdwfl.h> + +int main (void ) +{ +/* +* This function is guarded via: __nonnull_attribute__ (1, 2). +* Passing '1' as arguments value. This code is never executed, +* only compiled. +*/ +dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); +return 0 ; +}tools/build/feature/test-libelf-getphdrnum.c new file +8
-0@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +size_t dst; + +return elf_getphdrnum (0 , &dst); +}tools/build/feature/test-libelf-mmap.c new file +8
-0@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); + +return (long )elf; +}tools/build/feature/test-libelf.c new file +8
-0@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); + +return (long )elf; +}tools/build/feature/test-libnuma.c new file +9
-0@@ -0,0 +1,9 @@ +#include <numa.h> +#include <numaif.h> + +int main (void ) +{ +numa_available (); + +return 0 ; +}tools/build/feature/test-libperl.c new file +9
-0@@ -0,0 +1,9 @@ +#include <EXTERN.h> +#include <perl.h> + +int main (void ) +{ +perl_alloc (); + +return 0 ; +}tools/build/feature/test-libpython-version.c new file +10
-0@@ -0,0 +1,10 @@ +#include <Python.h> + +#if PY_VERSION_HEX >=0x03000000 +#error +#endif + +int main (void ) +{ +return 0 ; +}tools/build/feature/test-libpython.c new file +8
-0@@ -0,0 +1,8 @@ +#include <Python.h> + +int main (void ) +{ +Py_Initialize (); + +return 0 ; +}tools/build/feature/test-libslang.c new file +6
-0@@ -0,0 +1,6 @@ +#include <slang.h> + +int main (void ) +{ +return SLsmg_init_smg (); +}tools/build/feature/test-libunwind-debug-frame.c new file +16
-0@@ -0,0 +1,16 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int +UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, +unw_word_t ip,unw_word_t segbase, +const char *obj_name,unw_word_t start, +unw_word_t end); + +#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) + +int main (void ) +{ +dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); +return 0 ; +}tools/build/feature/test-libunwind.c new file +27
-0@@ -0,0 +1,27 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, +unw_word_t ip, +unw_dyn_info_t *di, +unw_proc_info_t *pi, +int need_unwind_info,void *arg); + + +#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) + +static unw_accessors_t accessors; + +int main (void ) +{ +unw_addr_space_t addr_space; + + addr_space =unw_create_addr_space (&accessors,0 ); +if (addr_space) +return 0 ; + +unw_init_remote (NULL , addr_space,NULL ); +dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); + +return 0 ; +}tools/build/feature/test-pthread-attr-setaffinity-np.c new file +17
-0@@ -0,0 +1,17 @@ +#include <stdint.h> +#include <pthread.h> +#include <sched.h> + +int main (void ) +{ +int ret =0 ; +pthread_attr_t thread_attr; +cpu_set_t cs; + +pthread_attr_init (&thread_attr); +CPU_ZERO (&cs); + + ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); + +return ret; +}tools/build/feature/test-stackprotector-all.c new file +6
-0@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}tools/build/feature/test-sync-compare-and-swap.c new file +14
-0@@ -0,0 +1,14 @@ +#include <stdint.h> + +volatile uint64_t x; + +int main (int argc,char *argv[]) +{ +uint64_t old, new = argc; + + argv = argv; +do { + old =__sync_val_compare_and_swap (&x,0 ,0 ); + }while (!__sync_bool_compare_and_swap (&x, old, new)); +return old == new; +}tools/build/feature/test-timerfd.c new file +18
-0@@ -0,0 +1,18 @@ +/* +* test for timerfd functions used by perf-kvm-stat-live +*/ +#include <sys/timerfd.h> + +int main (void ) +{ +struct itimerspec new_value; + +int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); +if (fd <0 ) +return 1 ; + +if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) +return 1 ; + +return 0 ; +}tools/build/feature/test-zlib.c new file +9
-0@@ -0,0 +1,9 @@ +#include <zlib.h> + +int main (void ) +{ +z_stream zs; + +inflateInit (&zs); +return 0 ; +}tools/perf/Makefile.perf +1
-1@@ -521,7 +521,7 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C config/feature-checks clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)tools/perf/config/Makefile +1
-1@@ -176,7 +176,7 @@ LDFLAGS += -Wl,-z,noexecstack EXTLIBS = -lpthread -lrt -lm -ldl -include $(src-perf)/config/Makefile.feature +include $(srctree)/tools/build/Makefile.feature ifeq ($(feature-stackprotector-all), 1) CFLAGS += -fstack-protector-alltools/perf/config/Makefile.feature deleted +0
-171@@ -1,171 +0,0 @@ -feature_dir := $(srctree)/tools/perf/config/feature-checks - -ifneq ($(OUTPUT),) - OUTPUT_FEATURES = $(OUTPUT)config/feature-checks/ - $(shell mkdir -p $(OUTPUT_FEATURES)) -endif - -feature_check = $(eval $(feature_check_code)) -define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) -endef - -feature_set = $(eval $(feature_set_code)) -define feature_set_code - feature-$(1) := 1 -endef - -# -# Build the feature check binaries in parallel, ignore errors, ignore return value and suppress output: -# - -# -# Note that this is not a complete list of all feature tests, just -# those that are typically built on a fully configured system. -# -# [ Feature tests not mentioned here have to be built explicitly in -# the rule that uses them - an example for that is the 'bionic' -# feature check. ] -# -FEATURE_TESTS = \ - backtrace \ - dwarf \ - fortify-source \ - sync-compare-and-swap \ - glibc \ - gtk2 \ - gtk2-infobar \ - libaudit \ - libbfd \ - libelf \ - libelf-getphdrnum \ - libelf-mmap \ - libnuma \ - libperl \ - libpython \ - libpython-version \ - libslang \ - libunwind \ - pthread-attr-setaffinity-np \ - stackprotector-all \ - timerfd \ - libdw-dwarf-unwind \ - libbabeltrace \ - zlib - -FEATURE_DISPLAY = \ - dwarf \ - glibc \ - gtk2 \ - libaudit \ - libbfd \ - libelf \ - libnuma \ - libperl \ - libpython \ - libslang \ - libunwind \ - libdw-dwarf-unwind \ - libbabeltrace \ - zlib - -# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. -# If in the future we need per-feature checks/flags for features not -# mentioned in this list we need to refactor this ;-). -set_test_all_flags = $(eval $(set_test_all_flags_code)) -define set_test_all_flags_code - FEATURE_CHECK_CFLAGS-all += $(FEATURE_CHECK_CFLAGS-$(1)) - FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) -endef - -$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) - -# -# Special fast-path for the 'all features are available' case: -# -$(call feature_check,all,$(MSG)) - -# -# Just in case the build freshly failed, make sure we print the -# feature matrix: -# -ifeq ($(feature-all), 1) - # - # test-all.c passed - just set all the core feature flags to 1: - # - $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) -else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) - $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) -endif - -# -# Print the result of the feature test: -# -feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) - -define feature_print_status_code - ifeq ($(feature-$(1)), 1) - MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) - else - MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) - endif -endef - -feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) -define feature_print_text_code - MSG = $(shell printf '...%30s: %s' $(1) $(2)) -endef - -FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) -FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) - -ifeq ($(dwarf-post-unwind),1) - FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) -endif - -# The $(feature_display) controls the default detection message -# output. It's set if: -# - detected features differes from stored features from -# last build (in FEATURE-DUMP file) -# - one of the $(FEATURE_DISPLAY) is not detected -# - VF is enabled - -ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") - $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) - feature_display := 1 -endif - -feature_check = $(eval $(feature_check_code)) -define feature_check_code - ifneq ($(feature-$(1)), 1) - feature_display := 1 - endif -endef - -$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) - -ifeq ($(VF),1) - feature_display := 1 - feature_verbose := 1 -endif - -ifeq ($(feature_display),1) - $(info ) - $(info Auto-detecting system features:) - $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) - - ifeq ($(dwarf-post-unwind),1) - $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) - endif - - ifneq ($(feature_verbose),1) - $(info ) - endif -endif - -ifeq ($(feature_verbose),1) - TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) - $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) - $(info ) -endiftools/perf/config/feature-checks/.gitignore deleted +0
-2@@ -1,2 +0,0 @@ -*.d -*.bintools/perf/config/feature-checks/Makefile deleted +0
-159@@ -1,159 +0,0 @@ - -FILES= \ - test-all.bin \ - test-backtrace.bin \ - test-bionic.bin \ - test-dwarf.bin \ - test-fortify-source.bin \ - test-sync-compare-and-swap.bin \ - test-glibc.bin \ - test-gtk2.bin \ - test-gtk2-infobar.bin \ - test-hello.bin \ - test-libaudit.bin \ - test-libbfd.bin \ - test-liberty.bin \ - test-liberty-z.bin \ - test-cplus-demangle.bin \ - test-libelf.bin \ - test-libelf-getphdrnum.bin \ - test-libelf-mmap.bin \ - test-libnuma.bin \ - test-libperl.bin \ - test-libpython.bin \ - test-libpython-version.bin \ - test-libslang.bin \ - test-libunwind.bin \ - test-libunwind-debug-frame.bin \ - test-pthread-attr-setaffinity-np.bin \ - test-stackprotector-all.bin \ - test-timerfd.bin \ - test-libdw-dwarf-unwind.bin \ - test-libbabeltrace.bin \ - test-compile-32.bin \ - test-compile-x32.bin \ - test-zlib.bin - -CC := $(CROSS_COMPILE)gcc -MD -PKG_CONFIG := $(CROSS_COMPILE)pkg-config - -all: $(FILES) - -BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) - -############################### - -test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace - -test-hello.bin: - $(BUILD) - -test-pthread-attr-setaffinity-np.bin: - $(BUILD) -D_GNU_SOURCE -lpthread - -test-stackprotector-all.bin: - $(BUILD) -fstack-protector-all - -test-fortify-source.bin: - $(BUILD) -O2 -D_FORTIFY_SOURCE=2 - -test-bionic.bin: - $(BUILD) - -test-libelf.bin: - $(BUILD) -lelf - -test-glibc.bin: - $(BUILD) - -test-dwarf.bin: - $(BUILD) -ldw - -test-libelf-mmap.bin: - $(BUILD) -lelf - -test-libelf-getphdrnum.bin: - $(BUILD) -lelf - -test-libnuma.bin: - $(BUILD) -lnuma - -test-libunwind.bin: - $(BUILD) -lelf - -test-libunwind-debug-frame.bin: - $(BUILD) -lelf - -test-libaudit.bin: - $(BUILD) -laudit - -test-libslang.bin: - $(BUILD) -I/usr/include/slang -lslang - -test-gtk2.bin: - $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) - -test-gtk2-infobar.bin: - $(BUILD) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) - -grep-libs = $(filter -l%,$(1)) -strip-libs = $(filter-out -l%,$(1)) - -PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null) -PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS)) -PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS)) -PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null` -FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS) - -test-libperl.bin: - $(BUILD) $(FLAGS_PERL_EMBED) - -test-libpython.bin: - $(BUILD) - -test-libpython-version.bin: - $(BUILD) - -test-libbfd.bin: - $(BUILD) -DPACKAGE='"perf"' -lbfd -lz -liberty -ldl - -test-liberty.bin: - $(CC) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' -lbfd -ldl -liberty - -test-liberty-z.bin: - $(CC) -Wall -Werror -o $(OUTPUT)$@ test-libbfd.c -DPACKAGE='"perf"' -lbfd -ldl -liberty -lz - -test-cplus-demangle.bin: - $(BUILD) -liberty - -test-backtrace.bin: - $(BUILD) - -test-timerfd.bin: - $(BUILD) - -test-libdw-dwarf-unwind.bin: - $(BUILD) # -ldw provided by $(FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind) - -test-libbabeltrace.bin: - $(BUILD) # -lbabeltrace provided by $(FEATURE_CHECK_LDFLAGS-libbabeltrace) - -test-sync-compare-and-swap.bin: - $(BUILD) - -test-compile-32.bin: - $(CC) -m32 -o $(OUTPUT)$@ test-compile.c - -test-compile-x32.bin: - $(CC) -mx32 -o $(OUTPUT)$@ test-compile.c - -test-zlib.bin: - $(BUILD) -lz - --include *.d - -############################### - -clean: - rm -f $(FILES) *.dtools/perf/config/feature-checks/test-all.c deleted +0
-136@@ -1,136 +0,0 @@ -/* -* test-all.c: Try to build all the main testcases at once. -* -* A well-configured system will have all the prereqs installed, so we can speed -* up auto-detection on such systems. -*/ - -/* -* Quirk: Python and Perl headers cannot be in arbitrary places, so keep -* these 3 testcases at the top: -*/ -#define main main_test_libpython -# include "test-libpython.c" -#undef main - -#define main main_test_libpython_version -# include "test-libpython-version.c" -#undef main - -#define main main_test_libperl -# include "test-libperl.c" -#undef main - -#define main main_test_hello -# include "test-hello.c" -#undef main - -#define main main_test_libelf -# include "test-libelf.c" -#undef main - -#define main main_test_libelf_mmap -# include "test-libelf-mmap.c" -#undef main - -#define main main_test_glibc -# include "test-glibc.c" -#undef main - -#define main main_test_dwarf -# include "test-dwarf.c" -#undef main - -#define main main_test_libelf_getphdrnum -# include "test-libelf-getphdrnum.c" -#undef main - -#define main main_test_libunwind -# include "test-libunwind.c" -#undef main - -#define main main_test_libaudit -# include "test-libaudit.c" -#undef main - -#define main main_test_libslang -# include "test-libslang.c" -#undef main - -#define main main_test_gtk2 -# include "test-gtk2.c" -#undef main - -#define main main_test_gtk2_infobar -# include "test-gtk2-infobar.c" -#undef main - -#define main main_test_libbfd -# include "test-libbfd.c" -#undef main - -#define main main_test_backtrace -# include "test-backtrace.c" -#undef main - -#define main main_test_libnuma -# include "test-libnuma.c" -#undef main - -#define main main_test_timerfd -# include "test-timerfd.c" -#undef main - -#define main main_test_stackprotector_all -# include "test-stackprotector-all.c" -#undef main - -#define main main_test_libdw_dwarf_unwind -# include "test-libdw-dwarf-unwind.c" -#undef main - -#define main main_test_sync_compare_and_swap -# include "test-sync-compare-and-swap.c" -#undef main - -#define main main_test_zlib -# include "test-zlib.c" -#undef main - -#define main main_test_pthread_attr_setaffinity_np -# include "test-pthread_attr_setaffinity_np.c" -#undef main - -#define main main_test_libbabeltrace -# include "test-libbabeltrace.c" -#undef main - -int main (int argc,char *argv[]) -{ -main_test_libpython (); -main_test_libpython_version (); -main_test_libperl (); -main_test_hello (); -main_test_libelf (); -main_test_libelf_mmap (); -main_test_glibc (); -main_test_dwarf (); -main_test_libelf_getphdrnum (); -main_test_libunwind (); -main_test_libaudit (); -main_test_libslang (); -main_test_gtk2 (argc, argv); -main_test_gtk2_infobar (argc, argv); -main_test_libbfd (); -main_test_backtrace (); -main_test_libnuma (); -main_test_timerfd (); -main_test_stackprotector_all (); -main_test_libdw_dwarf_unwind (); -main_test_sync_compare_and_swap (argc, argv); -main_test_zlib (); -main_test_pthread_attr_setaffinity_np (); -main_test_libbabeltrace (); - -return 0 ; -}tools/perf/config/feature-checks/test-backtrace.c deleted +0
-13@@ -1,13 +0,0 @@ -#include <execinfo.h> -#include <stdio.h> - -int main (void ) -{ -void *backtrace_fns[10 ]; -size_t entries; - - entries =backtrace (backtrace_fns,10 ); -backtrace_symbols_fd (backtrace_fns, entries,1 ); - -return 0 ; -}tools/perf/config/feature-checks/test-bionic.c deleted +0
-6@@ -1,6 +0,0 @@ -#include <android/api-level.h> - -int main (void ) -{ -return __ANDROID_API__; -}tools/perf/config/feature-checks/test-compile.c deleted +0
-4@@ -1,4 +0,0 @@ -int main (void ) -{ -return 0 ; -}tools/perf/config/feature-checks/test-cplus-demangle.c deleted +0
-14@@ -1,14 +0,0 @@ -extern int printf (const char *format, ...); -extern char *cplus_demangle (const char *,int ); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =cplus_demangle (symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}tools/perf/config/feature-checks/test-dwarf.c deleted +0
-10@@ -1,10 +0,0 @@ -#include <dwarf.h> -#include <elfutils/libdw.h> -#include <elfutils/version.h> - -int main (void ) -{ -Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); - -return (long )dbg; -}tools/perf/config/feature-checks/test-fortify-source.c deleted +0
-6@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}tools/perf/config/feature-checks/test-glibc.c deleted +0
-8@@ -1,8 +0,0 @@ -#include <gnu/libc-version.h> - -int main (void ) -{ -const char *version =gnu_get_libc_version (); - -return (long )version; -}tools/perf/config/feature-checks/test-gtk2-infobar.c deleted +0
-11@@ -1,11 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); -gtk_info_bar_new (); - -return 0 ; -}tools/perf/config/feature-checks/test-gtk2.c deleted +0
-10@@ -1,10 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); - -return 0 ; -}tools/perf/config/feature-checks/test-hello.c deleted +0
-6@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}tools/perf/config/feature-checks/test-libaudit.c deleted +0
-10@@ -1,10 +0,0 @@ -#include <libaudit.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -printf ("error message: %s\n" ,audit_errno_to_name (0 )); - -return audit_open (); -}tools/perf/config/feature-checks/test-libbabeltrace.c deleted +0
-8@@ -1,8 +0,0 @@ - -#include <babeltrace/ctf-writer/writer.h> - -int main (void ) -{ -bt_ctf_stream_class_get_packet_context_type ((void *)0 ); -return 0 ; -}tools/perf/config/feature-checks/test-libbfd.c deleted +0
-15@@ -1,15 +0,0 @@ -#include <bfd.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =bfd_demangle (0 , symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c deleted +0
-13@@ -1,13 +0,0 @@ - -#include <elfutils/libdwfl.h> - -int main (void ) -{ -/* -* This function is guarded via: __nonnull_attribute__ (1, 2). -* Passing '1' as arguments value. This code is never executed, -* only compiled. -*/ -dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); -return 0 ; -}tools/perf/config/feature-checks/test-libelf-getphdrnum.c deleted +0
-8@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -size_t dst; - -return elf_getphdrnum (0 , &dst); -}tools/perf/config/feature-checks/test-libelf-mmap.c deleted +0
-8@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); - -return (long )elf; -}tools/perf/config/feature-checks/test-libelf.c deleted +0
-8@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); - -return (long )elf; -}tools/perf/config/feature-checks/test-libnuma.c deleted +0
-9@@ -1,9 +0,0 @@ -#include <numa.h> -#include <numaif.h> - -int main (void ) -{ -numa_available (); - -return 0 ; -}tools/perf/config/feature-checks/test-libperl.c deleted +0
-9@@ -1,9 +0,0 @@ -#include <EXTERN.h> -#include <perl.h> - -int main (void ) -{ -perl_alloc (); - -return 0 ; -}tools/perf/config/feature-checks/test-libpython-version.c deleted +0
-10@@ -1,10 +0,0 @@ -#include <Python.h> - -#if PY_VERSION_HEX >=0x03000000 -#error -#endif - -int main (void ) -{ -return 0 ; -}tools/perf/config/feature-checks/test-libpython.c deleted +0
-8@@ -1,8 +0,0 @@ -#include <Python.h> - -int main (void ) -{ -Py_Initialize (); - -return 0 ; -}tools/perf/config/feature-checks/test-libslang.c deleted +0
-6@@ -1,6 +0,0 @@ -#include <slang.h> - -int main (void ) -{ -return SLsmg_init_smg (); -}tools/perf/config/feature-checks/test-libunwind-debug-frame.c deleted +0
-16@@ -1,16 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int -UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, -unw_word_t ip,unw_word_t segbase, -const char *obj_name,unw_word_t start, -unw_word_t end); - -#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) - -int main (void ) -{ -dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); -return 0 ; -}tools/perf/config/feature-checks/test-libunwind.c deleted +0
-27@@ -1,27 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, -unw_word_t ip, -unw_dyn_info_t *di, -unw_proc_info_t *pi, -int need_unwind_info,void *arg); - - -#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) - -static unw_accessors_t accessors; - -int main (void ) -{ -unw_addr_space_t addr_space; - - addr_space =unw_create_addr_space (&accessors,0 ); -if (addr_space) -return 0 ; - -unw_init_remote (NULL , addr_space,NULL ); -dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); - -return 0 ; -}tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c deleted +0
-17@@ -1,17 +0,0 @@ -#include <stdint.h> -#include <pthread.h> -#include <sched.h> - -int main (void ) -{ -int ret =0 ; -pthread_attr_t thread_attr; -cpu_set_t cs; - -pthread_attr_init (&thread_attr); -CPU_ZERO (&cs); - - ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); - -return ret; -}tools/perf/config/feature-checks/test-stackprotector-all.c deleted +0
-6@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}tools/perf/config/feature-checks/test-sync-compare-and-swap.c deleted +0
-14@@ -1,14 +0,0 @@ -#include <stdint.h> - -volatile uint64_t x; - -int main (int argc,char *argv[]) -{ -uint64_t old, new = argc; - - argv = argv; -do { - old =__sync_val_compare_and_swap (&x,0 ,0 ); - }while (!__sync_bool_compare_and_swap (&x, old, new)); -return old == new; -}tools/perf/config/feature-checks/test-timerfd.c deleted +0
-18@@ -1,18 +0,0 @@ -/* -* test for timerfd functions used by perf-kvm-stat-live -*/ -#include <sys/timerfd.h> - -int main (void ) -{ -struct itimerspec new_value; - -int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); -if (fd <0 ) -return 1 ; - -if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) -return 1 ; - -return 0 ; -}tools/perf/config/feature-checks/test-zlib.c deleted +0
-9@@ -1,9 +0,0 @@ -#include <zlib.h> - -int main (void ) -{ -z_stream zs; - -inflateInit (&zs); -return 0 ; -}
Re: [PATCH 11/14] tools build: Move feature checks code under tools/build
Quoted 5 lines · David Ahern
Quoted 1 line · Jiri Olsa
Moving feature checks code under
tools/builddirectory.How does a specific tool specify which features are of interest? I can't imagine all features for perf are wanted by other tools.
it's described in patch 12/14
tools build: Allow to override feature checks setup
jirka
Jiri Olsa
reviewerPATCH 12/14 tools build: Allow to override feature checks setup
In reply to Jiri OlsaAllowing to override configuration variables for feature checks. Also adding automated test and documentation.
--- tools/build/Documentation/Feature.txt | 93 +++++++++++++++++++++++++++++++ tools/build/Makefile.feature | 4 +- tools/build/tests/features/Makefile | 23 ++++++++ tools/build/tests/features/Makefile.test1 | 16 ++++++ tools/build/tests/run.sh | 4 +- 5 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 tools/build/Documentation/Feature.txt create mode 100644 tools/build/tests/features/Makefile create mode 100644 tools/build/tests/features/Makefile.test1
tools/build/Documentation/Feature.txt new file +93 -0
@@ -0,0 +1,93 @@ +Feature Framework +================= +The 'feature' framework provides information for makefiles about +installed libraries and interfaces in the system. + +The 'feature' is represented by its name and simple source located +in 'tools/build/feature/test-$(name).c' file. The framework builds +each such source for configured feature and sets $(feature-$(name)) +variable to 0 or 1 if it fails or succeeds to build respectively. + +The current usage example of the feature framework is: + +--- Makefile.test + FEATURE_TESTS := glibc backtrace + FEATURE_DISPLAY := glibc + + srctree := ../../../.. + include $(srctree)/tools/build/Makefile.feature + + ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) + endif + + ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) + endif +--- + +User defines list of features to check in FEATURE_TESTS variable: + + FEATURE_TESTS := glibc backtrace + +and list of features she wishes to display in FEATURE_DISPLAY variable: + + FEATURE_DISPLAY := glibc + +then user includes Makefile.feature makefile: + + include $(srctree)/tools/build/Makefile.feature + +following output is displayed on processing of the makefile: + + $ make -f Makefile.test + + Auto-detecting system features: + ... glibc: [ on ] + +Plus following variables are defined indicating the +requested feature status: + + $(feature-glibc) + $(feature-backtrace) + +Following features are currently available for FEATURE_TESTS: + + backtrace + dwarf + fortify-source + sync-compare-and-swap + glibc + gtk2 + gtk2-infobar + libaudit + libbfd + libelf + libelf-getphdrnum + libelf-mmap + libnuma + libperl + libpython + libpython-version + libslang + libunwind + pthread-attr-setaffinity-np + stackprotector-all + timerfd + libdw-dwarf-unwind + libbabeltrace + zlib + +It's also possible to pass options for checks compilation and linking +by using following variables: + + FEATURE_CHECK_CFLAGS-$(name) + FEATURE_CHECK_LDFLAGS-$(name) + +where $(anem) represents feature name from above list. + +For example following settings will provide options for 'libunwind' +feature compilation and linking: + + FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS) + FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS)
tools/build/Makefile.feature +2 -2
@@ -27,7 +27,7 @@ endef # the rule that uses them - an example for that is the 'bionic' # feature check. ] # -FEATURE_TESTS = \ +FEATURE_TESTS ?= \ backtrace \ dwarf \ fortify-source \
@@ -53,7 +53,7 @@ FEATURE_TESTS = \ libbabeltrace \ zlib -FEATURE_DISPLAY = \ +FEATURE_DISPLAY ?= \ dwarf \ glibc \ gtk2 \
tools/build/tests/features/Makefile new file +23 -0
@@ -0,0 +1,23 @@ +all: test1 + +test1: + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + # we should get one line with 'glibc' feature status + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # we should NOT get any feature status line on second run + make -f Makefile.test1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" == "1" ]; then echo FAILED; exit 1; fi + # we should get both 'glibc' and 'backtrace' status lines now + make -f Makefile.test1 VF=1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" != "2" ]; then echo FAILED; exit 1; fi + # and fresh start without FEATURE-DUMP, expecting 'glibc' status line + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # cleanup + rm -f FEATURE-DUMP out
tools/build/tests/features/Makefile.test1 new file +16 -0
@@ -0,0 +1,16 @@ + +FEATURE_TESTS := glibc backtrace +FEATURE_DISPLAY := glibc + +srctree := ../../../.. +include $(srctree)/tools/build/Makefile.feature + +ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) +endif + +ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) +endif + +all:
tools/build/tests/run.sh +3 -1
@@ -39,4 +39,6 @@ echo -n Testing.. test_ex test_ex_suffix -echo OK +cd features && make -s -f Makefile + +if [ $? -eq 0 ]; then echo OK; fi
Signature · 1 line
1.9.3
Re: [PATCH 12/14] tools build: Allow to override feature checks setup
Quoted 2 lines · Jiri Olsa
Allowing to override configuration variables for feature checks. Also adding automated test and documentation.
Rather than an 'override' why not require users to specify feature checks of interest? ie., the previous patch moved all of perf's feature checks to a common Makefile. Why not have perf specify features of interest to it instead?
David
Re: [PATCH 12/14] tools build: Allow to override feature checks setup
Quoted 8 lines · David Ahern
Quoted 2 lines · Jiri Olsa
Allowing to override configuration variables for feature checks. Also adding automated test and documentation.
Rather than an 'override' why not require users to specify feature checks of interest? ie., the previous patch moved all of perf's feature checks to a common
Makefile. Why not have perf specify features of interest to it instead?
well, thats what they can do as you can see in the example:
+ FEATURE_TESTS := glibc backtrace
+ FEATURE_DISPLAY := glibc
+
+ srctree := ../../../..
+ include $(srctree)/tools/build/Makefile.feature
you specify features you want to check in FEATURE_TESTS variable and features status you want to display in FEATURE_DISPLAY variable
at the mean time the default settings for those 2 is what perf uses now (perf is the only user)
in future when there's multiple users, perf will set those variables as well..
jirka
Namhyung Kim
maintainerRe: [PATCH 12/14] tools build: Allow to override feature checks setup
In reply to Jiri Olsatools/build/tests/features/Makefile line 7
Quoted 13 lines · Jiri Olsa
tools/build/tests/features/Makefile new file +7
-0@@ -0,0 +1,23 @@ +all: test1 + +test1: + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + # we should get one line with 'glibc' feature status + features=`cat out | grep '\.\.\.' | wc -l`; \
It seems this cat | grep | wc -l pipeline can be replaced with a single grep -cF ... out command.
Thanks,
Namhyung
Quoted 16 lines
tools/build/tests/features/Makefile new file +16
-0+ if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # we should NOT get any feature status line on second run + make -f Makefile.test1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" == "1" ]; then echo FAILED; exit 1; fi + # we should get both 'glibc' and 'backtrace' status lines now + make -f Makefile.test1 VF=1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" != "2" ]; then echo FAILED; exit 1; fi + # and fresh start without FEATURE-DUMP, expecting 'glibc' status line + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + features=`cat out | grep '\.\.\.' | wc -l`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # cleanup + rm -f FEATURE-DUMP out
PATCH v2 12/14 tools build: Allow to override feature checks setup
Quoted 17 lines · Namhyung Kim
tools/build/tests/features/Makefile line 7
Quoted 13 lines · Jiri Olsa
tools/build/tests/features/Makefile new file +7
-0@@ -0,0 +1,23 @@ +all: test1 + +test1: + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + # we should get one line with 'glibc' feature status + features=`cat out | grep '\.\.\.' | wc -l`; \It seems this
cat | grep | wc -lpipeline can be replaced with a singlegrep -cF ... outcommand.
right.. v2 attached, perf/build branch updated ;-)
thanks,
jirka
---
Allowing to override configuration variables for feature checks. Also adding automated test and documentation.
--- tools/build/Documentation/Feature.txt | 93 +++++++++++++++++++++++++++++++ tools/build/Makefile.feature | 4 +- tools/build/tests/features/Makefile | 23 ++++++++ tools/build/tests/features/Makefile.test1 | 16 ++++++ tools/build/tests/run.sh | 4 +- 5 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 tools/build/Documentation/Feature.txt create mode 100644 tools/build/tests/features/Makefile create mode 100644 tools/build/tests/features/Makefile.test1
tools/build/Documentation/Feature.txt new file +93 -0
@@ -0,0 +1,93 @@ +Feature Framework +================= +The 'feature' framework provides information for makefiles about +installed libraries and interfaces in the system. + +The 'feature' is represented by its name and simple source located +in 'tools/build/feature/test-$(name).c' file. The framework builds +each such source for configured feature and sets $(feature-$(name)) +variable to 0 or 1 if it fails or succeeds to build respectively. + +The current usage example of the feature framework is: + +--- Makefile.test + FEATURE_TESTS := glibc backtrace + FEATURE_DISPLAY := glibc + + srctree := ../../../.. + include $(srctree)/tools/build/Makefile.feature + + ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) + endif + + ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) + endif +--- + +User defines list of features to check in FEATURE_TESTS variable: + + FEATURE_TESTS := glibc backtrace + +and list of features she wishes to display in FEATURE_DISPLAY variable: + + FEATURE_DISPLAY := glibc + +then user includes Makefile.feature makefile: + + include $(srctree)/tools/build/Makefile.feature + +following output is displayed on processing of the makefile: + + $ make -f Makefile.test + + Auto-detecting system features: + ... glibc: [ on ] + +Plus following variables are defined indicating the +requested feature status: + + $(feature-glibc) + $(feature-backtrace) + +Following features are currently available for FEATURE_TESTS: + + backtrace + dwarf + fortify-source + sync-compare-and-swap + glibc + gtk2 + gtk2-infobar + libaudit + libbfd + libelf + libelf-getphdrnum + libelf-mmap + libnuma + libperl + libpython + libpython-version + libslang + libunwind + pthread-attr-setaffinity-np + stackprotector-all + timerfd + libdw-dwarf-unwind + libbabeltrace + zlib + +It's also possible to pass options for checks compilation and linking +by using following variables: + + FEATURE_CHECK_CFLAGS-$(name) + FEATURE_CHECK_LDFLAGS-$(name) + +where $(anem) represents feature name from above list. + +For example following settings will provide options for 'libunwind' +feature compilation and linking: + + FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS) + FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS)
tools/build/Makefile.feature +2 -2
@@ -27,7 +27,7 @@ endef # the rule that uses them - an example for that is the 'bionic' # feature check. ] # -FEATURE_TESTS = \ +FEATURE_TESTS ?= \ backtrace \ dwarf \ fortify-source \
@@ -53,7 +53,7 @@ FEATURE_TESTS = \ libbabeltrace \ zlib -FEATURE_DISPLAY = \ +FEATURE_DISPLAY ?= \ dwarf \ glibc \ gtk2 \
tools/build/tests/features/Makefile new file +23 -0
@@ -0,0 +1,23 @@ +all: test1 + +test1: + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + # we should get one line with 'glibc' feature status + features=`grep -cF ... out`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # we should NOT get any feature status line on second run + make -f Makefile.test1 > out + features=`grep -cF ... out`; \ + if [ "$$features" == "1" ]; then echo FAILED; exit 1; fi + # we should get both 'glibc' and 'backtrace' status lines now + make -f Makefile.test1 VF=1 > out + features=`grep -cF ... out`; \ + if [ "$$features" != "2" ]; then echo FAILED; exit 1; fi + # and fresh start without FEATURE-DUMP, expecting 'glibc' status line + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + features=`grep -cF ... out`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # cleanup + rm -f FEATURE-DUMP out
tools/build/tests/features/Makefile.test1 new file +16 -0
@@ -0,0 +1,16 @@ + +FEATURE_TESTS := glibc backtrace +FEATURE_DISPLAY := glibc + +srctree := ../../../.. +include $(srctree)/tools/build/Makefile.feature + +ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) +endif + +ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) +endif + +all:
tools/build/tests/run.sh +3 -1
@@ -39,4 +39,6 @@ echo -n Testing.. test_ex test_ex_suffix -echo OK +cd features && make -s -f Makefile + +if [ $? -eq 0 ]; then echo OK; fi
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 13/14 tools build: Fix feature_check name clash
In reply to Jiri OlsaWe have 2 feature_check functions, which conflict with each other. Fixing it by renaming the latter to feature_display_check.
--- tools/build/Makefile.feature | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
tools/build/Makefile.feature +3 -3
@@ -136,14 +136,14 @@ ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") feature_display := 1 endif -feature_check = $(eval $(feature_check_code)) -define feature_check_code +feature_display_check = $(eval $(feature_check_code)) +define feature_display_check_code ifneq ($(feature-$(1)), 1) feature_display := 1 endif endef -$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) +$(foreach feat,$(FEATURE_DISPLAY),$(call feature_display_check,$(feat))) ifeq ($(VF),1) feature_display := 1
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH 14/14 tools build: Disable default check for libbabeltrace
In reply to Jiri OlsaRemove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via feature_check before $(feature-libbabeltrace) is used.
--- tools/build/Makefile.feature | 2 -- tools/build/feature/Makefile | 2 +- tools/build/feature/test-all.c | 8 ++++++++ tools/perf/config/Makefile | 9 +++++---- 4 files changed, 14 insertions(+), 7 deletions(-)
tools/build/Makefile.feature +0 -2
@@ -50,7 +50,6 @@ FEATURE_TESTS ?= \ stackprotector-all \ timerfd \ libdw-dwarf-unwind \ - libbabeltrace \ zlib FEATURE_DISPLAY ?= \
@@ -66,7 +65,6 @@ FEATURE_DISPLAY ?= \ libslang \ libunwind \ libdw-dwarf-unwind \ - libbabeltrace \ zlib # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
tools/build/feature/Makefile +1 -1
@@ -44,7 +44,7 @@ BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $( ############################### test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz test-hello.bin: $(BUILD)
tools/build/feature/test-all.c +8 -0
@@ -101,9 +101,17 @@# include "test-pthread_attr_setaffinity_np.c" #undef main +# if 0 +/* +* Disable libbabeltrace check for test-all, because the requested +* library version is not released yet in most distributions. Will +* reenable later. +*/ +#define main main_test_libbabeltrace# include "test-libbabeltrace.c" #undef main +#endif int main (int argc,char *argv[]) {
tools/perf/config/Makefile +5 -4
@@ -588,14 +588,15 @@ else endif ifndef NO_LIBBABELTRACE - ifeq ($(feature-libbabeltrace), 0) - msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev); - NO_LIBBABELTRACE := 1 - else + $(call feature_check,libbabeltrace) + ifeq ($(feature-libbabeltrace), 1) CFLAGS += -DHAVE_LIBBABELTRACE_SUPPORT $(LIBBABELTRACE_CFLAGS) LDFLAGS += $(LIBBABELTRACE_LDFLAGS) EXTLIBS += -lbabeltrace-ctf $(call detected,CONFIG_LIBBABELTRACE) + else + msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev); + NO_LIBBABELTRACE := 1 endif endif
Signature · 1 line
1.9.3
PATCH v2 14/14 tools build: Disable default check for libbabeltrace
Quoted 7 lines · Jiri Olsa
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via
feature_checkbefore $(feature-libbabeltrace) is used.
Quoted 8 lines
Signed-off-by Jiri Olsa <[email protected]>Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Ingo Molnar <[email protected]>Cc Namhyung Kim <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>
forgot to remove test-all.c::main's call for main_test_libbabeltrace, v2 attached and perf/build branch updated..
thanks,
jirka
---
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via feature_check before $(feature-libbabeltrace) is used.
--- tools/build/Makefile.feature | 2 -- tools/build/feature/Makefile | 2 +- tools/build/feature/test-all.c | 9 ++++++++- tools/perf/config/Makefile | 9 +++++---- 4 files changed, 14 insertions(+), 8 deletions(-)
tools/build/Makefile.feature +0 -2
@@ -50,7 +50,6 @@ FEATURE_TESTS ?= \ stackprotector-all \ timerfd \ libdw-dwarf-unwind \ - libbabeltrace \ zlib FEATURE_DISPLAY ?= \
@@ -66,7 +65,6 @@ FEATURE_DISPLAY ?= \ libslang \ libunwind \ libdw-dwarf-unwind \ - libbabeltrace \ zlib # Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features.
tools/build/feature/Makefile +1 -1
@@ -44,7 +44,7 @@ BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $( ############################### test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz test-hello.bin: $(BUILD)
tools/build/feature/test-all.c +8 -1
@@ -101,9 +101,17 @@# include "test-pthread_attr_setaffinity_np.c" #undef main +# if 0 +/* +* Disable libbabeltrace check for test-all, because the requested +* library version is not released yet in most distributions. Will +* reenable later. +*/ +#define main main_test_libbabeltrace# include "test-libbabeltrace.c" #undef main +#endif int main (int argc,char *argv[]) {
@@ -130,7 +138,6 @@ int main(int argc, char *argv[])main_test_sync_compare_and_swap (argc, argv);main_test_zlib ();main_test_pthread_attr_setaffinity_np (); -main_test_libbabeltrace ();return 0 ; }
tools/perf/config/Makefile +5 -4
@@ -588,14 +588,15 @@ else endif ifndef NO_LIBBABELTRACE - ifeq ($(feature-libbabeltrace), 0) - msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev); - NO_LIBBABELTRACE := 1 - else + $(call feature_check,libbabeltrace) + ifeq ($(feature-libbabeltrace), 1) CFLAGS += -DHAVE_LIBBABELTRACE_SUPPORT $(LIBBABELTRACE_CFLAGS) LDFLAGS += $(LIBBABELTRACE_LDFLAGS) EXTLIBS += -lbabeltrace-ctf $(call detected,CONFIG_LIBBABELTRACE) + else + msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev); + NO_LIBBABELTRACE := 1 endif endif
Signature · 1 line
1.9.3
Re: [PATCHv2 14/14] tools build: Disable default check for libbabeltrace
Quoted 40 lines · Jiri Olsa
Quoted 7 lines · Jiri Olsa
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via
feature_checkbefore $(feature-libbabeltrace) is used.Quoted 8 lines
Signed-off-by Jiri Olsa <[email protected]>Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Ingo Molnar <[email protected]>Cc Namhyung Kim <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>forgot to remove test-all.c::main's call for
main_test_libbabeltrace, v2 attached and perf/build branch updated..thanks,
jirka---
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.Calling libbabeltrace check manually via
feature_checkbefore $(feature-libbabeltrace) is used.Signed-off-by Jiri Olsa <[email protected]>Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Ingo Molnar <[email protected]>Cc Namhyung Kim <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>
Quoted 6 lines
--- tools/build/Makefile.feature | 2 -- tools/build/feature/Makefile | 2 +- tools/build/feature/test-all.c | 9 ++++++++- tools/perf/config/Makefile | 9 +++++---- 4 files changed, 14 insertions(+), 8 deletions(-)
Thanks,
Ingo
Quoted 7 lines · Jiri Olsa
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.It's also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/build
So the series looks really good to me, and I also tested it, pulled it on top of tip:master, and feature detection still worked just as expected.
I noticed one detail:
Quoted 2 lines
Jiri Olsa (14):
tools build: Remove Copyright from credits message
Please just leave the current credits in place, as these gents certainly have a copyright in the code as well, and since we pushed the original attribution upstream already, so we cannot (and don't want to) remove it. But yes, in general authors add their own copyrights.
Thanks,
Ingo
Quoted 17 lines · Ingo Molnar
Quoted 7 lines · Jiri Olsa
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.It's also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/buildSo the series looks really good to me, and I also tested it, pulled it on top of tip:master, and feature detection still worked just as expected.
I noticed one detail:
Quoted 8 lines
Quoted 2 lines
Jiri Olsa (14):
tools build: Remove Copyright from credits messagePlease just leave the current credits in place, as these gents certainly have a copyright in the code as well, and since we pushed the original attribution upstream already, so we cannot (and don't want to) remove it. But yes, in general authors add their own copyrights.
ok, no problem
Arnaldo, I just removed it out of my perf/build branch
thanks,
jirka