[PATCH] tools/build: avoid $(file ...) directive in Makefile

Juergen Gross posted 1 patch 1 week ago
Failed in applying to current master (apply log)
tools/Rules.mk | 48 ++++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)

[PATCH] tools/build: avoid $(file ...) directive in Makefile

Posted by Juergen Gross 1 week ago
Using $(file ...) breaks the build with make older than version 4.0.
Replace it with echo.

Fixes: 52dbd6f07cea7a ("tools: generate pkg-config files from make variables")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/Rules.mk | 48 ++++++++++++++++++++++++------------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/tools/Rules.mk b/tools/Rules.mk
index ccb197596e..8ba8230270 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -175,29 +175,29 @@ $(PKG_CONFIG_DIR):
 	mkdir -p $(PKG_CONFIG_DIR)
 
 $(PKG_CONFIG_DIR)/%.pc: Makefile $(XEN_ROOT)/tools/Rules.mk $(PKG_CONFIG_DIR)
-	$(file >$@,prefix=$(PKG_CONFIG_PREFIX))
-	$(file >>$@,includedir=$(PKG_CONFIG_INCDIR))
-	$(file >>$@,libdir=$(PKG_CONFIG_LIBDIR))
-	$(foreach var,$(PKG_CONFIG_VARS),$(file >>$@,$(var)))
-	$(file >>$@,)
-	$(file >>$@,Name: $(PKG_CONFIG_NAME))
-	$(file >>$@,Description: $(PKG_CONFIG_DESC))
-	$(file >>$@,Version: $(PKG_CONFIG_VERSION))
-	$(file >>$@,Cflags: -I$${includedir} $(CFLAGS_xeninclude))
-	$(file >>$@,Libs: -L$${libdir} $(PKG_CONFIG_USELIBS) -l$(PKG_CONFIG_LIB))
-	$(file >>$@,Libs.private: $(PKG_CONFIG_LIBSPRIV))
-	$(file >>$@,Requires.private: $(PKG_CONFIG_REQPRIV))
+	@echo "prefix=$(PKG_CONFIG_PREFIX)" >$@
+	@echo "includedir=$(PKG_CONFIG_INCDIR)" >>$@
+	@echo "libdir=$(PKG_CONFIG_LIBDIR)" >>$@
+	@for v in $(PKG_CONFIG_VARS); do echo "$$v" >>$@; done
+	@echo "" >>$@
+	@echo "Name: $(PKG_CONFIG_NAME)" >>$@
+	@echo "Description: $(PKG_CONFIG_DESC)" >>$@
+	@echo "Version: $(PKG_CONFIG_VERSION)" >>$@
+	@echo "Cflags: -I\$${includedir} $(CFLAGS_xeninclude)" >>$@
+	@echo "Libs: -L\$${libdir} $(PKG_CONFIG_USELIBS) -l$(PKG_CONFIG_LIB)" >>$@
+	@echo "Libs.private: $(PKG_CONFIG_LIBSPRIV)" >>$@
+	@echo "Requires.private: $(PKG_CONFIG_REQPRIV)" >>$@
 
 %.pc: Makefile $(XEN_ROOT)/tools/Rules.mk
-	$(file >$@,prefix=$(PKG_CONFIG_PREFIX))
-	$(file >>$@,includedir=$(PKG_CONFIG_INCDIR))
-	$(file >>$@,libdir=$(PKG_CONFIG_LIBDIR))
-	$(foreach var,$(PKG_CONFIG_VARS),$(file >>$@,$(var)))
-	$(file >>$@,)
-	$(file >>$@,Name: $(PKG_CONFIG_NAME))
-	$(file >>$@,Description: $(PKG_CONFIG_DESC))
-	$(file >>$@,Version: $(PKG_CONFIG_VERSION))
-	$(file >>$@,Cflags: -I$${includedir})
-	$(file >>$@,Libs: -L$${libdir} -l$(PKG_CONFIG_LIB))
-	$(file >>$@,Libs.private: $(PKG_CONFIG_LIBSPRIV))
-	$(file >>$@,Requires.private: $(PKG_CONFIG_REQPRIV))
+	@echo "prefix=$(PKG_CONFIG_PREFIX)" >$@
+	@echo "includedir=$(PKG_CONFIG_INCDIR)" >>$@
+	@echo "libdir=$(PKG_CONFIG_LIBDIR)" >>$@
+	@for v in $(PKG_CONFIG_VARS); do echo "$$v" >>$@; done
+	@echo "" >>$@
+	@echo "Name: $(PKG_CONFIG_NAME)" >>$@
+	@echo "Description: $(PKG_CONFIG_DESC)" >>$@
+	@echo "Version: $(PKG_CONFIG_VERSION)" >>$@
+	@echo "Cflags: -I\$${includedir}" >>$@
+	@echo "Libs: -L\$${libdir} -l$(PKG_CONFIG_LIB)" >>$@
+	@echo "Libs.private: $(PKG_CONFIG_LIBSPRIV)" >>$@
+	@echo "Requires.private: $(PKG_CONFIG_REQPRIV)" >>$@
-- 
2.26.2


Re: [PATCH] tools/build: avoid $(file ...) directive in Makefile

Posted by Wei Liu 6 days ago
On Sat, Sep 12, 2020 at 10:49:13AM +0200, Juergen Gross wrote:
> Using $(file ...) breaks the build with make older than version 4.0.
> Replace it with echo.
> 
> Fixes: 52dbd6f07cea7a ("tools: generate pkg-config files from make variables")
> Signed-off-by: Juergen Gross <jgross@suse.com>

This patch is superseded by Andrew's patch.

Wei.