Bug 29311

Summary: toplevel configure script does not test for GNU Make
Product: gcc Reporter: Bruce Korb <bkorb>
Component: bootstrapAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED INVALID    
Severity: normal CC: bkorb, gcc-bugs
Priority: P3    
Version: 4.2.0   
Target Milestone: ---   
Host: *-*-solaris* Target: *-*-solaris*
Build: *-*-solaris* Known to work:
Known to fail: Last reconfirmed:

Description Bruce Korb 2006-10-01 18:53:09 UTC
Typescript from Solaris 9 using SUNWspro/bin and no
GNU tools available (i.e., "make" comes from that same
directory):

echo ./regex.o ./cplus-dem.o ./cp-demangle.o ./md5.o     ./alloca.o ./argv.o./choose-temp.o ./concat.o ./cp-demint.o                         ./dyn-string.o./fdmatch.o ./fibheap.o ./floatformat.o ./fnmatch.o              ./fopen_unlocked.o                                               ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o                 ./hashtab.o ./hex.o./lbasename.o ./lrealpath.o                                      ./make-relative-prefix.o ./make-temp-file.o                      ./objalloc.o ./obstack.o./partition.o ./pexecute.o ./physmem.o                           ./pex-common.o ./pex-one.o ./pex-unix.o                          ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o   ./strsignal.o./ternary.o                                                      ./unlink-if-ordinary.o                                           ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o        ./xstrerror.o ./xstrndup.o > required-list
make: Fatal error in reader: Makefile, line 51: Unexpected end of line seen
Current working directory /usr/share/src/gcc/gcc-4.1.1/_b/fixincludes
*** Error code 1
make: Fatal error: Command failed for target `all-fixincludes'
Current working directory /usr/share/src/gcc/gcc-4.1.1/_b
*** Error code 1
make: Fatal error: Command failed for target `all'

The line in question:

>  target_noncanonical:=sparc-sun-solaris2.9

``:='' ??  If you are going to require GNU make, you *MUST* cause
configure to fail and issue such a message.  Thanks - Bruce
Comment 1 Andrew Pinski 2008-12-28 21:31:53 UTC
Well the requirement to use GNU make is documented.

http://gcc.gnu.org/install/prerequisites.html

GNU make version 3.80 (or later)
You must have GNU make installed to build GCC. 

So I am going to close this as invalid.
Comment 2 Bruce Korb 2008-12-28 23:01:04 UTC
It would seem to me that requiring one to read through installation documentation is unreasonable when a trivial change to the configure script can tell the hapless builder what is wrong.  You are correct in that it is documented.  But adding a useful error message in configure is still the right thing to do.

Something like this:

--- configure.ac        (revision 140070)
+++ configure.ac        (working copy)
@@ -160,13 +160,24 @@
 #
 host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib libcpp libdecnumber gmp mpfr ppl cloog"

+[MAKE=${MAKE-make}
+case "`${MAKE} --version`" in
+"GNU Make "* ) : ;;
+* ) MAKE=gmake
+    case "`${MAKE} --version`" in
+    "GNU Make "* ) : ;;
+    * ) AC_MSG_ERROR([GNU Make is required to build]) ;;
+    esac
+    ;;
+esac ]
+
 # these tools are built for the host environment
 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
 # know that we are building the simulator.
 # binutils, gas and ld appear in that order because it makes sense to run
 # "make check" in that particular order.
 # If --enable-gold is used, "gold" will replace "ld".
-host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
+host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb ${MAKE} patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"

 # libgcj represents the runtime libraries only used by gcj.
 libgcj="target-libffi \
Comment 3 pinskia@gmail.com 2008-12-29 00:49:38 UTC
Subject: Re:  toplevel configure script does not test for GNU Make

On Sun, Dec 28, 2008 at 6:01 PM, bkorb at gnu dot org
<gcc-bugzilla@gcc.gnu.org> wrote:
>
>
> ------- Comment #2 from bkorb at gnu dot org  2008-12-28 23:01 -------
> It would seem to me that requiring one to read through installation
> documentation is unreasonable when a trivial change to the configure script can
> tell the hapless builder what is wrong.  You are correct in that it is
> documented.  But adding a useful error message in configure is still the right
> thing to do.
>
> Something like this:
>
> --- configure.ac        (revision 140070)
> +++ configure.ac        (working copy)
> @@ -160,13 +160,24 @@
>  #
>  host_libs="intl mmalloc libiberty opcodes bfd readline tcl tk itcl libgui zlib
> libcpp libdecnumber gmp mpfr ppl cloog"
>
> +[MAKE=${MAKE-make}
> +case "`${MAKE} --version`" in
> +"GNU Make "* ) : ;;
> +* ) MAKE=gmake
> +    case "`${MAKE} --version`" in
> +    "GNU Make "* ) : ;;
> +    * ) AC_MSG_ERROR([GNU Make is required to build]) ;;
> +    esac
> +    ;;
> +esac ]

Except this is only true for if the toplevel includes gcc sources
since the toplevel configure is used for more than GCC.

-- Pinski
Comment 4 Bruce Korb 2008-12-29 01:24:49 UTC
If GNU Make is only required for the GCC build, then the configure script
for the gcc piece is the only place where such code would be needed.
Anyway, my basic point is that it would be very helpful to not force folks
to find things in various manuals when a line or two of code makes the
problem easy to decipher and respond to.