summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/f/INSTALL
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/f/INSTALL')
-rw-r--r--contrib/gcc/f/INSTALL352
1 files changed, 352 insertions, 0 deletions
diff --git a/contrib/gcc/f/INSTALL b/contrib/gcc/f/INSTALL
new file mode 100644
index 0000000..9185880
--- /dev/null
+++ b/contrib/gcc/f/INSTALL
@@ -0,0 +1,352 @@
+*Note:* This file is automatically generated from the files
+`install0.texi' and `g77install.texi'. `INSTALL' is *not* a source
+file, although it is normally included within source distributions.
+
+ This file contains installation information for the GNU Fortran
+compiler. Copyright (C) {No Value For "copyrights-install"} Free
+Software Foundation, Inc. You may copy, distribute, and modify it
+freely as long as you preserve this copyright notice and permission
+notice.
+
+Installing GNU Fortran
+**********************
+
+ The following information describes how to install `g77'.
+
+ Note that, for users of the GCC-2.95 version of `g77', much of the
+information is obsolete, and is superceded by the GCC installation
+procedures. Such information is accordingly omitted and flagged as
+such.
+
+ *Warning:* The information below is still under development, and
+might not accurately reflect the `g77' code base of which it is a part.
+Efforts are made to keep it somewhat up-to-date, but they are
+particularly concentrated on any version of this information that is
+distributed as part of a *released* `g77'.
+
+ In particular, while this information is intended to apply to the
+GCC-2.95 version of `g77', only an official *release* of that version
+is expected to contain documentation that is most consistent with the
+`g77' product in that version.
+
+ The following information was last updated on 1999-07-17:
+
+Prerequisites
+=============
+
+ For users of the GCC-2.95 version of `g77', this information is
+superceded by the GCC installation instructions.
+
+Problems Installing
+===================
+
+ This is a list of problems (and some apparent problems which don't
+really mean anything is wrong) that show up when configuring, building,
+installing, or porting GNU Fortran.
+
+ *Note Installation Problems: (gcc)Installation Problems, for more
+information on installation problems that can afflict either `gcc' or
+`g77'.
+
+General Problems
+----------------
+
+ These problems can occur on most or all systems.
+
+GNU C Required
+..............
+
+ Compiling `g77' requires GNU C, not just ANSI C. Fixing this
+wouldn't be very hard (just tedious), but the code using GNU extensions
+to the C language is expected to be rewritten for 0.6 anyway, so there
+are no plans for an interim fix.
+
+ This requirement does not mean you must already have `gcc' installed
+to build `g77'. As long as you have a working C compiler, you can use a
+"bootstrap" build to automate the process of first building `gcc' using
+the working C compiler you have, then building `g77' and rebuilding
+`gcc' using that just-built `gcc', and so on.
+
+Patching GNU CC
+...............
+
+ `g77' no longer requires application of a patch file to the `gcc'
+compiler tree. In fact, no such patch file is distributed with `g77'.
+This is as of version 0.5.23 and `egcs' version 1.0.
+
+Building GNU CC Necessary
+.........................
+
+ It should be possible to build the runtime without building `cc1'
+and other non-Fortran items, but, for now, an easy way to do that is
+not yet established.
+
+Missing strtoul or bsearch
+..........................
+
+ This information does not apply to the GCC-2.95 version of `g77',
+
+Cleanup Kills Stage Directories
+...............................
+
+ It'd be helpful if `g77''s `Makefile.in' or `Make-lang.in' would
+create the various `stageN' directories and their subdirectories, so
+developers and expert installers wouldn't have to reconfigure after
+cleaning up.
+
+ That help has arrived as of version 0.5.23 of `g77' and version 1.1
+of `egcs'. Configuration itself no longer creates any particular
+directories that are unique to `g77'. The build procedures in
+`Make-lang.in' take care of that, on demand.
+
+LANGUAGES Macro Ignored
+.......................
+
+ Prior to version 0.5.23 of `g77' and version 1.1 of `egcs', `g77'
+would sometimes ignore the absence of `f77' and `F77' in the
+`LANGUAGES' macro definition used for the `make' command being
+processed.
+
+ As of `g77' version 0.5.23 and `egcs' version 1.1, `g77' now obeys
+this macro in all relevant situations.
+
+ However, in versions of `gcc' through 2.8.1, non-`g77' portions of
+`gcc', such as `g++', are known to go ahead and perform various
+language-specific activities when their respective language strings do
+not appear in the `LANGUAGES' macro in effect during that invocation of
+`make'.
+
+ It is expected that these remaining problems will be fixed in a
+future version of `gcc'.
+
+System-specific Problems
+------------------------
+
+ A linker bug on some versions of AIX 4.1 might prevent building when
+`g77' is built within `gcc'. It might also occur when building within
+`egcs'.
+
+Cross-compiler Problems
+-----------------------
+
+ `g77' has been in alpha testing since September of 1992, and in
+public beta testing since February of 1995. Alpha testing was done by
+a small number of people worldwide on a fairly wide variety of
+machines, involving self-compilation in most or all cases. Beta
+testing has been done primarily via self-compilation, but in more and
+more cases, cross-compilation (and "criss-cross compilation", where a
+version of a compiler is built on one machine to run on a second and
+generate code that runs on a third) has been tried and has succeeded,
+to varying extents.
+
+ Generally, `g77' can be ported to any configuration to which `gcc',
+`f2c', and `libf2c' can be ported and made to work together, aside from
+the known problems described in this manual. If you want to port `g77'
+to a particular configuration, you should first make sure `gcc' and
+`libf2c' can be ported to that configuration before focusing on `g77',
+because `g77' is so dependent on them.
+
+ Even for cases where `gcc' and `libf2c' work, you might run into
+problems with cross-compilation on certain machines, for several
+reasons.
+
+ * There is one known bug (a design bug to be fixed in 0.6) that
+ prevents configuration of `g77' as a cross-compiler in some cases,
+ though there are assumptions made during configuration that
+ probably make doing non-self-hosting builds a hassle, requiring
+ manual intervention.
+
+ * `gcc' might still have some trouble being configured for certain
+ combinations of machines. For example, it might not know how to
+ handle floating-point constants.
+
+ * Improvements to the way `libg2c' is built could make building
+ `g77' as a cross-compiler easier--for example, passing and using
+ `$(LD)' and `$(AR)' in the appropriate ways. (This is improved in
+ the `egcs' version of `g77', especially as of version 1.1.)
+
+ * There are still some challenges putting together the right
+ run-time libraries (needed by `libg2c') for a target system,
+ depending on the systems involved in the configuration. (This is
+ a general problem with cross-compilation, and with `gcc' in
+ particular.)
+
+Changing Settings Before Building
+=================================
+
+ Here are some internal `g77' settings that can be changed by editing
+source files in `egcs/gcc/f/' before building.
+
+ This information, and perhaps even these settings, represent
+stop-gap solutions to problems people doing various ports of `g77' have
+encountered. As such, none of the following information is expected to
+be pertinent in future versions of `g77'.
+
+Larger File Unit Numbers
+------------------------
+
+ As distributed, whether as part of `f2c' or `g77', `libf2c' accepts
+file unit numbers only in the range 0 through 99. For example, a
+statement such as `WRITE (UNIT=100)' causes a run-time crash in
+`libf2c', because the unit number, 100, is out of range.
+
+ If you know that Fortran programs at your installation require the
+use of unit numbers higher than 99, you can change the value of the
+`MXUNIT' macro, which represents the maximum unit number, to an
+appropriately higher value.
+
+ To do this, edit the file `egcs/libf2c/libI77/fio.h' in your `g77'
+source tree, changing the following line:
+
+ #define MXUNIT 100
+
+ Change the line so that the value of `MXUNIT' is defined to be at
+least one *greater* than the maximum unit number used by the Fortran
+programs on your system.
+
+ (For example, a program that does `WRITE (UNIT=255)' would require
+`MXUNIT' set to at least 256 to avoid crashing.)
+
+ Then build or rebuild `g77' as appropriate.
+
+ *Note:* Changing this macro has *no* effect on other limits your
+system might place on the number of files open at the same time. That
+is, the macro might allow a program to do `WRITE (UNIT=100)', but the
+library and operating system underlying `libf2c' might disallow it if
+many other files have already been opened (via `OPEN' or implicitly via
+`READ', `WRITE', and so on). Information on how to increase these
+other limits should be found in your system's documentation.
+
+Always Flush Output
+-------------------
+
+ Some Fortran programs require output (writes) to be flushed to the
+operating system (under UNIX, via the `fflush()' library call) so that
+errors, such as disk full, are immediately flagged via the relevant
+`ERR=' and `IOSTAT=' mechanism, instead of such errors being flagged
+later as subsequent writes occur, forcing the previously written data
+to disk, or when the file is closed.
+
+ Essentially, the difference can be viewed as synchronous error
+reporting (immediate flagging of errors during writes) versus
+asynchronous, or, more precisely, buffered error reporting (detection
+of errors might be delayed).
+
+ `libg2c' supports flagging write errors immediately when it is built
+with the `ALWAYS_FLUSH' macro defined. This results in a `libg2c' that
+runs slower, sometimes quite a bit slower, under certain
+circumstances--for example, accessing files via the networked file
+system NFS--but the effect can be more reliable, robust file I/O.
+
+ If you know that Fortran programs requiring this level of precision
+of error reporting are to be compiled using the version of `g77' you
+are building, you might wish to modify the `g77' source tree so that
+the version of `libg2c' is built with the `ALWAYS_FLUSH' macro defined,
+enabling this behavior.
+
+ To do this, find this line in `egcs/libf2c/f2c.h' in your `g77'
+source tree:
+
+ /* #define ALWAYS_FLUSH */
+
+ Remove the leading `/* ', so the line begins with `#define', and the
+trailing ` */'.
+
+ Then build or rebuild `g77' as appropriate.
+
+Maximum Stackable Size
+----------------------
+
+ `g77', on most machines, puts many variables and arrays on the stack
+where possible, and can be configured (by changing
+`FFECOM_sizeMAXSTACKITEM' in `egcs/gcc/f/com.c') to force smaller-sized
+entities into static storage (saving on stack space) or permit
+larger-sized entities to be put on the stack (which can improve
+run-time performance, as it presents more opportunities for the GBE to
+optimize the generated code).
+
+ *Note:* Putting more variables and arrays on the stack might cause
+problems due to system-dependent limits on stack size. Also, the value
+of `FFECOM_sizeMAXSTACKITEM' has no effect on automatic variables and
+arrays. *Note But-bugs::, for more information.
+
+Floating-point Bit Patterns
+---------------------------
+
+ The `g77' build will crash if an attempt is made to build it as a
+cross-compiler for a target when `g77' cannot reliably determine the
+bit pattern of floating-point constants for the target. Planned
+improvements for version 0.6 of `g77' will give it the capabilities it
+needs to not have to crash the build but rather generate correct code
+for the target. (Currently, `g77' would generate bad code under such
+circumstances if it didn't crash during the build, e.g. when compiling
+a source file that does something like `EQUIVALENCE (I,R)' and `DATA
+R/9.43578/'.)
+
+Initialization of Large Aggregate Areas
+---------------------------------------
+
+ A warning message is issued when `g77' sees code that provides
+initial values (e.g. via `DATA') to an aggregate area (`COMMON' or
+`EQUIVALENCE', or even a large enough array or `CHARACTER' variable)
+that is large enough to increase `g77''s compile time by roughly a
+factor of 10.
+
+ This size currently is quite small, since `g77' currently has a
+known bug requiring too much memory and time to handle such cases. In
+`egcs/gcc/f/data.c', the macro `FFEDATA_sizeTOO_BIG_INIT_' is defined
+to the minimum size for the warning to appear. The size is specified
+in storage units, which can be bytes, words, or whatever, on a
+case-by-case basis.
+
+ After changing this macro definition, you must (of course) rebuild
+and reinstall `g77' for the change to take effect.
+
+ Note that, as of version 0.5.18, improvements have reduced the scope
+of the problem for *sparse* initialization of large arrays, especially
+those with large, contiguous uninitialized areas. However, the warning
+is issued at a point prior to when `g77' knows whether the
+initialization is sparse, and delaying the warning could mean it is
+produced too late to be helpful.
+
+ Therefore, the macro definition should not be adjusted to reflect
+sparse cases. Instead, adjust it to generate the warning when densely
+initialized arrays begin to cause responses noticeably slower than
+linear performance would suggest.
+
+Alpha Problems Fixed
+--------------------
+
+ `g77' used to warn when it was used to compile Fortran code for a
+target configuration that is not basically a 32-bit machine (such as an
+Alpha, which is a 64-bit machine, especially if it has a 64-bit
+operating system running on it). That was because `g77' was known to
+not work properly on such configurations.
+
+ As of version 0.5.20, `g77' is believed to work well enough on such
+systems. So, the warning is no longer needed or provided.
+
+ However, support for 64-bit systems, especially in areas such as
+cross-compilation and handling of intrinsics, is still incomplete. The
+symptoms are believed to be compile-time diagnostics rather than the
+generation of bad code. It is hoped that version 0.6 will completely
+support 64-bit systems.
+
+Quick Start
+===========
+
+ For users of the GCC-2.95 version of `g77', this information is
+superceded by the GCC installation instructions.
+
+Complete Installation
+=====================
+
+ For users of the GCC-2.95 version of `g77', this information is
+superceded by the GCC installation instructions.
+
+Distributing Binaries
+=====================
+
+ For users of the GCC-2.95 version of `g77', this information is
+superceded by the GCC installation instructions.
+
OpenPOWER on IntegriCloud