Virgin import of the GCC 2.95.1 compilers

This commit is contained in:
obrien 1999-11-14 08:33:44 +00:00
parent 163cbd8b5a
commit ed15955f8c

View File

@ -1,14 +1,35 @@
@c Copyright (C) 1995-1997 Free Software Foundation, Inc.
@c Copyright (C) 1995-1999 Free Software Foundation, Inc.
@c This is part of the G77 manual.
@c For copying conditions, see the file g77.texi.
@c The text of this file appears in the file INSTALL
@c in the G77 distribution, as well as in the G77 manual.
@c 1998-07-13
@c Keep this the same as the dates above, since it's used
@c in the standalone derivations of this file (e.g. INSTALL).
@set copyrights 1995-1999
@set last-update-install 1999-07-17
@include root.texi
@ifset DOC-INSTALL
@c The immediately following lines apply to the INSTALL file
@c which is generated using this file.
@emph{Note:} This file is automatically generated from the files
@file{install0.texi} and @file{g77install.texi}.
@file{INSTALL} is @emph{not} a source file,
although it is normally included within source distributions.
This file contains installation information for the GNU Fortran compiler.
Copyright (C) @value{copyrights-install} Free Software Foundation, Inc.
You may copy, distribute, and modify it freely as long as you preserve
this copyright notice and permission notice.
@node Top,,, (dir)
@chapter Installing GNU Fortran
@end ifset
@set version-g77 0.5.24
@set version-gcc 2.8.1
@set version-autoconf 2.12
@set version-bison 1.25
@set version-gperf 2.5
@ -20,20 +41,33 @@
@set version-tar 1.12
@set version-texinfo 3.12
@ifclear INSTALLONLY
@ifset DOC-G77
@node Installation
@chapter Installing GNU Fortran
@end ifclear
@cindex installing GNU Fortran
@cindex installing, GNU Fortran
@end ifset
The following information describes how to install @code{g77}.
Note that, for @code{egcs} users,
much of this information is obsolete,
and is superceded by the
@code{egcs} installation procedures.
Such information is explicitly flagged as such.
@clear OMIT-FSF-G77
@ifset EGCS-G77
@set OMIT-FSF-G77
@end ifset
@ifset GCC-G77
@set OMIT-FSF-G77
@end ifset
@ifset OMIT-FSF-G77
Note that, for users of the @value{which-g77} version of @code{g77},
much of the information is obsolete,
and is superceded by the
@value{which-gcc} installation procedures.
Such information is accordingly omitted and flagged as such.
@end ifset
@ifclear OMIT-FSF-G77
The information in this file generally pertains to dealing
with @emph{source} distributions of @code{g77} and @code{gcc}.
It is possible that some of this information will be applicable
@ -45,6 +79,25 @@ whoever built and first distributed them.
Nevertheless, efforts to make @code{g77} easier to both build
and install from source and package up as a binary distribution
are ongoing.
@end ifclear
@ifset DEVELOPMENT
@emph{Warning:} The information below is still under development,
and might not accurately reflect the @code{g77} code base
of which it is a part.
Efforts are made to keep it somewhat up-to-date,
but they are particularly concentrated
on any version of this information
that is distributed as part of a @emph{released} @code{g77}.
In particular, while this information is intended to apply to
the @value{which-g77} version of @code{g77},
only an official @emph{release} of that version
is expected to contain documentation that is
most consistent with the @code{g77} product in that version.
@end ifset
The following information was last updated on @value{last-update-install}:
@menu
* Prerequisites:: Make sure your system is ready for @code{g77}.
@ -59,10 +112,13 @@ are ongoing.
@section Prerequisites
@cindex prerequisites
@emph{Version info:}
For @code{egcs} users, the following information is
superceded by the @code{egcs} installation instructions.
@ifset OMIT-FSF-G77
For users of the @value{which-g77} version of @code{g77},
this information is superceded by the
@value{which-gcc} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
The procedures described to unpack, configure, build, and
install @code{g77} assume your system has certain programs
already installed.
@ -338,6 +394,8 @@ instead of the entire @file{.tar.gz} distribution
to rebuild derived files, such as @code{makeinfo}).
@end table
@end ifclear
@node Problems Installing
@section Problems Installing
@cindex problems installing
@ -366,9 +424,9 @@ These problems can occur on most or all systems.
* GNU C Required:: Why even ANSI C is not enough.
* Patching GNU CC:: Why @code{gcc} needn't be patched.
* Building GNU CC Necessary:: Why you can't build @emph{just} Fortran.
* Missing strtoul or bsearch:: When linking @samp{f771} fails.
* Missing strtoul or bsearch:: When linking @code{f771} fails.
* Cleanup Kills Stage Directories:: For @code{g77} developers.
* LANGUAGES Macro Ignored:: Sometimes @samp{LANGUAGES} is ignored.
* LANGUAGES Macro Ignored:: Sometimes @code{LANGUAGES} is ignored.
@end menu
@node GNU C Required
@ -385,7 +443,7 @@ so there are no plans for an interim fix.
This requirement does not mean you must already have @code{gcc}
installed to build @code{g77}.
As long as you have a working C compiler, you can use a
bootstrap build to automate the process of first building
``bootstrap'' build to automate the process of first building
@code{gcc} using the working C compiler you have, then building
@code{g77} and rebuilding @code{gcc} using that just-built @code{gcc},
and so on.
@ -403,7 +461,7 @@ and @code{egcs} version 1.0.
@node Building GNU CC Necessary
@subsubsection Building GNU CC Necessary
@cindex gcc, building
@cindex @code{gcc}, building
@cindex building gcc
It should be possible to build the runtime without building @code{cc1}
@ -420,22 +478,24 @@ is not yet established.
@cindex undefined reference (_strtoul)
@cindex f771, linking error for
@cindex linking error for f771
@cindex ld error for f771
@cindex ld can't find _bsearch
@cindex ld can't find _strtoul
@cindex @code{ld}, error linking f771
@cindex @code{ld}, can't find _bsearch
@cindex @code{ld}, can't find _strtoul
@cindex SunOS4
@emph{Version info:}
The following information does not apply to the
@code{egcs} version of @code{g77}.
@ifset OMIT-FSF-G77
This information does not apply to
the @value{which-g77} version of @code{g77},
@end ifset
@ifclear OMIT-FSF-G77
On SunOS4 systems, linking the @code{f771} program used to
produce an error message concerning an undefined symbol named
@samp{_strtoul}, because the @samp{strtoul} library function
@samp{_strtoul}, because the @code{strtoul} library function
is not provided on that system.
Other systems have, in the past, been reported to not provide
their own @samp{strtoul} or @samp{bsearch} function.
their own @code{strtoul} or @code{bsearch} function.
Some versions @code{g77} tried to default to providing bare-bones
versions of @code{bsearch} and @code{strtoul} automatically,
@ -443,15 +503,15 @@ but every attempt at this has failed for at least one kind of system.
To limit the failures to those few systems actually missing the
required routines, the bare-bones versions are still provided,
in @file{gcc/f/proj.c},
in @file{@value{path-g77}/proj.c},
if the appropriate macros are defined.
These are @code{NEED_BSEARCH} for @samp{bsearch} and
@code{NEED_STRTOUL} for @samp{NEED_STRTOUL}.
These are @code{NEED_BSEARCH} for @code{bsearch} and
@code{NEED_STRTOUL} for @code{NEED_STRTOUL}.
Therefore, if you are sure your system is missing
@code{bsearch} or @code{strtoul} in its library,
define the relevant macro(s) before building @code{g77}.
This can be done by editing @file{gcc/f/proj.c} and inserting
This can be done by editing @file{@value{path-g77}/proj.c} and inserting
either or both of the following @samp{#define} statements
before the comment shown:
@ -470,15 +530,17 @@ To build with the bundled @code{cc} on SunOS4, for example, try:
make bootstrap BOOT_CFLAGS='-O2 -g -DNEED_STRTOUL'
@end smallexample
If you then encounter problems compiling @file{gcc/f/proj.c},
it might be due to a discrepancy between how @samp{bsearch}
or @samp{strtoul} are defined by that file and how they're
If you then encounter problems compiling @file{@value{path-g77}/proj.c},
it might be due to a discrepancy between how @code{bsearch}
or @code{strtoul} are defined by that file and how they're
declared by your system's header files.
In that case, you'll have to use some basic knowledge of C
to work around the problem, perhaps by editing @file{gcc/f/proj.c}
to work around the problem, perhaps by editing @file{@value{path-g77}/proj.c}
somewhat.
@end ifclear
@node Cleanup Kills Stage Directories
@subsubsection Cleanup Kills Stage Directories
@cindex stage directories
@ -498,14 +560,14 @@ that, on demand.
@node LANGUAGES Macro Ignored
@subsubsection LANGUAGES Macro Ignored
@cindex @samp{LANGUAGES} macro ignored
@cindex ignoring @samp{LANGUAGES} macro
@cindex @code{LANGUAGES} macro ignored
@cindex ignoring @code{LANGUAGES} macro
Prior to version 0.5.23 of @code{g77}
and version 1.1 of @code{egcs},
@code{g77} would sometimes ignore
the absence of @samp{f77} and @samp{F77} in the
@samp{LANGUAGES} macro definition used for the
the absence of @code{f77} and @code{F77} in the
@code{LANGUAGES} macro definition used for the
@code{make} command being processed.
As of @code{g77} version 0.5.23
@ -519,7 +581,7 @@ such as @code{g++},
are known to go ahead and perform various
language-specific activities when their
respective language strings do not appear
in the @samp{LANGUAGES} macro in effect
in the @code{LANGUAGES} macro in effect
during that invocation of @code{make}.
It is expected that these remaining problems will
@ -532,7 +594,9 @@ be fixed in a future version of @code{gcc}.
A linker bug on some versions of AIX 4.1 might prevent building
when @code{g77} is built within @code{gcc}.
It might also occur when building within @code{egcs}.
@ifset DOC-G77
@xref{LINKFAIL}.
@end ifset
@node Cross-compiler Problems
@subsection Cross-compiler Problems
@ -597,7 +661,7 @@ system, depending on the systems involved in the configuration.
@section Changing Settings Before Building
Here are some internal @code{g77} settings that can be changed
by editing source files in @file{gcc/f/} before building.
by editing source files in @file{@value{path-g77}/} before building.
This information, and perhaps even these settings, represent
stop-gap solutions to problems people doing various ports
@ -606,7 +670,7 @@ As such, none of the following information is expected to
be pertinent in future versions of @code{g77}.
@menu
* Larger File Unit Numbers:: Raising @samp{MXUNIT}.
* Larger File Unit Numbers:: Raising @code{MXUNIT}.
* Always Flush Output:: Synchronizing write errors.
* Maximum Stackable Size:: Large arrays forced off the stack.
* Floating-point Bit Patterns:: Possible programs building @code{g77}
@ -634,22 +698,22 @@ a run-time crash in @code{libf2c}, because the unit number,
If you know that Fortran programs at your installation require
the use of unit numbers higher than 99, you can change the
value of the @samp{MXUNIT} macro, which represents the maximum unit
value of the @code{MXUNIT} macro, which represents the maximum unit
number, to an appropriately higher value.
To do this, edit the file @file{f/runtime/libI77/fio.h} in your
To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your
@code{g77} source tree, changing the following line:
@example
#define MXUNIT 100
@end example
Change the line so that the value of @samp{MXUNIT} is defined to be
Change the line so that the value of @code{MXUNIT} is defined to be
at least one @emph{greater} than the maximum unit number used by
the Fortran programs on your system.
(For example, a program that does @samp{WRITE (UNIT=255)} would require
@samp{MXUNIT} set to at least 256 to avoid crashing.)
@code{MXUNIT} set to at least 256 to avoid crashing.)
Then build or rebuild @code{g77} as appropriate.
@ -690,7 +754,7 @@ asynchronous, or, more precisely, buffered error reporting
(detection of errors might be delayed).
@code{libg2c} supports flagging write errors immediately when
it is built with the @samp{ALWAYS_FLUSH} macro defined.
it is built with the @code{ALWAYS_FLUSH} macro defined.
This results in a @code{libg2c} that runs slower, sometimes
quite a bit slower, under certain circumstances---for example,
accessing files via the networked file system NFS---but the
@ -700,10 +764,10 @@ If you know that Fortran programs requiring this level of precision
of error reporting are to be compiled using the
version of @code{g77} you are building, you might wish to
modify the @code{g77} source tree so that the version of
@code{libg2c} is built with the @samp{ALWAYS_FLUSH} macro
@code{libg2c} is built with the @code{ALWAYS_FLUSH} macro
defined, enabling this behavior.
To do this, find this line in @file{f/runtime/f2c.h} in
To do this, find this line in @file{@value{path-libf2c}/f2c.h} in
your @code{g77} source tree:
@example
@ -721,11 +785,11 @@ Then build or rebuild @code{g77} as appropriate.
@vindex FFECOM_sizeMAXSTACKITEM
@cindex code, stack variables
@cindex maximum stackable size
@cindex stack allocation
@cindex stack, allocation
@cindex segmentation violation
@code{g77}, on most machines, puts many variables and arrays on the stack
where possible, and can be configured (by changing
@samp{FFECOM_sizeMAXSTACKITEM} in @file{gcc/f/com.c}) to force
@code{FFECOM_sizeMAXSTACKITEM} in @file{@value{path-g77}/com.c}) to force
smaller-sized entities into static storage (saving
on stack space) or permit larger-sized entities to be put on the
stack (which can improve run-time performance, as it presents
@ -733,7 +797,7 @@ more opportunities for the GBE to optimize the generated code).
@emph{Note:} Putting more variables and arrays on the stack
might cause problems due to system-dependent limits on stack size.
Also, the value of @samp{FFECOM_sizeMAXSTACKITEM} has no
Also, the value of @code{FFECOM_sizeMAXSTACKITEM} has no
effect on automatic variables and arrays.
@xref{But-bugs}, for more information.
@ -758,7 +822,7 @@ something like @samp{EQUIVALENCE (I,R)} and @samp{DATA R/9.43578/}.)
@node Large Initialization
@subsection Initialization of Large Aggregate Areas
@cindex speed, compiler
@cindex speed, of compiler
@cindex slow compiler
@cindex memory utilization
@cindex large initialization
@ -773,8 +837,8 @@ a factor of 10.
This size currently is quite small, since @code{g77}
currently has a known bug requiring too much memory
and time to handle such cases.
In @file{gcc/f/data.c}, the macro
@samp{FFEDATA_sizeTOO_BIG_INIT_} is defined
In @file{@value{path-g77}/data.c}, the macro
@code{FFEDATA_sizeTOO_BIG_INIT_} is defined
to the minimum size for the warning to appear.
The size is specified in storage units,
which can be bytes, words, or whatever, on a case-by-case basis.
@ -827,10 +891,13 @@ systems.
@section Quick Start
@cindex quick start
@emph{Version info:}
For @code{egcs} users, the following information is
superceded by the @code{egcs} installation instructions.
@ifset OMIT-FSF-G77
For users of the @value{which-g77} version of @code{g77},
this information is superceded by the
@value{which-gcc} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
This procedure configures, builds, and installs @code{g77}
``out of the box'' and works on most UNIX systems.
Each command is identified by a unique number,
@ -1108,13 +1175,18 @@ around anymore.
Removing them can free up a lot of disk space.
@end table
@end ifclear
@node Complete Installation
@section Complete Installation
@emph{Version info:}
For @code{egcs} users, the following information is
mostly superceded by the @code{egcs} installation instructions.
@ifset OMIT-FSF-G77
For users of the @value{which-g77} version of @code{g77},
this information is superceded by the
@value{which-gcc} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
Here is the complete @code{g77}-specific information on how
to configure, build, and install @code{g77}.
@ -1209,7 +1281,7 @@ tree for the first time.
@cindex modifying @code{g77}
@cindex code, modifying
@cindex Pentium optimizations
@cindex optimizations, Pentium
@cindex optimization, for Pentium
@emph{Note:} Please use @strong{only} @code{gcc} and @code{g77}
source trees as distributed by the FSF.
Use of modified versions is likely to result in problems that appear to be
@ -1223,16 +1295,16 @@ and @code{gcc} can coexist as they do in the stock FSF distributions.
@node Merging Distributions
@subsection Merging Distributions
@cindex merging distributions
@cindex @code{gcc} versions supported by @code{g77}
@cindex versions of @code{gcc}
@cindex support for @code{gcc} versions
@cindex @code{gcc}, versions supported by @code{g77}
@cindex versions, of @code{gcc}
@cindex support, @code{gcc} versions
After merging the @code{g77} source tree into the @code{gcc} source tree,
you have put together a complete @code{g77} source tree.
@cindex gcc version numbering
@cindex version numbering
@cindex g77 version number
@cindex @code{gcc}, version number
@cindex version number
@cindex @code{g77}, version number
@cindex GNU version numbering
As of version 0.5.23, @code{g77} no longer modifies
the version number of @code{gcc},
@ -1266,7 +1338,7 @@ the directories they create.)
If your version of @code{gcc} is older than the oldest version
supported by @code{g77}
(as casually determined by listing the contents of @file{gcc/f/INSTALL/},
(as casually determined by listing the contents of @file{@value{path-g77}/INSTALL/},
which contains these installation instructions in plain-text format),
you should obtain a newer, supported version of @code{gcc}.
(You could instead obtain an older version of @code{g77},
@ -1291,9 +1363,7 @@ it is likely that @file{gcc-2.8.2} would work well with @code{g77}.
However, @file{gcc-2.9.0} would almost certainly
not work with that version of @code{g77}
without appropriate modifications,
so a new version of @code{g77} would be needed (and you should
wait for it rather than bothering the maintainers---@pxref{Changes,,
User-Visible Changes}).
so a new version of @code{g77} would be needed.
@cindex distributions, why separate
@cindex separate distributions
@ -1310,7 +1380,7 @@ and such changes require corresponding changes to
the @code{g77} front end (FFE).
@c @pindex config-lang.in
@c @emph{Note:} @code{g77}'s configuration file @file{gcc/f/config-lang.in}
@c @emph{Note:} @code{g77}'s configuration file @file{@value{path-g77}/config-lang.in}
@c sometimes ensures that the source code for the version of @code{gcc}
@c being configured has at least one indication of being an appropriate
@c version as required specifically by @code{g77}.
@ -1325,7 +1395,7 @@ the @code{g77} front end (FFE).
@node Where to Install
@subsection Where in the World Does Fortran (and GNU CC) Go?
@cindex language f77 not recognized
@cindex gcc will not compile Fortran programs
@cindex @code{gcc}, will not compile Fortran programs
Before configuring, you should make sure you know
where you want the @code{g77} and @code{gcc}
@ -1470,16 +1540,16 @@ issuing an explanatory diagnostic.
@cindex building @code{gcc}
@cindex building @code{g77}
@vindex LANGUAGES
@cindex @code{LANGUAGES} macro
Building @code{g77} requires building enough of @code{gcc} that
these instructions assume you're going to build all of
@code{gcc}, including @code{g++}, @code{protoize}, and so on.
You can save a little time and disk space by changes the
@samp{LANGUAGES} macro definition in @code{gcc/Makefile.in}
@code{LANGUAGES} macro definition in @code{gcc/Makefile.in}
or @code{gcc/Makefile}, but if you do that, you're on your own.
One change is almost @emph{certainly} going to cause failures:
removing @samp{c} or @samp{f77} from the definition of the
@samp{LANGUAGES} macro.
removing @code{c} or @code{f77} from the definition of the
@code{LANGUAGES} macro.
After configuring @code{gcc}, which configures @code{g77} and
@code{libg2c} automatically, you're ready to start the actual
@ -1557,7 +1627,7 @@ To save some disk space during installation, after Stage 2
is built, you can type @samp{rm -fr stage1} to remove the
binaries built during Stage 1.
Also, @xref{Installation,,Installing GNU CC,gcc,Using and Porting GNU CC},
Also, see @ref{Installation,,Installing GNU CC,gcc,Using and Porting GNU CC},
for important information on building @code{gcc} that is
not described in this @code{g77} manual.
For example, explanations of diagnostic messages
@ -1718,7 +1788,7 @@ make -k CC=gcc install
As described in @ref{Installation,,Installing GNU CC,
gcc,Using and Porting GNU CC}, the values for
the @samp{CC} and @samp{LANGUAGES} macros should
the @code{CC} and @code{LANGUAGES} macros should
be the same as those you supplied for the build
itself.
@ -1738,7 +1808,7 @@ make -k @dots{} install install-libf77
We don't know why some non-GNU versions of @code{make} sometimes
require this alternate command, but they do.
(Remember to supply the appropriate definition for @samp{CC}
(Remember to supply the appropriate definition for @code{CC}
where you see @samp{@dots{}} in the above command.)
Note that using the @samp{-k} option tells @code{make} to
@ -1872,10 +1942,10 @@ information for the derived files to work around the
problem of not having the appropriate tools installed.
On UNIX systems, the simplest way to update the date-time-modified
information of a file is to use the use the @samp{touch}
information of a file is to use the use the @code{touch}
command.
How to use @samp{touch} to update the derived files
How to use @code{touch} to update the derived files
updated by each of the tools is described below.
@emph{Note:} New versions of @code{g77} might change the set of
files it generates by invoking each of these tools.
@ -1903,7 +1973,7 @@ do @emph{not} do @samp{make maintainer-clean}, and, to ensure that
type these commands:
@example
sh# @kbd{cd gcc/f/runtime}
sh# @kbd{cd @value{path-libf2c}}
sh# @kbd{touch configure libU77/configure}
sh# @kbd{cd ../../..}
sh#
@ -1974,11 +2044,20 @@ sh# @kbd{cd ..}
sh#
@end example
@end ifclear
@node Distributing Binaries
@section Distributing Binaries
@cindex binaries, distributing
@cindex code, distributing
@ifset OMIT-FSF-G77
For users of the @value{which-g77} version of @code{g77},
this information is superceded by the
@value{which-gcc} installation instructions.
@end ifset
@ifclear OMIT-FSF-G77
If you are building @code{g77} for distribution to others in binary form,
first make sure you are aware of your legal responsibilities (read
the file @file{gcc/COPYING} thoroughly).
@ -2097,7 +2176,7 @@ If it is not included, users will have trouble understanding
diagnostics messages and other such things, and will send
you a lot of email asking questions.
Please edit this documentation (by editing @file{gcc/f/*.texi}
Please edit this documentation (by editing @file{@value{path-g77}/*.texi}
and doing @samp{make doc} from the @file{/usr/src/gcc} directory)
to reflect any changes you've made to @code{g77}, or at
least to encourage users of your binary distribution to
@ -2168,3 +2247,5 @@ and distributions, about which nothing could be done for the
user.
Once you are quite certain a bug report does not involve
your efforts, you can forward it to us.
@end ifclear