On 3/3/15 7:26 AM, Jiri Olsa wrote:
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


Changing also $feature_dir to point to new feature directory
location and perf Makefiles to include Makefile.feature from
new location.

Signed-off-by: Jiri Olsa <jo...@kernel.org>
Cc: Arnaldo Carvalho de Melo <a...@redhat.com>
Cc: Corey Ashford <cjash...@linux.vnet.ibm.com>
Cc: David Ahern <david.ah...@oracle.com>
Cc: Ingo Molnar <mi...@kernel.org>
Cc: Namhyung Kim <namhy...@kernel.org>
Cc: Paul Mackerras <pau...@samba.org>
Cc: Peter Zijlstra <pet...@infradead.org>
---
  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

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
new file mode 100644
index 000000000000..3249fad27993
--- /dev/null
+++ b/tools/build/Makefile.feature
@@ -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
diff --git a/tools/build/feature/.gitignore b/tools/build/feature/.gitignore
new file mode 100644
index 000000000000..80f3da0c3515
--- /dev/null
+++ b/tools/build/feature/.gitignore
@@ -0,0 +1,2 @@
+*.d
+*.bin
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
new file mode 100644
index 000000000000..8fe067864957
--- /dev/null
+++ b/tools/build/feature/Makefile
@@ -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
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
new file mode 100644
index 000000000000..1ffc3da5ca10
--- /dev/null
+++ b/tools/build/feature/test-all.c
@@ -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;
+}
diff --git a/tools/build/feature/test-backtrace.c 
b/tools/build/feature/test-backtrace.c
new file mode 100644
index 000000000000..7124aa1dc8fb
--- /dev/null
+++ b/tools/build/feature/test-backtrace.c
@@ -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;
+}
diff --git a/tools/build/feature/test-bionic.c 
b/tools/build/feature/test-bionic.c
new file mode 100644
index 000000000000..eac24e9513eb
--- /dev/null
+++ b/tools/build/feature/test-bionic.c
@@ -0,0 +1,6 @@
+#include <android/api-level.h>
+
+int main(void)
+{
+       return __ANDROID_API__;
+}
diff --git a/tools/build/feature/test-compile.c 
b/tools/build/feature/test-compile.c
new file mode 100644
index 000000000000..31dbf45bf99c
--- /dev/null
+++ b/tools/build/feature/test-compile.c
@@ -0,0 +1,4 @@
+int main(void)
+{
+       return 0;
+}
diff --git a/tools/build/feature/test-cplus-demangle.c 
b/tools/build/feature/test-cplus-demangle.c
new file mode 100644
index 000000000000..610c686e0009
--- /dev/null
+++ b/tools/build/feature/test-cplus-demangle.c
@@ -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;
+}
diff --git a/tools/build/feature/test-dwarf.c b/tools/build/feature/test-dwarf.c
new file mode 100644
index 000000000000..3fc1801ce4a9
--- /dev/null
+++ b/tools/build/feature/test-dwarf.c
@@ -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;
+}
diff --git a/tools/build/feature/test-fortify-source.c 
b/tools/build/feature/test-fortify-source.c
new file mode 100644
index 000000000000..c9f398d87868
--- /dev/null
+++ b/tools/build/feature/test-fortify-source.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+       return puts("hi");
+}
diff --git a/tools/build/feature/test-glibc.c b/tools/build/feature/test-glibc.c
new file mode 100644
index 000000000000..b0820345cd98
--- /dev/null
+++ b/tools/build/feature/test-glibc.c
@@ -0,0 +1,8 @@
+#include <gnu/libc-version.h>
+
+int main(void)
+{
+       const char *version = gnu_get_libc_version();
+
+       return (long)version;
+}
diff --git a/tools/build/feature/test-gtk2-infobar.c 
b/tools/build/feature/test-gtk2-infobar.c
new file mode 100644
index 000000000000..397b4646d066
--- /dev/null
+++ b/tools/build/feature/test-gtk2-infobar.c
@@ -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;
+}
diff --git a/tools/build/feature/test-gtk2.c b/tools/build/feature/test-gtk2.c
new file mode 100644
index 000000000000..6bd80e509439
--- /dev/null
+++ b/tools/build/feature/test-gtk2.c
@@ -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;
+}
diff --git a/tools/build/feature/test-hello.c b/tools/build/feature/test-hello.c
new file mode 100644
index 000000000000..c9f398d87868
--- /dev/null
+++ b/tools/build/feature/test-hello.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+       return puts("hi");
+}
diff --git a/tools/build/feature/test-libaudit.c 
b/tools/build/feature/test-libaudit.c
new file mode 100644
index 000000000000..afc019f08641
--- /dev/null
+++ b/tools/build/feature/test-libaudit.c
@@ -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();
+}
diff --git a/tools/build/feature/test-libbabeltrace.c 
b/tools/build/feature/test-libbabeltrace.c
new file mode 100644
index 000000000000..3b7dd68a4d52
--- /dev/null
+++ b/tools/build/feature/test-libbabeltrace.c
@@ -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;
+}
diff --git a/tools/build/feature/test-libbfd.c 
b/tools/build/feature/test-libbfd.c
new file mode 100644
index 000000000000..24059907e990
--- /dev/null
+++ b/tools/build/feature/test-libbfd.c
@@ -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;
+}
diff --git a/tools/build/feature/test-libdw-dwarf-unwind.c 
b/tools/build/feature/test-libdw-dwarf-unwind.c
new file mode 100644
index 000000000000..f676a3ff442a
--- /dev/null
+++ b/tools/build/feature/test-libdw-dwarf-unwind.c
@@ -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;
+}
diff --git a/tools/build/feature/test-libelf-getphdrnum.c 
b/tools/build/feature/test-libelf-getphdrnum.c
new file mode 100644
index 000000000000..d710459306c3
--- /dev/null
+++ b/tools/build/feature/test-libelf-getphdrnum.c
@@ -0,0 +1,8 @@
+#include <libelf.h>
+
+int main(void)
+{
+       size_t dst;
+
+       return elf_getphdrnum(0, &dst);
+}
diff --git a/tools/build/feature/test-libelf-mmap.c 
b/tools/build/feature/test-libelf-mmap.c
new file mode 100644
index 000000000000..564427d7ef18
--- /dev/null
+++ b/tools/build/feature/test-libelf-mmap.c
@@ -0,0 +1,8 @@
+#include <libelf.h>
+
+int main(void)
+{
+       Elf *elf = elf_begin(0, ELF_C_READ_MMAP, 0);
+
+       return (long)elf;
+}
diff --git a/tools/build/feature/test-libelf.c 
b/tools/build/feature/test-libelf.c
new file mode 100644
index 000000000000..08db322d8957
--- /dev/null
+++ b/tools/build/feature/test-libelf.c
@@ -0,0 +1,8 @@
+#include <libelf.h>
+
+int main(void)
+{
+       Elf *elf = elf_begin(0, ELF_C_READ, 0);
+
+       return (long)elf;
+}
diff --git a/tools/build/feature/test-libnuma.c 
b/tools/build/feature/test-libnuma.c
new file mode 100644
index 000000000000..4763d9cd587d
--- /dev/null
+++ b/tools/build/feature/test-libnuma.c
@@ -0,0 +1,9 @@
+#include <numa.h>
+#include <numaif.h>
+
+int main(void)
+{
+       numa_available();
+
+       return 0;
+}
diff --git a/tools/build/feature/test-libperl.c 
b/tools/build/feature/test-libperl.c
new file mode 100644
index 000000000000..8871f6a0fdb4
--- /dev/null
+++ b/tools/build/feature/test-libperl.c
@@ -0,0 +1,9 @@
+#include <EXTERN.h>
+#include <perl.h>
+
+int main(void)
+{
+       perl_alloc();
+
+       return 0;
+}
diff --git a/tools/build/feature/test-libpython-version.c 
b/tools/build/feature/test-libpython-version.c
new file mode 100644
index 000000000000..facea122d812
--- /dev/null
+++ b/tools/build/feature/test-libpython-version.c
@@ -0,0 +1,10 @@
+#include <Python.h>
+
+#if PY_VERSION_HEX >= 0x03000000
+       #error
+#endif
+
+int main(void)
+{
+       return 0;
+}
diff --git a/tools/build/feature/test-libpython.c 
b/tools/build/feature/test-libpython.c
new file mode 100644
index 000000000000..b24b28ad6324
--- /dev/null
+++ b/tools/build/feature/test-libpython.c
@@ -0,0 +1,8 @@
+#include <Python.h>
+
+int main(void)
+{
+       Py_Initialize();
+
+       return 0;
+}
diff --git a/tools/build/feature/test-libslang.c 
b/tools/build/feature/test-libslang.c
new file mode 100644
index 000000000000..22ff22ed94d1
--- /dev/null
+++ b/tools/build/feature/test-libslang.c
@@ -0,0 +1,6 @@
+#include <slang.h>
+
+int main(void)
+{
+       return SLsmg_init_smg();
+}
diff --git a/tools/build/feature/test-libunwind-debug-frame.c 
b/tools/build/feature/test-libunwind-debug-frame.c
new file mode 100644
index 000000000000..0ef8087a104a
--- /dev/null
+++ b/tools/build/feature/test-libunwind-debug-frame.c
@@ -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;
+}
diff --git a/tools/build/feature/test-libunwind.c 
b/tools/build/feature/test-libunwind.c
new file mode 100644
index 000000000000..43b9369bcab7
--- /dev/null
+++ b/tools/build/feature/test-libunwind.c
@@ -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;
+}
diff --git a/tools/build/feature/test-pthread-attr-setaffinity-np.c 
b/tools/build/feature/test-pthread-attr-setaffinity-np.c
new file mode 100644
index 000000000000..fdada5e8d454
--- /dev/null
+++ b/tools/build/feature/test-pthread-attr-setaffinity-np.c
@@ -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;
+}
diff --git a/tools/build/feature/test-stackprotector-all.c 
b/tools/build/feature/test-stackprotector-all.c
new file mode 100644
index 000000000000..c9f398d87868
--- /dev/null
+++ b/tools/build/feature/test-stackprotector-all.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+int main(void)
+{
+       return puts("hi");
+}
diff --git a/tools/build/feature/test-sync-compare-and-swap.c 
b/tools/build/feature/test-sync-compare-and-swap.c
new file mode 100644
index 000000000000..c34d4ca4af56
--- /dev/null
+++ b/tools/build/feature/test-sync-compare-and-swap.c
@@ -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;
+}
diff --git a/tools/build/feature/test-timerfd.c 
b/tools/build/feature/test-timerfd.c
new file mode 100644
index 000000000000..8c5c083b4d3c
--- /dev/null
+++ b/tools/build/feature/test-timerfd.c
@@ -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;
+}
diff --git a/tools/build/feature/test-zlib.c b/tools/build/feature/test-zlib.c
new file mode 100644
index 000000000000..e111fff6240e
--- /dev/null
+++ b/tools/build/feature/test-zlib.c
@@ -0,0 +1,9 @@
+#include <zlib.h>
+
+int main(void)
+{
+       z_stream zs;
+
+       inflateInit(&zs);
+       return 0;
+}
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index e323eab10694..d5b9e0dae334 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -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)
diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
index 01d8acc5453e..df666a596c2a 100644
--- a/tools/perf/config/Makefile
+++ b/tools/perf/config/Makefile
@@ -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
diff --git a/tools/perf/config/Makefile.feature 
b/tools/perf/config/Makefile.feature
deleted file mode 100644
index 55b671a93d67..000000000000
--- a/tools/perf/config/Makefile.feature
+++ /dev/null
@@ -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
diff --git a/tools/perf/config/feature-checks/.gitignore 
b/tools/perf/config/feature-checks/.gitignore
deleted file mode 100644
index 80f3da0c3515..000000000000
--- a/tools/perf/config/feature-checks/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.d
-*.bin
diff --git a/tools/perf/config/feature-checks/Makefile 
b/tools/perf/config/feature-checks/Makefile
deleted file mode 100644
index 8fe067864957..000000000000
--- a/tools/perf/config/feature-checks/Makefile
+++ /dev/null
@@ -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
diff --git a/tools/perf/config/feature-checks/test-all.c 
b/tools/perf/config/feature-checks/test-all.c
deleted file mode 100644
index 1ffc3da5ca10..000000000000
--- a/tools/perf/config/feature-checks/test-all.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-backtrace.c 
b/tools/perf/config/feature-checks/test-backtrace.c
deleted file mode 100644
index 7124aa1dc8fb..000000000000
--- a/tools/perf/config/feature-checks/test-backtrace.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-bionic.c 
b/tools/perf/config/feature-checks/test-bionic.c
deleted file mode 100644
index eac24e9513eb..000000000000
--- a/tools/perf/config/feature-checks/test-bionic.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <android/api-level.h>
-
-int main(void)
-{
-       return __ANDROID_API__;
-}
diff --git a/tools/perf/config/feature-checks/test-compile.c 
b/tools/perf/config/feature-checks/test-compile.c
deleted file mode 100644
index 31dbf45bf99c..000000000000
--- a/tools/perf/config/feature-checks/test-compile.c
+++ /dev/null
@@ -1,4 +0,0 @@
-int main(void)
-{
-       return 0;
-}
diff --git a/tools/perf/config/feature-checks/test-cplus-demangle.c 
b/tools/perf/config/feature-checks/test-cplus-demangle.c
deleted file mode 100644
index 610c686e0009..000000000000
--- a/tools/perf/config/feature-checks/test-cplus-demangle.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-dwarf.c 
b/tools/perf/config/feature-checks/test-dwarf.c
deleted file mode 100644
index 3fc1801ce4a9..000000000000
--- a/tools/perf/config/feature-checks/test-dwarf.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-fortify-source.c 
b/tools/perf/config/feature-checks/test-fortify-source.c
deleted file mode 100644
index c9f398d87868..000000000000
--- a/tools/perf/config/feature-checks/test-fortify-source.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-       return puts("hi");
-}
diff --git a/tools/perf/config/feature-checks/test-glibc.c 
b/tools/perf/config/feature-checks/test-glibc.c
deleted file mode 100644
index b0820345cd98..000000000000
--- a/tools/perf/config/feature-checks/test-glibc.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <gnu/libc-version.h>
-
-int main(void)
-{
-       const char *version = gnu_get_libc_version();
-
-       return (long)version;
-}
diff --git a/tools/perf/config/feature-checks/test-gtk2-infobar.c 
b/tools/perf/config/feature-checks/test-gtk2-infobar.c
deleted file mode 100644
index 397b4646d066..000000000000
--- a/tools/perf/config/feature-checks/test-gtk2-infobar.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-gtk2.c 
b/tools/perf/config/feature-checks/test-gtk2.c
deleted file mode 100644
index 6bd80e509439..000000000000
--- a/tools/perf/config/feature-checks/test-gtk2.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-hello.c 
b/tools/perf/config/feature-checks/test-hello.c
deleted file mode 100644
index c9f398d87868..000000000000
--- a/tools/perf/config/feature-checks/test-hello.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-       return puts("hi");
-}
diff --git a/tools/perf/config/feature-checks/test-libaudit.c 
b/tools/perf/config/feature-checks/test-libaudit.c
deleted file mode 100644
index afc019f08641..000000000000
--- a/tools/perf/config/feature-checks/test-libaudit.c
+++ /dev/null
@@ -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();
-}
diff --git a/tools/perf/config/feature-checks/test-libbabeltrace.c 
b/tools/perf/config/feature-checks/test-libbabeltrace.c
deleted file mode 100644
index 3b7dd68a4d52..000000000000
--- a/tools/perf/config/feature-checks/test-libbabeltrace.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-libbfd.c 
b/tools/perf/config/feature-checks/test-libbfd.c
deleted file mode 100644
index 24059907e990..000000000000
--- a/tools/perf/config/feature-checks/test-libbfd.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c 
b/tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
deleted file mode 100644
index f676a3ff442a..000000000000
--- a/tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-libelf-getphdrnum.c 
b/tools/perf/config/feature-checks/test-libelf-getphdrnum.c
deleted file mode 100644
index d710459306c3..000000000000
--- a/tools/perf/config/feature-checks/test-libelf-getphdrnum.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <libelf.h>
-
-int main(void)
-{
-       size_t dst;
-
-       return elf_getphdrnum(0, &dst);
-}
diff --git a/tools/perf/config/feature-checks/test-libelf-mmap.c 
b/tools/perf/config/feature-checks/test-libelf-mmap.c
deleted file mode 100644
index 564427d7ef18..000000000000
--- a/tools/perf/config/feature-checks/test-libelf-mmap.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <libelf.h>
-
-int main(void)
-{
-       Elf *elf = elf_begin(0, ELF_C_READ_MMAP, 0);
-
-       return (long)elf;
-}
diff --git a/tools/perf/config/feature-checks/test-libelf.c 
b/tools/perf/config/feature-checks/test-libelf.c
deleted file mode 100644
index 08db322d8957..000000000000
--- a/tools/perf/config/feature-checks/test-libelf.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <libelf.h>
-
-int main(void)
-{
-       Elf *elf = elf_begin(0, ELF_C_READ, 0);
-
-       return (long)elf;
-}
diff --git a/tools/perf/config/feature-checks/test-libnuma.c 
b/tools/perf/config/feature-checks/test-libnuma.c
deleted file mode 100644
index 4763d9cd587d..000000000000
--- a/tools/perf/config/feature-checks/test-libnuma.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <numa.h>
-#include <numaif.h>
-
-int main(void)
-{
-       numa_available();
-
-       return 0;
-}
diff --git a/tools/perf/config/feature-checks/test-libperl.c 
b/tools/perf/config/feature-checks/test-libperl.c
deleted file mode 100644
index 8871f6a0fdb4..000000000000
--- a/tools/perf/config/feature-checks/test-libperl.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <EXTERN.h>
-#include <perl.h>
-
-int main(void)
-{
-       perl_alloc();
-
-       return 0;
-}
diff --git a/tools/perf/config/feature-checks/test-libpython-version.c 
b/tools/perf/config/feature-checks/test-libpython-version.c
deleted file mode 100644
index facea122d812..000000000000
--- a/tools/perf/config/feature-checks/test-libpython-version.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <Python.h>
-
-#if PY_VERSION_HEX >= 0x03000000
-       #error
-#endif
-
-int main(void)
-{
-       return 0;
-}
diff --git a/tools/perf/config/feature-checks/test-libpython.c 
b/tools/perf/config/feature-checks/test-libpython.c
deleted file mode 100644
index b24b28ad6324..000000000000
--- a/tools/perf/config/feature-checks/test-libpython.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <Python.h>
-
-int main(void)
-{
-       Py_Initialize();
-
-       return 0;
-}
diff --git a/tools/perf/config/feature-checks/test-libslang.c 
b/tools/perf/config/feature-checks/test-libslang.c
deleted file mode 100644
index 22ff22ed94d1..000000000000
--- a/tools/perf/config/feature-checks/test-libslang.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <slang.h>
-
-int main(void)
-{
-       return SLsmg_init_smg();
-}
diff --git a/tools/perf/config/feature-checks/test-libunwind-debug-frame.c 
b/tools/perf/config/feature-checks/test-libunwind-debug-frame.c
deleted file mode 100644
index 0ef8087a104a..000000000000
--- a/tools/perf/config/feature-checks/test-libunwind-debug-frame.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-libunwind.c 
b/tools/perf/config/feature-checks/test-libunwind.c
deleted file mode 100644
index 43b9369bcab7..000000000000
--- a/tools/perf/config/feature-checks/test-libunwind.c
+++ /dev/null
@@ -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;
-}
diff --git 
a/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c 
b/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
deleted file mode 100644
index fdada5e8d454..000000000000
--- a/tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-stackprotector-all.c 
b/tools/perf/config/feature-checks/test-stackprotector-all.c
deleted file mode 100644
index c9f398d87868..000000000000
--- a/tools/perf/config/feature-checks/test-stackprotector-all.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(void)
-{
-       return puts("hi");
-}
diff --git a/tools/perf/config/feature-checks/test-sync-compare-and-swap.c 
b/tools/perf/config/feature-checks/test-sync-compare-and-swap.c
deleted file mode 100644
index c34d4ca4af56..000000000000
--- a/tools/perf/config/feature-checks/test-sync-compare-and-swap.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-timerfd.c 
b/tools/perf/config/feature-checks/test-timerfd.c
deleted file mode 100644
index 8c5c083b4d3c..000000000000
--- a/tools/perf/config/feature-checks/test-timerfd.c
+++ /dev/null
@@ -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;
-}
diff --git a/tools/perf/config/feature-checks/test-zlib.c 
b/tools/perf/config/feature-checks/test-zlib.c
deleted file mode 100644
index e111fff6240e..000000000000
--- a/tools/perf/config/feature-checks/test-zlib.c
+++ /dev/null
@@ -1,9 +0,0 @@
-#include <zlib.h>
-
-int main(void)
-{
-       z_stream zs;
-
-       inflateInit(&zs);
-       return 0;
-}


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to