diff options
Diffstat (limited to 'gcc/f')
-rw-r--r-- | gcc/f/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/f/RELEASE-PREP | 2 | ||||
-rw-r--r-- | gcc/f/g77.texi | 6 | ||||
-rw-r--r-- | gcc/f/g77install.texi | 1721 | ||||
-rw-r--r-- | gcc/f/lang-options.h | 256 | ||||
-rw-r--r-- | gcc/f/root.texi | 16 |
6 files changed, 149 insertions, 1865 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 7b5aeb6..d9eddcd 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,16 @@ +2000-11-26 Joseph S. Myers <jsm28@cam.ac.uk> + + * RELEASE-PREP: Remove obsolete EGCS reference. + * g77.texi: Adjust reference to EGCS as something current. + * lang-options.h (FTNOPT): Remove macro and obsolete comment. + Include doc strings directly in option listing instead of through + this macro. + * root.texi: Remove support for multiple different (FSF and EGCS) + distributions of g77. + * g77install.texi: Remove conditioned out instructions applying + only to obsolete distributions of g77 not as part of GCC. Change + "superceded" to the correct spelling "superseded". + Sun Nov 26 19:25:56 2000 Joseph S. Myers <jsm28@cam.ac.uk> * g77spec.c (lang_specific_driver): Update copyright year to 2000. diff --git a/gcc/f/RELEASE-PREP b/gcc/f/RELEASE-PREP index 7069ea5..71eebf6 100644 --- a/gcc/f/RELEASE-PREP +++ b/gcc/f/RELEASE-PREP @@ -1,5 +1,5 @@ 1999-03-13 RELEASE-PREP -Things to do to prepare a g77 release (FSF, egcs, whatever). +Things to do to prepare a g77 release. - Update root.texi: clear DEVELOPMENT flag, set version info. diff --git a/gcc/f/g77.texi b/gcc/f/g77.texi index 842f4e4..e62bcc2 100644 --- a/gcc/f/g77.texi +++ b/gcc/f/g77.texi @@ -3,7 +3,7 @@ @setfilename g77.info @set last-update 1999-06-06 -@set copyrights-g77 1995-1999 +@set copyrights-g77 1995-2000 @include root.texi @@ -1654,8 +1654,8 @@ and when the resulting commands compile Fortran source files. @cindex options, -fset-g77-defaults @item -fset-g77-defaults @emph{Version info:} -This option is obsolete in @code{egcs} -as of version 1.1. +This option was obsolete as of @code{egcs} +version 1.1. The effect is instead achieved by the @code{lang_init_options} routine in @file{gcc/gcc/f/com.c}. diff --git a/gcc/f/g77install.texi b/gcc/f/g77install.texi index 48ab3bb..64cf9a8 100644 --- a/gcc/f/g77install.texi +++ b/gcc/f/g77install.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +@c Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. @c This is part of the G77 manual. @c For copying conditions, see the file g77.texi. @@ -7,7 +7,7 @@ @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, 1996, 1997, 1998, 1999 +@set copyrights 1995, 1996, 1997, 1998, 1999, 2000 @set last-update-install 1999-07-17 @@ -30,17 +30,6 @@ this copyright notice and permission notice. @chapter Installing GNU Fortran @end ifset -@set version-autoconf 2.12 -@set version-bison 1.25 -@set version-gperf 2.5 -@set version-gzip 1.2.4 -@set version-make 3.76.1 -@set version-makeinfo 1.68 -@set version-patch 2.5 -@set version-sed 2.05 -@set version-tar 1.12 -@set version-texinfo 3.12 - @ifset DOC-G77 @node Installation @chapter Installing GNU Fortran @@ -49,33 +38,11 @@ this copyright notice and permission notice. The following information describes how to install @code{g77}. -@clear OMIT-FSF-G77 - -@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 +and is superseded 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 -to some @emph{binary} distributions of these products---however, -since these distributions are not made by the maintainers of -@code{g77}, responsibility for binary distributions rests with -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, @@ -108,289 +75,9 @@ The following information was last updated on @value{last-update-install}: @section Prerequisites @cindex prerequisites -@ifset OMIT-FSF-G77 For users of the @value{which-g77} version of @code{g77}, -this information is superceded by the +this information is superseded 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. - -The following prerequisites should be met by your -system before you follow the @code{g77} installation instructions: - -@table @asis -@item @code{gzip} and @code{tar} -To unpack the @code{gcc} and @code{g77} distributions, -you'll need the @code{gunzip} utility in the @code{gzip} -distribution. -Most UNIX systems already have @code{gzip} installed. -If yours doesn't, you can get it from the FSF. - -Note that you'll need @code{tar} and other utilities -as well, but all UNIX systems have these. -There are GNU versions of all these available---in fact, -a complete GNU UNIX system can be put together on -most systems, if desired. - -The version of GNU @code{gzip} used to package this release -is @value{version-gzip}. -(The version of GNU @code{tar} used to package this release -is @value{version-tar}.) - -@item @file{gcc-@value{version-gcc}.tar.gz} -You need to have this, or some other applicable, version -of @code{gcc} on your system. -The version should be an exact copy of a distribution -from the FSF. -Its size is approximately 8.4MB. - -If you've already unpacked @file{gcc-@value{version-gcc}.tar.gz} into a -directory (named @file{gcc-@value{version-gcc}}) called the @dfn{source tree} -for @code{gcc}, you can delete the distribution -itself, but you'll need to remember to skip any instructions to unpack -this distribution. - -Without an applicable @code{gcc} source tree, you cannot -build @code{g77}. -You can obtain an FSF distribution of @code{gcc} from the FSF. - -@item @file{g77-@value{version-g77}.tar.gz} -You probably have already unpacked this package, -or you are reading an advance copy of these installation instructions, -which are contained in this distribution. -The size of this package is approximately 1.4MB. - -You can obtain an FSF distribution of @code{g77} from the FSF, -the same way you obtained @code{gcc}. - -@item Enough disk space -The amount of disk space needed to unpack, build, install, -and use @code{g77} depends on the type of system you're -using, how you build @code{g77}, and how much of it you -install (primarily, which languages you install). - -The sizes shown below assume all languages distributed in -@c As of `Version 2.249', texinfo.tex loses on a construction like -@c @code{...@value{...-...}...} since the hyphen is expanded as -@c -@discretionary{}{}{}, even though @value resets its catcode. -@c Fortunately this is currently the only instance. Kluge, kluge. -@iftex -@begingroup @let@codedash=@realdash -@end iftex -@code{gcc-@value{version-gcc}}, -@iftex -@endgroup -@end iftex -plus @code{g77}, will be built and installed. -These sizes are indicative of GNU/Linux systems on -Intel x86 running COFF and on Digital Alpha (AXP) systems -running ELF. -These should be fairly representative of 32-bit and 64-bit -systems, respectively. - -Note that all sizes are approximate and subject to change without -notice! -They are based on preliminary releases of g77 made shortly -before the public beta release. - -@itemize --- -@item -@code{gcc} and @code{g77} distributions occupy 10MB -packed, 40MB unpacked. -These consist of the source code and documentation, -plus some derived files (mostly documentation), for -@code{gcc} and @code{g77}. -Any deviations from these numbers for different -kinds of systems are likely to be very minor. - -@item -A ``bootstrap'' build requires an additional 91MB -for a total of 132MB on an ix86, and an additional -136MB for a total of 177MB on an Alpha. - -@item -Removing @file{gcc/stage1} after the build recovers -13MB for a total of 119MB on an ix86, and recovers -21MB for a total of 155MB on an Alpha. - -After doing this, the integrity of the build can -still be verified via @samp{make compare}, and the -@code{gcc} compiler modified and used to build itself for -testing fairly quickly, using the copy of the compiler -kept in @code{gcc/stage2}. - -@item -Removing @file{gcc/stage2} after the build further -recovers 39MB for a total of 80MB, and recovers -57MB for a total of 98MB on an Alpha. - -After doing this, the compiler can still be installed, -especially if GNU @code{make} is used to avoid -gratuitous rebuilds (or, the installation can be done -by hand). - -@item -Installing @code{gcc} and @code{g77} copies -23MB onto the @samp{--prefix} disk for a total of 103MB -on an ix86, and copies 31MB onto the @samp{--prefix} -disk for a total of 130MB on an Alpha. -@end itemize - -After installation, if no further modifications and -builds of @code{gcc} or @code{g77} are planned, the -source and build directory may be removed, leaving -the total impact on a system's disk storage as -that of the amount copied during installation. - -Systems with the appropriate version of @code{gcc} -installed don't require the complete -bootstrap build. -Doing a ``straight build'' requires about as much -space as does a bootstrap build followed by removing -both the @file{gcc/stage1} and @file{gcc/stage2} -directories. - -Installing @code{gcc} and @code{g77} over existing -versions might require less @emph{new} disk space, -but note that, unlike many products, @code{gcc} -installs itself in a way that avoids overwriting other -installed versions of itself, so that other versions may -easily be invoked (via @samp{gcc -V @var{version}}). - -So, the amount of space saved as a result of having -an existing version of @code{gcc} and @code{g77} -already installed is not much---typically only the -command drivers (@code{gcc}, @code{g77}, @code{g++}, -and so on, which are small) and the documentation -is overwritten by the new installation. -The rest of the new installation is done without -replacing existing installed versions (assuming -they have different version numbers). - -@item @code{make} -Your system must have @code{make}, and you will probably save -yourself a lot of trouble if it is GNU @code{make} (sometimes -referred to as @code{gmake}). -In particular, you probably need GNU @code{make} -to build outside the source directory -(with @code{configure}'s @samp{--srcdir} option.) - -The version of GNU @code{make} used to develop this release -is @value{version-make}. - -@item @code{cc} -Your system must have a working C compiler. -If it doesn't, you might be able to obtain -a prebuilt binary of some version of @code{gcc} -from the network or on CD-ROM, -perhaps from the FSF@. -The best source of information about binaries -is probably a system-specific Usenet news group, -initially via its FAQ. - -@xref{Installation,,Installing GNU CC,gcc,Using and Porting GNU CC}, -for more information on prerequisites for installing @code{gcc}. - -@item @code{sed} -All UNIX systems have @code{sed}, but some have a broken -version that cannot handle configuring, building, or -installing @code{gcc} or @code{g77}. - -The version of GNU @code{sed} used to develop this release -is @value{version-sed}. -(Note that GNU @code{sed} version 3.0 was withdrawn by the -FSF---if you happen to have this version installed, replace -it with version @value{version-sed} immediately. -See a GNU distribution site for further explanation.) - -@item @code{root} access or equivalent -To perform the complete installation procedures on a system, -you need to have @code{root} access to that system, or -equivalent access to the @samp{--prefix} directory tree -specified on the @code{configure} command line. - -Portions of the procedure (such as configuring and building -@code{g77}) can be performed by any user with enough disk -space and virtual memory. - -However, these instructions are oriented towards less-experienced -users who want to install @code{g77} on their own personal -systems. - -System administrators with more experience will want to -determine for themselves how they want to modify the -procedures described below to suit the needs of their -installation. - -@item @code{autoconf} -The version of GNU @code{autoconf} used to develop this release -is @value{version-autoconf}. - -@code{autoconf} is not needed in the typical case of -installing @code{gcc} and @code{g77}. -@xref{Missing tools?}, for information on when it -might be needed and how to work around not having it. - -@item @code{bison} -The version of GNU @code{bison} used to develop this release -is @value{version-bison}. - -@code{bison} is not needed in the typical case of -installing @code{gcc} and @code{g77}. -@xref{Missing tools?}, for information on when it -might be needed and how to work around not having it. - -@item @code{gperf} -The version of GNU @code{gperf} used to develop this release -is @value{version-gperf}. - -@code{gperf} is not needed in the typical case of -installing @code{gcc} and @code{g77}. -@xref{Missing tools?}, for information on when it -might be needed and how to work around not having it. - -@item @code{makeinfo} -The version of GNU @code{makeinfo} used to develop this release -is @value{version-makeinfo}. - -@code{makeinfo} is part of the GNU @code{texinfo} package; -@code{makeinfo} version @value{version-makeinfo} -is distributed as part of -GNU @code{texinfo} version @value{version-texinfo}. - -@code{makeinfo} is not needed in the typical case of -installing @code{gcc} and @code{g77}. -@xref{Missing tools?}, for information on when it -might be needed and how to work around not having it. - -An up-to-date version of GNU @code{makeinfo} is still convenient -when obtaining a new version of a GNU distribution such as -@code{gcc} or @code{g77}, -as it allows you to obtain the @file{.diff.gz} file -instead of the entire @file{.tar.gz} distribution -(assuming you have installed @code{patch}). - -@item @code{patch} -The version of GNU @code{patch} used to develop this release -is @value{version-patch}. - -Beginning with @code{g77} version 0.5.23, it is no longer -necessary to patch the @code{gcc} back end to build @code{g77}. - -An up-to-date version of GNU @code{patch} is still convenient -when obtaining a new version of a GNU distribution such as -@code{gcc} or @code{g77}, -as it allows you to obtain the @file{.diff.gz} file -instead of the entire @file{.tar.gz} distribution -(assuming you have installed the tools needed -to rebuild derived files, such as @code{makeinfo}). -@end table - -@end ifclear @node Problems Installing @section Problems Installing @@ -479,63 +166,8 @@ is not yet established. @cindex @code{ld}, can't find _strtoul @cindex SunOS4 -@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 @code{strtoul} library function -is not provided on that system. - -Other systems have, in the past, been reported to not provide -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, -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{@value{path-g77}/proj.c}, -if the appropriate macros are defined. -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{@value{path-g77}/proj.c} and inserting -either or both of the following @samp{#define} statements -before the comment shown: - -@smallexample -/* Insert #define statements here. */ - -#define NEED_BSEARCH -#define NEED_STRTOUL -@end smallexample - -Then, continue configuring and building @code{g77} as usual. - -Or, you can define these on the @code{make} command line. -To build with the bundled @code{cc} on SunOS4, for example, try: -@smallexample -make bootstrap BOOT_CFLAGS='-O2 -g -DNEED_STRTOUL' -@end smallexample - -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{@value{path-g77}/proj.c} -somewhat. - -@end ifclear @node Cleanup Kills Stage Directories @subsubsection Cleanup Kills Stage Directories @@ -886,1361 +518,22 @@ systems. @section Quick Start @cindex quick start -@ifset OMIT-FSF-G77 For users of the @value{which-g77} version of @code{g77}, -this information is superceded by the +this information is superseded 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, -used in the explanatory text that follows. -For the most part, the output of each command is not shown, -though indications of the types of responses are given in a -few cases. - -To perform this procedure, the installer must be logged -in as user @code{root}. -Much of it can be done while not logged in as @code{root}, -and users experienced with UNIX administration should be -able to modify the procedure properly to do so. - -Following traditional UNIX conventions, it is assumed that -the source trees for @code{g77} and @code{gcc} will be -placed in @file{/usr/src}. -It also is assumed that the source distributions themselves -already reside in @file{/usr/FSF}, a naming convention -used by the author of @code{g77} on his own system: - -@example -/usr/FSF/gcc-@value{version-gcc}.tar.gz -/usr/FSF/g77-@value{version-g77}.tar.gz -@end example - -@c (You can use @file{gcc-2.7.2.1.tar.gz} instead, or -@c the equivalent of it obtained by applying the -@c patch distributed as @file{gcc-2.7.2-2.7.2.1.diff.gz} -@c to version 2.7.2 of @code{gcc}, -@c if you remember to make the appropriate adjustments in the -@c instructions below.) - -@c @cindex SunOS4 -@c Users of the following systems should not blindly follow -@c these quick-start instructions, because of problems their -@c systems have coping with straightforward installation of -@c @code{g77}: -@c -@c @itemize @bullet -@c @item -@c SunOS4 -@c @end itemize -@c -@c Instead, see @ref{Complete Installation}, for detailed information -@c on how to configure, build, and install @code{g77} for your -@c particular system. -@c Also, see @ref{Trouble,,Known Causes of Trouble with GNU Fortran}, -@c for information on bugs and other problems known to afflict the -@c installation process, and how to report newly discovered ones. -@c -@c If your system is @emph{not} on the above list, and @emph{is} -@c a UNIX system or one of its variants, you should be able to -@c follow the instructions below. - -If you vary @emph{any} of the steps below, you might run into -trouble, including possibly breaking existing programs for -other users of your system. -Before doing so, it is wise to review the explanations of some -of the steps. -These explanations follow this list of steps. - -@example -sh[ 1]# @kbd{cd /usr/src} -@set source-dir 1 -sh[ 2]# @kbd{gunzip -c < /usr/FSF/gcc-@value{version-gcc}.tar.gz | tar xf -} -[Might say "Broken pipe"...that is normal on some systems.] -@set unpack-gcc 2 -sh[ 3]# @kbd{gunzip -c < /usr/FSF/g77-@value{version-g77}.tar.gz | tar xf -} -["Broken pipe" again possible.] -@set unpack-g77 3 -sh[ 4]# @kbd{ln -s gcc-@value{version-gcc} gcc} -@set link-gcc 4 -sh[ 5]# @kbd{ln -s g77-@value{version-g77} g77} -@set link-g77 5 -sh[ 6]# @kbd{mv -i g77/* gcc} -[No questions should be asked by mv here; or, you made a mistake.] -@set merge-g77 6 -sh[ 7]# @kbd{cd gcc} -sh[ 8]# @kbd{./configure --prefix=/usr} -[Do not do the above if gcc is not installed in /usr/bin. -You might need a different @kbd{--prefix=@dots{}}, as -described below.] -@set configure-gcc 8 -sh[ 9]# @kbd{make bootstrap} -[This takes a long time, and is where most problems occur.] -@set build-gcc 9 -sh[10]# @kbd{make compare} -[This verifies that the compiler is `sane'. -If any files are printed, you have likely found a g77 bug.] -@set compare-gcc 10 -sh[11]# @kbd{rm -fr stage1} -@set rm-stage1 11 -sh[12]# @kbd{make -k install} -[The actual installation.] -@set install-g77 12 -sh[13]# @kbd{g77 -v} -[Verify that g77 is installed, obtain version info.] -@set show-version 13 -sh[14]# -@set end-procedure 14 -@end example - -@xref{Updating Documentation,,Updating Your Info Directory}, for -information on how to update your system's top-level @code{info} -directory to contain a reference to this manual, so that -users of @code{g77} can easily find documentation instead -of having to ask you for it. - -Elaborations of many of the above steps follows: - -@table @asis -@item Step @value{source-dir}: @kbd{cd /usr/src} -You can build @code{g77} pretty much anyplace. -By convention, this manual assumes @file{/usr/src}. -It might be helpful if other users on your system -knew where to look for the source code for the -installed version of @code{g77} and @code{gcc} in any case. - -@c @item Step @value{unpack-gcc}: @kbd{gunzip -d @dots{}} -@c Here, you might wish to use @file{gcc-2.7.2.1.tar.gz} -@c instead, or apply @file{gcc-2.7.2-2.7.2.1.diff.gz} to achieve -@c similar results. - -@item Step @value{unpack-g77}: @kbd{gunzip -d < /usr/FSF/g77-@value{version-g77}.tar.gz | tar xf -} -It is not always necessary to obtain the latest version of -@code{g77} as a complete @file{.tar.gz} file if you have -a complete, earlier distribution of @code{g77}. -If appropriate, you can unpack that earlier -version of @code{g77}, and then apply the appropriate patches -to achieve the same result---a source tree containing version -@value{version-g77} of @code{g77}. - -@item Step @value{link-gcc}: @kbd{ln -s gcc-@value{version-gcc} gcc} -@item Step @value{link-g77}: @kbd{ln -s g77-@value{version-g77} g77} -These commands mainly help reduce typing, -and help reduce visual clutter in examples -in this manual showing what to type to install @code{g77}. - -@c Of course, if appropriate, @kbd{ln -s gcc-2.7.2.1 gcc} or -@c similar. - -@xref{Unpacking}, for information on -using distributions of @code{g77} made by organizations -other than the FSF. - -@item Step @value{merge-g77}: @kbd{mv -i g77/* gcc} -After doing this, you can, if you like, type -@samp{rm g77} and @samp{rmdir g77-@value{version-g77}} to remove -the empty directory and the symbol link to it. -But, it might be helpful to leave them around as -quick reminders of which version(s) of @code{g77} are -installed on your system. - -@xref{Unpacking}, for information -on the contents of the @file{g77} directory (as merged -into the @file{gcc} directory). - -@item Step @value{configure-gcc}: @kbd{./configure --prefix=/usr} -This is where you specify that -the @file{g77} and @file{gcc} executables are to be -installed in @file{/usr/bin/}, -the @code{g77} and @code{gcc} documentation is -to be installed in @file{/usr/info/} and @file{/usr/man/}, -and so on. - -You should ensure that any existing installation of the @file{gcc} -executable is in @file{/usr/bin/}. - -However, if that existing version of @code{gcc} is not @value{version-gcc}, -or if you simply wish to avoid risking overwriting it with a -newly built copy of the same version, -you can specify @samp{--prefix=/usr/local} -(which is the default) -or some other path, -and invoke the newly installed version -directly from that path's @file{bin} directory. - -@xref{Where to Install,,Where in the World Does Fortran (and GNU CC) Go?}, -for more information on determining where to install @code{g77}. -@xref{Configuring gcc}, for more information on the -configuration process triggered by invoking the @file{./configure} -script. - -@item Step @value{build-gcc}: @kbd{make bootstrap} -@xref{Installation,,Installing GNU CC, -gcc,Using and Porting GNU CC}, for information -on the kinds of diagnostics you should expect during -this procedure. - -@xref{Building gcc}, for complete @code{g77}-specific -information on this step. - -@item Step @value{compare-gcc}: @kbd{make compare} -@xref{Bug Lists,,Where to Port Bugs}, for information -on where to report that you observed files -having different contents during this -phase. - -@xref{Bug Reporting,,How to Report Bugs}, for -information on @emph{how} to report bugs like this. - -@item Step @value{rm-stage1}: @kbd{rm -fr stage1} -You don't need to do this, but it frees up disk space. - -@item Step @value{install-g77}: @kbd{make -k install} -If this doesn't seem to work, try: - -@example -make -k install install-libf77 -@end example - -Or, make sure you're using GNU @code{make}. - -@xref{Installation of Binaries}, for more information. - -@xref{Updating Documentation,,Updating Your Info Directory}, -for information on entering this manual into your -system's list of texinfo manuals. - -@item Step @value{show-version}: @kbd{g77 -v} -If this command prints approximately 25 lines of output, -including the GNU Fortran Front End version number (which -should be the same as the version number for the version -of @code{g77} you just built and installed) and the -version numbers for the three parts of the @code{libf2c} -library (@code{libF77}, @code{libI77}, @code{libU77}), and -those version numbers are all in agreement, then there is -a high likelihood that the installation has been successfully -completed. - -You might consider doing further testing. -For example, log in as a non-privileged user, then create -a small Fortran program, such as: - -@example - PROGRAM SMTEST - DO 10 I=1, 10 - PRINT *, 'Hello World #', I -10 CONTINUE - END -@end example - -Compile, link, and run the above program, and, assuming you named -the source file @file{smtest.f}, the session should look like this: - -@example -sh# @kbd{g77 -o smtest smtest.f} -sh# @kbd{./smtest} - Hello World # 1 - Hello World # 2 - Hello World # 3 - Hello World # 4 - Hello World # 5 - Hello World # 6 - Hello World # 7 - Hello World # 8 - Hello World # 9 - Hello World # 10 -sh# -@end example - -If invoking @code{g77} doesn't seem to work, -the problem might be that you've installed it in -a location that is not in your shell's search path. -For example, if you specified @samp{--prefix=/gnu}, -and @file{/gnu/bin} is not in your @code{PATH} -environment variable, -you must explicitly specify the location of the compiler -via @kbd{/gnu/bin/g77 -o smtest smtest.f}. - -After proper installation, you don't -need to keep your gcc and g77 source and build directories -around anymore. -Removing them can free up a lot of disk space. -@end table - -@end ifclear @node Complete Installation @section Complete Installation -@ifset OMIT-FSF-G77 For users of the @value{which-g77} version of @code{g77}, -this information is superceded by the +this information is superseded 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}. - -@menu -* Unpacking:: -* Merging Distributions:: -* Where to Install:: -* Configuring gcc:: -* Building gcc:: -* Pre-installation Checks:: -* Installation of Binaries:: -* Updating Documentation:: -* Missing tools?:: -@end menu - -@node Unpacking -@subsection Unpacking -@cindex unpacking distributions -@cindex distributions, unpacking -@cindex code, source -@cindex source code -@cindex source tree -@cindex packages - -The @code{gcc} source distribution is a stand-alone distribution. -It is designed to be unpacked (producing the @code{gcc} -source tree) and built as is, assuming certain -prerequisites are met (including the availability of compatible -UNIX programs such as @code{make}, @code{cc}, and so on). - -However, before building @code{gcc}, you will want to unpack -and merge the @code{g77} distribution in with it, so that you -build a Fortran-capable version of @code{gcc}, which includes -the @code{g77} command, the necessary run-time libraries, -and this manual. - -Unlike @code{gcc}, the @code{g77} source distribution -is @emph{not} a stand-alone distribution. -It is designed to be unpacked and, afterwards, immediately merged -into an applicable @code{gcc} source tree. -That is, the @code{g77} distribution @emph{augments} a -@code{gcc} distribution---without @code{gcc}, generally -only the documentation is immediately usable. - -A sequence of commands typically used to unpack @code{gcc} -and @code{g77} is: - -@example -sh# @kbd{cd /usr/src} -sh# @kbd{gunzip -c /usr/FSF/gcc-@value{version-gcc}.tar.gz | tar xf -} -sh# @kbd{gunzip -c /usr/FSF/g77-@value{version-g77}.tar.gz | tar xf -} -sh# @kbd{ln -s gcc-@value{version-gcc} gcc} -sh# @kbd{ln -s g77-@value{version-g77} g77} -sh# @kbd{mv -i g77/* gcc} -@end example - -@emph{Notes:} The commands beginning with @samp{gunzip@dots{}} might -print @samp{Broken pipe@dots{}} as they complete. -That is nothing to worry about, unless you actually -@emph{hear} a pipe breaking. -The @code{ln} commands are helpful in reducing typing -and clutter in installation examples in this manual. -Hereafter, the top level of @code{gcc} source tree is referred to -as @file{gcc}, and the top level of just the @code{g77} -source tree (prior to issuing the @code{mv} command, above) -is referred to as @file{g77}. - -There are three top-level names in a @code{g77} distribution: - -@example -g77/COPYING.g77 -g77/README.g77 -g77/f -@end example - -All three entries should be moved (or copied) into a @code{gcc} -source tree (typically named after its version number and -as it appears in the FSF distributions---e.g. @file{gcc-@value{version-gcc}}). - -@file{g77/f} is the subdirectory containing all of the -code, documentation, and other information that is specific -to @code{g77}. -The other two files exist to provide information on @code{g77} -to someone encountering a @code{gcc} source tree with @code{g77} -already present, who has not yet read these installation -instructions and thus needs help understanding that the -source tree they are looking at does not come from a single -FSF distribution. -They also help people encountering an unmerged @code{g77} source -tree for the first time. - -@cindex modifying @code{g77} -@cindex code, modifying -@cindex Pentium optimizations -@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 -in the @code{g77} code but, in fact, are not. -Do not use such modified versions -unless you understand all the differences between them and the versions -the FSF distributes---in which case you should be able to modify the -@code{g77} (or @code{gcc}) source trees appropriately so @code{g77} -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, @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 @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}, -nor does it patch @code{gcc} itself. - -@code{g77} still depends on being merged with an -appropriate version of @code{gcc}. -For version @value{version-g77} of @code{g77}, -the specific version of @code{gcc} supported is @value{version-gcc}. - -However, other versions of @code{gcc} might be suitable -``hosts'' for this version of @code{g77}. - -GNU version numbers make it easy to figure out whether a -particular version of a distribution is newer or older than -some other version of that distribution. -The format is, -generally, @var{major}.@var{minor}.@var{patch}, with -each field being a decimal number. -(You can safely ignore -leading zeros; for example, 1.5.3 is the same as 1.5.03.) -The @var{major} field only increases with time. -The other two fields are reset to 0 when the field to -their left is incremented; otherwise, they, too, only -increase with time. -So, version 2.6.2 is newer than version 2.5.8, and -version 3.0 is newer than both. -(Trailing @samp{.0} fields often are omitted in -announcements and in names for distributions and -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{@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}, -or try and get your @code{g77} to work with the old -@code{gcc}, but neither approach is recommended, and -you shouldn't bother reporting any bugs you find if you -take either approach, because they're probably already -fixed in the newer versions you're not using.) - -If your version of @code{gcc} is newer than the newest version -supported by @code{g77}, it is possible that your @code{g77} -will work with it anyway. -If the version number for @code{gcc} differs only in the -@var{patch} field, you might as well try that version of @code{gcc}. -Since it has the same @var{major} and @var{minor} fields, -the resulting combination is likely to work. - -So, for example, if a particular version of @code{g77} has support for -@code{gcc} versions 2.8.0 and 2.8.1, -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. - -@cindex distributions, why separate -@cindex separate distributions -@cindex why separate distributions -This complexity is the result of @code{gcc} and @code{g77} being -separate distributions. -By keeping them separate, each product is able to be independently -improved and distributed to its user base more frequently. - -However, the GBE interface defined by @code{gcc} typically -undergoes some incompatible changes at least every time the -@var{minor} field of the version number is incremented, -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{@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}. -@c This configuration-time -@c checking should catch failures to use the proper version of @code{gcc} and, -@c if so caught, should abort the configuration with an explanation. -@c @emph{Please} do not try to disable this check, -@c otherwise @code{g77} might well appear to build -@c and install correctly, and even appear to compile correctly, -@c but could easily produce broken code. - -@node Where to Install -@subsection Where in the World Does Fortran (and GNU CC) Go? -@cindex language f77 not recognized -@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} -binaries to be installed after they're built, -because this information is given to the configuration -tool and used during the build itself. - -A @code{g77} installation normally includes installation of -a Fortran-aware version of @code{gcc}, so that the @code{gcc} -command recognizes Fortran source files and knows how to compile -them. - -For this to work, the version of @code{gcc} that you will be building -as part of @code{g77} @strong{must} be installed as the ``active'' -version of @code{gcc} on the system. - -Sometimes people make the mistake of installing @code{gcc} as -@file{/usr/local/bin/gcc}, -leaving an older, non-Fortran-aware version in @file{/usr/bin/gcc}. -(Or, the opposite happens.) -This can result in @code{gcc} being unable to compile Fortran -source files, -because when the older version of @code{gcc} is invoked, -it complains that it does not -recognize the language, or the file name suffix. - -So, determine whether @code{gcc} already is installed on your system, -and, if so, @emph{where} it is installed, and prepare to configure the -new version of @code{gcc} you'll be building so that it installs -over the existing version of @code{gcc}. - -You might want to back up your existing copy of @file{/usr/bin/gcc}, and -the entire @file{/usr/lib} directory, before -you perform the actual installation (as described in this manual). - -Existing @code{gcc} installations typically are -found in @file{/usr} or @file{/usr/local}. -(This means the commands are installed in @file{/usr/bin} or -@file{/usr/local/bin}, -the libraries in @file{/usr/lib} or @file{/usr/local/lib}, -and so on.) - -If you aren't certain where the currently -installed version of @code{gcc} and its -related programs reside, look at the output -of this command: - -@example -gcc -v -o /tmp/delete-me -xc /dev/null -xnone -@end example - -All sorts of interesting information on the locations of various -@code{gcc}-related programs and data files should be visible -in the output of the above command. -(The output also is likely to include a diagnostic from -the linker, since there's no @samp{main_()} function.) -However, you do have to sift through it yourself; @code{gcc} -currently provides no easy way to ask it where it is installed -and where it looks for the various programs and data files it -calls on to do its work. - -Just @emph{building} @code{g77} should not overwrite any installed -programs---but, usually, after you build @code{g77}, you will want -to install it, so backing up anything it might overwrite is -a good idea. -(This is true for any package, not just @code{g77}, -though in this case it is intentional that @code{g77} overwrites -@code{gcc} if it is already installed---it is unusual that -the installation process for one distribution intentionally -overwrites a program or file installed by another distribution, -although, in this case, @code{g77} is an augmentation of the -@code{gcc} distribution.) - -Another reason to back up the existing version first, -or make sure you can restore it easily, is that it might be -an older version on which other users have come to depend -for certain behaviors. -However, even the new version of @code{gcc} you install -will offer users the ability to specify an older version of -the actual compilation programs if desired, and these -older versions need not include any @code{g77} components. -@xref{Target Options,,Specifying Target Machine and Compiler Version, -gcc,Using and Porting GNU CC}, for information on the @samp{-V} -option of @code{gcc}. - -@node Configuring gcc -@subsection Configuring GNU CC - -@code{g77} is configured automatically when you configure -@code{gcc}. -There are two parts of @code{g77} that are configured in two -different ways---@code{g77}, which ``camps on'' to the -@code{gcc} configuration mechanism, and @code{libg2c}, which -uses a variation of the GNU @code{autoconf} configuration -system. - -Generally, you shouldn't have to be concerned with -either @code{g77} or @code{libg2c} configuration, unless -you're configuring @code{g77} as a cross-compiler. -In this case, the @code{libg2c} configuration, and possibly the -@code{g77} and @code{gcc} configurations as well, -might need special attention. -(This also might be the case if you're porting @code{gcc} to -a whole new system---even if it is just a new operating system -on an existing, supported CPU.) - -To configure the system, see -@ref{Installation,,Installing GNU CC,gcc,Using and Porting GNU CC}, -following the instructions for running @file{./configure}. -Pay special attention to the @samp{--prefix=} option, which -you almost certainly will need to specify. - -(Note that @code{gcc} installation information is provided -as a plain-text file in @file{gcc/INSTALL}.) - -The information printed by the invocation of @file{./configure} -should show that the @file{f} directory (the Fortran language) -has been configured. -If it does not, there is a problem. - -@emph{Note:} Configuring with the @samp{--srcdir} argument, -or by starting in an empty directory -and typing a command such as @kbd{../gcc/configure} to -build with separate build and source directories, -is known to work with GNU @code{make}, -but it is known to not work with other variants of @code{make}. -Irix5.2 and SunOS4.1 versions of @code{make} definitely -won't work outside the source directory at present. - -@code{g77}'s portion of the @file{configure} script -used to issue a warning message about this -when configuring for building binaries outside the source directory, -but no longer does this as of version 0.5.23. - -Instead, @code{g77} simply rejects most common attempts -to build it using a non-GNU @code{make} when the -build directory is not the same as the source directory, -issuing an explanatory diagnostic. - -@node Building gcc -@subsection Building GNU CC -@cindex building @code{gcc} -@cindex building @code{g77} - -@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 -@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 @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 -build by invoking @code{make}. - -@pindex configure -@emph{Note:} You @strong{must} have run the @file{configure} -script in @code{gcc} before you run @code{make}, -even if you're using an already existing @code{gcc} development directory, -because @file{./configure} does the work to recognize that you've added -@code{g77} to the configuration. - -There are two general approaches to building GNU CC from -scratch: - -@table @dfn -@item bootstrap -This method uses minimal native system facilities to -build a barebones, unoptimized @code{gcc}, that is then -used to compile (``bootstrap'') the entire system. - -@item straight -This method assumes a more complete native system -exists, and uses that just once to build the entire -system. -@end table - -On all systems without a recent version of @code{gcc} -already installed, the @i{bootstrap} method must be -used. -In particular, @code{g77} uses extensions to the C -language offered, apparently, only by @code{gcc}. - -On most systems with a recent version of @code{gcc} -already installed, the @i{straight} method can be -used. -This is an advantage, because it takes less CPU time -and disk space for the build. -However, it does require that the system have fairly -recent versions of many GNU programs and other -programs, which are not enumerated here. - -@menu -* Bootstrap Build:: For all systems. -* Straight Build:: For systems with a recent version of @code{gcc}. -@end menu - -@node Bootstrap Build -@subsubsection Bootstrap Build -@cindex bootstrap build -@cindex build, bootstrap - -A complete bootstrap build is done by issuing a command -beginning with @samp{make bootstrap @dots{}}, as -described in @ref{Installation,,Installing GNU CC, -gcc,Using and Porting GNU CC}. -This is the most reliable form of build, but it does require -the most disk space and CPU time, since the complete system -is built twice (in Stages 2 and 3), after an initial build -(during Stage 1) of a minimal @code{gcc} compiler using -the native compiler and libraries. - -You might have to, or want to, control the way a bootstrap -build is done by entering the @code{make} commands to build -each stage one at a time, as described in the @code{gcc} -manual. -For example, to save time or disk space, you might want -to not bother doing the Stage 3 build, in which case you -are assuming that the @code{gcc} compiler you have built -is basically sound (because you are giving up the opportunity -to compare a large number of object files to ensure they're -identical). - -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, 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 -and whether they're expected, or indicate trouble, -are found there. - -@node Straight Build -@subsubsection Straight Build -@cindex straight build -@cindex build, straight - -If you have a recent version of @code{gcc} -already installed on your system, and if you're -reasonably certain it produces code that is -object-compatible with the version of @code{gcc} -you want to build as part of building @code{g77}, -you can save time and disk space by doing a straight -build. - -To build just the compilers along with the -necessary run-time libraries, issue the following -command: - -@example -make -k CC=gcc -@end example - -If you run into problems using this method, you have -two options: - -@itemize @bullet -@item -Abandon this approach and do a bootstrap build. - -@item -Try to make this approach work by diagnosing the -problems you're running into and retrying. -@end itemize - -Especially if you do the latter, you might consider -submitting any solutions as bug/fix reports. -@xref{Trouble,,Known Causes of Trouble with GNU Fortran}. - -However, understand that many problems preventing a -straight build from working are not @code{g77} problems, -and, in such cases, are not likely to be addressed in -future versions of @code{g77}. -Consider treating them as @code{gcc} bugs instead. - -@node Pre-installation Checks -@subsection Pre-installation Checks -@cindex pre-installation checks -@cindex installing, checking before - -Before installing the system, which includes installing -@code{gcc}, you might want to do some minimum checking -to ensure that some basic things work. - -Here are some commands you can try, and output typically -printed by them when they work: - -@example -sh# @kbd{cd /usr/src/gcc} -sh# @kbd{./g77 -B./ -v} -g77 version @value{version-g77} -Driving: ./g77 -B./ -v -c -xf77-version /dev/null -xnone -Reading specs from ./specs -gcc version @value{version-gcc} - cpp -lang-c -v -isystem ./include -undef -D__GNUC__=2 @dots{} -GNU CPP version @value{version-gcc} (Alpha GNU/Linux with ELF) -#include "..." search starts here: -#include <...> search starts here: - include - /usr/alpha-linux/include - /usr/lib/gcc-lib/alpha-linux/@value{version-gcc}/include - /usr/include -End of search list. - ./f771 -fnull-version -quiet -dumpbase g77-version.f -version @dots{} -GNU F77 version @value{version-gcc} (alpha-linux) compiled @dots{} -GNU Fortran Front End version @value{version-g77} - as -nocpp -o /tmp/cca14485.o /tmp/cca14485.s - ld -m elf64alpha -G 8 -O1 -dynamic-linker /lib/ld-linux.so.2 @dots{} - /tmp/cca14485 -__G77_LIBF77_VERSION__: @value{version-g77} -@@(#)LIBF77 VERSION 19970919 -__G77_LIBI77_VERSION__: @value{version-g77} -@@(#) LIBI77 VERSION pjw,dmg-mods 19980405 -__G77_LIBU77_VERSION__: @value{version-g77} -@@(#) LIBU77 VERSION 19970919 -sh# @kbd{./xgcc -B./ -v -o /tmp/delete-me -xc /dev/null -xnone} -Reading specs from ./specs -gcc version @value{version-gcc} - ./cpp -lang-c -v -isystem ./include -undef @dots{} -GNU CPP version @value{version-gcc} (Alpha GNU/Linux with ELF) -#include "..." search starts here: -#include <...> search starts here: - include - /usr/alpha-linux/include - /usr/lib/gcc-lib/alpha-linux/@value{version-gcc}/include - /usr/include -End of search list. - ./cc1 /tmp/cca18063.i -quiet -dumpbase null.c -version @dots{} -GNU C version @value{version-gcc} (alpha-linux) compiled @dots{} - as -nocpp -o /tmp/cca180631.o /tmp/cca18063.s - ld -m elf64alpha -G 8 -O1 -dynamic-linker /lib/ld-linux.so.2 @dots{} -/usr/lib/crt1.o: In function `_start': -../sysdeps/alpha/elf/start.S:77: undefined reference to `main' -../sysdeps/alpha/elf/start.S:77: undefined reference to `main' -sh# -@end example - -(Note that long lines have been truncated, and @samp{@dots{}} -used to indicate such truncations.) - -The above two commands test whether @code{g77} and @code{gcc}, -respectively, are able to compile empty (null) source files, -whether invocation of the C preprocessor works, whether libraries -can be linked, and so on. - -If the output you get from either of the above two commands -is noticeably different, especially if it is shorter or longer -in ways that do not look consistent with the above sample -output, you probably should not install @code{gcc} and @code{g77} -until you have investigated further. - -For example, you could try compiling actual applications and -seeing how that works. -(You might want to do that anyway, even if the above tests -work.) - -To compile using the not-yet-installed versions of @code{gcc} -and @code{g77}, use the following commands to invoke them. - -To invoke @code{g77}, type: - -@example -/usr/src/gcc/g77 -B/usr/src/gcc/ @dots{} -@end example - -To invoke @code{gcc}, type: - -@example -/usr/src/gcc/xgcc -B/usr/src/gcc/ @dots{} -@end example - -@node Installation of Binaries -@subsection Installation of Binaries -@cindex installation of binaries -@cindex @code{g77}, installation of -@cindex @code{gcc}, installation of - -After configuring, building, and testing @code{g77} and @code{gcc}, -when you are ready to install them on your system, type: - -@example -make -k CC=gcc install -@end example - -As described in @ref{Installation,,Installing GNU CC, -gcc,Using and Porting GNU CC}, the values for -the @code{CC} and @code{LANGUAGES} macros should -be the same as those you supplied for the build -itself. - -So, the details of the above command might vary -if you used a bootstrap build (where you might be -able to omit both definitions, or might have to -supply the same definitions you used when building -the final stage) or if you deviated from the -instructions for a straight build. - -If the above command does not install @file{libg2c.a} -as expected, try this: - -@example -make -k @dots{} install install-libf77 -@end example - -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 @code{CC} -where you see @samp{@dots{}} in the above command.) - -Note that using the @samp{-k} option tells @code{make} to -continue after some installation problems, like not having -@code{makeinfo} installed on your system. -It might not be necessary for your system. - -@emph{Note:} @code{g77} no longer installs -files not directly part of @code{g77}, -such as @file{/usr/bin/f77}, @file{/usr/lib/libf2c.a}, -and @file{/usr/include/f2c.h}, or their -@file{/usr/local} equivalents. - -@xref{Distributing Binaries}, for information on -how to accommodate systems with no existing non-@code{g77} -@code{f77} compiler and systems with @code{f2c} installed. - -@node Updating Documentation -@subsection Updating Your Info Directory -@cindex updating info directory -@cindex info, updating directory -@cindex directory, updating info -@pindex /usr/info/dir -@pindex g77.info -@cindex texinfo -@cindex documentation - -As part of installing @code{g77}, you should make sure users -of @code{info} can easily access this manual on-line. - -@code{g77} does this automatically by -invoking the @code{install-info} command -when you use @samp{make install} to install @code{g77}. - -If that fails, or if the @code{info} directory -it updates is not the one normally accessed by users, -consider invoking it yourself. -For example: - -@smallexample -install-info --info-dir=/usr/info /usr/info/g77.info -@end smallexample - -The above example assumes the @code{g77} documentation -already is installed in @file{/usr/info} -and that @file{/usr/info/dir} is the file -you wish to update. -Adjust the command accordingly, -if those assumptions are wrong. - -@node Missing tools? -@subsection Missing tools? -@cindex command missing -@cindex command not found -@cindex file not found -@cindex not found - -A build of @code{gcc} might fail due to one or more tools -being called upon by @code{make} -(during the build or install process), -when those tools are not installed on your system. - -This situation can result from any of the following actions -(performed by you or someone else): - -@itemize @bullet -@item -Changing the source code or documentation yourself -(as a developer or technical writer). - -@item -Applying a patch that changes the source code or documentation -(including, sometimes, the official patches distributed by -the FSF). - -@item -Deleting the files that are created by the (missing) tools. - -The @samp{make maintainer-clean} command is supposed -to delete these files, so invoking this command without -having all the appropriate tools installed is not recommended. - -@item -Creating the source directory using a method that -does not preserve the date-time-modified information -in the original distribution. - -For example, the UNIX @samp{cp -r} command copies a -directory tree without preserving the date-time-modified -information. -Use @samp{cp -pr} instead. -@end itemize - -The reason these activities cause @code{make} to try and -invoke tools that it probably wouldn't when building -from a perfectly ``clean'' source directory containing -@code{gcc} and @code{g77} is that some files in the -source directory (and the corresponding distribution) -aren't really source files, but @emph{derived} files -that are produced by running tools with the corresponding -source files as input. -These derived files @dfn{depend}, in @code{make} terminology, -on the corresponding source files. - -@code{make} determines that a file that depends on another -needs to be updated if the date-time-modified information for -the source file shows that it is newer than the corresponding -information for the derived file. - -If it makes that determination, @code{make} runs the appropriate -commands (specified in the ``Makefile'') to update the -derived file, and this process typically calls upon one or -more installed tools to do the work. - -The ``safest'' approach to dealing with this situation -is to recreate the @code{gcc} and @code{g77} source -directories from complete @code{gcc} and @code{g77} distributions -known to be provided by the FSF. - -Another fairly ``safe'' approach is to simply install -the tools you need to complete the build process. -This is especially appropriate if you've changed the -source code or applied a patch to do so. - -However, if you're certain that the problem is limited -entirely to incorrect date-time-modified information, -that there are no discrepancies between the contents of -source files and files derived from them in the source -directory, you can often update the date-time-modified -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 @code{touch} -command. - -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. -If you cannot figure -out for yourself how to handle such a situation, try an -older version of @code{g77} until you find someone who can -(or until you obtain and install the relevant tools). - -@menu -* autoconf: Missing autoconf?. -* bison: Missing bison?. -* gperf: Missing gperf?. -* makeinfo: Missing makeinfo?. -@end menu - -@node Missing autoconf? -@subsubsection Missing @code{autoconf}? -@cindex @code{autoconf} -@cindex missing @code{autoconf} - -If you cannot install @code{autoconf}, make sure you have started -with a @emph{fresh} distribution of @code{gcc} and @code{g77}, -do @emph{not} do @samp{make maintainer-clean}, and, to ensure that -@code{autoconf} is not invoked by @code{make} during the build, -type these commands: - -@example -sh# @kbd{cd @value{path-libf2c}} -sh# @kbd{touch configure libU77/configure} -sh# @kbd{cd ../../..} -sh# -@end example - -@node Missing bison? -@subsubsection Missing @code{bison}? -@cindex @code{bison} -@cindex missing @code{bison} - -If you cannot install @code{bison}, make sure you have started -with a @emph{fresh} distribution of @code{gcc}, do @emph{not} -do @samp{make maintainer-clean}, and, to ensure that -@code{bison} is not invoked by @code{make} during the build, -type these commands: - -@example -sh# @kbd{cd gcc} -sh# @kbd{touch bi-parser.c bi-parser.h c-parse.c c-parse.h} -sh# @kbd{touch cp/parse.c cp/parse.h objc-parse.c} -sh# @kbd{cd ..} -sh# -@end example - -@node Missing gperf? -@subsubsection Missing @code{gperf}? -@cindex @code{gperf} -@cindex missing @code{gperf} - -If you cannot install @code{gperf}, make sure you have started -with a @emph{fresh} distribution of @code{gcc}, do @emph{not} -do @samp{make maintainer-clean}, and, to ensure that -@code{gperf} is not invoked by @code{make} during the build, -type these commands: - -@example -sh# @kbd{cd gcc} -sh# @kbd{touch c-gperf.h} -sh# @kbd{cd ..} -sh# -@end example - -@node Missing makeinfo? -@subsubsection Missing @code{makeinfo}? -@cindex @code{makeinfo} -@cindex missing @code{makeinfo} -@cindex @code{libg2c.a} not found -@cindex missing @code{libg2c.a} - -If @code{makeinfo} is needed but unavailable -when installing (via @code{make install}), -some files, like @file{libg2c.a}, -might not be installed, -because once @code{make} determines that it cannot -invoke @code{makeinfo}, it cancels any further processing. - -If you cannot install @code{makeinfo}, an easy work-around is to -specify @samp{MAKEINFO=true} on the @code{make} command line, -or to specify the @samp{-k} option (@kbd{make -k install}). - -Another approach is to force the relevant files to be up-to-date -by typing these commands and then re-trying the installation step: - -@example -sh# @kbd{cd gcc} -sh# @kbd{touch f/g77.info f/BUGS f/INSTALL f/NEWS} -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 +this information is superseded 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). - -Then, consider your target audience and decide where @code{g77} should -be installed. - -For systems like GNU/Linux that have no native Fortran compiler (or -where @code{g77} could be considered the native compiler for Fortran and -@code{gcc} for C, etc.), you should definitely configure -@code{g77} for installation -in @file{/usr/bin} instead of @file{/usr/local/bin}. -Specify the -@samp{--prefix=/usr} option when running @file{./configure}. - -You might also want to set up the distribution -so the @file{f77} command is a link to @file{g77}, -although a script that accepts ``classic'' UNIX @code{f77} -options and translates the command-line to the -appropriate @code{g77} command line would be more appropriate. -If you do this, @emph{please} also provide a ``man page'' in -@file{man/man1/f77.1} describing the command. -(A link to @file{man/man1/g77.1} is appropriate -if @file{bin/f77} is a link to @file{bin/g77}.) - -For a system that might already have @code{f2c} installed, -consider whether inter-operation with @code{g77} will be -important to users of @code{f2c} on that system. -If you want to improve the likelihood -that users will be able to use both @code{f2c} and @code{g77} -to compile code for a single program -without encountering link-time or run-time incompatibilities, -make sure that, -whenever they intend to combine @code{f2c}-produced code -with @code{g77}-produced code in an executable, they: - -@itemize @bullet -@item -Use the @file{lib/gcc-lib/@dots{}/include/g2c.h} file -generated by the @code{g77} build -in place of the @file{f2c.h} file -that normally comes with @code{f2c} -(or versions of @code{g77} prior to 0.5.23) -when compiling @emph{all} of the @code{f2c}-produced C code - -@item -Link to the @code{lib/gcc-lib/@dots{}/libg2c.a} library -built by the @code{g77} build -instead of the @file{libf2c.a} library -that normally comes with @code{f2c} -(or versions of @code{g77} prior to 0.5.23) -@end itemize - -How you choose to effect the above depends on whether -the existing installation of @code{f2c} must be -maintained. - -In any case, it is important to try and ensure that -the installation keeps working properly even after -subsequent re-installation of @code{f2c}, -which probably involves overwriting -@file{/usr/local/lib/libf2c.a} and -@file{/usr/local/include/f2c.h}, -or similar. - -At least, copying @file{libg2c.a} and @file{g2c.h} into -the appropriate ``public'' directories -allows users to more easily select the version of -@code{libf2c} they wish to use for a particular -build. -The names are changed by @code{g77} to make this -coexistence easier to maintain; -even if @code{f2c} is installed later, -the @code{g77} files normally installed -by its installation process aren't disturbed. -Use of symbolic links from one set of files to -another might result in problems after a subsequent -reinstallation of either @code{f2c} or @code{g77}, -so be sure to alert users of your distribution -accordingly. - -(Make sure you clearly document, in the description of -your distribution, how installation of your distribution will -affect existing installations of @code{gcc}, @code{f2c}, -@code{f77}, @file{libf2c.a}, and so on. -Similarly, you should clearly document any requirements -you assume will be met by users of your distribution.) - -For other systems with native @code{f77} (and @code{cc}) compilers, -configure @code{g77} as you (or most of your audience) would -configure @code{gcc} for their installations. -Typically this is for installation in @file{/usr/local}, -and would not include a new version of @file{/usr/bin/f77} -or @file{/usr/local/bin/f77}, -so users could still use the native @code{f77}. - -In any case, for @code{g77} to work properly, you @strong{must} ensure -that the binaries you distribute include: - -@table @file -@item bin/g77 -This is the command most users use to compile Fortran. - -@item bin/gcc -This is the command some users use to compile Fortran, -typically when compiling programs written in other languages -at the same time. -The @file{bin/gcc} executable file must have been built -from a @code{gcc} source tree into which a @code{g77} source -tree was merged and configured, or it will not know how -to compile Fortran programs. - -@item info/g77.info* -This is the documentation for @code{g77}. -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{@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 -report bugs to you first. - -Also, whether you distribute binaries or install @code{g77} -on your own system, it might be helpful for everyone to -add a line listing this manual by name and topic to the -top-level @code{info} node in @file{/usr/info/dir}. -That way, users can find @code{g77} documentation more -easily. -@xref{Updating Documentation,,Updating Your Info Directory}. - -@item man/man1/g77.1 -This is the short man page for @code{g77}. -It is not always kept up-to-date, -but you might as well include it -for people who really like ``man'' pages. - -@cindex gcc-lib directory -@cindex directories, gcc-lib -@item lib/gcc-lib -This is the directory containing the ``private'' files -installed by and for @code{gcc}, @code{g77}, @code{g++}, -and other GNU compilers. - -@item lib/gcc-lib/@dots{}/f771 -This is the actual Fortran compiler. - -@item lib/gcc-lib/@dots{}/libg2c.a -This is the run-time library for @code{g77}-compiled programs. -@end table - -Whether you want to include the slightly updated (and possibly -improved) versions of @file{cc1}, @file{cc1plus}, and whatever other -binaries get rebuilt with the changes the GNU Fortran distribution -makes to the GNU back end, is up to you. -These changes are highly unlikely to break any compilers, -because they involve doing things like adding to the -list of acceptable compiler options -(so, for example, @file{cc1plus} accepts, and ignores, -options that only @file{f771} actually processes). - -Please assure users that unless -they have a specific need for their existing, -older versions of @file{gcc} command, -they are unlikely to experience any problems by overwriting -it with your version---though they could certainly protect -themselves by making backup copies first! - -Otherwise, users might try and install your binaries -in a ``safe'' place, find they cannot compile Fortran -programs with your distribution (because, perhaps, they're -invoking their old version of the @file{gcc} command, -which does not recognize Fortran programs), and assume -that your binaries (or, more generally, GNU Fortran -distributions in general) are broken, at least for their -system. - -Finally, @strong{please} ask for bug reports to go to you first, at least -until you're sure your distribution is widely used and has been -well tested. -This especially goes for those of you making any -changes to the @code{g77} sources to port @code{g77}, e.g. to OS/2. -@email{fortran@@gnu.org} has received a fair number of bug -reports that turned out to be problems with other peoples' ports -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 diff --git a/gcc/f/lang-options.h b/gcc/f/lang-options.h index 7607c7b..c085aea 100644 --- a/gcc/f/lang-options.h +++ b/gcc/f/lang-options.h @@ -1,5 +1,5 @@ /* lang-options.h file for Fortran - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Contributed by James Craig Burley. This file is part of GNU Fortran. @@ -29,141 +29,135 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA DEFINE_LANG_NAME ("Fortran") -/* Use of FTNOPT makes tracking changes between FSF-g77 and egcs-g77 - easier, since FSF-gcc doesn't support doc strings. */ -#define FTNOPT(opt,doc) { opt, doc }, - -FTNOPT( "-fversion", "Print g77-specific compiler version info, run internal tests" ) -FTNOPT( "-fnull-version", "" ) + { "-fversion", "Print g77-specific compiler version info, run internal tests" }, + { "-fnull-version", "" }, /*"-fident",*/ /*"-fno-ident",*/ -FTNOPT( "-ff66", "Program is written in typical FORTRAN 66 dialect" ) -FTNOPT( "-fno-f66", "" ) -FTNOPT( "-ff77", "Program is written in typical Unix f77 dialect" ) -FTNOPT( "-fno-f77", "Program does not use Unix-f77 dialectal features" ) -FTNOPT( "-ff90", "Program is written in Fortran-90-ish dialect" ) -FTNOPT( "-fno-f90", "" ) -FTNOPT( "-fautomatic", "" ) -FTNOPT( "-fno-automatic", "Treat local vars and COMMON blocks as if they were named in SAVE statements" ) -FTNOPT( "-fdollar-ok", "Allow $ in symbol names" ) -FTNOPT( "-fno-dollar-ok", "" ) -FTNOPT( "-ff2c", "" ) -FTNOPT( "-fno-f2c", "f2c-compatible code need not be generated" ) -FTNOPT( "-ff2c-library", "" ) -FTNOPT( "-fno-f2c-library", "Unsupported; do not generate libf2c-calling code" ) -FTNOPT( "-fflatten-arrays", "Unsupported; affects code-generation of arrays" ) -FTNOPT( "-fno-flatten-arrays", "" ) -FTNOPT( "-ffree-form", "Program is written in Fortran-90-ish free form" ) -FTNOPT( "-fno-free-form", "" ) -FTNOPT( "-ffixed-form", "" ) -FTNOPT( "-fno-fixed-form", "" ) -FTNOPT( "-fpedantic", "Warn about use of (only a few for now) Fortran extensions" ) -FTNOPT( "-fno-pedantic", "" ) -FTNOPT( "-fvxt", "Program is written in VXT (Digital-like) FORTRAN" ) -FTNOPT( "-fno-vxt", "" ) -FTNOPT( "-fno-ugly", "Disallow all ugly features" ) -FTNOPT( "-fugly-args", "" ) -FTNOPT( "-fno-ugly-args", "Hollerith and typeless constants not passed as arguments" ) -FTNOPT( "-fugly-assign", "Allow ordinary copying of ASSIGN'ed vars" ) -FTNOPT( "-fno-ugly-assign", "" ) -FTNOPT( "-fugly-assumed", "Dummy array dimensioned to (1) is assumed-size" ) -FTNOPT( "-fno-ugly-assumed", "" ) -FTNOPT( "-fugly-comma", "Trailing comma in procedure call denotes null argument" ) -FTNOPT( "-fno-ugly-comma", "" ) -FTNOPT( "-fugly-complex", "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z" ) -FTNOPT( "-fno-ugly-complex", "" ) -FTNOPT( "-fugly-init", "" ) -FTNOPT( "-fno-ugly-init", "Initialization via DATA and PARAMETER is type-compatible" ) -FTNOPT( "-fugly-logint", "Allow INTEGER and LOGICAL interchangeability" ) -FTNOPT( "-fno-ugly-logint", "" ) -FTNOPT( "-fxyzzy", "Print internal debugging-related info" ) -FTNOPT( "-fno-xyzzy", "" ) -FTNOPT( "-finit-local-zero", "Initialize local vars and arrays to zero" ) -FTNOPT( "-fno-init-local-zero", "" ) -FTNOPT( "-fbackslash", "" ) -FTNOPT( "-fno-backslash", "Backslashes in character/hollerith constants not special (C-style)" ) -FTNOPT( "-femulate-complex", "Have front end emulate COMPLEX arithmetic to avoid bugs" ) -FTNOPT( "-fno-emulate-complex", "" ) -FTNOPT( "-funderscoring", "" ) -FTNOPT( "-fno-underscoring", "Disable the appending of underscores to externals" ) -FTNOPT( "-fsecond-underscore", "" ) -FTNOPT( "-fno-second-underscore", "Never append a second underscore to externals" ) -FTNOPT( "-fintrin-case-initcap", "Intrinsics spelled as e.g. SqRt" ) -FTNOPT( "-fintrin-case-upper", "Intrinsics in uppercase" ) -FTNOPT( "-fintrin-case-lower", "" ) -FTNOPT( "-fintrin-case-any", "Intrinsics letters in arbitrary cases" ) -FTNOPT( "-fmatch-case-initcap", "Language keywords spelled as e.g. IOStat" ) -FTNOPT( "-fmatch-case-upper", "Language keywords in uppercase" ) -FTNOPT( "-fmatch-case-lower", "" ) -FTNOPT( "-fmatch-case-any", "Language keyword letters in arbitrary cases" ) -FTNOPT( "-fsource-case-upper", "Internally convert most source to uppercase" ) -FTNOPT( "-fsource-case-lower", "" ) -FTNOPT( "-fsource-case-preserve", "Internally preserve source case" ) -FTNOPT( "-fsymbol-case-initcap", "Symbol names spelled in mixed case" ) -FTNOPT( "-fsymbol-case-upper", "Symbol names in uppercase" ) -FTNOPT( "-fsymbol-case-lower", "Symbol names in lowercase" ) -FTNOPT( "-fsymbol-case-any", "" ) -FTNOPT( "-fcase-strict-upper", "Program written in uppercase" ) -FTNOPT( "-fcase-strict-lower", "Program written in lowercase" ) -FTNOPT( "-fcase-initcap", "Program written in strict mixed-case" ) -FTNOPT( "-fcase-upper", "Compile as if program written in uppercase" ) -FTNOPT( "-fcase-lower", "Compile as if program written in lowercase" ) -FTNOPT( "-fcase-preserve", "Preserve all spelling (case) used in program" ) -FTNOPT( "-fbadu77-intrinsics-delete", "Delete libU77 intrinsics with bad interfaces" ) -FTNOPT( "-fbadu77-intrinsics-disable", "Disable libU77 intrinsics with bad interfaces" ) -FTNOPT( "-fbadu77-intrinsics-enable", "" ) -FTNOPT( "-fbadu77-intrinsics-hide", "Hide libU77 intrinsics with bad interfaces" ) -FTNOPT( "-ff2c-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics f2c supports" ) -FTNOPT( "-ff2c-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics f2c supports" ) -FTNOPT( "-ff2c-intrinsics-enable", "" ) -FTNOPT( "-ff2c-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics f2c supports" ) -FTNOPT( "-ff90-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics F90 supports" ) -FTNOPT( "-ff90-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics F90 supports" ) -FTNOPT( "-ff90-intrinsics-enable", "" ) -FTNOPT( "-ff90-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics F90 supports" ) -FTNOPT( "-fgnu-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics g77 supports" ) -FTNOPT( "-fgnu-intrinsics-disable", "Disable non-FORTRAN 77 intrinsics F90 supports" ) -FTNOPT( "-fgnu-intrinsics-enable", "" ) -FTNOPT( "-fgnu-intrinsics-hide", "Hide non-FORTRAN 77 intrinsics F90 supports" ) -FTNOPT( "-fmil-intrinsics-delete", "Delete MIL-STD 1753 intrinsics" ) -FTNOPT( "-fmil-intrinsics-disable", "Disable MIL-STD 1753 intrinsics" ) -FTNOPT( "-fmil-intrinsics-enable", "" ) -FTNOPT( "-fmil-intrinsics-hide", "Hide MIL-STD 1753 intrinsics" ) -FTNOPT( "-funix-intrinsics-delete", "Delete libU77 intrinsics" ) -FTNOPT( "-funix-intrinsics-disable", "Disable libU77 intrinsics" ) -FTNOPT( "-funix-intrinsics-enable", "" ) -FTNOPT( "-funix-intrinsics-hide", "Hide libU77 intrinsics" ) -FTNOPT( "-fvxt-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports" ) -FTNOPT( "-fvxt-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports" ) -FTNOPT( "-fvxt-intrinsics-enable", "" ) -FTNOPT( "-fvxt-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports" ) -FTNOPT( "-fzeros", "Treat initial values of 0 like non-zero values" ) -FTNOPT( "-fno-zeros", "" ) -FTNOPT( "-fdebug-kludge", "Emit special debugging information for COMMON and EQUIVALENCE (disabled)" ) -FTNOPT( "-fno-debug-kludge", "" ) -FTNOPT( "-fonetrip", "Take at least one trip through each iterative DO loop" ) -FTNOPT( "-fno-onetrip", "" ) -FTNOPT( "-fsilent", "" ) -FTNOPT( "-fno-silent", "Print names of program units as they are compiled" ) -FTNOPT( "-fglobals", "" ) -FTNOPT( "-fno-globals", "Disable fatal diagnostics about inter-procedural problems" ) -FTNOPT( "-ftypeless-boz", "Make prefix-radix non-decimal constants be typeless" ) -FTNOPT( "-fno-typeless-boz", "" ) -FTNOPT( "-fbounds-check", "Generate code to check subscript and substring bounds" ) -FTNOPT( "-fno-bounds-check", "" ) -FTNOPT( "-ffortran-bounds-check", "Fortran-specific form of -fbounds-check") -FTNOPT( "-fno-fortran-bounds-check", "" ) -FTNOPT( "-Wglobals", "" ) -FTNOPT( "-Wno-globals", "Disable warnings about inter-procedural problems" ) + { "-ff66", "Program is written in typical FORTRAN 66 dialect" }, + { "-fno-f66", "" }, + { "-ff77", "Program is written in typical Unix f77 dialect" }, + { "-fno-f77", "Program does not use Unix-f77 dialectal features" }, + { "-ff90", "Program is written in Fortran-90-ish dialect" }, + { "-fno-f90", "" }, + { "-fautomatic", "" }, + { "-fno-automatic", "Treat local vars and COMMON blocks as if they were named in SAVE statements" }, + { "-fdollar-ok", "Allow $ in symbol names" }, + { "-fno-dollar-ok", "" }, + { "-ff2c", "" }, + { "-fno-f2c", "f2c-compatible code need not be generated" }, + { "-ff2c-library", "" }, + { "-fno-f2c-library", "Unsupported; do not generate libf2c-calling code" }, + { "-fflatten-arrays", "Unsupported; affects code-generation of arrays" }, + { "-fno-flatten-arrays", "" }, + { "-ffree-form", "Program is written in Fortran-90-ish free form" }, + { "-fno-free-form", "" }, + { "-ffixed-form", "" }, + { "-fno-fixed-form", "" }, + { "-fpedantic", "Warn about use of (only a few for now) Fortran extensions" }, + { "-fno-pedantic", "" }, + { "-fvxt", "Program is written in VXT (Digital-like) FORTRAN" }, + { "-fno-vxt", "" }, + { "-fno-ugly", "Disallow all ugly features" }, + { "-fugly-args", "" }, + { "-fno-ugly-args", "Hollerith and typeless constants not passed as arguments" }, + { "-fugly-assign", "Allow ordinary copying of ASSIGN'ed vars" }, + { "-fno-ugly-assign", "" }, + { "-fugly-assumed", "Dummy array dimensioned to (1) is assumed-size" }, + { "-fno-ugly-assumed", "" }, + { "-fugly-comma", "Trailing comma in procedure call denotes null argument" }, + { "-fno-ugly-comma", "" }, + { "-fugly-complex", "Allow REAL(Z) and AIMAG(Z) given DOUBLE COMPLEX Z" }, + { "-fno-ugly-complex", "" }, + { "-fugly-init", "" }, + { "-fno-ugly-init", "Initialization via DATA and PARAMETER is type-compatible" }, + { "-fugly-logint", "Allow INTEGER and LOGICAL interchangeability" }, + { "-fno-ugly-logint", "" }, + { "-fxyzzy", "Print internal debugging-related info" }, + { "-fno-xyzzy", "" }, + { "-finit-local-zero", "Initialize local vars and arrays to zero" }, + { "-fno-init-local-zero", "" }, + { "-fbackslash", "" }, + { "-fno-backslash", "Backslashes in character/hollerith constants not special (C-style)" }, + { "-femulate-complex", "Have front end emulate COMPLEX arithmetic to avoid bugs" }, + { "-fno-emulate-complex", "" }, + { "-funderscoring", "" }, + { "-fno-underscoring", "Disable the appending of underscores to externals" }, + { "-fsecond-underscore", "" }, + { "-fno-second-underscore", "Never append a second underscore to externals" }, + { "-fintrin-case-initcap", "Intrinsics spelled as e.g. SqRt" }, + { "-fintrin-case-upper", "Intrinsics in uppercase" }, + { "-fintrin-case-lower", "" }, + { "-fintrin-case-any", "Intrinsics letters in arbitrary cases" }, + { "-fmatch-case-initcap", "Language keywords spelled as e.g. IOStat" }, + { "-fmatch-case-upper", "Language keywords in uppercase" }, + { "-fmatch-case-lower", "" }, + { "-fmatch-case-any", "Language keyword letters in arbitrary cases" }, + { "-fsource-case-upper", "Internally convert most source to uppercase" }, + { "-fsource-case-lower", "" }, + { "-fsource-case-preserve", "Internally preserve source case" }, + { "-fsymbol-case-initcap", "Symbol names spelled in mixed case" }, + { "-fsymbol-case-upper", "Symbol names in uppercase" }, + { "-fsymbol-case-lower", "Symbol names in lowercase" }, + { "-fsymbol-case-any", "" }, + { "-fcase-strict-upper", "Program written in uppercase" }, + { "-fcase-strict-lower", "Program written in lowercase" }, + { "-fcase-initcap", "Program written in strict mixed-case" }, + { "-fcase-upper", "Compile as if program written in uppercase" }, + { "-fcase-lower", "Compile as if program written in lowercase" }, + { "-fcase-preserve", "Preserve all spelling (case) used in program" }, + { "-fbadu77-intrinsics-delete", "Delete libU77 intrinsics with bad interfaces" }, + { "-fbadu77-intrinsics-disable", "Disable libU77 intrinsics with bad interfaces" }, + { "-fbadu77-intrinsics-enable", "" }, + { "-fbadu77-intrinsics-hide", "Hide libU77 intrinsics with bad interfaces" }, + { "-ff2c-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics f2c supports" }, + { "-ff2c-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics f2c supports" }, + { "-ff2c-intrinsics-enable", "" }, + { "-ff2c-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics f2c supports" }, + { "-ff90-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics F90 supports" }, + { "-ff90-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics F90 supports" }, + { "-ff90-intrinsics-enable", "" }, + { "-ff90-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics F90 supports" }, + { "-fgnu-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics g77 supports" }, + { "-fgnu-intrinsics-disable", "Disable non-FORTRAN 77 intrinsics F90 supports" }, + { "-fgnu-intrinsics-enable", "" }, + { "-fgnu-intrinsics-hide", "Hide non-FORTRAN 77 intrinsics F90 supports" }, + { "-fmil-intrinsics-delete", "Delete MIL-STD 1753 intrinsics" }, + { "-fmil-intrinsics-disable", "Disable MIL-STD 1753 intrinsics" }, + { "-fmil-intrinsics-enable", "" }, + { "-fmil-intrinsics-hide", "Hide MIL-STD 1753 intrinsics" }, + { "-funix-intrinsics-delete", "Delete libU77 intrinsics" }, + { "-funix-intrinsics-disable", "Disable libU77 intrinsics" }, + { "-funix-intrinsics-enable", "" }, + { "-funix-intrinsics-hide", "Hide libU77 intrinsics" }, + { "-fvxt-intrinsics-delete", "Delete non-FORTRAN-77 intrinsics VXT FORTRAN supports" }, + { "-fvxt-intrinsics-disable", "Disable non-FORTRAN-77 intrinsics VXT FORTRAN supports" }, + { "-fvxt-intrinsics-enable", "" }, + { "-fvxt-intrinsics-hide", "Hide non-FORTRAN-77 intrinsics VXT FORTRAN supports" }, + { "-fzeros", "Treat initial values of 0 like non-zero values" }, + { "-fno-zeros", "" }, + { "-fdebug-kludge", "Emit special debugging information for COMMON and EQUIVALENCE (disabled)" }, + { "-fno-debug-kludge", "" }, + { "-fonetrip", "Take at least one trip through each iterative DO loop" }, + { "-fno-onetrip", "" }, + { "-fsilent", "" }, + { "-fno-silent", "Print names of program units as they are compiled" }, + { "-fglobals", "" }, + { "-fno-globals", "Disable fatal diagnostics about inter-procedural problems" }, + { "-ftypeless-boz", "Make prefix-radix non-decimal constants be typeless" }, + { "-fno-typeless-boz", "" }, + { "-fbounds-check", "Generate code to check subscript and substring bounds" }, + { "-fno-bounds-check", "" }, +{ "-ffortran-bounds-check", "Fortran-specific form of -fbounds-check" }, + { "-fno-fortran-bounds-check", "" }, + { "-Wglobals", "" }, + { "-Wno-globals", "Disable warnings about inter-procedural problems" }, /*"-Wimplicit",*/ /*"-Wno-implicit",*/ -FTNOPT( "-Wsurprising", "Warn about constructs with surprising meanings" ) -FTNOPT( "-Wno-surprising", "" ) + { "-Wsurprising", "Warn about constructs with surprising meanings" }, + { "-Wno-surprising", "" }, /*"-Wall",*/ /* Prefix options. */ -FTNOPT( "-I", "Add a directory for INCLUDE searching" ) -FTNOPT( "-ffixed-line-length-", "Set the maximum line length" ) - -#undef FTNOPT + { "-I", "Add a directory for INCLUDE searching" }, + { "-ffixed-line-length-", "Set the maximum line length" }, #endif diff --git a/gcc/f/root.texi b/gcc/f/root.texi index 90a7d5c..e38d0b3 100644 --- a/gcc/f/root.texi +++ b/gcc/f/root.texi @@ -6,29 +6,13 @@ @set version-g77 0.5.26 @set version-gcc 2.97 -@c GCC-G77 indicates this is the GCC (2.95 or later) version of g77. -@set GCC-G77 - -@c EGCS-G77 indicates this is the EGCS (1.0 or 1.1) version of g77. -@clear EGCS-G77 - -@c FSF-G77 indicates this is the FSF (0.5.23 or earlier) version of g77. -@clear FSF-G77 - @set email-general gcc@@gcc.gnu.org @set email-bugs gcc-bugs@@gcc.gnu.org or bug-gcc@@gnu.org @set path-g77 gcc/gcc/f @set path-libf2c gcc/libf2c -@ifset GCC-G77 @set which-g77 GCC-@value{version-gcc} @set which-gcc GCC -@end ifset - -@ifset FSF-G77 -@set which-g77 FSF-@value{version-g77} -@set which-gcc GCC -@end ifset @set email-burley craig@@jcb-sc.com @set www-burley http://world.std.com/%7Eburley |