Skip to contentSkip to conversation

glibc: ensure BR2_MAKE is also used for subdirs

PATCH Superseded Peter Korsgaard 1 participant 3 messages Nov 19, 2018

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/3 glibc: ensure BR2_MAKE is also used for subdirs

The configure script contains logic to figure out what make program to invoke for subdirectories (trying gnumake, gmake, make). Explicitly force it to use our BR2_MAKE to ensure the right make version is used.

As GLIBC_CONF_ENV is only initialized below, move this section below it.

---
v2:
- Fix CONV/CONF typo, move section below GLIBC_CONF_ENV initialization

 package/glibc/glibc.mk | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
package/glibc/glibc.mk +5 -4
index 708c22f723..762c040688 100644
@@ -31,10 +31,6 @@ GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
 GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk \
 	$(BR2_MAKE_HOST_DEPENDENCY)
 
-# glibc requires make >= 4.0 since 2.28 release.
-# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
-GLIBC_MAKE = $(BR2_MAKE)
-
 GLIBC_SUBDIR = build
 
 GLIBC_INSTALL_STAGING = YES
@@ -82,6 +78,11 @@ ifeq ($(BR2_riscv),y)
 GLIBC_CONF_ENV += libc_cv_slibdir=/lib64 libc_cv_rtlddir=/lib
 endif
 
+# glibc requires make >= 4.0 since 2.28 release.
+# https://www.sourceware.org/ml/libc-alpha/2018-08/msg00003.html
+GLIBC_MAKE = $(BR2_MAKE)
+GLIBC_CONF_ENV += ac_cv_prog_MAKE="$(BR2_MAKE)"
+
 # Even though we use the autotools-package infrastructure, we have to
 # override the default configure commands for several reasons:
 #
Signature · 1 line
2.11.0
#1 lore raw

PATCH v2 2/3 make: drop gnumake/gmake aliases for host-make

Now that glibc no longer checks for gnumake / gmake, these aliases can be removed.

---
v2: No changes

 package/make/make.mk | 10 ----------
 1 file changed, 10 deletions(-)
package/make/make.mk +0 -10
index 790391c76e..1471576850 100644
@@ -23,15 +23,5 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
-# Some packages, like glibc, are looking for gnumake or gmake before
-# make program.
-# Create these symlink to use make binary generated by Buildroot for
-# the host.
-define HOST_MAKE_INSTALL_GNUMAKE
-	ln -fs make $(HOST_DIR)/bin/gnumake
-	ln -fs make $(HOST_DIR)/bin/gmake
-endef
-HOST_MAKE_POST_INSTALL_HOOKS += HOST_MAKE_INSTALL_GNUMAKE
-
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
Signature · 1 line
2.11.0
#2 lore raw

PATCH v2 3/3 make: install host-make as host-make

In reply to Peter Korsgaard

Fixes:
http://autobuild.buildroot.net/results/e29/e293aadc692d2ed337881ef2172ddf66a60bc05c/

And many more.

Install as 'host-make' rather than just 'make', as that otherwise confuses a number of packages when they invoke recursive / sub-make. The internal job control logic of GNU make is version dependant, so mixing versions may lead to issues like:

make[1]: Entering directory `/home/peko/autobuild/instance-0/output/build/boa-0.94.14rc21' (cd src && make -w --jobserver-fds=5,6 -j)
make: unrecognized option '--jobserver-fds=5,6'

With this rename, only packages explicitly opting in for our host-make (using the BR2_MAKE / BR2_MAKE_HOST_DEPENDENCY logic) will use it.

---
v2: No changes

 package/make/make.mk                    | 7 +++++++
 support/dependencies/check-host-make.mk | 4 ++--
 2 files changed, 9 insertions(+), 2 deletions(-)
package/make/make.mk +7 -0
index 1471576850..31915d192e 100644
@@ -23,5 +23,12 @@ endif
 HOST_MAKE_DEPENDENCIES = host-pkgconf
 HOST_MAKE_CONF_OPTS = --without-guile
 
+# Rename host-make binary to ensure it isn't accidently used by
+# packages when they invoke recursive / sub-make.
+define HOST_MAKE_RENAME_BINARY
+	mv $(HOST_DIR)/bin/make $(HOST_DIR)/bin/host-make
+endef
+HOST_MAKE_POST_INSTALL_HOOKS += HOST_MAKE_RENAME_BINARY
+
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
support/dependencies/check-host-make.mk +2 -2
index 4235a393fd..66560ee85c 100644
@@ -12,8 +12,8 @@ BR2_MAKE ?= $(call suitable-host-package,make,\
 	$(BR2_MAKE_VERSION_MIN) $(MAKE))
 
 ifeq ($(BR2_MAKE),)
-BR2_MAKE = $(HOST_DIR)/bin/make -j$(PARALLEL_JOBS)
-BR2_MAKE1 = $(HOST_DIR)/bin/make -j1
+BR2_MAKE = $(HOST_DIR)/bin/host-make -j$(PARALLEL_JOBS)
+BR2_MAKE1 = $(HOST_DIR)/bin/host-make -j1
 BR2_MAKE_HOST_DEPENDENCY = host-make
 else
 BR2_MAKE = $(MAKE)
Signature · 1 line
2.11.0