home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / g77-0.5.15-src.tgz / tar.out / fsf / g77 / README.g77 < prev    next >
Text File  |  1996-09-28  |  9KB  |  166 lines

  1. 950519
  2.  
  3. This directory contains the version 0.5.15 release of the GNU Fortran
  4. compiler.  The GNU Fortran compiler is free software.  See the file
  5. COPYING.g77 for copying permission.
  6.  
  7. * IMPORTANT: Things you _must_ do are marked with a * at the beginning of
  8.   the line in this file!!!
  9.  
  10. This README is for GNU Fortran, and describes the files in the f/
  11. directory.  The f/ directory is intended to be a subdirectory of a
  12. gcc source tree.  These directories are referred to below as gcc/,
  13. which is the top-level directory containing the gcc back end, the
  14. gcc C front end, and other non-Fortran files, and gcc/f/, which
  15. contains all of the Fortran files.
  16.  
  17. * To build GNU Fortran, you must have a recent gcc distribution,
  18.   such as version 2.6.2 or 2.6.3.
  19.  
  20. If you have just unpacked the g77 distribution, before proceeding,
  21. you must merge the contents of the g77 distribution with the appropriate
  22. gcc distribution on your system before proceeding.  Using sample
  23. versions of 2.6.3 for gcc and 0.5.15 for g77, the process of unpacking
  24. and merging both distributions would be done as follows (where # is the
  25. shell prompt):
  26.  
  27.     # tar xf gcc-2.6.3.tar         # Creates ./gcc-2.6.3/
  28.     # tar xf g77-0.5.15.tar        # Creates ./g77-0.5.15/
  29. *   # mv g77-0.5.15/* gcc-2.6.3/   # Merges gcc and g77 into ./gcc-2.6.3/
  30.     # rmdir g77-0.5.15             # Remove empty ./g77-0.5.15/
  31.  
  32. Another approach is to do the following:
  33.  
  34.     # tar xf gcc-2.6.3.tar         # Creates ./gcc-2.6.3/
  35.     # ln -s gcc-2.6.3 g77-0.5.15   # Make g77-0.5.15 a link to gcc-2.6.3
  36.     # tar xf g77-0.5.15.tar        # Unpacks g77 into gcc-2.6.3
  37.  
  38. The latter approach leaves the symbolic link, which might help others
  39. keep track of where an installed version of g77 comes from.
  40.  
  41. (There are other ways to combine the gcc and g77 distributions, but
  42. the above are the only ones recommended.  Try others only at your
  43. own peril, and if you run into problems, please restart from scratch
  44. using one of the methods documented above.  Report a bug only if a
  45. problem occurs using one of the above methods.)
  46.  
  47. The resulting directory layout is as follows, where gcc/ might be,
  48. for example, gcc-0.5.15/:
  49.  
  50.     gcc/                    Non-Fortran files in gcc (not part of g77*.tar)
  51.     gcc/README.g77          This file
  52.     gcc/f/                  GNU Fortran front end
  53.     gcc/f/gbe/              Patches required for gcc back end versions
  54.     gcc/f/runtime/          libf2c configuration and f2c.h file generation
  55.     gcc/f/runtime/libF77/   Non-I/O portion of libf2c
  56.     gcc/f/runtime/libI77/   I/O portion of libf2c
  57.  
  58. gcc/f/ as a whole contains the program GNU Fortran (g77), plus a portion
  59. of the separate program f2c, which is in gcc/f/runtime.  NOTE: The f2c
  60. code is not part of the program g77, just distributed with it.
  61.  
  62. This directory is named gcc/f/ because it, along with its contents, is
  63. designed to be a subdirectory of a GNU CC (gcc) development directory.  I.e.
  64. when a gcc distribution is unpacked into a directory (named gcc/ for
  65. example), it typically contains subdirectories like gcc/config/ and
  66. gcc/cp/.  The latter is the subdirectory for the GNU C++ (g++) program.
  67.  
  68. Similarly, the g77 directory f/ is designed to be placed in gcc/ so that
  69. it becomes the subdirectory gcc/f/.  g77 is distributed as g77-someversion/f/
  70. so that unpacking the g77 distribution is done in the normal GNU way,
  71. resulting in a directory having the version number in the name.  However,
  72. to build g77, the g77 distribution must be merged with an appropriate gcc
  73. distribution, normally in a gcc directory, before configuring, building,
  74. and installing g77.
  75.  
  76. Applying g77 patches in the form of .diff files is done by typing
  77. "patch -p1 -d gcc" (where gcc/f/ is the active version).  That is,
  78. g77 patches are distributed in the same form, and at the same directory
  79. level, as patches to the gcc distribution.
  80.  
  81. gcc/f/ has text files that document the Fortran compiler, source
  82. files for the GNU Fortran Front End (FFE), and some other stuff.
  83.  
  84. gcc/f/gbe/ has patch files for various versions of gcc, primarily
  85. needed to patch the GNU compiler Back End (GBE) to fix and improve it
  86. for use with g77.  If a patch file exists for the version of gcc you
  87. want to build along with g77, you MUST apply the patch before building
  88. g77 with that version or g77 will not build or work properly.*
  89.  
  90. * Read gcc/f/gbe/README for more information.
  91.  
  92. gcc/f/runtime/ contains the run-time libraries for the f2c program, also used
  93. by g77, and referred to as libf2c (though libf2c is really a combination of
  94. two distinct libraries, libF77 and libI77 -- in g77, this distinction is
  95. not made).  This separate subdirectory is not part of the program g77, just
  96. distributed with it.  Some new files have been added to this subdirectory
  97. and some minor changes made to the files contained therein, to fix some
  98. bugs and facilitate automatic configuration, building, and installation of
  99. libf2c for use by g77 users.  See gcc/f/runtime/README for more information.
  100.  
  101. gcc/f/BUGS lists some important bugs known to be in g77.
  102.  
  103. gcc/f/ChangeLog lists recent changes to g77 internals.
  104.  
  105. gcc/f/CREDITS lists people and organizations that have helped make g77 happen.
  106.  
  107. gcc/f/DOC provides some rudimentary documentation for g77, including
  108. user-visible changes made to recent releases.
  109.  
  110. gcc/f/INSTALL describes how to build and install GNU Fortran.
  111.  
  112. gcc/f/NEWS contains the per-release changes (not just user-visible ones
  113. seen in gcc/f/DOC) listed in the ~fortran/.plan file.
  114.  
  115. gcc/f/PROJECTS contains various lists of things still needing to be done
  116. to g77 to improve it in various ways.
  117.  
  118. * Read gcc/f/BUGS, gcc/f/DOC, and gcc/f/INSTALL at the very least!
  119.  
  120. If you want to get into the FFE code, which lives entirely in gcc/f/, here
  121. are a few clues.  The file parse.c is the source file for main() for a
  122. stand-alone FFE and yyparse() for g77.
  123.  
  124. The file top.c contains the top-level FFE function ffe_file and it (along
  125. with top.h) define all ffe_[a-z].*, ffe[A-Z].*, and FFE_[A-Za-z].* symbols.
  126. The file fini.c is a main() program that is used when building the FFE to
  127. generate C header and source files for recognizing keywords.  The files
  128. malloc.c and malloc.h comprise a memory manager that defines all
  129. malloc_[a-z].*, malloc[A-Z].*, and MALLOC_[A-Za-z].* symbols.  All other
  130. modules named <xyz> are comprised of all files named <xyz>*.<ext> and
  131. define all ffe<xyz>_[a-z].*, ffe<xyz>[A-Z].*, and FFE<XYZ>_[A-Za-z].* symbols.
  132. If you understand all this, congratulations -- it's easier for me to remember
  133. how it works than to type in these grep patterns (such as they are).  But it
  134. does make it easy to find where a symbol is defined -- for example,
  135. the symbol "ffexyz_set_something" would be defined in xyz.h and implemented
  136. there (if it's a macro) or in xyz.c.
  137.  
  138. The "porting" files of note currently are: proj.h, which defines the
  139. "language" used by all the other source files (the language being
  140. Standard C plus some useful things like ARRAY_SIZE and such) -- change
  141. this file when you find your system doesn't properly define a Standard C
  142. macro or function, for example; target.h and target.c, which describe
  143. the target machine in terms of what data types are supported, how they are
  144. denoted (what C type does an INTEGER*8 map to, for example), how to convert
  145. between them, and so on (though as of 0.5.3, more and more of this information
  146. is being dynamically configured by ffecom_init_0); com.h and com.c, which
  147. interface to the target back end (currently only FFE stand-alone and the GBE);
  148. ste.c, which contains code for implementing recognized executable statements
  149. in the target back end (again currently either FFE or GBE); src.h and src.c,
  150. which describe information on the format(s) of source files (like whether
  151. they are never to be processed as case-insensitive with regard to Fortran
  152. keywords); and proj.c, which contains whatever code is needed to support
  153. the language defined by proj.h.
  154.  
  155. If you want to debug the f771 executable, for example if it crashes,
  156. note that the global variables "lineno" and "input_filename" are set
  157. to reflect the current line being read by the lexer during the first-pass
  158. analysis of a program unit and to reflect the current line being
  159. processed during the second-pass compilation of a program unit.  If
  160. an invocation of the function ffestd_exec_end() is on the stack,
  161. the compiler is in the second pass, otherwise it is in the first.
  162. (This information might help you reduce a test case and/or work around
  163. a bug in g77 until a fix is available.)
  164.  
  165. Any questions or comments on these topics, email fortran@gnu.ai.mit.edu.
  166.