aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--INSTALL8
-rw-r--r--Makefile55
-rw-r--r--NEWS2
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac2
-rw-r--r--manual/install.texi8
7 files changed, 65 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index c17caff776..a8b15be55f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2018-07-04 Florian Weimer <fweimer@redhat.com>
+
+ testrun.sh: Implement --tool=strace, --tool=valgrind
+ * Makefile (testrun-script): Define variable.
+ (testrun.sh): Use variable.
+ * manual/install.texi (Tools for Compilation): make 4.0 or later
+ is required.
+ * configure.ac: Check for make 4.0 or later.
+ * INSTALL: Regenerate.
+ * configure: Likewise.
+
2018-07-04 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #23233]
diff --git a/INSTALL b/INSTALL
index 0a22aa7d01..3c656fb7a6 100644
--- a/INSTALL
+++ b/INSTALL
@@ -426,13 +426,7 @@ Recommended Tools for Compilation
We recommend installing the following GNU tools before attempting to
build the GNU C Library:
- * GNU 'make' 3.79 or newer
-
- You need the latest version of GNU 'make'. Modifying the GNU C
- Library to work with other 'make' programs would be so difficult
- that we recommend you port GNU 'make' instead. *Really.* We
- recommend GNU 'make' version 3.79. All earlier versions have
- severe bugs or lack features.
+ * GNU 'make' 4.0 or newer
* GCC 4.9 or newer
diff --git a/Makefile b/Makefile
index bea4e27f8d..d3f25a525a 100644
--- a/Makefile
+++ b/Makefile
@@ -128,17 +128,60 @@ ifeq (yes,$(build-shared))
lib: $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so
endif # $(build-shared)
+# Used to build testrun.sh.
+define testrun-script
+#!/bin/bash
+builddir=`dirname "$$0"`
+GCONV_PATH="$${builddir}/iconvdata"
+
+usage () {
+ echo "usage: $$0 [--tool=strace] PROGRAM [ARGUMENTS...]" 2>&1
+ echo " $$0 --tool=valgrind PROGRAM [ARGUMENTS...]" 2>&1
+}
+
+toolname=default
+while test $$# -gt 0 ; do
+ case "$$1" in
+ --tool=*)
+ toolname="$${1:7}"
+ shift
+ ;;
+ --*)
+ usage
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if test $$# -eq 0 ; then
+ usage
+fi
+
+case "$$toolname" in
+ default)
+ exec $(subst $(common-objdir),"$${builddir}", $(test-program-prefix)) \
+ $${1+"$$@"}
+ ;;
+ strace)
+ exec strace $(patsubst %, -E%, $(run-program-env)) \
+ $(test-via-rtld-prefix) $${1+"$$@"}
+ ;;
+ valgrind)
+ exec env $(run-program-env) valgrind $(test-via-rtld-prefix) $${1+"$$@"}
+ ;;
+ *)
+ usage
+ ;;
+esac
+endef
# This is a handy script for running any dynamically linked program against
# the current libc build for testing.
$(common-objpfx)testrun.sh: $(common-objpfx)config.make \
$(..)Makeconfig $(..)Makefile
- (echo '#!/bin/sh'; \
- echo 'builddir=`dirname "$$0"`'; \
- echo 'GCONV_PATH="$${builddir}/iconvdata" \'; \
- echo 'exec $(subst $(common-objdir),"$${builddir}",\
- $(test-program-prefix)) $${1+"$$@"}'; \
- ) > $@T
+ $(file >$@T, $(testrun-script))
chmod a+x $@T
mv -f $@T $@
postclean-generated += testrun.sh
diff --git a/NEWS b/NEWS
index 21b457a050..b1ce067d27 100644
--- a/NEWS
+++ b/NEWS
@@ -154,7 +154,7 @@ Deprecated and removed features, and other changes affecting compatibility:
Changes to build and runtime requirements:
- [Add changes to build and runtime requirements here]
+ GNU make 4.0 or later is now required to build glibc.
Security related changes:
diff --git a/configure b/configure
index ef18302215..eac7f292b4 100755
--- a/configure
+++ b/configure
@@ -4705,7 +4705,7 @@ $as_echo_n "checking version of $MAKE... " >&6; }
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
+ [4-9].* | [1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
diff --git a/configure.ac b/configure.ac
index dc517017f5..f41ed6decb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -945,7 +945,7 @@ fi
AC_CHECK_TOOL_PREFIX
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
[GNU Make[^0-9]*\([0-9][0-9.]*\)],
- [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
+ [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
[GNU gettext.* \([0-9]*\.[0-9.]*\)],
diff --git a/manual/install.texi b/manual/install.texi
index 422da1447e..42e9954199 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -473,13 +473,7 @@ build @theglibc{}:
@itemize @bullet
@item
-GNU @code{make} 3.79 or newer
-
-You need the latest version of GNU @code{make}. Modifying @theglibc{}
-to work with other @code{make} programs would be so difficult that
-we recommend you port GNU @code{make} instead. @strong{Really.} We
-recommend GNU @code{make} version 3.79. All earlier versions have severe
-bugs or lack features.
+GNU @code{make} 4.0 or newer
@item
GCC 4.9 or newer