This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Tonight's snapshot
- To: geoffk at ozemail dot com dot au
- Subject: Re: Tonight's snapshot
- From: Ian Lance Taylor <ian at zembu dot com>
- Date: Fri, 16 Jul 1999 19:46:33 -0700
- CC: egcs at egcs dot cygnus dot com
From: Geoff Keating <geoffk@ozemail.com.au>
Date: 16 Jul 1999 12:56:38 +1000
It's caused by libiberty/Makefile.in defining MAKEOVERRIDES:
Thu Mar 25 15:17:23 1993 Ian Lance Taylor (ian@cygnus.com)
* Makefile.in (MAKEOVERRIDES): Define to be empty.
This prevents prefix= being passed down to sub-makefiles.
I don't suppose anyone remembers _why_ this was done?
Yes, I remember.
Not all versions of make pass down command line arguments. Therefore,
for portability, Makefiles like libiberty/Makefile.in pass down all
necessary make arguments themselves. That is the purpose of the
FLAGS_TO_PASS variable found in many Makefile.in files. For some
reason prefix and exec_prefix have been left out of FLAGS_TO_PASS in
libiberty/Makefile.in; they should be added. (This was quite possibly
a bug I introduced while converting libiberty to use autoconf; before
that change it may not have mattered whether the Makefile passed down
prefix and exec_prefix).
Once a Makefile is using FLAGS_TO_PASS, it is no longer necessary to
have GNU make pass down the arguments as well. Some systems, such as
old versions of SCO Unix, have a very small value of ARG_SIZE. On
those systems, given the large number of variables passed down from
the top level Makefile.in, GNU make happily uses up all the available
space and the exec of the sub-make fails. Explicitly setting
MAKEOVERRIDES avoids this problem.
Incidentally, automake by default assumes that you are using a make
which does pass down all arguments. When using automake one can
either go along with this assumption, or one can use AM_MAKEFLAGS
which again permits clearing MAKEOVERRIDES.
Ian