Skip to contentSkip to conversation

tools build: Introduce features dump include makefile

PATCH In review Jiri Olsa 3 participants 11 messages Nov 27, 2015 – Dec 18, 2015

Subsystems (3)
lore
Share & tools
lore

Jiri Olsa

author reviewer
#0 lore raw

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.

---
 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(-)
tools/build/Makefile.feature +12 -0
index 37ff4c9f92f1..51f8d5928f98 100644
@@ -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
 
tools/lib/bpf/.gitignore +1 -0
index f81e549ddfdb..4019b8e4021a 100644
@@ -1,2 +1,3 @@
 libbpf_version.h
 FEATURE-DUMP.libbpf
+FEATURE-INCLUDE.libbpf
tools/lib/bpf/Makefile +1 -1
index 636e3ddb93a1..6916cbe962a5 100644
@@ -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
 
 
 
tools/perf/.gitignore +1 -0
index 3d1bb802dbf4..4a3eb8dedc54 100644
@@ -2,6 +2,7 @@ PERF-CFLAGS
 PERF-GUI-VARS
 PERF-VERSION-FILE
 FEATURE-DUMP
+FEATURE-INCLUDE
 perf
 perf-read-vdso32
 perf-read-vdsox32
tools/perf/Makefile.perf +1 -1
index 929a32ba15f5..b74f924185b7 100644
@@ -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)
Signature · 1 line
2.4.3
author reviewer
#1 lore raw

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.

---
 tools/lib/bpf/Makefile   | 4 ++++
 tools/perf/Makefile.perf | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)
tools/lib/bpf/Makefile +4 -0
index 6916cbe962a5..6b9af77418b3 100644
@@ -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
tools/perf/Makefile.perf +1 -1
index b74f924185b7..7338a7e62fcd 100644
@@ -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)
Signature · 1 line
2.4.3
#2 lore raw
In reply to Jiri Olsa

ping, Wang Nan, any comments on these 2?

thanks,
jirka

Quoted 101 lines · Jiri Olsa

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.

---
 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(-)
tools/build/Makefile.feature +12 -0
index 37ff4c9f92f1..51f8d5928f98 100644
@@ -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
 
tools/lib/bpf/.gitignore +1 -0
index f81e549ddfdb..4019b8e4021a 100644
@@ -1,2 +1,3 @@
 libbpf_version.h
 FEATURE-DUMP.libbpf
+FEATURE-INCLUDE.libbpf
tools/lib/bpf/Makefile +1 -1
index 636e3ddb93a1..6916cbe962a5 100644
@@ -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
 
 
 
tools/perf/.gitignore +1 -0
index 3d1bb802dbf4..4a3eb8dedc54 100644
@@ -2,6 +2,7 @@ PERF-CFLAGS
 PERF-GUI-VARS
 PERF-VERSION-FILE
 FEATURE-DUMP
+FEATURE-INCLUDE
 perf
 perf-read-vdso32
 perf-read-vdsox32
tools/perf/Makefile.perf +1 -1
index 929a32ba15f5..b74f924185b7 100644
@@ -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)
Signature · 1 line
2.4.3
Tested-by
#3 lore raw

Sorry for the late response...

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

Thank you.

Quoted 107 lines · Jiri Olsa

ping, Wang Nan, any comments on these 2?

thanks,
jirka

Quoted 101 lines · Jiri Olsa

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.

---
  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(-)
tools/build/Makefile.feature +12 -0
index 37ff4c9f92f1..51f8d5928f98 100644
@@ -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
 
tools/lib/bpf/.gitignore +1 -0
index f81e549ddfdb..4019b8e4021a 100644
@@ -1,2 +1,3 @@
  libbpf_version.h
  FEATURE-DUMP.libbpf
+FEATURE-INCLUDE.libbpf
tools/lib/bpf/Makefile +1 -1
index 636e3ddb93a1..6916cbe962a5 100644
@@ -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
 
 
 
tools/perf/.gitignore +1 -0
index 3d1bb802dbf4..4a3eb8dedc54 100644
@@ -2,6 +2,7 @@ PERF-CFLAGS
  PERF-GUI-VARS
  PERF-VERSION-FILE
  FEATURE-DUMP
+FEATURE-INCLUDE
  perf
  perf-read-vdso32
  perf-read-vdsox32
tools/perf/Makefile.perf +1 -1
index 929a32ba15f5..b74f924185b7 100644
@@ -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)
Signature · 1 line
2.4.3
#4 lore raw
Quoted 6 lines · Wangnan (F)

Sorry for the late response...

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

#5 lore raw
Quoted 7 lines · Jiri Olsa
Quoted 6 lines · Wangnan (F)

Sorry for the late response...

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

Quoted 7 lines

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

tools/build/Makefile.feature +5 -3
index 51f8d59..514c4e6 100644
@@ -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
Quoted 1 line

jirka

#6 lore raw
Quoted 40 lines · Wangnan (F)
Quoted 7 lines · Jiri Olsa
Quoted 6 lines · Wangnan (F)

Sorry for the late response...

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

Quoted 7 lines

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

tools/build/Makefile.feature +2 -3
index 51f8d59..514c4e6 100644
@@ -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))

tools/build/Makefile.feature endif · line 146

Quoted 7 lines
tools/build/Makefile.feature +2 -0
@@ -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.

Quoted 7 lines
tools/build/Makefile.feature +1 -0
+
 # The $(feature_display) controls the default detection message
 # output. It's set if:
 # - detected features differes from stored features from
Quoted 1 line

jirka

#7 lore raw

PATCH 1/1 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.

---

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(-)
tools/build/Makefile.feature +3 -5
index 51f8d59..98a13bd 100644
@@ -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
tools/lib/bpf/.gitignore +0 -1
index 4019b8e..c4cc003 100644
@@ -1,3 +1,2 @@
 libbpf_version.h
-FEATURE-DUMP.libbpf
 FEATURE-INCLUDE.libbpf
tools/lib/bpf/Makefile +1 -1
index 6b9af77..6bc3cb5 100644
@@ -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
 
 
 
tools/perf/.gitignore +0 -1
index 4a3eb8d..5e93718 100644
@@ -1,7 +1,6 @@
 PERF-CFLAGS
 PERF-GUI-VARS
 PERF-VERSION-FILE
-FEATURE-DUMP
 FEATURE-INCLUDE
 perf
 perf-read-vdso32
tools/perf/Makefile.perf +1 -1
index 7338a7e..7cccf11 100644
@@ -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)
Signature · 1 line
1.8.3.4
#8 lore raw

Re: [PATCH] tools build: Remove FEATURE-DUMP

Quoted 42 lines · Wang Nan

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.

---

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(-)
tools/build/Makefile.feature +0 -4
index 51f8d59..98a13bd 100644
@@ -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

tools/build/Makefile.feature endif · line 141

Quoted 5 lines
tools/build/Makefile.feature +2 -0
@@ -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

#9 lore raw

Re: [PATCH] tools build: Remove FEATURE-DUMP

Quoted 46 lines · Jiri Olsa
Quoted 45 lines · Wang Nan

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.

---

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(-)
tools/build/Makefile.feature +0 -4
index 51f8d59..98a13bd 100644
@@ -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)
 
Quoted 4 lines

tools/build/Makefile.feature endif · line 141

Quoted 2 lines
tools/build/Makefile.feature +2 -0
+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.

#10 lore raw

Re: [PATCH] tools build: Remove FEATURE-DUMP

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

SNIP

Quoted 11 lines
Quoted 6 lines

tools/build/Makefile.feature endif · line 141

Quoted 4 lines
 # features detection state.
 FEATURE_INCLUDE_FILENAME = $(OUTPUT)FEATURE-INCLUDE$(FEATURE_USER)
tools/build/Makefile.feature +2 -0
+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