tools build: Move features framework into tools/build
Jiri Olsa
reviewerv2 cover tools build: Move features framework into tools/build
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.
v2 changes:
- omitted patch 1 from original version (Ingo)
- added features build output dump (Arnaldo)
- better scripting in features test (Namhyung)
- fixed test-all for pthread-attr-setaffinity-np
- removed main_test_libbabeltrace from test-all
- patches reordered
It's also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/build
thanks,
jirka
---
Jiri Olsa (15):
perf build: Disable default check for libbabeltrace
perf build: Add dump of features build
perf build: Fix pthread-attr-setaffinity-np include in test-all 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/Documentation/Feature.txt | 93 +++++++++
tools/build/Makefile.feature | 169 ++++++++++++++++
.../feature-checks => build/feature}/.gitignore | 0
.../feature-checks => build/feature}/Makefile | 7 +-
.../feature-checks => build/feature}/test-all.c | 11 +-
.../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 ++-------------------
39 files changed, 334 insertions(+), 205 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 (93%)
rename tools/{perf/config/feature-checks => build/feature}/test-all.c (92%)
rename tools/{perf/config/feature-checks => build/feature}/test-backtrace.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-bionic.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-compile.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-cplus-demangle.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-dwarf.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-fortify-source.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-glibc.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-gtk2-infobar.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-gtk2.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-hello.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libaudit.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libbabeltrace.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libbfd.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libdw-dwarf-unwind.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf-getphdrnum.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf-mmap.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libelf.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libnuma.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libperl.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libpython-version.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libpython.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libslang.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libunwind-debug-frame.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-libunwind.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-pthread-attr-setaffinity-np.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-stackprotector-all.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-sync-compare-and-swap.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-timerfd.c (100%)
rename tools/{perf/config/feature-checks => build/feature}/test-zlib.c (100%)
create mode 100644 tools/build/tests/features/Makefile
create mode 100644 tools/build/tests/features/Makefile.test1Jiri Olsa
reviewerPATCH v2 1/15 perf build: Disable default check for libbabeltrace
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via feature_check before $(feature-libbabeltrace) is used.
--- tools/perf/config/Makefile | 11 +++++------ tools/perf/config/feature-checks/Makefile | 2 +- tools/perf/config/feature-checks/test-all.c | 9 ++++++++- 3 files changed, 14 insertions(+), 8 deletions(-)
tools/perf/config/Makefile +5 -6
@@ -227,7 +227,6 @@ CORE_FEATURE_TESTS = \ stackprotector-all \ timerfd \ libdw-dwarf-unwind \ - libbabeltrace \ zlib LIB_FEATURE_TESTS = \
@@ -243,7 +242,6 @@ LIB_FEATURE_TESTS = \ libslang \ libunwind \ libdw-dwarf-unwind \ - libbabeltrace \ zlib VF_FEATURE_TESTS = \
@@ -705,14 +703,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
tools/perf/config/feature-checks/Makefile +1 -1
@@ -44,7 +44,7 @@ BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $( ############################### test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz test-hello.bin: $(BUILD)
tools/perf/config/feature-checks/test-all.c +8 -1
@@ -101,9 +101,17 @@# include "test-pthread_attr_setaffinity_np.c" #undef main +# if 0 +/* +* Disable libbabeltrace check for test-all, because the requested +* library version is not released yet in most distributions. Will +* reenable later. +*/ +#define main main_test_libbabeltrace# include "test-libbabeltrace.c" #undef main +#endif int main (int argc,char *argv[]) {
@@ -130,7 +138,6 @@ int main(int argc, char *argv[])main_test_sync_compare_and_swap (argc, argv);main_test_zlib ();main_test_pthread_attr_setaffinity_np (); -main_test_libbabeltrace ();return 0 ; }
Signature · 1 line
1.9.3
Re: [PATCH 01/15] perf build: Disable default check for libbabeltrace
Em Wed, Mar 11, 2015 at 09:58:50AM +0100, Jiri Olsa escreveu:
Quoted 6 lines
Remove libbabeltrace check from default features set, because the requested version is not released yet in most distributions. We'll enable later.
Calling libbabeltrace check manually via
feature_checkbefore $(feature-libbabeltrace) is used.
So, before this patch:
[acme@ssdandy perf]$ make
BUILD: Doing 'make -j8' parallel build
config/Makefile:425: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR config/Makefile:709: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... libbabeltrace: [ OFF ]
... zlib: [ on ]
... DWARF post unwind library: libdw
It tries to build babeltrace in, does not find the devel files, emits that "No libbabeltrace found" and then marks it as OFF, ok.
Now, I am ok with the intent of this patch, but... After applying it we get:
[acme@ssdandy linux]$ cd -/home/acme/git/linux/tools/perf
[acme@ssdandy perf]$
[acme@ssdandy perf]$ make
BUILD: Doing 'make -j8' parallel build
config/Makefile:423: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR config/Makefile:713: No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdw
GEN common-cmds.h
It continues trying to find babeltrace, does not find it, emits the warning and just doesn't show the OFF message :-\
Can you explain _why_ this is needed? I.e. is it to speed up feature checking? In what way, etc. For casual readers the intent of this patch may be difficult to grasp, no?
What am I missing?
- Arnaldo
Quoted 100 lines
Signed-off-by Jiri Olsa <[email protected]>Acked-by Ingo Molnar <[email protected]>Cc Arnaldo Carvalho de Melo <[email protected]>Cc Corey Ashford <[email protected]>Cc David Ahern <[email protected]>Cc Ingo Molnar <[email protected]>Cc Namhyung Kim <[email protected]>Cc Paul Mackerras <[email protected]>Cc Peter Zijlstra <[email protected]>--- tools/perf/config/Makefile | 11 +++++------ tools/perf/config/feature-checks/Makefile | 2 +- tools/perf/config/feature-checks/test-all.c | 9 ++++++++- 3 files changed, 14 insertions(+), 8 deletions(-)tools/perf/config/Makefile +5
-6@@ -227,7 +227,6 @@ CORE_FEATURE_TESTS = \ stackprotector-all \ timerfd \ libdw-dwarf-unwind \ - libbabeltrace \ zlib LIB_FEATURE_TESTS = \@@ -243,7 +242,6 @@ LIB_FEATURE_TESTS = \ libslang \ libunwind \ libdw-dwarf-unwind \ - libbabeltrace \ zlib VF_FEATURE_TESTS = \@@ -705,14 +703,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 endiftools/perf/config/feature-checks/Makefile +1
-1@@ -44,7 +44,7 @@ BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $( ############################### test-all.bin: - $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz -lbabeltrace + $(BUILD) -fstack-protector-all -O2 -D_FORTIFY_SOURCE=2 -ldw -lelf -lnuma -lelf -laudit -I/usr/include/slang -lslang $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null) $(FLAGS_PERL_EMBED) $(FLAGS_PYTHON_EMBED) -DPACKAGE='"perf"' -lbfd -ldl -lz test-hello.bin: $(BUILD)tools/perf/config/feature-checks/test-all.c +8
-1@@ -101,9 +101,17 @@# include "test-pthread_attr_setaffinity_np.c" #undef main +# if 0 +/* +* Disable libbabeltrace check for test-all, because the requested +* library version is not released yet in most distributions. Will +* reenable later. +*/ +#define main main_test_libbabeltrace# include "test-libbabeltrace.c" #undef main +#endif int main (int argc,char *argv[]) {@@ -130,7 +138,6 @@ int main(int argc, char *argv[])main_test_sync_compare_and_swap (argc, argv);main_test_zlib ();main_test_pthread_attr_setaffinity_np (); -main_test_libbabeltrace ();return 0 ; }Signature · 1 line
1.9.3
Re: [PATCH 01/15] perf build: Disable default check for libbabeltrace
On Fri, Mar 13, 2015 at 12:36:21PM -0300, Arnaldo Carvalho de Melo wrote:
SNIP
Quoted 19 lines
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdwGEN
common-cmds.h
Quoted 8 lines
It continues trying to find babeltrace, does not find it, emits the warning and just doesn't show the OFF message :-\
Can you explain _why_ this is needed? I.e. is it to speed up feature checking? In what way, etc. For casual readers the intent of this patch may be difficult to grasp, no?
What am I missing?
this patch removes babeltrace from:
- detected features display -> so user's not curious where to get the latest babeltrace version ;-)
- test-all optimization -> so we could use features build speed up, missing babeltrace was stoping this
but we still check for babeltrace (out of the default list code) in order to enable the ctf convert code if it's in the system
I admit the extra warning about missing babeltrace support might be confusing, I can remove it.. ;-)
I think we could add new class of features that are enabled just on demand and not checked by default at all, like:
'make BABELTRACE=1' or via .config,
but we need to add support for that first
jirka
Re: [PATCH 01/15] perf build: Disable default check for libbabeltrace
Em Fri, Mar 13, 2015 at 05:20:11PM +0100, Jiri Olsa escreveu:
Quoted 39 lines · Arnaldo Carvalho de Melo
SNIP
Quoted 19 lines
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdwGEN
common-cmds.hQuoted 8 lines
It continues trying to find babeltrace, does not find it, emits the warning and just doesn't show the OFF message :-\
Can you explain _why_ this is needed? I.e. is it to speed up feature checking? In what way, etc. For casual readers the intent of this patch may be difficult to grasp, no?
What am I missing?
this patch removes babeltrace from:
- detected features display -> so user's not curious where to get the latest babeltrace version ;-)
- test-all optimization -> so we could use features build speed up, missing babeltrace was stoping thisbut we still check for babeltrace (out of the default list code) in order to enable the ctf convert code if it's in the system
Quoted 7 lines
I admit the extra warning about missing babeltrace support might be confusing, I can remove it.. ;-)
I think we could add new class of features that are enabled just on demand and not checked by default at all, like:
'make BABELTRACE=1' or via .config,
but we need to add support for that first
Thanks for explaining, that covers one of my peeves, i.e. the cset comment wasn't clear, now it is a bit better, thanks!
The other is for someone not interested in how the feature detection works but then sees a warning about a feature not being available but that feature doesn't appear on the followup summary of features that are ON or OFF the build...
So I think that when we think that some feature is experimental, for any reason, for instance, because it is based on some feature that is not on a released version of the library one needs to link against, to only bother with trying to check if it is available and link against it if so if it is _explicitely_ asked for.
I.e. documentation should state that perf can have support for that feature, but only if the user does:
1. installs the precisely described version that has what is needed.
2. Explicitely asks, in the make command line, for that feature.
In the case at hand that would not even be a library release, but a specific git commit on babeltrace's repo.
That would be a speedup! ;-)
- Arnaldo
P.S. After all, we're not short on features, look at the ldd output... Ok, I need to keep on merging the .config stuff, but even then, I guess we need to have more of a dlopen approach to all those features, so that one can install a package without dragging hell and its kitchen sink.
Re: [PATCH 01/15] perf build: Disable default check for libbabeltrace
On Fri, Mar 13, 2015 at 05:19:35PM -0300, Arnaldo Carvalho de Melo wrote:
SNIP
Quoted 10 lines
Quoted 1 line
but we need to add support for that first
Thanks for explaining, that covers one of my peeves, i.e. the cset comment wasn't clear, now it is a bit better, thanks!
The other is for someone not interested in how the feature detection works but then sees a warning about a feature not being available but that feature doesn't appear on the followup summary of features that are ON or OFF the build...
Quoted 5 lines
So I think that when we think that some feature is experimental, for any reason, for instance, because it is based on some feature that is not on a released version of the library one needs to link against, to only bother with trying to check if it is available and link against it if so if it is _explicitely_ asked for.
yep, but that'd be new feature, currently we check for everything and are able only to disable features via NO_* make variables
Quoted 10 lines
I.e. documentation should state that perf can have support for that feature, but only if the user does:
1. installs the precisely described version that has what is needed.
2. Explicitely asks, in the make command line, for that feature.
In the case at hand that would not even be a library release, but a specific git commit on babeltrace's repo.
Quoted 8 lines
That would be a speedup! ;-)
- Arnaldo
P.S. After all, we're not short on features, look at the ldd output... Ok, I need to keep on merging the .config stuff, but even then, I guess we need to have more of a dlopen approach to all those features, so that one can install a package without dragging hell and its kitchen sink.
yea, moving slowly towards to that step by step ;-)
i rebased perf/build branch to your latest perf/core
jirka
Jiri Olsa
reviewerPATCH v2 2/15 perf build: Add dump of features build
In reply to Jiri OlsaCurrently you need to hack the features code to get the features build output. Changing this by dumping the build output into file during the build.
For each feature 'test-X' new file 'test-X.make.output' is created and contains the build out. It's created in the same directory as the feature itself.
--- tools/perf/config/feature-checks/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
tools/perf/config/feature-checks/Makefile +3 -2
@@ -39,7 +39,8 @@ PKG_CONFIG := $(CROSS_COMPILE)pkg-config all: $(FILES) -BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) +__BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $(OUTPUT)$@ $(patsubst %.bin,%.c,$@) $(LDFLAGS) + BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 ###############################
@@ -156,4 +157,4 @@ test-zlib.bin: ############################### clean: - rm -f $(FILES) *.d + rm -f $(FILES) *.d $(FILES:.bin=.make.output)
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 3/15 perf build: Fix pthread-attr-setaffinity-np include in test-all
In reply to Jiri OlsaThe test-all fails to build due to type in pthread-attr-setaffinity-np include.
--- tools/perf/config/feature-checks/test-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/config/feature-checks/test-all.c +1 -1
@@ -98,7 +98,7 @@#undef main#define main main_test_pthread_attr_setaffinity_np -# include "test-pthread_attr_setaffinity_np.c" +# include "test-pthread-attr-setaffinity-np.c" #undef main# if 0
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 4/15 perf build: Get rid of LIB_INCLUDE variable
In reply to Jiri OlsaIt has no use, so we can directly use the value for CFLAGS.
--- tools/perf/config/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/perf/config/Makefile +1 -2
@@ -15,7 +15,6 @@ $(shell echo -n > .config-detected) detected = $(shell echo "$(1)=y" >> .config-detected) detected_var = $(shell echo "$(1)=$($(1))" >> .config-detected) -LIB_INCLUDE := $(srctree)/tools/lib/ CFLAGS := $(EXTRA_CFLAGS) $(EXTRA_WARNINGS) include $(src-perf)/config/Makefile.arch
@@ -320,7 +319,7 @@ endif CFLAGS += -I$(src-perf)/util CFLAGS += -I$(src-perf) -CFLAGS += -I$(LIB_INCLUDE) +CFLAGS += -I$(srctree)/tools/lib/ CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 5/15 perf build: Rename CORE_FEATURE_TESTS to FEATURE_TESTS
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.
--- tools/perf/config/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
@@ -203,7 +203,7 @@ endef # the rule that uses them - an example for that is the 'bionic' # feature check. ] # -CORE_FEATURE_TESTS = \ +FEATURE_TESTS = \ backtrace \ dwarf \ fortify-source \
@@ -262,7 +262,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))
@@ -271,7 +271,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:
@@ -286,10 +286,10 @@ ifeq ($(feature-all), 1) # # test-all.c passed - just set all the core feature flags to 1: # - $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_set,$(feat))) + $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(CORE_FEATURE_TESTS)) >/dev/null 2>&1) - $(foreach feat,$(CORE_FEATURE_TESTS),$(call feature_check,$(feat))) + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif ifeq ($(feature-stackprotector-all), 1)
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 6/15 perf build: Get rid of VF_FEATURE_TESTS
In reply to Jiri OlsaIt only contains (FEATURE_TESTS - FEATURE_DISPLAY) tests to display the rest of the checks on 'make VF=1'. But we can actually compute this list, which is less confusing.
Also renaming LIB_FEATURE_TESTS into FEATURE_DISPLAY, so it reflects what this variable actually does - display its tests status to user.
--- tools/perf/config/Makefile | 32 +++++++------------------------- 1 file changed, 7 insertions(+), 25 deletions(-)
tools/perf/config/Makefile +7 -25
@@ -228,7 +228,7 @@ FEATURE_TESTS = \ libdw-dwarf-unwind \ zlib -LIB_FEATURE_TESTS = \ +FEATURE_DISPLAY = \ dwarf \ glibc \ gtk2 \
@@ -243,25 +243,6 @@ LIB_FEATURE_TESTS = \ libdw-dwarf-unwind \ 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 ;-).
@@ -805,7 +786,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)
@@ -816,7 +797,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)")
@@ -831,7 +812,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
@@ -841,7 +822,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))
@@ -849,7 +830,8 @@ ifeq ($(display_lib),1) endif ifeq ($(display_vf),1) - $(foreach feat,$(VF_FEATURE_TESTS),$(call feature_print_status,$(feat),)) + TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) + $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info ) $(call feature_print_var,prefix) $(call feature_print_var,bindir)
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 7/15 perf build: Rename display_lib into feature_display
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'feature*' namespace.
--- tools/perf/config/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
tools/perf/config/Makefile +6 -6
@@ -793,7 +793,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)
@@ -802,24 +802,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),))
@@ -841,7 +841,7 @@ ifeq ($(display_vf),1) $(call feature_print_var,LIBDW_DIR) endif -ifeq ($(display_lib),1) +ifeq ($(feature_display),1) $(info ) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 8/15 perf build: Rename display_vf to feature_verbose
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'feature*' namespace.
--- tools/perf/config/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
tools/perf/config/Makefile +2 -2
@@ -816,7 +816,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)
@@ -829,7 +829,7 @@ ifeq ($(feature_display),1) endif endif -ifeq ($(display_vf),1) +ifeq ($(feature_verbose),1) TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info )
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 9/15 perf build: Rename PERF-FEATURES into FEATURE-DUMP
In reply to Jiri OlsaPreparing for feature checks separation, moving related stuff under 'FEATURE*' namespace.
--- tools/perf/Makefile.perf | 2 +- tools/perf/config/Makefile | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-)
tools/perf/Makefile.perf +1 -1
@@ -528,7 +528,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean config-clean $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)$(RM) .config-detected $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 - $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-FEATURES $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* + $(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean $(python-clean)
tools/perf/config/Makefile +6 -6
@@ -786,22 +786,22 @@ define feature_print_text_code MSG = $(shell printf '...%30s: %s' $(1) $(2)) endef -PERF_FEATURES := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) -PERF_FEATURES_FILE := $(shell touch $(OUTPUT)PERF-FEATURES; cat $(OUTPUT)PERF-FEATURES) +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) +FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) ifeq ($(dwarf-post-unwind),1) - PERF_FEATURES += dwarf-post-unwind($(dwarf-post-unwind-text)) + FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) endif # The $(feature_display) controls the default detection message # output. It's set if: # - detected features differes from stored features from -# last build (in PERF-FEATURES file) +# last build (in FEATURE-DUMP file) # - one of the $(FEATURE_DISPLAY) is not detected # - VF is enabled -ifneq ("$(PERF_FEATURES)","$(PERF_FEATURES_FILE)") - $(shell echo "$(PERF_FEATURES)" > $(OUTPUT)PERF-FEATURES) +ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") + $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) feature_display := 1 endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 10/15 perf build: Rename feature_print_var_code to print_var_code
In reply to Jiri OlsaAs it has nothing to do with features and won't be moved into tools/build.
--- tools/perf/config/Makefile | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
tools/perf/config/Makefile +12 -11
@@ -776,8 +776,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
@@ -827,21 +827,22 @@ ifeq ($(feature_display),1) ifeq ($(dwarf-post-unwind),1) $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) endif + + ifneq ($(feature_verbose),1) + $(info ) + endif endif ifeq ($(feature_verbose),1) TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) $(info ) - $(call feature_print_var,prefix) - $(call feature_print_var,bindir) - $(call feature_print_var,libdir) - $(call feature_print_var,sysconfdir) - $(call feature_print_var,LIBUNWIND_DIR) - $(call feature_print_var,LIBDW_DIR) -endif - -ifeq ($(feature_display),1) + $(call print_var,prefix) + $(call print_var,bindir) + $(call print_var,libdir) + $(call print_var,sysconfdir) + $(call print_var,LIBUNWIND_DIR) + $(call print_var,LIBDW_DIR) $(info ) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 11/15 perf build: Separate feature make support into config/Makefile.feature
In reply to Jiri OlsaMove feature related code into separate makefile. The new Makefile.feature is included from config/Makefile. It will be moved later into tools/build.
--- tools/perf/config/Makefile | 165 +----------------------------------- tools/perf/config/Makefile.feature | 167 +++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+), 164 deletions(-) create mode 100644 tools/perf/config/Makefile.feature
tools/perf/config/Makefile +1 -164
@@ -176,102 +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 \ - zlib - -FEATURE_DISPLAY = \ - dwarf \ - glibc \ - gtk2 \ - libaudit \ - libbfd \ - libelf \ - libnuma \ - libperl \ - libpython \ - libslang \ - libunwind \ - libdw-dwarf-unwind \ - 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
@@ -763,80 +668,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 +167 -0
167 lines not on this page · raw message
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 12/15 perf build: Make features checks directory configurable
In reply to Jiri OlsaPutting feature checks directory into $feature_dir, so it's easy to configure when we move it to bools/build later.
--- tools/perf/config/Makefile.feature | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
tools/perf/config/Makefile.feature +4 -2
@@ -1,3 +1,5 @@ +feature_dir := $(srctree)/tools/perf/config/feature-checks + ifneq ($(OUTPUT),) OUTPUT_FEATURES = $(OUTPUT)config/feature-checks/ $(shell mkdir -p $(OUTPUT_FEATURES))
@@ -5,7 +7,7 @@ endif feature_check = $(eval $(feature_check_code)) define feature_check_code - feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C config/feature-checks test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) + feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) endef feature_set = $(eval $(feature_set_code))
@@ -91,7 +93,7 @@ ifeq ($(feature-all), 1) # $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) else - $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C config/feature-checks $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) endif
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 13/15 tools build: Move feature checks code under tools/build
In reply to Jiri OlsaMoving feature checks code under tools/build directory.
Changing also $feature_dir to point to new feature directory location and perf Makefiles to include Makefile.feature from new location.
--- tools/build/Makefile.feature | 169 +++++++++++++++++++++ tools/build/feature/.gitignore | 2 + tools/build/feature/Makefile | 160 +++++++++++++++++++ tools/build/feature/test-all.c | 143 +++++++++++++++++ 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 | 9 ++ 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 | 169 --------------------- tools/perf/config/feature-checks/.gitignore | 2 - tools/perf/config/feature-checks/Makefile | 160 ------------------- tools/perf/config/feature-checks/test-all.c | 143 ----------------- 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 | 9 -- 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, 784 insertions(+), 784 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 +169 -0
@@ -0,0 +1,169 @@ +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 \ + zlib + +FEATURE_DISPLAY = \ + dwarf \ + glibc \ + gtk2 \ + libaudit \ + libbfd \ + libelf \ + libnuma \ + libperl \ + libpython \ + libslang \ + libunwind \ + libdw-dwarf-unwind \ + zlib + +# Set FEATURE_CHECK_(C|LD)FLAGS-all for all FEATURE_TESTS features. +# If in the future we need per-feature checks/flags for features not +# mentioned in this list we need to refactor this ;-). +set_test_all_flags = $(eval $(set_test_all_flags_code)) +define set_test_all_flags_code + FEATURE_CHECK_CFLAGS-all += $(FEATURE_CHECK_CFLAGS-$(1)) + FEATURE_CHECK_LDFLAGS-all += $(FEATURE_CHECK_LDFLAGS-$(1)) +endef + +$(foreach feat,$(FEATURE_TESTS),$(call set_test_all_flags,$(feat))) + +# +# Special fast-path for the 'all features are available' case: +# +$(call feature_check,all,$(MSG)) + +# +# Just in case the build freshly failed, make sure we print the +# feature matrix: +# +ifeq ($(feature-all), 1) + # + # test-all.c passed - just set all the core feature flags to 1: + # + $(foreach feat,$(FEATURE_TESTS),$(call feature_set,$(feat))) +else + $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS)" LDFLAGS=$(LDFLAGS) -i -j -C $(feature_dir) $(addsuffix .bin,$(FEATURE_TESTS)) >/dev/null 2>&1) + $(foreach feat,$(FEATURE_TESTS),$(call feature_check,$(feat))) +endif + +# +# Print the result of the feature test: +# +feature_print_status = $(eval $(feature_print_status_code)) $(info $(MSG)) + +define feature_print_status_code + ifeq ($(feature-$(1)), 1) + MSG = $(shell printf '...%30s: [ \033[32mon\033[m ]' $(1)) + else + MSG = $(shell printf '...%30s: [ \033[31mOFF\033[m ]' $(1)) + endif +endef + +feature_print_text = $(eval $(feature_print_text_code)) $(info $(MSG)) +define feature_print_text_code + MSG = $(shell printf '...%30s: %s' $(1) $(2)) +endef + +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat)))) +FEATURE_DUMP_FILE := $(shell touch $(OUTPUT)FEATURE-DUMP; cat $(OUTPUT)FEATURE-DUMP) + +ifeq ($(dwarf-post-unwind),1) + FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text)) +endif + +# The $(feature_display) controls the default detection message +# output. It's set if: +# - detected features differes from stored features from +# last build (in FEATURE-DUMP file) +# - one of the $(FEATURE_DISPLAY) is not detected +# - VF is enabled + +ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)") + $(shell echo "$(FEATURE_DUMP)" > $(OUTPUT)FEATURE-DUMP) + feature_display := 1 +endif + +feature_check = $(eval $(feature_check_code)) +define feature_check_code + ifneq ($(feature-$(1)), 1) + feature_display := 1 + endif +endef + +$(foreach feat,$(FEATURE_DISPLAY),$(call feature_check,$(feat))) + +ifeq ($(VF),1) + feature_display := 1 + feature_verbose := 1 +endif + +ifeq ($(feature_display),1) + $(info ) + $(info Auto-detecting system features:) + $(foreach feat,$(FEATURE_DISPLAY),$(call feature_print_status,$(feat),)) + + ifeq ($(dwarf-post-unwind),1) + $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text)) + endif + + ifneq ($(feature_verbose),1) + $(info ) + endif +endif + +ifeq ($(feature_verbose),1) + TMP := $(filter-out $(FEATURE_DISPLAY),$(FEATURE_TESTS)) + $(foreach feat,$(TMP),$(call feature_print_status,$(feat),)) + $(info ) +endif
tools/build/feature/.gitignore new file +2 -0
@@ -0,0 +1,2 @@ +*.d +*.bin
tools/build/feature/Makefile new file +160 -0
160 lines not on this page · raw message
tools/build/feature/test-all.c new file +143 -0
143 lines not on this page · raw message
tools/build/feature/test-backtrace.c new file +13 -0
@@ -0,0 +1,13 @@ +#include <execinfo.h> +#include <stdio.h> + +int main (void ) +{ +void *backtrace_fns[10 ]; +size_t entries; + + entries =backtrace (backtrace_fns,10 ); +backtrace_symbols_fd (backtrace_fns, entries,1 ); + +return 0 ; +}
tools/build/feature/test-bionic.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <android/api-level.h> + +int main (void ) +{ +return __ANDROID_API__; +}
tools/build/feature/test-compile.c new file +4 -0
@@ -0,0 +1,4 @@ +int main (void ) +{ +return 0 ; +}
tools/build/feature/test-cplus-demangle.c new file +14 -0
@@ -0,0 +1,14 @@ +extern int printf (const char *format, ...); +extern char *cplus_demangle (const char *,int ); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =cplus_demangle (symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}
tools/build/feature/test-dwarf.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <dwarf.h> +#include <elfutils/libdw.h> +#include <elfutils/version.h> + +int main (void ) +{ +Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); + +return (long )dbg; +}
tools/build/feature/test-fortify-source.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-glibc.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <gnu/libc-version.h> + +int main (void ) +{ +const char *version =gnu_get_libc_version (); + +return (long )version; +}
tools/build/feature/test-gtk2-infobar.c new file +11 -0
@@ -0,0 +1,11 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); +gtk_info_bar_new (); + +return 0 ; +}
tools/build/feature/test-gtk2.c new file +10 -0
@@ -0,0 +1,10 @@ +#pragma GCC diagnostic ignored "-Wstrict-prototypes" +#include <gtk/gtk.h> +#pragma GCC diagnostic error "-Wstrict-prototypes" + +int main (int argc,char *argv[]) +{ +gtk_init (&argc, &argv); + +return 0 ; +}
tools/build/feature/test-hello.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-libaudit.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <libaudit.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +printf ("error message: %s\n" ,audit_errno_to_name (0 )); + +return audit_open (); +}
tools/build/feature/test-libbabeltrace.c new file +9 -0
@@ -0,0 +1,9 @@ + +#include <babeltrace/ctf-writer/writer.h> +#include <babeltrace/ctf-ir/stream-class.h> + +int main (void ) +{ +bt_ctf_stream_class_get_packet_context_type ((void *)0 ); +return 0 ; +}
tools/build/feature/test-libbfd.c new file +15 -0
@@ -0,0 +1,15 @@ +#include <bfd.h> + +extern int printf (const char *format, ...); + +int main (void ) +{ +char symbol[4096 ] ="FieldName__9ClassNameFd" ; +char *tmp; + + tmp =bfd_demangle (0 , symbol,0 ); + +printf ("demangled symbol: {%s}\n" , tmp); + +return 0 ; +}
tools/build/feature/test-libdw-dwarf-unwind.c new file +13 -0
@@ -0,0 +1,13 @@ + +#include <elfutils/libdwfl.h> + +int main (void ) +{ +/* +* This function is guarded via: __nonnull_attribute__ (1, 2). +* Passing '1' as arguments value. This code is never executed, +* only compiled. +*/ +dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); +return 0 ; +}
tools/build/feature/test-libelf-getphdrnum.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +size_t dst; + +return elf_getphdrnum (0 , &dst); +}
tools/build/feature/test-libelf-mmap.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); + +return (long )elf; +}
tools/build/feature/test-libelf.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <libelf.h> + +int main (void ) +{ +Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); + +return (long )elf; +}
tools/build/feature/test-libnuma.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <numa.h> +#include <numaif.h> + +int main (void ) +{ +numa_available (); + +return 0 ; +}
tools/build/feature/test-libperl.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <EXTERN.h> +#include <perl.h> + +int main (void ) +{ +perl_alloc (); + +return 0 ; +}
tools/build/feature/test-libpython-version.c new file +10 -0
@@ -0,0 +1,10 @@ +#include <Python.h> + +#if PY_VERSION_HEX >=0x03000000 +#error +#endif + +int main (void ) +{ +return 0 ; +}
tools/build/feature/test-libpython.c new file +8 -0
@@ -0,0 +1,8 @@ +#include <Python.h> + +int main (void ) +{ +Py_Initialize (); + +return 0 ; +}
tools/build/feature/test-libslang.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <slang.h> + +int main (void ) +{ +return SLsmg_init_smg (); +}
tools/build/feature/test-libunwind-debug-frame.c new file +16 -0
@@ -0,0 +1,16 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int +UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, +unw_word_t ip,unw_word_t segbase, +const char *obj_name,unw_word_t start, +unw_word_t end); + +#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) + +int main (void ) +{ +dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); +return 0 ; +}
tools/build/feature/test-libunwind.c new file +27 -0
@@ -0,0 +1,27 @@ +#include <libunwind.h> +#include <stdlib.h> + +extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, +unw_word_t ip, +unw_dyn_info_t *di, +unw_proc_info_t *pi, +int need_unwind_info,void *arg); + + +#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) + +static unw_accessors_t accessors; + +int main (void ) +{ +unw_addr_space_t addr_space; + + addr_space =unw_create_addr_space (&accessors,0 ); +if (addr_space) +return 0 ; + +unw_init_remote (NULL , addr_space,NULL ); +dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); + +return 0 ; +}
tools/build/feature/test-pthread-attr-setaffinity-np.c new file +17 -0
@@ -0,0 +1,17 @@ +#include <stdint.h> +#include <pthread.h> +#include <sched.h> + +int main (void ) +{ +int ret =0 ; +pthread_attr_t thread_attr; +cpu_set_t cs; + +pthread_attr_init (&thread_attr); +CPU_ZERO (&cs); + + ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); + +return ret; +}
tools/build/feature/test-stackprotector-all.c new file +6 -0
@@ -0,0 +1,6 @@ +#include <stdio.h> + +int main (void ) +{ +return puts ("hi" ); +}
tools/build/feature/test-sync-compare-and-swap.c new file +14 -0
@@ -0,0 +1,14 @@ +#include <stdint.h> + +volatile uint64_t x; + +int main (int argc,char *argv[]) +{ +uint64_t old, new = argc; + + argv = argv; +do { + old =__sync_val_compare_and_swap (&x,0 ,0 ); + }while (!__sync_bool_compare_and_swap (&x, old, new)); +return old == new; +}
tools/build/feature/test-timerfd.c new file +18 -0
@@ -0,0 +1,18 @@ +/* +* test for timerfd functions used by perf-kvm-stat-live +*/ +#include <sys/timerfd.h> + +int main (void ) +{ +struct itimerspec new_value; + +int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); +if (fd <0 ) +return 1 ; + +if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) +return 1 ; + +return 0 ; +}
tools/build/feature/test-zlib.c new file +9 -0
@@ -0,0 +1,9 @@ +#include <zlib.h> + +int main (void ) +{ +z_stream zs; + +inflateInit (&zs); +return 0 ; +}
tools/perf/Makefile.perf +1 -1
@@ -521,7 +521,7 @@ $(INSTALL_DOC_TARGETS): # config-clean: $(call QUIET_CLEAN, config) - $(Q)$(MAKE) -C config/feature-checks clean >/dev/null + $(Q)$(MAKE) -C $(srctree)/tools/build/feature/ clean >/dev/null clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean config-clean $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
tools/perf/config/Makefile +1 -1
@@ -176,7 +176,7 @@ LDFLAGS += -Wl,-z,noexecstack EXTLIBS = -lpthread -lrt -lm -ldl -include $(src-perf)/config/Makefile.feature +include $(srctree)/tools/build/Makefile.feature ifeq ($(feature-stackprotector-all), 1) CFLAGS += -fstack-protector-all
tools/perf/config/Makefile.feature deleted +0 -169
169 lines not on this page · raw message
tools/perf/config/feature-checks/.gitignore deleted +0 -2
@@ -1,2 +0,0 @@ -*.d -*.bin
tools/perf/config/feature-checks/Makefile deleted +0 -160
160 lines not on this page · raw message
tools/perf/config/feature-checks/test-all.c deleted +0 -143
143 lines not on this page · raw message
tools/perf/config/feature-checks/test-backtrace.c deleted +0 -13
@@ -1,13 +0,0 @@ -#include <execinfo.h> -#include <stdio.h> - -int main (void ) -{ -void *backtrace_fns[10 ]; -size_t entries; - - entries =backtrace (backtrace_fns,10 ); -backtrace_symbols_fd (backtrace_fns, entries,1 ); - -return 0 ; -}
tools/perf/config/feature-checks/test-bionic.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <android/api-level.h> - -int main (void ) -{ -return __ANDROID_API__; -}
tools/perf/config/feature-checks/test-compile.c deleted +0 -4
@@ -1,4 +0,0 @@ -int main (void ) -{ -return 0 ; -}
tools/perf/config/feature-checks/test-cplus-demangle.c deleted +0 -14
@@ -1,14 +0,0 @@ -extern int printf (const char *format, ...); -extern char *cplus_demangle (const char *,int ); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =cplus_demangle (symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}
tools/perf/config/feature-checks/test-dwarf.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <dwarf.h> -#include <elfutils/libdw.h> -#include <elfutils/version.h> - -int main (void ) -{ -Dwarf *dbg =dwarf_begin (0 ,DWARF_C_READ ); - -return (long )dbg; -}
tools/perf/config/feature-checks/test-fortify-source.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-glibc.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <gnu/libc-version.h> - -int main (void ) -{ -const char *version =gnu_get_libc_version (); - -return (long )version; -}
tools/perf/config/feature-checks/test-gtk2-infobar.c deleted +0 -11
@@ -1,11 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); -gtk_info_bar_new (); - -return 0 ; -}
tools/perf/config/feature-checks/test-gtk2.c deleted +0 -10
@@ -1,10 +0,0 @@ -#pragma GCC diagnostic ignored "-Wstrict-prototypes" -#include <gtk/gtk.h> -#pragma GCC diagnostic error "-Wstrict-prototypes" - -int main (int argc,char *argv[]) -{ -gtk_init (&argc, &argv); - -return 0 ; -}
tools/perf/config/feature-checks/test-hello.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-libaudit.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <libaudit.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -printf ("error message: %s\n" ,audit_errno_to_name (0 )); - -return audit_open (); -}
tools/perf/config/feature-checks/test-libbabeltrace.c deleted +0 -9
@@ -1,9 +0,0 @@ - -#include <babeltrace/ctf-writer/writer.h> -#include <babeltrace/ctf-ir/stream-class.h> - -int main (void ) -{ -bt_ctf_stream_class_get_packet_context_type ((void *)0 ); -return 0 ; -}
tools/perf/config/feature-checks/test-libbfd.c deleted +0 -15
@@ -1,15 +0,0 @@ -#include <bfd.h> - -extern int printf (const char *format, ...); - -int main (void ) -{ -char symbol[4096 ] ="FieldName__9ClassNameFd" ; -char *tmp; - - tmp =bfd_demangle (0 , symbol,0 ); - -printf ("demangled symbol: {%s}\n" , tmp); - -return 0 ; -}
tools/perf/config/feature-checks/test-libdw-dwarf-unwind.c deleted +0 -13
@@ -1,13 +0,0 @@ - -#include <elfutils/libdwfl.h> - -int main (void ) -{ -/* -* This function is guarded via: __nonnull_attribute__ (1, 2). -* Passing '1' as arguments value. This code is never executed, -* only compiled. -*/ -dwfl_thread_getframes ((void *)1 , (void *)1 ,NULL ); -return 0 ; -}
tools/perf/config/feature-checks/test-libelf-getphdrnum.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -size_t dst; - -return elf_getphdrnum (0 , &dst); -}
tools/perf/config/feature-checks/test-libelf-mmap.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ_MMAP ,0 ); - -return (long )elf; -}
tools/perf/config/feature-checks/test-libelf.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <libelf.h> - -int main (void ) -{ -Elf *elf =elf_begin (0 ,ELF_C_READ ,0 ); - -return (long )elf; -}
tools/perf/config/feature-checks/test-libnuma.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <numa.h> -#include <numaif.h> - -int main (void ) -{ -numa_available (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libperl.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <EXTERN.h> -#include <perl.h> - -int main (void ) -{ -perl_alloc (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libpython-version.c deleted +0 -10
@@ -1,10 +0,0 @@ -#include <Python.h> - -#if PY_VERSION_HEX >=0x03000000 -#error -#endif - -int main (void ) -{ -return 0 ; -}
tools/perf/config/feature-checks/test-libpython.c deleted +0 -8
@@ -1,8 +0,0 @@ -#include <Python.h> - -int main (void ) -{ -Py_Initialize (); - -return 0 ; -}
tools/perf/config/feature-checks/test-libslang.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <slang.h> - -int main (void ) -{ -return SLsmg_init_smg (); -}
tools/perf/config/feature-checks/test-libunwind-debug-frame.c deleted +0 -16
@@ -1,16 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int -UNW_OBJ (dwarf_find_debug_frame ) (int found,unw_dyn_info_t *di_debug, -unw_word_t ip,unw_word_t segbase, -const char *obj_name,unw_word_t start, -unw_word_t end); - -#define dwarf_find_debug_frame UNW_OBJ(dwarf_find_debug_frame) - -int main (void ) -{ -dwarf_find_debug_frame (0 ,NULL ,0 ,0 ,NULL ,0 ,0 ); -return 0 ; -}
tools/perf/config/feature-checks/test-libunwind.c deleted +0 -27
@@ -1,27 +0,0 @@ -#include <libunwind.h> -#include <stdlib.h> - -extern int UNW_OBJ (dwarf_search_unwind_table ) (unw_addr_space_t as, -unw_word_t ip, -unw_dyn_info_t *di, -unw_proc_info_t *pi, -int need_unwind_info,void *arg); - - -#define dwarf_search_unwind_table UNW_OBJ(dwarf_search_unwind_table) - -static unw_accessors_t accessors; - -int main (void ) -{ -unw_addr_space_t addr_space; - - addr_space =unw_create_addr_space (&accessors,0 ); -if (addr_space) -return 0 ; - -unw_init_remote (NULL , addr_space,NULL ); -dwarf_search_unwind_table (addr_space,0 ,NULL ,NULL ,0 ,NULL ); - -return 0 ; -}
tools/perf/config/feature-checks/test-pthread-attr-setaffinity-np.c deleted +0 -17
@@ -1,17 +0,0 @@ -#include <stdint.h> -#include <pthread.h> -#include <sched.h> - -int main (void ) -{ -int ret =0 ; -pthread_attr_t thread_attr; -cpu_set_t cs; - -pthread_attr_init (&thread_attr); -CPU_ZERO (&cs); - - ret =pthread_attr_setaffinity_np (&thread_attr,sizeof (cs), &cs); - -return ret; -}
tools/perf/config/feature-checks/test-stackprotector-all.c deleted +0 -6
@@ -1,6 +0,0 @@ -#include <stdio.h> - -int main (void ) -{ -return puts ("hi" ); -}
tools/perf/config/feature-checks/test-sync-compare-and-swap.c deleted +0 -14
@@ -1,14 +0,0 @@ -#include <stdint.h> - -volatile uint64_t x; - -int main (int argc,char *argv[]) -{ -uint64_t old, new = argc; - - argv = argv; -do { - old =__sync_val_compare_and_swap (&x,0 ,0 ); - }while (!__sync_bool_compare_and_swap (&x, old, new)); -return old == new; -}
tools/perf/config/feature-checks/test-timerfd.c deleted +0 -18
@@ -1,18 +0,0 @@ -/* -* test for timerfd functions used by perf-kvm-stat-live -*/ -#include <sys/timerfd.h> - -int main (void ) -{ -struct itimerspec new_value; - -int fd =timerfd_create (CLOCK_MONOTONIC ,TFD_NONBLOCK ); -if (fd <0 ) -return 1 ; - -if (timerfd_settime (fd,0 , &new_value,NULL ) !=0 ) -return 1 ; - -return 0 ; -}
tools/perf/config/feature-checks/test-zlib.c deleted +0 -9
@@ -1,9 +0,0 @@ -#include <zlib.h> - -int main (void ) -{ -z_stream zs; - -inflateInit (&zs); -return 0 ; -}
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 14/15 tools build: Allow to override feature checks setup
In reply to Jiri OlsaAllowing to override configuration variables for feature checks. Also adding automated test and documentation.
--- tools/build/Documentation/Feature.txt | 93 +++++++++++++++++++++++++++++++ tools/build/Makefile.feature | 4 +- tools/build/tests/features/Makefile | 23 ++++++++ tools/build/tests/features/Makefile.test1 | 16 ++++++ tools/build/tests/run.sh | 4 +- 5 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 tools/build/Documentation/Feature.txt create mode 100644 tools/build/tests/features/Makefile create mode 100644 tools/build/tests/features/Makefile.test1
tools/build/Documentation/Feature.txt new file +93 -0
@@ -0,0 +1,93 @@ +Feature Framework +================= +The 'feature' framework provides information for makefiles about +installed libraries and interfaces in the system. + +The 'feature' is represented by its name and simple source located +in 'tools/build/feature/test-$(name).c' file. The framework builds +each such source for configured feature and sets $(feature-$(name)) +variable to 0 or 1 if it fails or succeeds to build respectively. + +The current usage example of the feature framework is: + +--- Makefile.test + FEATURE_TESTS := glibc backtrace + FEATURE_DISPLAY := glibc + + srctree := ../../../.. + include $(srctree)/tools/build/Makefile.feature + + ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) + endif + + ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) + endif +--- + +User defines list of features to check in FEATURE_TESTS variable: + + FEATURE_TESTS := glibc backtrace + +and list of features she wishes to display in FEATURE_DISPLAY variable: + + FEATURE_DISPLAY := glibc + +then user includes Makefile.feature makefile: + + include $(srctree)/tools/build/Makefile.feature + +following output is displayed on processing of the makefile: + + $ make -f Makefile.test + + Auto-detecting system features: + ... glibc: [ on ] + +Plus following variables are defined indicating the +requested feature status: + + $(feature-glibc) + $(feature-backtrace) + +Following features are currently available for FEATURE_TESTS: + + backtrace + dwarf + fortify-source + sync-compare-and-swap + glibc + gtk2 + gtk2-infobar + libaudit + libbfd + libelf + libelf-getphdrnum + libelf-mmap + libnuma + libperl + libpython + libpython-version + libslang + libunwind + pthread-attr-setaffinity-np + stackprotector-all + timerfd + libdw-dwarf-unwind + libbabeltrace + zlib + +It's also possible to pass options for checks compilation and linking +by using following variables: + + FEATURE_CHECK_CFLAGS-$(name) + FEATURE_CHECK_LDFLAGS-$(name) + +where $(anem) represents feature name from above list. + +For example following settings will provide options for 'libunwind' +feature compilation and linking: + + FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS) + FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS)
tools/build/Makefile.feature +2 -2
@@ -27,7 +27,7 @@ endef # the rule that uses them - an example for that is the 'bionic' # feature check. ] # -FEATURE_TESTS = \ +FEATURE_TESTS ?= \ backtrace \ dwarf \ fortify-source \
@@ -52,7 +52,7 @@ FEATURE_TESTS = \ libdw-dwarf-unwind \ zlib -FEATURE_DISPLAY = \ +FEATURE_DISPLAY ?= \ dwarf \ glibc \ gtk2 \
tools/build/tests/features/Makefile new file +23 -0
@@ -0,0 +1,23 @@ +all: test1 + +test1: + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + # we should get one line with 'glibc' feature status + features=`grep -cF ... out`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # we should NOT get any feature status line on second run + make -f Makefile.test1 > out + features=`grep -cF ... out`; \ + if [ "$$features" == "1" ]; then echo FAILED; exit 1; fi + # we should get both 'glibc' and 'backtrace' status lines now + make -f Makefile.test1 VF=1 > out + features=`grep -cF ... out`; \ + if [ "$$features" != "2" ]; then echo FAILED; exit 1; fi + # and fresh start without FEATURE-DUMP, expecting 'glibc' status line + rm -f FEATURE-DUMP + make -f Makefile.test1 > out + features=`grep -cF ... out`; \ + if [ "$$features" != "1" ]; then echo FAILED; exit 1; fi + # cleanup + rm -f FEATURE-DUMP out
tools/build/tests/features/Makefile.test1 new file +16 -0
@@ -0,0 +1,16 @@ + +FEATURE_TESTS := glibc backtrace +FEATURE_DISPLAY := glibc + +srctree := ../../../.. +include $(srctree)/tools/build/Makefile.feature + +ifndef feature-glibc + $(error FAILED feature-glibc variable not defined) +endif + +ifndef feature-backtrace + $(error FAILED feature-backtrace variable not defined) +endif + +all:
tools/build/tests/run.sh +3 -1
@@ -39,4 +39,6 @@ echo -n Testing.. test_ex test_ex_suffix -echo OK +cd features && make -s -f Makefile + +if [ $? -eq 0 ]; then echo OK; fi
Signature · 1 line
1.9.3
Jiri Olsa
reviewerPATCH v2 15/15 tools build: Fix feature_check name clash
In reply to Jiri OlsaWe have 2 feature_check functions, which conflict with each other. Fixing it by renaming the latter to feature_display_check.
--- tools/build/Makefile.feature | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
tools/build/Makefile.feature +3 -3
@@ -134,14 +134,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
Em Wed, Mar 11, 2015 at 09:58:49AM +0100, Jiri Olsa escreveu:
Quoted 12 lines
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.v2 changes:
- omitted patch 1 from original version (Ingo)
- added features build output dump (Arnaldo)
- better scripting in features test (Namhyung)
- fixed test-all for pthread-attr-setaffinity-np
- removedmain_test_libbabeltracefrom test-all
- patches reordered
Quoted 3 lines
It's also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/build
Ok, so using the csets from the above branch, if I do:
[acme@ssdandy linux]$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ; time make O=/tmp/build/perf -C tools/perf LIBBABELTRACE_DIR=/opt/libbabeltrace/ install-bin
make: Entering directory `/home/acme/git/linux/tools/perf'
BUILD: Doing 'make -j8' parallel build
config/Makefile:423: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR
Auto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdw
And then, despite not telling anything about babeltrace being linked, i.e. the no line above with a [ on ], we get:
[acme@ssdandy linux]$ ldd ~/bin/perf | grep babel
libbabeltrace-ctf.so.1 => /opt/libbabeltrace/lib/libbabeltrace-ctf.so.1 (0x00007f5f7b758000) libbabeltrace.so.1 => /opt/libbabeltrace/lib/libbabeltrace.so.1 (0x00007f5f7acfb000)
[acme@ssdandy linux]$
I.e. if a libbabeltrace-devel was installed and had what is needed to build it in, when there would be no need for the LIBBABELTRACE_DIR above and babeltrace wouldn't be either implicitely or explicitely specified as something we want to build against we would not show it as a feature being built in (no
libbabeltrace: [ On ]) but would do it anyway, is that really the intention?
I tested in fedora, where no system auto-detection fails, i.e. test-all passes, and the result is the same.
Ingo, can you clarify here?
- Arnaldo
Quoted 35 lines · Arnaldo Carvalho de Melo
Em Wed, Mar 11, 2015 at 09:58:49AM +0100, Jiri Olsa escreveu:
Quoted 12 lines
hi,
moving features detection framework from perf to 'tools/build' plus other minor fixes.v2 changes:
- omitted patch 1 from original version (Ingo)
- added features build output dump (Arnaldo)
- better scripting in features test (Namhyung)
- fixed test-all for pthread-attr-setaffinity-np
- removedmain_test_libbabeltracefrom test-all
- patches reorderedQuoted 3 lines
It's also available in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/buildOk, so using the csets from the above branch, if I do:
[acme@ssdandy linux]$ rm -rf
/tmp/build/perf; mkdir -p/tmp/build/perf; time make O=/tmp/build/perf -Ctools/perfLIBBABELTRACE_DIR=/opt/libbabeltrace/ install-bin
make: Entering directory `/home/acme/git/linux/tools/perf'
BUILD: Doing 'make -j8' parallel build
config/Makefile:423: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or setLIBUNWIND_DIRAuto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]
Quoted 7 lines
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdwAnd then, despite not telling anything about babeltrace being linked, i.e. the no line above with a [ on ], we get:
libbabeltrace was taken out of the default display of features as requested, because the requested interface wasn't released yet
you enabled it manually via LIBBABELTRACE_DIR='...', so it got linked.. but it wont appear in the default display list anyway.. we dont have this kind of functionality yet
jirka
Quoted 18 lines
[acme@ssdandy linux]$ ldd ~/bin/perf | grep babel
libbabeltrace-ctf.so.1 => /opt/libbabeltrace/lib/libbabeltrace-ctf.so.1 (0x00007f5f7b758000) libbabeltrace.so.1 => /opt/libbabeltrace/lib/libbabeltrace.so.1 (0x00007f5f7acfb000)[acme@ssdandy linux]$
I.e. if a libbabeltrace-devel was installed and had what is needed to build it in, when there would be no need for the
LIBBABELTRACE_DIRabove and babeltrace wouldn't be either implicitely or explicitely specified as something we want to build against we would not show it as a feature being built in (no
libbabeltrace: [ On ]) but would do it anyway, is that really the intention?I tested in fedora, where no system auto-detection fails, i.e. test-all passes, and the result is the same.
Ingo, can you clarify here?
- Arnaldo
Em Wed, Mar 18, 2015 at 07:59:16PM +0100, Jiri Olsa escreveu:
Quoted 31 lines · Arnaldo Carvalho de Melo
Quoted 22 lines
Em Wed, Mar 11, 2015 at 09:58:49AM +0100, Jiri Olsa escreveu:
Quoted 2 lines
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/buildOk, so using the csets from the above branch, if I do:
[acme@ssdandy linux]$ rm -rf
/tmp/build/perf; mkdir -p/tmp/build/perf; time make O=/tmp/build/perf -Ctools/perfLIBBABELTRACE_DIR=/opt/libbabeltrace/ install-bin
make: Entering directory `/home/acme/git/linux/tools/perf'
BUILD: Doing 'make -j8' parallel build
config/Makefile:423: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or setLIBUNWIND_DIRAuto-detecting system features:
... dwarf: [ on ] ... glibc: [ on ] ... gtk2: [ on ] ... libaudit: [ on ] ... libbfd: [ on ] ... libelf: [ on ] ... libnuma: [ on ] ... libperl: [ on ] ... libpython: [ on ] ... libslang: [ on ]Quoted 7 lines
... libunwind: [ OFF ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... DWARF post unwind library: libdwAnd then, despite not telling anything about babeltrace being linked, i.e. the no line above with a [ on ], we get:
Quoted 6 lines
libbabeltrace was taken out of the default display of features as requested, because the requested interface wasn't released yet
you enabled it manually via LIBBABELTRACE_DIR='...', so it got linked.. but it wont appear in the default
I thought that what was requested was that it wouldn't be built, even if the required libs were installed, i.e. by default it wouldn't be tried.
If I remove that LIBBABELTRACE_DIR all it will do is to try to build it anyway and fail, which will make it emit the "support for CTF will not be enabled since libbabeltrace-devel wasn't found, etc" like message, which is confusing as well, because nobody will find, from a distro, a libbabeltrace-devel that meeds this requirement, which I think is the point Ingo tried to make, right?
My expectation, from what I've read in the discussion with Ingo, was that NO_LIBBABELTRACE (sp?) would be turned on by default until we were reasonably sure that the availability of the required functionality was more or less widespread, i.e. that testing for it would have a high degree of chances of succeeding, thus not slowing down the build process most of the time for most of the users.
People wanting to build it would have to explicitely pass NO_LIBBABELTRACE=0 or equivalent in the make command line.
Anyway, I applied the patch, as it is holding the other changes, we can always fix this later.
- Arnaldo