2015-11-27 09:07:02

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH 1/2] tools build: Introduce features dump include makefile

Creating the FEATURE-INCLUDE file, that contains all features
status dumped in make's variable format:
...
feature-backtrace=1
feature-dwarf=1
...

It's purpose is to be included in sub-project makefiles to get
features detection state. This way we can run the detection only
in top level project and propagate it down.

Cc: Wang Nan <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/build/Makefile.feature | 12 ++++++++++++
tools/lib/bpf/.gitignore | 1 +
tools/lib/bpf/Makefile | 2 +-
tools/perf/.gitignore | 1 +
tools/perf/Makefile.perf | 2 +-
5 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 37ff4c9f92f1..51f8d5928f98 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -131,6 +131,16 @@ ifeq ($(dwarf-post-unwind),1)
FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
endif

+# The FEATURE-INCLUDE file contains all features status
+# dumped in make's variable format:
+# ...
+# feature-backtrace=1
+# feature-dwarf=1
+# ...
+# It's to be included in sub-project makefiles to get
+# features detection state.
+FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
+
# The $(feature_display) controls the default detection message
# output. It's set if:
# - detected features differes from stored features from
@@ -140,6 +150,8 @@ endif

ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)")
$(shell echo "$(FEATURE_DUMP)" > $(FEATURE_DUMP_FILENAME))
+ $(shell rm -f $(FEATURE_INCLUDE_FILENAME))
+ $(foreach feat,$(FEATURE_TESTS),$(shell echo "feature-$(feat)=$(feature-$(feat))" >> $(FEATURE_INCLUDE_FILENAME)))
feature_display := 1
endif

diff --git a/tools/lib/bpf/.gitignore b/tools/lib/bpf/.gitignore
index f81e549ddfdb..4019b8e4021a 100644
--- a/tools/lib/bpf/.gitignore
+++ b/tools/lib/bpf/.gitignore
@@ -1,2 +1,3 @@
libbpf_version.h
FEATURE-DUMP.libbpf
+FEATURE-INCLUDE.libbpf
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index 636e3ddb93a1..6916cbe962a5 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -190,7 +190,7 @@ config-clean:
clean:
$(call QUIET_CLEAN, libbpf) $(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d \
$(RM) LIBBPF-CFLAGS
- $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf
+ $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf $(OUTPUT)FEATURE-INCLUDE.libbpf



diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
index 3d1bb802dbf4..4a3eb8dedc54 100644
--- a/tools/perf/.gitignore
+++ b/tools/perf/.gitignore
@@ -2,6 +2,7 @@ PERF-CFLAGS
PERF-GUI-VARS
PERF-VERSION-FILE
FEATURE-DUMP
+FEATURE-INCLUDE
perf
perf-read-vdso32
perf-read-vdsox32
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 929a32ba15f5..b74f924185b7 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -589,7 +589,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean
$(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
$(Q)$(RM) $(OUTPUT).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)FEATURE-DUMP $(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)FEATURE-INCLUDE $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
$(OUTPUT)util/intel-pt-decoder/inat-tables.c
$(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
$(python-clean)
--
2.4.3


2015-11-27 09:07:10

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH 2/2] perf build: Use FEATURE-INCLUDE in bpf subproject

Using FEATURE-INCLUDE in bpf subproject in case bpf is built
via perf. Keep the current features detection for other cases.

Cc: Wang Nan <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Jiri Olsa <[email protected]>
---
tools/lib/bpf/Makefile | 4 ++++
tools/perf/Makefile.perf | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index 6916cbe962a5..6b9af77418b3 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -80,7 +80,11 @@ endif
endif

ifeq ($(check_feat),1)
+ifeq ($(FEATURES_INCLUDE),)
include $(srctree)/tools/build/Makefile.feature
+else
+include $(FEATURES_INCLUDE)
+endif
endif

export prefix libdir src obj
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index b74f924185b7..7338a7e62fcd 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -431,7 +431,7 @@ $(LIBAPI)-clean:
$(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null

$(LIBBPF): fixdep FORCE
- $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) $(OUTPUT)libbpf.a
+ $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_INCLUDE=$(realpath $(OUTPUT)FEATURE-INCLUDE)

$(LIBBPF)-clean:
$(call QUIET_CLEAN, libbpf)
--
2.4.3

2015-12-07 08:56:20

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH 1/2] tools build: Introduce features dump include makefile

ping, Wang Nan, any comments on these 2?

thanks,
jirka

On Fri, Nov 27, 2015 at 10:06:50AM +0100, Jiri Olsa wrote:
> Creating the FEATURE-INCLUDE file, that contains all features
> status dumped in make's variable format:
> ...
> feature-backtrace=1
> feature-dwarf=1
> ...
>
> It's purpose is to be included in sub-project makefiles to get
> features detection state. This way we can run the detection only
> in top level project and propagate it down.
>
> Cc: Wang Nan <[email protected]>
> Link: http://lkml.kernel.org/n/[email protected]
> Signed-off-by: Jiri Olsa <[email protected]>
> ---
> tools/build/Makefile.feature | 12 ++++++++++++
> tools/lib/bpf/.gitignore | 1 +
> tools/lib/bpf/Makefile | 2 +-
> tools/perf/.gitignore | 1 +
> tools/perf/Makefile.perf | 2 +-
> 5 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 37ff4c9f92f1..51f8d5928f98 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -131,6 +131,16 @@ ifeq ($(dwarf-post-unwind),1)
> FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
> endif
>
> +# The FEATURE-INCLUDE file contains all features status
> +# dumped in make's variable format:
> +# ...
> +# feature-backtrace=1
> +# feature-dwarf=1
> +# ...
> +# It's to be included in sub-project makefiles to get
> +# features detection state.
> +FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
> +
> # The $(feature_display) controls the default detection message
> # output. It's set if:
> # - detected features differes from stored features from
> @@ -140,6 +150,8 @@ endif
>
> ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)")
> $(shell echo "$(FEATURE_DUMP)" > $(FEATURE_DUMP_FILENAME))
> + $(shell rm -f $(FEATURE_INCLUDE_FILENAME))
> + $(foreach feat,$(FEATURE_TESTS),$(shell echo "feature-$(feat)=$(feature-$(feat))" >> $(FEATURE_INCLUDE_FILENAME)))
> feature_display := 1
> endif
>
> diff --git a/tools/lib/bpf/.gitignore b/tools/lib/bpf/.gitignore
> index f81e549ddfdb..4019b8e4021a 100644
> --- a/tools/lib/bpf/.gitignore
> +++ b/tools/lib/bpf/.gitignore
> @@ -1,2 +1,3 @@
> libbpf_version.h
> FEATURE-DUMP.libbpf
> +FEATURE-INCLUDE.libbpf
> diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
> index 636e3ddb93a1..6916cbe962a5 100644
> --- a/tools/lib/bpf/Makefile
> +++ b/tools/lib/bpf/Makefile
> @@ -190,7 +190,7 @@ config-clean:
> clean:
> $(call QUIET_CLEAN, libbpf) $(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d \
> $(RM) LIBBPF-CFLAGS
> - $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf
> + $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf $(OUTPUT)FEATURE-INCLUDE.libbpf
>
>
>
> diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
> index 3d1bb802dbf4..4a3eb8dedc54 100644
> --- a/tools/perf/.gitignore
> +++ b/tools/perf/.gitignore
> @@ -2,6 +2,7 @@ PERF-CFLAGS
> PERF-GUI-VARS
> PERF-VERSION-FILE
> FEATURE-DUMP
> +FEATURE-INCLUDE
> perf
> perf-read-vdso32
> perf-read-vdsox32
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 929a32ba15f5..b74f924185b7 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -589,7 +589,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean
> $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
> $(Q)$(RM) $(OUTPUT).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)FEATURE-DUMP $(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)FEATURE-INCLUDE $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
> $(OUTPUT)util/intel-pt-decoder/inat-tables.c
> $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
> $(python-clean)
> --
> 2.4.3
>

2015-12-07 09:30:37

by Wang Nan

[permalink] [raw]
Subject: Re: [PATCH 1/2] tools build: Introduce features dump include makefile

Sorry for the late response...

Tested-by: Wang Nan <[email protected]>

But I'm thinking whether we can remove FEATURE-DUMP and rely on
FEATURE-INCLUDE only, since they contain same information...

Thank you.

On 2015/12/7 16:56, Jiri Olsa wrote:
> ping, Wang Nan, any comments on these 2?
>
> thanks,
> jirka
>
> On Fri, Nov 27, 2015 at 10:06:50AM +0100, Jiri Olsa wrote:
>> Creating the FEATURE-INCLUDE file, that contains all features
>> status dumped in make's variable format:
>> ...
>> feature-backtrace=1
>> feature-dwarf=1
>> ...
>>
>> It's purpose is to be included in sub-project makefiles to get
>> features detection state. This way we can run the detection only
>> in top level project and propagate it down.
>>
>> Cc: Wang Nan <[email protected]>
>> Link: http://lkml.kernel.org/n/[email protected]
>> Signed-off-by: Jiri Olsa <[email protected]>
>> ---
>> tools/build/Makefile.feature | 12 ++++++++++++
>> tools/lib/bpf/.gitignore | 1 +
>> tools/lib/bpf/Makefile | 2 +-
>> tools/perf/.gitignore | 1 +
>> tools/perf/Makefile.perf | 2 +-
>> 5 files changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
>> index 37ff4c9f92f1..51f8d5928f98 100644
>> --- a/tools/build/Makefile.feature
>> +++ b/tools/build/Makefile.feature
>> @@ -131,6 +131,16 @@ ifeq ($(dwarf-post-unwind),1)
>> FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
>> endif
>>
>> +# The FEATURE-INCLUDE file contains all features status
>> +# dumped in make's variable format:
>> +# ...
>> +# feature-backtrace=1
>> +# feature-dwarf=1
>> +# ...
>> +# It's to be included in sub-project makefiles to get
>> +# features detection state.
>> +FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
>> +
>> # The $(feature_display) controls the default detection message
>> # output. It's set if:
>> # - detected features differes from stored features from
>> @@ -140,6 +150,8 @@ endif
>>
>> ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)")
>> $(shell echo "$(FEATURE_DUMP)" > $(FEATURE_DUMP_FILENAME))
>> + $(shell rm -f $(FEATURE_INCLUDE_FILENAME))
>> + $(foreach feat,$(FEATURE_TESTS),$(shell echo "feature-$(feat)=$(feature-$(feat))" >> $(FEATURE_INCLUDE_FILENAME)))
>> feature_display := 1
>> endif
>>
>> diff --git a/tools/lib/bpf/.gitignore b/tools/lib/bpf/.gitignore
>> index f81e549ddfdb..4019b8e4021a 100644
>> --- a/tools/lib/bpf/.gitignore
>> +++ b/tools/lib/bpf/.gitignore
>> @@ -1,2 +1,3 @@
>> libbpf_version.h
>> FEATURE-DUMP.libbpf
>> +FEATURE-INCLUDE.libbpf
>> diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
>> index 636e3ddb93a1..6916cbe962a5 100644
>> --- a/tools/lib/bpf/Makefile
>> +++ b/tools/lib/bpf/Makefile
>> @@ -190,7 +190,7 @@ config-clean:
>> clean:
>> $(call QUIET_CLEAN, libbpf) $(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d \
>> $(RM) LIBBPF-CFLAGS
>> - $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf
>> + $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf $(OUTPUT)FEATURE-INCLUDE.libbpf
>>
>>
>>
>> diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
>> index 3d1bb802dbf4..4a3eb8dedc54 100644
>> --- a/tools/perf/.gitignore
>> +++ b/tools/perf/.gitignore
>> @@ -2,6 +2,7 @@ PERF-CFLAGS
>> PERF-GUI-VARS
>> PERF-VERSION-FILE
>> FEATURE-DUMP
>> +FEATURE-INCLUDE
>> perf
>> perf-read-vdso32
>> perf-read-vdsox32
>> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
>> index 929a32ba15f5..b74f924185b7 100644
>> --- a/tools/perf/Makefile.perf
>> +++ b/tools/perf/Makefile.perf
>> @@ -589,7 +589,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean
>> $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
>> $(Q)$(RM) $(OUTPUT).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)FEATURE-DUMP $(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)FEATURE-INCLUDE $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
>> $(OUTPUT)util/intel-pt-decoder/inat-tables.c
>> $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
>> $(python-clean)
>> --
>> 2.4.3
>>

2015-12-07 10:29:54

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH 1/2] tools build: Introduce features dump include makefile

On Mon, Dec 07, 2015 at 05:22:41PM +0800, Wangnan (F) wrote:
> Sorry for the late response...
>
> Tested-by: Wang Nan <[email protected]>
>
> But I'm thinking whether we can remove FEATURE-DUMP and rely on
> FEATURE-INCLUDE only, since they contain same information...

had the same thought, but the issue I hit is that I couldn't
find a way to create *multiline* contents for FEATURE-INCLUDE
variable in make

maybe we could use internally signle line contents and
convert multiline contents of FEATURE-INCLUDE into singleline
variable for checking against live info

jirka

2015-12-07 10:32:27

by Wang Nan

[permalink] [raw]
Subject: Re: [PATCH 1/2] tools build: Introduce features dump include makefile



On 2015/12/7 18:29, Jiri Olsa wrote:
> On Mon, Dec 07, 2015 at 05:22:41PM +0800, Wangnan (F) wrote:
>> Sorry for the late response...
>>
>> Tested-by: Wang Nan <[email protected]>
>>
>> But I'm thinking whether we can remove FEATURE-DUMP and rely on
>> FEATURE-INCLUDE only, since they contain same information...
> had the same thought, but the issue I hit is that I couldn't
> find a way to create *multiline* contents for FEATURE-INCLUDE
> variable in make
>
> maybe we could use internally signle line contents and
> convert multiline contents of FEATURE-INCLUDE into singleline
> variable for checking against live info

What about this? The drawback is it heavily rely on shell commands...

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 51f8d59..514c4e6 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -123,9 +123,8 @@ define feature_print_text_code
MSG = $(shell printf '...%30s: %s' $(1) $(2))
endef

-FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
-FEATURE_DUMP := $(foreach
feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
-FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat
$(FEATURE_DUMP_FILENAME))
+#FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
+#FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat
$(FEATURE_DUMP_FILENAME))

ifeq ($(dwarf-post-unwind),1)
FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
@@ -141,6 +140,9 @@ endif
# features detection state.
FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)

+FEATURE_DUMP := $(foreach
feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
+FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch
$(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep
'feature-$(feat)=' | sed 's/=\(.\)/(\1)/g'))
+
# The $(feature_display) controls the default detection message
# output. It's set if:
# - detected features differes from stored features from

> jirka

2015-12-07 10:39:05

by Wang Nan

[permalink] [raw]
Subject: Re: [PATCH 1/2] tools build: Introduce features dump include makefile



On 2015/12/7 18:32, Wangnan (F) wrote:
>
>
> On 2015/12/7 18:29, Jiri Olsa wrote:
>> On Mon, Dec 07, 2015 at 05:22:41PM +0800, Wangnan (F) wrote:
>>> Sorry for the late response...
>>>
>>> Tested-by: Wang Nan <[email protected]>
>>>
>>> But I'm thinking whether we can remove FEATURE-DUMP and rely on
>>> FEATURE-INCLUDE only, since they contain same information...
>> had the same thought, but the issue I hit is that I couldn't
>> find a way to create *multiline* contents for FEATURE-INCLUDE
>> variable in make
>>
>> maybe we could use internally signle line contents and
>> convert multiline contents of FEATURE-INCLUDE into singleline
>> variable for checking against live info
>
> What about this? The drawback is it heavily rely on shell commands...
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 51f8d59..514c4e6 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -123,9 +123,8 @@ define feature_print_text_code
> MSG = $(shell printf '...%30s: %s' $(1) $(2))
> endef
>
> -FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
> -FEATURE_DUMP := $(foreach
> feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
> -FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat
> $(FEATURE_DUMP_FILENAME))
> +#FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
> +#FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat
> $(FEATURE_DUMP_FILENAME))
>
> ifeq ($(dwarf-post-unwind),1)
> FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
> @@ -141,6 +140,9 @@ endif
> # features detection state.
> FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
>
> +FEATURE_DUMP := $(foreach
> feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
> +FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch
> $(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep
> 'feature-$(feat)=' | sed 's/=\(.\)/(\1)/g'))

We can avoid this 'sed' by transforming feature-xxx(1) to feature-xxx=1,
then it would be uniformed
with strings in FEATURE-INCLUDE...

Will provide a patch with my SOB.

Thank you.

> +
> # The $(feature_display) controls the default detection message
> # output. It's set if:
> # - detected features differes from stored features from
>
>> jirka
>

2015-12-07 10:49:35

by Wang Nan

[permalink] [raw]
Subject: [PATCH] tools build: Remove FEATURE-DUMP

Jiri introduces a FEATURE-INCLUDE file for feature checking. It
contains same information with FEATURE-DUMP, so we can avoid generating
FEATURE-DUMP.

Following modification should ensure FEATURE_TESTS contains
FEATURE_DISPLAY.

Signed-off-by: Wang Nan <[email protected]>
Cc: Jiri Olsa <[email protected]>
---

I haven't thoroughly tested this patch, just want to show the
possibility of removing FEATURE-DUMP. I don't insist on this. Jiri, if
you find this patch is not good please simply ignore it.

Thank you.

---

tools/build/Makefile.feature | 8 +++-----
tools/lib/bpf/.gitignore | 1 -
tools/lib/bpf/Makefile | 2 +-
tools/perf/.gitignore | 1 -
tools/perf/Makefile.perf | 2 +-
5 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index 51f8d59..98a13bd 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -123,10 +123,6 @@ define feature_print_text_code
MSG = $(shell printf '...%30s: %s' $(1) $(2))
endef

-FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
-FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
-FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat $(FEATURE_DUMP_FILENAME))
-
ifeq ($(dwarf-post-unwind),1)
FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
endif
@@ -141,6 +137,9 @@ endif
# features detection state.
FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)

+FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)=$(feature-$(feat)))
+FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch $(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep 'feature-$(feat)='))
+
# The $(feature_display) controls the default detection message
# output. It's set if:
# - detected features differes from stored features from
@@ -149,7 +148,6 @@ FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
# - VF is enabled

ifneq ("$(FEATURE_DUMP)","$(FEATURE_DUMP_FILE)")
- $(shell echo "$(FEATURE_DUMP)" > $(FEATURE_DUMP_FILENAME))
$(shell rm -f $(FEATURE_INCLUDE_FILENAME))
$(foreach feat,$(FEATURE_TESTS),$(shell echo "feature-$(feat)=$(feature-$(feat))" >> $(FEATURE_INCLUDE_FILENAME)))
feature_display := 1
diff --git a/tools/lib/bpf/.gitignore b/tools/lib/bpf/.gitignore
index 4019b8e..c4cc003 100644
--- a/tools/lib/bpf/.gitignore
+++ b/tools/lib/bpf/.gitignore
@@ -1,3 +1,2 @@
libbpf_version.h
-FEATURE-DUMP.libbpf
FEATURE-INCLUDE.libbpf
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index 6b9af77..6bc3cb5 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -194,7 +194,7 @@ config-clean:
clean:
$(call QUIET_CLEAN, libbpf) $(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d \
$(RM) LIBBPF-CFLAGS
- $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-DUMP.libbpf $(OUTPUT)FEATURE-INCLUDE.libbpf
+ $(call QUIET_CLEAN, core-gen) $(RM) $(OUTPUT)FEATURE-INCLUDE.libbpf



diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
index 4a3eb8d..5e93718 100644
--- a/tools/perf/.gitignore
+++ b/tools/perf/.gitignore
@@ -1,7 +1,6 @@
PERF-CFLAGS
PERF-GUI-VARS
PERF-VERSION-FILE
-FEATURE-DUMP
FEATURE-INCLUDE
perf
perf-read-vdso32
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 7338a7e..7cccf11 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -589,7 +589,7 @@ clean: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean config-clean
$(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
$(Q)$(RM) $(OUTPUT).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)FEATURE-DUMP $(OUTPUT)FEATURE-INCLUDE $(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-INCLUDE $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
$(OUTPUT)util/intel-pt-decoder/inat-tables.c
$(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
$(python-clean)
--
1.8.3.4

2015-12-07 13:52:59

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH] tools build: Remove FEATURE-DUMP

On Mon, Dec 07, 2015 at 10:48:58AM +0000, Wang Nan wrote:
> Jiri introduces a FEATURE-INCLUDE file for feature checking. It
> contains same information with FEATURE-DUMP, so we can avoid generating
> FEATURE-DUMP.
>
> Following modification should ensure FEATURE_TESTS contains
> FEATURE_DISPLAY.
>
> Signed-off-by: Wang Nan <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> ---
>
> I haven't thoroughly tested this patch, just want to show the
> possibility of removing FEATURE-DUMP. I don't insist on this. Jiri, if
> you find this patch is not good please simply ignore it.
>
> Thank you.
>
> ---
>
> tools/build/Makefile.feature | 8 +++-----
> tools/lib/bpf/.gitignore | 1 -
> tools/lib/bpf/Makefile | 2 +-
> tools/perf/.gitignore | 1 -
> tools/perf/Makefile.perf | 2 +-
> 5 files changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 51f8d59..98a13bd 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -123,10 +123,6 @@ define feature_print_text_code
> MSG = $(shell printf '...%30s: %s' $(1) $(2))
> endef
>
> -FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
> -FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
> -FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat $(FEATURE_DUMP_FILENAME))
> -
> ifeq ($(dwarf-post-unwind),1)
> FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
> endif
> @@ -141,6 +137,9 @@ endif
> # features detection state.
> FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
>
> +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)=$(feature-$(feat)))
> +FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch $(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep 'feature-$(feat)='))

hum, this ignores dwarf-post-unwind setup, I think it needs more changes
I'll post new version

thanks.
jirka

2015-12-18 08:41:36

by Wang Nan

[permalink] [raw]
Subject: Re: [PATCH] tools build: Remove FEATURE-DUMP



On 2015/12/7 21:52, Jiri Olsa wrote:
> On Mon, Dec 07, 2015 at 10:48:58AM +0000, Wang Nan wrote:
>> Jiri introduces a FEATURE-INCLUDE file for feature checking. It
>> contains same information with FEATURE-DUMP, so we can avoid generating
>> FEATURE-DUMP.
>>
>> Following modification should ensure FEATURE_TESTS contains
>> FEATURE_DISPLAY.
>>
>> Signed-off-by: Wang Nan <[email protected]>
>> Cc: Jiri Olsa <[email protected]>
>> ---
>>
>> I haven't thoroughly tested this patch, just want to show the
>> possibility of removing FEATURE-DUMP. I don't insist on this. Jiri, if
>> you find this patch is not good please simply ignore it.
>>
>> Thank you.
>>
>> ---
>>
>> tools/build/Makefile.feature | 8 +++-----
>> tools/lib/bpf/.gitignore | 1 -
>> tools/lib/bpf/Makefile | 2 +-
>> tools/perf/.gitignore | 1 -
>> tools/perf/Makefile.perf | 2 +-
>> 5 files changed, 5 insertions(+), 9 deletions(-)
>>
>> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
>> index 51f8d59..98a13bd 100644
>> --- a/tools/build/Makefile.feature
>> +++ b/tools/build/Makefile.feature
>> @@ -123,10 +123,6 @@ define feature_print_text_code
>> MSG = $(shell printf '...%30s: %s' $(1) $(2))
>> endef
>>
>> -FEATURE_DUMP_FILENAME = $(OUTPUT)FEATURE-DUMP$(FEATURE_USER)
>> -FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)($(feature-$(feat))))
>> -FEATURE_DUMP_FILE := $(shell touch $(FEATURE_DUMP_FILENAME); cat $(FEATURE_DUMP_FILENAME))
>> -
>> ifeq ($(dwarf-post-unwind),1)
>> FEATURE_DUMP += dwarf-post-unwind($(dwarf-post-unwind-text))
>> endif
>> @@ -141,6 +137,9 @@ endif
>> # features detection state.
>> FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
>>
>> +FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)=$(feature-$(feat)))
>> +FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch $(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep 'feature-$(feat)='))
> hum, this ignores dwarf-post-unwind setup, I think it needs more changes
> I'll post new version

Hi Jiri,

What the current status of this patch and 'tools build: Introduce
features dump include makefile'? They are in my local tree for a long time.

Thank you.

2015-12-18 10:13:30

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH] tools build: Remove FEATURE-DUMP

On Fri, Dec 18, 2015 at 04:41:05PM +0800, Wangnan (F) wrote:

SNIP

> >> # features detection state.
> >> FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
> >>+FEATURE_DUMP := $(foreach feat,$(FEATURE_DISPLAY),feature-$(feat)=$(feature-$(feat)))
> >>+FEATURE_DUMP_FILE := $(foreach feat,$(FEATURE_DISPLAY),$(shell touch $(FEATURE_INCLUDE_FILENAME); cat $(FEATURE_INCLUDE_FILENAME) | grep 'feature-$(feat)='))
> >hum, this ignores dwarf-post-unwind setup, I think it needs more changes
> >I'll post new version
>
> Hi Jiri,
>
> What the current status of this patch and 'tools build: Introduce
> features dump include makefile'? They are in my local tree for a long time.

hi,
I'll try to send it out next week.. I needed to factor the code a little

jirka