This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Time to update documentation regarding supported make implementations?


In the interest of full disclosure: It is my current intention to let
these problems remain until after the freeze on the 3.3 or 3.4 branch,
as applicable, for non-documentation patches and then propose my
dreaded (by some) documentation patch, which clearly states the only
really supported make implementation by the developer masses.  If you
are the type that disliked that documentation patch, then consider
this fair warning of my full future intentions (since it is absolutely
not fair to users to document that things "should work", "usually
work" when we know they don't).

(1) (mainline:) When BSD make is used to bootstrap, the stuff in
gcc/fixinc is remade each stage (GNU make used to only built it during
stage1 however I don't know the current state of things).

Since the -Werror patch when onto mainline, bootstrap bombs in
gcc/fixinc when one doesn't use GNU make.

RTH added these lines to fixinc/Makefile.in on 22-Jan-03 to avoid the
problem I see:

# String length warnings
fixincl.o-warn = -Wno-error
# Signed/Unsigned warnings, but in code pulled from upstream.
gnu-regex.o-warn = -Wno-error

However, BSD make isn't computing a compilation line with -Wno-error.
To see the exact difference in constructed command lines between GNU
make and BSD make, see:

http://people.freebsd.org/~ljrittle/daily-gcc-bootstrap-reports/ref5/gcc-build-ref5-0313/make-bootstrap.log.gz

http://people.freebsd.org/~ljrittle/daily-gcc-bootstrap-reports/ref5/gcc-build-ref5-0308/make-bootstrap.log.gz
(this will be aged out in a few days, use another even day that bootstrap OK)

I have no patch for this because I have no idea why it fails.  Since
-Wno-error is properly added within gcc within BSD make, I suspect the
environment isn't being passed from gcc Makefile to gcc/fixinc Makefile.

(2) (mainline:) 

http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01633.html

I will install this patch, if it is ever approved.  If not approved,
someone is going to have to provide a better solution.  Otherwise, my
position is that non-GNU make bootstrap is busted (at least when
srcdir != objdir).

(3) (all branches since libjava was rolled into the main tree and
especially since it was made the default for many/most/all platforms:)

GNU make required due to explicit use of GNU make "include file" feature.

It should be possible to tradeoff smoother bootstrap will more make
implementations against possibility or easy or minimization of
rebuilding.  For a start, it would require a one-line change per Makefile.am:
AUTOMAKE_OPTIONS = cygnus
instead of
AUTOMAKE_OPTIONS = foreign

For the record, every other language library is able to handle
dependencies without resorting to GNU make features...

(Again, for the record: I strongly support the -Werror work.  I
strongly support libjava being in the primary gcc tree and build
process.  However, we need to tell users that they have to use GNU
make if we aren't going to fix the issues.  Since the libjava problem
doesn't affect the ability to install a working C compiler, I've not
complained much about it.  (1) and (2) are killing bootstrap and IMHO
must be documented before related release, if not fixed.)

Thanks,
Loren


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]