From d606ce281efee2b91deaf28fd3ed78330297df79 Mon Sep 17 00:00:00 2001 From: Dave Love Date: Tue, 11 Aug 1998 10:13:57 +0000 Subject: [PATCH] README.g77: Update from Craig. Tue Aug 11 17:45:39 1998 Dave Love * README.g77: Update from Craig. From-SVN: r21671 --- gcc/ChangeLog | 4 + gcc/README.g77 | 277 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 186 insertions(+), 95 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b4ce3a24677c..65af72a541ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Tue Aug 11 18:12:53 1998 Dave Love + + * README.g77: Update from Craig. + Tue Aug 11 04:46:01 1998 David S. Miller * config/sparc/sparc.c (sparc_emit_set_const32): INTVAL is of diff --git a/gcc/README.g77 b/gcc/README.g77 index b2c885bd8b97..f22f1799c35e 100644 --- a/gcc/README.g77 +++ b/gcc/README.g77 @@ -1,134 +1,221 @@ -1998-03-08 +1998-08-11 -This directory contains the version 0.5.22 release of the GNU Fortran -compiler. The GNU Fortran compiler is free software. See the file -COPYING.g77 for copying permission. +This directory contains the egcs variant of version 0.5.24 of the +GNU Fortran compiler (g77). The GNU Fortran compiler is free software. +See the file COPYING.g77 for copying permission. -* IMPORTANT: Things you *must* do are marked with a * at the beginning of - the line in this file!!! +Currently, two variants of g77 exist. One is the Free Software Foundation +(FSF) variant. The other is the egcs variant. As of egcs version 1.1, +these variants are kept fairly similar in most respects. Pertinent +differences, such as the layout of the source code, are specified below. -* DO NOT send any email (reporting bugs, asking questions, etc.) to - without *first* reading the g77 documentation, - using `info', Info mode in GNU Emacs, or a text viewer such as `more'. - The g77 documentation is in the files named `g77.info', `g77.info-1', - `g77.info-2', and so on in g77 `f' directory. If these files are - not present or you can't find them, contact the person or organization - that put together the g77 distribution you are using (probably not the - FSF), or ask your system administrator for help. +Below, `[FSF]' denotes information applicable to only the FSF variant of +g77, while `[egcs]' denotes egcs-only information. -This README is for GNU Fortran, and describes the files in the f/ -directory. The f/ directory is intended to be a subdirectory of a -gcc source tree. These directories are referred to below as gcc/, -which is the top-level directory containing the gcc back end, the -gcc C front end, and other non-Fortran files, and gcc/f/, which -contains all of the Fortran files. -* To build GNU Fortran, you must have a source distribution of gcc - version 2.7.2.3. Do not attempt to use any other version - of gcc, because this version of g77 is designed to work only with - gcc version 2.7.2.3. +* IMPORTANT: Things you *must* do (or avoid) are marked with a * at the + beginning of the line in this file!!! -* Note that you must have source copies of these gcc distributions!! - You cannot build g77 just using binaries of gcc. Also, unless you - are an expert, avoid using any distribution of gcc not identical to - the one distributed by the FSF. -If you have just unpacked the g77 distribution, before proceeding, +The email address to which bugs are to be reported is either +[FSF] or [egcs] . + +* *DO NOT* send any email (reporting bugs, asking questions, etc.) to + either of these addresses without *first* reading the g77 documentation. + Use `info', Info mode in GNU Emacs, or a text viewer such as `more' to + do this. + + The g77 documentation is in the source files named `g77.info', + `g77.info-1', `g77.info-2', and so on in the `f' subdirectory. If these + files are not present or you can't find them, contact the person or + organization that put together the g77 distribution you are using (probably + not the FSF or egcs), or ask your system administrator for help. + + +This README applies to only the g77-specific portions of the source-code +tree that contains it. These portions include: + + - The README.g77 and [FSF] COPYING.g77 files, in this directory, "this + directory" being [FSF] the top-level directory containing a g77 + distribution or [egcs] the gcc/ subdirectory of an egcs distribution. + + - The g77 front end, in the f/ subdirectory of this directory. + + - The libg2c library, in [FSF] the f/runtime/ subdirectory of this + directory or [egcs] the libf2c/ directory under the top-level + directory of the egcs distribution. + + +* To build g77, you must have a source distribution of [FSF] gcc + version 2.8 or [egcs] egcs version 1.1. Do not attempt to use + any other version of gcc or egcs, because this version of g77 is + designed to work with only those versions. + + Note that you must have *source* copies of the gcc or egcs distribution! + You cannot build g77 just using binaries of gcc or egcs. Also, unless + you are an expert, avoid using any distribution of gcc or egcs not + identical to the ones distributed by the FSF and Cygnus Support, + respectively. The primary FSF distribution site is: + + + + The primary egcs distribution site is: + + + + Both of these sites have approved mirror sites from which valid + distributions also may be obtained. + +* Do not attempt to combine the egcs version of g77 with the FSF + gcc distribution, or the FSF version of g77 with the egcs gcc + distribution. Although the differences are minor, they might + be sufficient to prevent g77 from building properly, or from + working properly if the build appears to succeed. + +[FSF] g77 is distributed as g77-/f/ so that unpacking the g77 +distribution is done in the normal GNU way, resulting in a directory having +the version number in the name. However, to build g77, the g77 distribution +must be merged with an appropriate gcc distribution, normally in a gcc +source directory, before configuring, building, and installing g77. + +[FSF] If you have just unpacked the g77 distribution, before proceeding, you must merge the contents of the g77 distribution with the appropriate -gcc distribution on your system before proceeding. +gcc distribution on your system. -* Read and follow the instructions in g77-0.5.22/f/INSTALL that +* [FSF] Read and follow the instructions in f/INSTALL that explain how to merge a g77 source directory into a gcc source directory. You can use Info to read the same installation instructions via: - info -f g77-0.5.22/f/g77.info -n Unpacking + info -f f/g77.info -n Unpacking -The resulting directory layout includes the following, where gcc/ might be -a link to, for example, gcc-2.7.2.3/: +[FSF] The resulting directory layout includes the following, where gcc/ +might be a link to, for example, gcc-2.8.1/: - gcc/ Non-Fortran files in gcc (not part of g77*.tar) + gcc/ Non-g77 files in gcc + gcc/COPYING.g77 A copy of the GPL, under which g77 is licensed gcc/README.g77 This file gcc/f/ GNU Fortran front end - gcc/f/gbe/ Patches required for gcc back end versions - gcc/f/runtime/ libf2c configuration and f2c.h file generation - gcc/f/runtime/libF77/ Non-I/O portion of libf2c - gcc/f/runtime/libI77/ I/O portion of libf2c - gcc/f/runtime/libU77/ Additional interfaces to libc for libf2c + gcc/f/runtime/ libg2c configuration and g2c.h file generation + gcc/f/runtime/libF77/ Non-I/O portion of libg2c + gcc/f/runtime/libI77/ I/O portion of libg2c + gcc/f/runtime/libU77/ Additional interfaces to libc for libg2c -gcc/f/ as a whole contains the program GNU Fortran (g77), plus a portion -of the separate program f2c, which is in gcc/f/runtime. NOTE: The libf2c -code is not part of the program g77, just distributed with it. - -This directory is named gcc/f/ because it, along with its contents, is -designed to be a subdirectory of a GNU CC (gcc) development directory. I.e. -when a gcc distribution is unpacked into a directory (named gcc/ for -example), it typically contains subdirectories like gcc/config/ and -gcc/cp/. The latter is the subdirectory for the GNU C++ (g++) program. - -Similarly, the g77 directory f/ is designed to be placed in gcc/ so that -it becomes the subdirectory gcc/f/. g77 is distributed as g77-someversion/f/ -so that unpacking the g77 distribution is done in the normal GNU way, -resulting in a directory having the version number in the name. However, -to build g77, the g77 distribution must be merged with an appropriate gcc -distribution, normally in a gcc directory, before configuring, building, -and installing g77. - -Applying g77 patches in the form of .diff files is done by typing -`patch -p1 -d gcc' (where gcc/f/ is the active version). That is, +[FSF] Applying g77 patches in the form of .diff files is done by typing +`patch -p1 -d gcc' (where gcc/ contains the f/ subdirectory). That is, g77 patches are distributed in the same form, and at the same directory level, as patches to the gcc distribution. (Note: make sure you're using GNU patch, version 2.5 or later! Other versions of patch have trouble with g77-related patches.) -gcc/f/ has text files that document the Fortran compiler, source +[egcs] The egcs version of g77 is distributed already merged with +the rest of egcs (such as the gcc back end). + +[egcs] The resulting directory layout includes the following, where egcs/ +might be a link to, for example, egcs-1.1/: + + egcs/gcc/ Non-g77 files in gcc + egcs/gcc/README.g77 This file + egcs/gcc/f/ GNU Fortran front end + egcs/libf2c/ libg2c configuration and g2c.h file generation + egcs/libf2c/libF77/ Non-I/O portion of libg2c + egcs/libf2c/libI77/ I/O portion of libg2c + egcs/libf2c/libU77/ Additional interfaces to libc for libg2c + +[egcs] Applying g77-specific patches to egcs is done the same way as +applying other egcs patches. + + +Below, `libf2c/' shall denote [FSF] gcc/f/runtime/ or [egcs] egcs/libf2c/, +while `f/' shall denote [FSF] the rest of gcc/f/ or [egcs] egcs/gcc/f/. + + +Components of note in g77 are described below. + +f/ as a whole contains the program GNU Fortran (g77), while libf2c/ +contains a portion of the separate program f2c. Note: The libf2c +code is not part of the program g77, just distributed with it. + +f/ contains text files that document the Fortran compiler, source files for the GNU Fortran Front End (FFE), and some other stuff. +The g77 compiler code is placed in f/ because it, along with its contents, +is designed to be a subdirectory of a GNU CC (gcc) source directory, gcc/, +which is structured so that language-specific front ends can be "dropped +in" as subdirectories. The C++ front end (g++), is an example of this -- +it resides in the cp/ subdirectory. Note that the C front end (also +referred to as gcc) is an exception to this, as its source files reside +in the gcc/ directory itself. -gcc/f/gbe/ has patch files for various versions of gcc, primarily -needed to patch the GNU compiler Back End (GBE) to fix and improve it -for use with g77. If a patch file exists for the version of gcc you -want to build along with g77, you MUST apply the patch before building -g77 with that version or g77 will not build or work properly.* +libf2c/ contains the run-time libraries for the f2c program, also used +by g77. These libraries normally referred to collectively as libf2c. +When built as part of g77, libf2c is installed under the name libg2c to avoid +conflict with any existing version of libf2c, and thus is often referred +to as libg2c when the g77 version is specifically being referred to. -* Read gcc/f/gbe/README for more information. +The netlib version of libf2c/ contains two distinct libraries, libF77 and +libI77, each in their own subdirectories. In g77, this distinction is not +made, beyond maintaining the subdirectory structure in the source-code tree. -gcc/f/runtime/ contains the run-time libraries for the f2c program, also used -by g77, and referred to as libf2c (though libf2c is really a combination of -two distinct libraries, libF77 and libI77 -- in g77, this distinction is -not made, and, further, Dave Love's implementation of libU77 is added -to the mix). This separate subdirectory is not part of the program g77, just -distributed with it. Some new files have been added to this subdirectory -and some minor changes made to the files contained therein, to fix some -bugs and facilitate automatic configuration, building, and installation of -libf2c for use by g77 users. See gcc/f/runtime/README for more information. +libf2c/ is not part of the program g77, just distributed with it. It +contains files not present in the official (netlib) version of libf2c, +and also contains some minor changes made from libf2c, to fix some bugs, +and to facilitate automatic configuration, building, and installation of +libf2c (as libg2c) for use by g77 users. -gcc/f/BUGS lists some important bugs known to be in g77. Or: +* See libf2c/README for more information, including licensing conditions + governing distribution of programs containing code from libg2c. - info -f gcc/f/g77.info -n "Actual Bugs" +libg2c, g77's version of libf2c, adds Dave Love's implementation of +libU77, in the libf2c/libU77/ directory. This library is distributed +under the GNU Library General Public License (LGPL) -- see the +file libf2c/libU77/COPYING.LIB for more information, as this license +governs distribution conditions for programs containing code from +this portion of the library. -gcc/f/ChangeLog lists recent changes to g77 internals. -gcc/f/INSTALL describes how to build and install GNU Fortran. Or: +Files of note in g77 are described below. - info -f gcc/f/g77.info -n Installation +f/BUGS lists some important bugs known to be in g77. Or: -gcc/f/NEWS contains the per-release changes (not just user-visible ones -seen in gcc/f/DOC) listed in the ~fortran/.plan file. Or: + info -f f/g77.info -n "Actual Bugs" - info -f gcc/f/g77.info -n News +f/ChangeLog lists recent changes to g77 internals. -* Read gcc/f/BUGS, gcc/f/INSTALL, and gcc/f/NEWS at the very least! - All users of g77 (not just installers) should read gcc/f/g77.info* +libf2c/ChangeLog lists recent changes to libg2c internals. + +[FSF] f/INSTALL describes how to build and install GNU Fortran. Or: + + info -f f/g77.info -n Installation + +f/NEWS contains the per-release changes. These include the user-visible +changes described under "Changes" in the g77 documentation, plus internal +changes of import. Or: + + info -f f/g77.info -n News + +* All users of g77 (not just installers) should read f/g77.info* as well, using the `more' command if neither the `info' command, nor GNU Emacs (with its Info mode), are available, or if they - aren't yet accustomed to using these tools. + aren't yet accustomed to using these tools. Read f/BUGS and f/NEWS + plus, if you are planning on building or installing the FSF version + of g77, f/INSTALL, at the very least! All of these files are + readable as "plain text" files. -If you want to get into the FFE code, which lives entirely in gcc/f/, here -are a few clues. The file g77.c is the stand-alone source file for the -`g77' command driver only -- this just invokes the `gcc' command, so it has -nothing to do with the rest of the code in g77. Most of the code -ends up in an executable named `f771', which does the actual compiling, -so it has the FFE merged with the gcc back end. +* Also see for up-to-date information + regarding g77 bug reports, known bugs, bug-fixes, and new versions. + + +The rest of this file is of note to only those who wish to +debug, modify, or test the FFE (in conjunction with the gcc back end). + +If you want to explore the FFE code, which lives entirely in f/, here +are a few clues. The file g77spec.c contains the g77-specific source code +for the `g77' command only -- this just forms a variant of the `gcc' +command, so, just as the `gcc' command itself does not contain +the C front end, the `g77' command does not contain the Fortran front +end (FFE). The FFE code ends up in an executable named `f771', which +does the actual compiling, so it contains the FFE plus the gcc back end +(the latter to do most of the optimization, and the code generation). The file parse.c is the source file for main() for a stand-alone FFE and yyparse() for f771. (Stand-alone building of the FFE doesn't work these days.) @@ -158,7 +245,7 @@ is being dynamically configured by ffecom_init_0); com.h and com.c, which interface to the target back end (currently only FFE stand-alone and the GBE); ste.c, which contains code for implementing recognized executable statements in the target back end (again currently either FFE or GBE); src.h and src.c, -which describe information on the format(s) of source files (like whether +which describe information on the format(s) of source files (such as whether they are never to be processed as case-insensitive with regard to Fortran keywords); and proj.c, which contains whatever code is needed to support the language defined by proj.h. @@ -173,4 +260,4 @@ the compiler is in the second pass, otherwise it is in the first. (This information might help you reduce a test case and/or work around a bug in g77 until a fix is available.) -Any questions or comments on these topics, email . +Any questions or comments on these topics? Read the g77 documentation!