Skip to contentSkip to conversation

tools build: Move features framework into tools/build

PATCH Superseded Jiri Olsa 5 participants 25 messages Mar 3, 2015 – Mar 4, 2015 perf events

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Jiri Olsa

author reviewer
#0 lore raw

cover 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

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]>

---
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.test1
author reviewer
#1 lore raw

PATCH 1/14 tools build: Remove Copyright from credits message

It's not a 'Copyright' message just credits.

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.build | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
tools/build/Makefile.build +4 -5
index 10df57237a66..8700cc313061 100644
@@ -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
author reviewer
#2 lore raw

PATCH 2/14 perf build: Get rid of LIB_INCLUDE variable

In reply to Jiri Olsa

It has no use, so we can directly use the value for CFLAGS.

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/perf/config/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
tools/perf/config/Makefile +1 -2
index d44c64d64465..661316a367c7 100644
@@ -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
author reviewer
#3 lore raw

PATCH 3/14 perf build: Rename CORE_FEATURE_TESTS to FEATURE_TESTS

In reply to Jiri Olsa

Preparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.

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/perf/config/Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
index 661316a367c7..8f0b9c319187 100644
@@ -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
author reviewer
#4 lore raw

PATCH 4/14 perf build: Get rid of VF_FEATURE_TESTS

In reply to Jiri Olsa

It 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.

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/perf/config/Makefile | 32 +++++++-------------------------
 1 file changed, 7 insertions(+), 25 deletions(-)
tools/perf/config/Makefile +7 -25
index 8f0b9c319187..09135b763e6d 100644
@@ -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
author reviewer
#5 lore raw

PATCH 5/14 perf build: Rename display_lib into feature_display

In reply to Jiri Olsa

Preparing for feature checks separation, moving related stuff under 'feature*' namespace.

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/perf/config/Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
index 09135b763e6d..03d420570d6c 100644
@@ -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
author reviewer
#6 lore raw

PATCH 6/14 perf build: Rename display_vf to feature_verbose

In reply to Jiri Olsa

Preparing for feature checks separation, moving related stuff under 'feature*' namespace.

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/perf/config/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
tools/perf/config/Makefile +2 -2
index 03d420570d6c..7b6e712d98a6 100644
@@ -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
author reviewer
#7 lore raw

PATCH 7/14 perf build: Rename PERF-FEATURES into FEATURE-DUMP

In reply to Jiri Olsa

Preparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.

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/perf/Makefile.perf   |  2 +-
 tools/perf/config/Makefile | 12 ++++++------
 2 files changed, 7 insertions(+), 7 deletions(-)
tools/perf/Makefile.perf +1 -1
index ec4c063ed9f3..e323eab10694 100644
@@ -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
index 7b6e712d98a6..7906b795e2d8 100644
@@ -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
author reviewer
#8 lore raw

PATCH 8/14 perf build: Rename feature_print_var_code to print_var_code

In reply to Jiri Olsa

As it has nothing to do with features and won't be moved into tools/build.

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/perf/config/Makefile | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)
tools/perf/config/Makefile +12 -11
index 7906b795e2d8..3706d29b4d99 100644
@@ -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
author reviewer
#9 lore raw

PATCH 9/14 perf build: Separate feature make support into config/Makefile.feature

In reply to Jiri Olsa

Move feature related code into separate makefile. The new Makefile.feature is included from config/Makefile. It will be moved later into tools/build.

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/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
index 3706d29b4d99..01d8acc5453e 100644
@@ -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
author reviewer
#10 lore raw

PATCH 10/14 perf build: Make features checks directory configurable

In reply to Jiri Olsa

Putting feature checks directory into $feature_dir, so it's easy to configure when we move it to bools/build later.

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/perf/config/Makefile.feature | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
tools/perf/config/Makefile.feature +4 -2
index 32f4f453f3d1..55b671a93d67 100644
@@ -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
author reviewer
#11 lore raw

PATCH 11/14 tools build: Move feature checks code under tools/build

In reply to Jiri Olsa

Moving 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.

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 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
new file mode 100644
index 000000000000..3249fad27993
@@ -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
new file mode 100644
index 000000000000..80f3da0c3515
@@ -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
new file mode 100644
index 000000000000..7124aa1dc8fb
@@ -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
new file mode 100644
index 000000000000..eac24e9513eb
@@ -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
new file mode 100644
index 000000000000..31dbf45bf99c
@@ -0,0 +1,4 @@
+int main(void)
+{
+	return 0;
+}
tools/build/feature/test-cplus-demangle.c new file +14 -0
new file mode 100644
index 000000000000..610c686e0009
@@ -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
new file mode 100644
index 000000000000..3fc1801ce4a9
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+	return puts("hi");
+}
tools/build/feature/test-glibc.c new file +8 -0
new file mode 100644
index 000000000000..b0820345cd98
@@ -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
new file mode 100644
index 000000000000..397b4646d066
@@ -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
new file mode 100644
index 000000000000..6bd80e509439
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+	return puts("hi");
+}
tools/build/feature/test-libaudit.c new file +10 -0
new file mode 100644
index 000000000000..afc019f08641
@@ -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
new file mode 100644
index 000000000000..3b7dd68a4d52
@@ -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
new file mode 100644
index 000000000000..24059907e990
@@ -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
new file mode 100644
index 000000000000..f676a3ff442a
@@ -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
new file mode 100644
index 000000000000..d710459306c3
@@ -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
new file mode 100644
index 000000000000..564427d7ef18
@@ -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
new file mode 100644
index 000000000000..08db322d8957
@@ -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
new file mode 100644
index 000000000000..4763d9cd587d
@@ -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
new file mode 100644
index 000000000000..8871f6a0fdb4
@@ -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
new file mode 100644
index 000000000000..facea122d812
@@ -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
new file mode 100644
index 000000000000..b24b28ad6324
@@ -0,0 +1,8 @@
+#include <Python.h>
+
+int main(void)
+{
+	Py_Initialize();
+
+	return 0;
+}
tools/build/feature/test-libslang.c new file +6 -0
new file mode 100644
index 000000000000..22ff22ed94d1
@@ -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
new file mode 100644
index 000000000000..0ef8087a104a
@@ -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
new file mode 100644
index 000000000000..43b9369bcab7
@@ -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
new file mode 100644
index 000000000000..fdada5e8d454
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -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
new file mode 100644
index 000000000000..c34d4ca4af56
@@ -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
new file mode 100644
index 000000000000..8c5c083b4d3c
@@ -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
new file mode 100644
index 000000000000..e111fff6240e
@@ -0,0 +1,9 @@
+#include <zlib.h>
+
+int main(void)
+{
+	z_stream zs;
+
+	inflateInit(&zs);
+	return 0;
+}
tools/perf/Makefile.perf +1 -1
index e323eab10694..d5b9e0dae334 100644
@@ -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
index 01d8acc5453e..df666a596c2a 100644
@@ -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
deleted file mode 100644
index 80f3da0c3515..000000000000
@@ -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
deleted file mode 100644
index 7124aa1dc8fb..000000000000
@@ -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
deleted file mode 100644
index eac24e9513eb..000000000000
@@ -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
deleted file mode 100644
index 31dbf45bf99c..000000000000
@@ -1,4 +0,0 @@
-int main(void)
-{
-	return 0;
-}
tools/perf/config/feature-checks/test-cplus-demangle.c deleted +0 -14
deleted file mode 100644
index 610c686e0009..000000000000
@@ -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
deleted file mode 100644
index 3fc1801ce4a9..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-	return puts("hi");
-}
tools/perf/config/feature-checks/test-glibc.c deleted +0 -8
deleted file mode 100644
index b0820345cd98..000000000000
@@ -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
deleted file mode 100644
index 397b4646d066..000000000000
@@ -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
deleted file mode 100644
index 6bd80e509439..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-	return puts("hi");
-}
tools/perf/config/feature-checks/test-libaudit.c deleted +0 -10
deleted file mode 100644
index afc019f08641..000000000000
@@ -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
deleted file mode 100644
index 3b7dd68a4d52..000000000000
@@ -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
deleted file mode 100644
index 24059907e990..000000000000
@@ -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
deleted file mode 100644
index f676a3ff442a..000000000000
@@ -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
deleted file mode 100644
index d710459306c3..000000000000
@@ -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
deleted file mode 100644
index 564427d7ef18..000000000000
@@ -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
deleted file mode 100644
index 08db322d8957..000000000000
@@ -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
deleted file mode 100644
index 4763d9cd587d..000000000000
@@ -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
deleted file mode 100644
index 8871f6a0fdb4..000000000000
@@ -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
deleted file mode 100644
index facea122d812..000000000000
@@ -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
deleted file mode 100644
index b24b28ad6324..000000000000
@@ -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
deleted file mode 100644
index 22ff22ed94d1..000000000000
@@ -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
deleted file mode 100644
index 0ef8087a104a..000000000000
@@ -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
deleted file mode 100644
index 43b9369bcab7..000000000000
@@ -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
deleted file mode 100644
index fdada5e8d454..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -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
deleted file mode 100644
index c34d4ca4af56..000000000000
@@ -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
deleted file mode 100644
index 8c5c083b4d3c..000000000000
@@ -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
deleted file mode 100644
index e111fff6240e..000000000000
@@ -1,9 +0,0 @@
-#include <zlib.h>
-
-int main(void)
-{
-	z_stream zs;
-
-	inflateInit(&zs);
-	return 0;
-}
Signature · 1 line
1.9.3
#12 lore raw

Re: [PATCH 11/14] tools build: Move feature checks code under tools/build

Quoted 1 line · Jiri Olsa

Moving feature checks code under tools/build directory.

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.

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 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
new file mode 100644
index 000000000000..3249fad27993
@@ -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
new file mode 100644
index 000000000000..80f3da0c3515
@@ -0,0 +1,2 @@
+*.d
+*.bin
tools/build/feature/Makefile new file +159 -0
new file mode 100644
index 000000000000..8fe067864957
@@ -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) *.d
tools/build/feature/test-all.c new file +136 -0
new file mode 100644
index 000000000000..1ffc3da5ca10
@@ -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
new file mode 100644
index 000000000000..7124aa1dc8fb
@@ -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
new file mode 100644
index 000000000000..eac24e9513eb
@@ -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
new file mode 100644
index 000000000000..31dbf45bf99c
@@ -0,0 +1,4 @@
+int main(void)
+{
+	return 0;
+}
tools/build/feature/test-cplus-demangle.c new file +14 -0
new file mode 100644
index 000000000000..610c686e0009
@@ -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
new file mode 100644
index 000000000000..3fc1801ce4a9
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+	return puts("hi");
+}
tools/build/feature/test-glibc.c new file +8 -0
new file mode 100644
index 000000000000..b0820345cd98
@@ -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
new file mode 100644
index 000000000000..397b4646d066
@@ -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
new file mode 100644
index 000000000000..6bd80e509439
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+	return puts("hi");
+}
tools/build/feature/test-libaudit.c new file +10 -0
new file mode 100644
index 000000000000..afc019f08641
@@ -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
new file mode 100644
index 000000000000..3b7dd68a4d52
@@ -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
new file mode 100644
index 000000000000..24059907e990
@@ -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
new file mode 100644
index 000000000000..f676a3ff442a
@@ -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
new file mode 100644
index 000000000000..d710459306c3
@@ -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
new file mode 100644
index 000000000000..564427d7ef18
@@ -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
new file mode 100644
index 000000000000..08db322d8957
@@ -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
new file mode 100644
index 000000000000..4763d9cd587d
@@ -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
new file mode 100644
index 000000000000..8871f6a0fdb4
@@ -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
new file mode 100644
index 000000000000..facea122d812
@@ -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
new file mode 100644
index 000000000000..b24b28ad6324
@@ -0,0 +1,8 @@
+#include <Python.h>
+
+int main(void)
+{
+	Py_Initialize();
+
+	return 0;
+}
tools/build/feature/test-libslang.c new file +6 -0
new file mode 100644
index 000000000000..22ff22ed94d1
@@ -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
new file mode 100644
index 000000000000..0ef8087a104a
@@ -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
new file mode 100644
index 000000000000..43b9369bcab7
@@ -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
new file mode 100644
index 000000000000..fdada5e8d454
@@ -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
new file mode 100644
index 000000000000..c9f398d87868
@@ -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
new file mode 100644
index 000000000000..c34d4ca4af56
@@ -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
new file mode 100644
index 000000000000..8c5c083b4d3c
@@ -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
new file mode 100644
index 000000000000..e111fff6240e
@@ -0,0 +1,9 @@
+#include <zlib.h>
+
+int main(void)
+{
+	z_stream zs;
+
+	inflateInit(&zs);
+	return 0;
+}
tools/perf/Makefile.perf +1 -1
index e323eab10694..d5b9e0dae334 100644
@@ -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
index 01d8acc5453e..df666a596c2a 100644
@@ -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
deleted file mode 100644
index 55b671a93d67..000000000000
@@ -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 )
-endif
tools/perf/config/feature-checks/.gitignore deleted +0 -2
deleted file mode 100644
index 80f3da0c3515..000000000000
@@ -1,2 +0,0 @@
-*.d
-*.bin
tools/perf/config/feature-checks/Makefile deleted +0 -159
deleted file mode 100644
index 8fe067864957..000000000000
@@ -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) *.d
tools/perf/config/feature-checks/test-all.c deleted +0 -136
deleted file mode 100644
index 1ffc3da5ca10..000000000000
@@ -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
deleted file mode 100644
index 7124aa1dc8fb..000000000000
@@ -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
deleted file mode 100644
index eac24e9513eb..000000000000
@@ -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
deleted file mode 100644
index 31dbf45bf99c..000000000000
@@ -1,4 +0,0 @@
-int main(void)
-{
-	return 0;
-}
tools/perf/config/feature-checks/test-cplus-demangle.c deleted +0 -14
deleted file mode 100644
index 610c686e0009..000000000000
@@ -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
deleted file mode 100644
index 3fc1801ce4a9..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-	return puts("hi");
-}
tools/perf/config/feature-checks/test-glibc.c deleted +0 -8
deleted file mode 100644
index b0820345cd98..000000000000
@@ -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
deleted file mode 100644
index 397b4646d066..000000000000
@@ -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
deleted file mode 100644
index 6bd80e509439..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-	return puts("hi");
-}
tools/perf/config/feature-checks/test-libaudit.c deleted +0 -10
deleted file mode 100644
index afc019f08641..000000000000
@@ -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
deleted file mode 100644
index 3b7dd68a4d52..000000000000
@@ -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
deleted file mode 100644
index 24059907e990..000000000000
@@ -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
deleted file mode 100644
index f676a3ff442a..000000000000
@@ -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
deleted file mode 100644
index d710459306c3..000000000000
@@ -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
deleted file mode 100644
index 564427d7ef18..000000000000
@@ -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
deleted file mode 100644
index 08db322d8957..000000000000
@@ -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
deleted file mode 100644
index 4763d9cd587d..000000000000
@@ -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
deleted file mode 100644
index 8871f6a0fdb4..000000000000
@@ -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
deleted file mode 100644
index facea122d812..000000000000
@@ -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
deleted file mode 100644
index b24b28ad6324..000000000000
@@ -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
deleted file mode 100644
index 22ff22ed94d1..000000000000
@@ -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
deleted file mode 100644
index 0ef8087a104a..000000000000
@@ -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
deleted file mode 100644
index 43b9369bcab7..000000000000
@@ -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
deleted file mode 100644
index fdada5e8d454..000000000000
@@ -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
deleted file mode 100644
index c9f398d87868..000000000000
@@ -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
deleted file mode 100644
index c34d4ca4af56..000000000000
@@ -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
deleted file mode 100644
index 8c5c083b4d3c..000000000000
@@ -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
deleted file mode 100644
index e111fff6240e..000000000000
@@ -1,9 +0,0 @@
-#include <zlib.h>
-
-int main(void)
-{
-	z_stream zs;
-
-	inflateInit(&zs);
-	return 0;
-}
#13 lore raw

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/build directory.

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

author reviewer
#14 lore raw

PATCH 12/14 tools build: Allow to override feature checks setup

In reply to Jiri Olsa

Allowing to override configuration variables for feature checks. Also adding automated test and documentation.

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/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
new file mode 100644
index 000000000000..0c75419ba803
@@ -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
index 3249fad27993..5b712ed7e4c7 100644
@@ -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
new file mode 100644
index 000000000000..31782a1d3758
@@ -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
new file mode 100644
index 000000000000..101b78f777c1
@@ -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
index 5494f8ea7567..bd6dc8ee1830 100755
@@ -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
#15 lore raw

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

#16 lore raw

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

maintainer
#17 lore raw

Re: [PATCH 12/14] tools build: Allow to override feature checks setup

In reply to Jiri Olsa

tools/build/tests/features/Makefile line 7

Quoted 13 lines · Jiri Olsa
tools/build/tests/features/Makefile new file +7 -0
new file mode 100644
index 000000000000..31782a1d3758
@@ -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
#18 lore raw

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
new file mode 100644
index 000000000000..31782a1d3758
@@ -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.

right.. v2 attached, perf/build branch updated ;-)

thanks,
jirka

---
Allowing to override configuration variables for feature checks. Also adding automated test and documentation.

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/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
new file mode 100644
index 000000000000..0c75419ba803
@@ -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
index 3249fad27993..5b712ed7e4c7 100644
@@ -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
new file mode 100644
index 000000000000..cb94dda32534
@@ -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
new file mode 100644
index 000000000000..101b78f777c1
@@ -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
index 5494f8ea7567..bd6dc8ee1830 100755
@@ -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
author reviewer
#19 lore raw

PATCH 13/14 tools build: Fix feature_check name clash

In reply to Jiri Olsa

We have 2 feature_check functions, which conflict with each other. Fixing it by renaming the latter to feature_display_check.

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 | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
tools/build/Makefile.feature +3 -3
index 5b712ed7e4c7..7b587178efea 100644
@@ -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
author reviewer
#20 lore raw

PATCH 14/14 tools build: Disable default check for libbabeltrace

In reply to 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_check before $(feature-libbabeltrace) is used.

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   | 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
index 7b587178efea..12e58703a364 100644
@@ -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
index 8fe067864957..b6e2e312ba54 100644
@@ -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
index 1ffc3da5ca10..0c312280d36b 100644
@@ -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
index df666a596c2a..480631eccf50 100644
@@ -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
#21 lore raw

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_check before $(feature-libbabeltrace) is used.

Quoted 8 lines
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.

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   | 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
index 7b587178efea..12e58703a364 100644
@@ -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
index 8fe067864957..b6e2e312ba54 100644
@@ -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
index 1ffc3da5ca10..06f5c8a67cb2 100644
@@ -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
index df666a596c2a..480631eccf50 100644
@@ -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
Acked-by on v2 14/14
#22 lore raw

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_check before $(feature-libbabeltrace) is used.

Quoted 8 lines
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.

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

#23 lore raw
In reply to Jiri Olsa
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

#24 lore raw
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/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 8 lines
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.

ok, no problem

Arnaldo, I just removed it out of my perf/build branch

thanks,
jirka