diff options
Diffstat (limited to 'contrib/gcc/f/INSTALL')
-rw-r--r-- | contrib/gcc/f/INSTALL | 352 |
1 files changed, 0 insertions, 352 deletions
diff --git a/contrib/gcc/f/INSTALL b/contrib/gcc/f/INSTALL deleted file mode 100644 index 91858800958d..000000000000 --- a/contrib/gcc/f/INSTALL +++ /dev/null @@ -1,352 +0,0 @@ -*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. - |