diff options
author | obrien <obrien@FreeBSD.org> | 2002-05-12 21:50:48 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-05-12 21:50:48 +0000 |
commit | ed72cee72656b0a13b612bf4dbc1ec01ff19f9ad (patch) | |
tree | fb9e5c8f6a275c09cb3f77d4c3fda42fef054ef6 /contrib/gcc/f | |
parent | 9202658d3cd1b82b9c9b96c52fde1774d313ab2c (diff) | |
download | FreeBSD-src-ed72cee72656b0a13b612bf4dbc1ec01ff19f9ad.zip FreeBSD-src-ed72cee72656b0a13b612bf4dbc1ec01ff19f9ad.tar.gz |
Remove files not part of GCC 3.1.
Diffstat (limited to 'contrib/gcc/f')
-rw-r--r-- | contrib/gcc/f/BUGS | 159 | ||||
-rw-r--r-- | contrib/gcc/f/INSTALL | 352 | ||||
-rw-r--r-- | contrib/gcc/f/Makefile.in | 529 | ||||
-rw-r--r-- | contrib/gcc/f/NEWS | 412 | ||||
-rw-r--r-- | contrib/gcc/f/assert.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/config.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/convert.j | 28 | ||||
-rw-r--r-- | contrib/gcc/f/flags.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/g77install.texi | 2251 | ||||
-rw-r--r-- | contrib/gcc/f/glimits.j | 28 | ||||
-rw-r--r-- | contrib/gcc/f/hconfig.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/input.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/output.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/proj.c | 68 | ||||
-rw-r--r-- | contrib/gcc/f/rtl.j | 28 | ||||
-rw-r--r-- | contrib/gcc/f/system.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/tconfig.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/tm.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/toplev.j | 27 | ||||
-rw-r--r-- | contrib/gcc/f/tree.j | 28 |
20 files changed, 0 insertions, 4153 deletions
diff --git a/contrib/gcc/f/BUGS b/contrib/gcc/f/BUGS deleted file mode 100644 index 6f04b2b..0000000 --- a/contrib/gcc/f/BUGS +++ /dev/null @@ -1,159 +0,0 @@ -*Note:* This file is automatically generated from the files -`bugs0.texi' and `bugs.texi'. `BUGS' is *not* a source file, although -it is normally included within source distributions. - - This file lists known bugs in the GCC-2.95 version of the GNU -Fortran compiler. Copyright (C) 1995-1999 Free Software Foundation, -Inc. You may copy, distribute, and modify it freely as long as you -preserve this copyright notice and permission notice. - -Known Bugs In GNU Fortran -************************* - - This section identifies bugs that `g77' *users* might run into in -the GCC-2.95 version of `g77'. This includes bugs that are actually in -the `gcc' back end (GBE) or in `libf2c', because those sets of code are -at least somewhat under the control of (and necessarily intertwined -with) `g77', so it isn't worth separating them out. - - For information on bugs in *other* versions of `g77', see -`egcs/gcc/f/NEWS'. There, lists of bugs fixed in various versions of -`g77' can help determine what bugs existed in prior versions. - - *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. - - An online, "live" version of this document (derived directly from -the mainline, development version of `g77' within `egcs') is available -via `http://www.gnu.org/software/gcc/onlinedocs/g77_bugs.html'. Follow the -"Known Bugs" link. - - For information on bugs that might afflict people who configure, -port, build, and install `g77', see "Problems Installing" in -`egcs/gcc/f/INSTALL'. - - The following information was last updated on 1999-06-29: - - * `g77' fails to warn about use of a "live" iterative-DO variable as - an implied-DO variable in a `WRITE' or `PRINT' statement (although - it does warn about this in a `READ' statement). - - * Something about `g77''s straightforward handling of label - references and definitions sometimes prevents the GBE from - unrolling loops. Until this is solved, try inserting or removing - `CONTINUE' statements as the terminal statement, using the `END DO' - form instead, and so on. - - * Some confusion in diagnostics concerning failing `INCLUDE' - statements from within `INCLUDE''d or `#include''d files. - - * `g77' assumes that `INTEGER(KIND=1)' constants range from `-2**31' - to `2**31-1' (the range for two's-complement 32-bit values), - instead of determining their range from the actual range of the - type for the configuration (and, someday, for the constant). - - Further, it generally doesn't implement the handling of constants - very well in that it makes assumptions about the configuration - that it no longer makes regarding variables (types). - - Included with this item is the fact that `g77' doesn't recognize - that, on IEEE-754/854-compliant systems, `0./0.' should produce a - NaN and no warning instead of the value `0.' and a warning. This - is to be fixed in version 0.6, when `g77' will use the `gcc' back - end's constant-handling mechanisms to replace its own. - - * `g77' uses way too much memory and CPU time to process large - aggregate areas having any initialized elements. - - For example, `REAL A(1000000)' followed by `DATA A(1)/1/' takes up - way too much time and space, including the size of the generated - assembler file. This is to be mitigated somewhat in version 0.6. - - Version 0.5.18 improves cases like this--specifically, cases of - *sparse* initialization that leave large, contiguous areas - uninitialized--significantly. However, even with the - improvements, these cases still require too much memory and CPU - time. - - (Version 0.5.18 also improves cases where the initial values are - zero to a much greater degree, so if the above example ends with - `DATA A(1)/0/', the compile-time performance will be about as good - as it will ever get, aside from unrelated improvements to the - compiler.) - - Note that `g77' does display a warning message to notify the user - before the compiler appears to hang. - - * `g77' doesn't emit variable and array members of common blocks for - use with a debugger (the `-g' command-line option). The code is - present to do this, but doesn't work with at least one debug - format--perhaps it works with others. And it turns out there's a - similar bug for local equivalence areas, so that has been disabled - as well. - - As of Version 0.5.19, a temporary kludge solution is provided - whereby some rudimentary information on a member is written as a - string that is the member's value as a character string. - - * When debugging, after starting up the debugger but before being - able to see the source code for the main program unit, the user - must currently set a breakpoint at `MAIN__' (or `MAIN___' or - `MAIN_' if `MAIN__' doesn't exist) and run the program until it - hits the breakpoint. At that point, the main program unit is - activated and about to execute its first executable statement, but - that's the state in which the debugger should start up, as is the - case for languages like C. - - * Debugging `g77'-compiled code using debuggers other than `gdb' is - likely not to work. - - Getting `g77' and `gdb' to work together is a known - problem--getting `g77' to work properly with other debuggers, for - which source code often is unavailable to `g77' developers, seems - like a much larger, unknown problem, and is a lower priority than - making `g77' and `gdb' work together properly. - - On the other hand, information about problems other debuggers have - with `g77' output might make it easier to properly fix `g77', and - perhaps even improve `gdb', so it is definitely welcome. Such - information might even lead to all relevant products working - together properly sooner. - - * `g77' doesn't work perfectly on 64-bit configurations such as the - Digital Semiconductor ("DEC") Alpha. - - This problem is largely resolved as of version 0.5.23. Version - 0.6 should solve most or all remaining problems (such as - cross-compiling involving 64-bit machines). - - * `g77' currently inserts needless padding for things like `COMMON - A,IPAD' where `A' is `CHARACTER*1' and `IPAD' is `INTEGER(KIND=1)' - on machines like x86, because the back end insists that `IPAD' be - aligned to a 4-byte boundary, but the processor has no such - requirement (though it is usually good for performance). - - The `gcc' back end needs to provide a wider array of - specifications of alignment requirements and preferences for - targets, and front ends like `g77' should take advantage of this - when it becomes available. - - * The `libf2c' routines that perform some run-time arithmetic on - `COMPLEX' operands were modified circa version 0.5.20 of `g77' to - work properly even in the presence of aliased operands. - - While the `g77' and `netlib' versions of `libf2c' differ on how - this is accomplished, the main differences are that we believe the - `g77' version works properly even in the presence of *partially* - aliased operands. - - However, these modifications have reduced performance on targets - such as x86, due to the extra copies of operands involved. - diff --git a/contrib/gcc/f/INSTALL b/contrib/gcc/f/INSTALL deleted file mode 100644 index 9185880..0000000 --- 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. - diff --git a/contrib/gcc/f/Makefile.in b/contrib/gcc/f/Makefile.in deleted file mode 100644 index 96975a5..0000000 --- a/contrib/gcc/f/Makefile.in +++ /dev/null @@ -1,529 +0,0 @@ -# Makefile for GNU F77 compiler. -# Copyright (C) 1995-1998 Free Software Foundation, Inc. - -#This file is part of GNU Fortran. - -#GNU Fortran is free software; you can redistribute it and/or modify -#it under the terms of the GNU General Public License as published by -#the Free Software Foundation; either version 2, or (at your option) -#any later version. - -#GNU Fortran is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#GNU General Public License for more details. - -#You should have received a copy of the GNU General Public License -#along with GNU Fortran; see the file COPYING. If not, write to -#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -#02111-1307, USA. - -# The makefile built from this file lives in the language subdirectory. -# Its purpose is to provide support for: -# -# 1) recursion where necessary, and only then (building .o's), and -# 2) building and debugging f771 from the language subdirectory, and -# 3) nothing else. -# -# The parent makefile handles all other chores, with help from the -# language makefile fragment, of course. -# -# The targets for external use are: -# all, TAGS, ???mostlyclean, ???clean. - -# Suppress smart makes who think they know how to automake Yacc files -.y.c: - -# Variables that exist for you to override. -# See below for how to change them for certain systems. - -ALLOCA = - -# Various ways of specifying flags for compilations: -# CFLAGS is for the user to override to, e.g., do a bootstrap with -O2. -# BOOT_CFLAGS is the value of CFLAGS to pass -# to the stage2 and stage3 compilations -# XCFLAGS is used for most compilations but not when using the GCC just built. -XCFLAGS = -CFLAGS = -g -BOOT_CFLAGS = -O $(CFLAGS) -# These exists to be overridden by the x-* and t-* files, respectively. -X_CFLAGS = -T_CFLAGS = - -X_CPPFLAGS = -T_CPPFLAGS = - -CC = @CC@ -BISON = bison -BISONFLAGS = -LEX = flex -LEXFLAGS = -AR = ar -AR_FLAGS = rc -SHELL = /bin/sh -MAKEINFO = makeinfo -TEXI2DVI = texi2dvi - -# Define this as & to perform parallel make on a Sequent. -# Note that this has some bugs, and it seems currently necessary -# to compile all the gen* files first by hand to avoid erroneous results. -P = - -# This is used in the definition of SUBDIR_USE_ALLOCA. -# ??? Perhaps it would be better if it just looked for *gcc*. -OLDCC = cc - -# This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. -# It omits XCFLAGS, and specifies -B./. -# It also specifies -B$(tooldir)/ to find as and ld for a cross compiler. -GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) - -# Tools to use when building a cross-compiler. -# These are used because `configure' appends `cross-make' -# to the makefile when making a cross-compiler. - -target=@target@ -xmake_file=@dep_host_xmake_file@ -tmake_file=@dep_tmake_file@ - -# Directory where sources are, from where we are. -srcdir = @srcdir@ -VPATH = @srcdir@ - -# Additional system libraries to link with. -CLIB= - -# Change this to a null string if obstacks are installed in the -# system library. -OBSTACK=obstack.o - -# Choose the real default target. -ALL=all - -# End of variables for you to override. - -# Definition of `all' is here so that new rules inserted by sed -# do not specify the default target. -all: all.indirect - -# This tells GNU Make version 3 not to put all variables in the environment. -.NOEXPORT: - -# sed inserts variable overrides after the following line. -####target overrides -@target_overrides@ -####host overrides -@host_overrides@ -####cross overrides -@cross_defines@ -@cross_overrides@ -####build overrides -@build_overrides@ -# -# Now figure out from those variables how to compile and link. - -all.indirect: Makefile ../f771$(exeext) - -# IN_GCC tells obstack.h that we are using gcc's <stddef.h> file. -INTERNAL_CFLAGS = $(CROSS) -DIN_GCC @extra_c_flags@ - -# This is the variable actually used when we compile. -ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS) -W -Wall - -# Likewise. -ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS) - -# We should be compiling with the built compiler, for which -# BOOT_LDFLAGS is appropriate. (Formerly we had a separate -# F771_LDFLAGS, but the ld flags can be taken care of by the target -# configuration files in egcs.) -LDFLAGS=$(BOOT_LDFLAGS) - -# Even if ALLOCA is set, don't use it if compiling with GCC. - -SUBDIR_OBSTACK = `if [ x$(OBSTACK) != x ]; then echo ../$(OBSTACK); else true; fi` -SUBDIR_USE_ALLOCA = `case "${CC}" in "${OLDCC}") if [ x$(ALLOCA) != x ]; then echo ../$(ALLOCA); else true; fi ;; esac` -SUBDIR_MALLOC = `if [ x$(MALLOC) != x ]; then echo ../$(MALLOC); else true; fi` - -# How to link with both our special library facilities -# and the system's installed libraries. -LIBS = $(SUBDIR_OBSTACK) $(SUBDIR_USE_ALLOCA) $(SUBDIR_MALLOC) $(CLIB) - -# Specify the directories to be searched for header files. -# Both . and srcdir are used, in that order, -# so that tm.h and config.h will be found in the compilation -# subdirectory rather than in the source directory. -INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir)/../../include - -# Always use -I$(srcdir)/config when compiling. -.c.o: - $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< - -# -# Lists of files for various purposes. - -# Language-specific object files for g77 - -F77_OBJS = \ - bad.o \ - bit.o \ - bld.o \ - com.o \ - data.o \ - equiv.o \ - expr.o \ - global.o \ - implic.o \ - info.o \ - intrin.o \ - lab.o \ - lex.o \ - malloc.o \ - name.o \ - parse.o \ - proj.o \ - src.o \ - st.o \ - sta.o \ - stb.o \ - stc.o \ - std.o \ - ste.o \ - storag.o \ - stp.o \ - str.o \ - sts.o \ - stt.o \ - stu.o \ - stv.o \ - stw.o \ - symbol.o \ - target.o \ - top.o \ - type.o \ - version.o \ - where.o - -# Language-independent object files. -OBJS = `cat ../stamp-objlist` -OBJDEPS = ../stamp-objlist - -compiler: ../f771$(exeext) -../f771$(exeext): $(P) $(F77_OBJS) $(OBJDEPS) $(LIBDEPS) - rm -f f771$(exeext) - $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(F77_OBJS) $(OBJS) $(LIBS) - -Makefile: $(srcdir)/Makefile.in $(srcdir)/../configure - cd ..; $(SHELL) config.status - -native: config.status ../f771$(exeext) -# -# Compiling object files from source files. - -# Note that dependencies on obstack.h are not written -# because that file is not part of GCC. - -# F77 language-specific files. - -# These macros expand to the corresponding g77-source .j files plus -# the gcc-source files involved (each file itself, plus whatever -# files on which it depends, but without including stuff resulting -# from configuration, since we can't guess at that). The files -# that live in a distclean'd gcc source directory have "$(srcdir)/" -# prefixes, while the others don't because they'll be created -# only in the build directory. -ASSERT_H = $(srcdir)/assert.j $(srcdir)/../assert.h -CONFIG_H = $(srcdir)/config.j ../config.h -CONVERT_H = $(srcdir)/convert.j $(srcdir)/../convert.h -FLAGS_H = $(srcdir)/flags.j $(srcdir)/../flags.h -GLIMITS_H = $(srcdir)/glimits.j $(srcdir)/../glimits.h -HCONFIG_H = $(srcdir)/hconfig.j ../hconfig.h -INPUT_H = $(srcdir)/input.j $(srcdir)/../input.h -OUTPUT_H = $(srcdir)/output.j $(srcdir)/../output.h -RTL_H = $(srcdir)/rtl.j $(srcdir)/../rtl.h $(srcdir)/../rtl.def \ - $(srcdir)/../machmode.h $(srcdir)/../machmode.def -SYSTEM_H = $(srcdir)/system.j $(srcdir)/../system.h -TCONFIG_H = $(srcdir)/tconfig.j ../tconfig.h -TM_H = $(srcdir)/tm.j ../tm.h -TOPLEV_H = $(srcdir)/toplev.j $(srcdir)/../toplev.h -TREE_H = $(srcdir)/tree.j $(srcdir)/../tree.h $(srcdir)/../real.h \ - $(srcdir)/../tree.def $(srcdir)/../machmode.h $(srcdir)/../machmode.def - -#Build the first part of this list with the command line: -# cd gcc/; make deps-kinda -f f/Makefile.in -#Note that this command uses the host C compiler; -# use HOST_CC="./xgcc -B./" to use GCC in the build directory, for example. -#Also note that this particular build file seems to want to use -# substitions: $(CONFIG_H) for config.h; $(TREE_H) for tree.h; -# $(RTL_H) for rtl.h; etc.. deps-kinda uses a sed script to do those -# substitutions, plus others for elegance. - -ansify.o: ansify.c $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) -bad.o: bad.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.h bad.def where.h \ - $(GLIMITS_H) top.h malloc.h $(FLAGS_H) com.h com-rt.def $(TREE_H) bld.h \ - bld-op.def bit.h info.h info-b.def info-k.def info-w.def target.h \ - lex.h type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h \ - storag.h global.h name.h $(TOPLEV_H) -bit.o: bit.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) bit.h \ - malloc.h -bld.o: bld.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bld.h bld-op.def bit.h \ - malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def -com.o: com.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(FLAGS_H) $(RTL_H) $(TOPLEV_H) \ - $(TREE_H) $(OUTPUT_H) $(CONVERT_H) com.h com-rt.def bld.h bld-op.def bit.h \ - malloc.h info.h info-b.def info-k.def info-w.def target.h bad.h \ - bad.def where.h $(GLIMITS_H) top.h lex.h type.h intrin.h intrin.def \ - lab.h symbol.h symbol.def equiv.h storag.h global.h name.h expr.h \ - implic.h src.h st.h -data.o: data.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) data.h bld.h \ - bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ - info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ - lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ - name.h intrin.h intrin.def expr.h st.h -equiv.o: equiv.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) equiv.h bld.h \ - bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ - info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ - lex.h type.h lab.h storag.h symbol.h symbol.def global.h name.h \ - intrin.h intrin.def data.h -expr.o: expr.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) expr.h bld.h \ - bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ - info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ - lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ - name.h intrin.h intrin.def implic.h src.h st.h stamp-str -fini.o: fini.c proj.h $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) malloc.h -global.o: global.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) global.h info.h \ - info-b.def info-k.def info-w.def target.h $(TREE_H) bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h lex.h type.h name.h symbol.h \ - symbol.def bld.h bld-op.def bit.h com.h com-rt.def lab.h storag.h \ - intrin.h intrin.def equiv.h -implic.o: implic.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) implic.h info.h \ - info-b.def info-k.def info-w.def target.h $(TREE_H) bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h lex.h type.h symbol.h symbol.def \ - bld.h bld-op.def bit.h com.h com-rt.def lab.h storag.h intrin.h \ - intrin.def equiv.h global.h name.h src.h -info.o: info.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) info.h info-b.def \ - info-k.def info-w.def target.h $(TREE_H) bad.h bad.def where.h $(GLIMITS_H) \ - top.h malloc.h lex.h type.h -intdoc.o: intdoc.c $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) intrin.h intrin.def \ - intdoc.h0 intdoc.h0 -intrin.o: intrin.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) intrin.h \ - intrin.def bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) \ - info.h info-b.def info-k.def info-w.def target.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h lex.h type.h lab.h storag.h symbol.h \ - symbol.def equiv.h global.h name.h expr.h src.h -lab.o: lab.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) lab.h com.h com-rt.def \ - $(TREE_H) bld.h bld-op.def bit.h malloc.h info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h intrin.h intrin.def symbol.h symbol.def equiv.h storag.h \ - global.h name.h -lex.o: lex.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h where.h \ - $(GLIMITS_H) bad.h bad.def com.h com-rt.def $(TREE_H) bld.h bld-op.def \ - bit.h info.h info-b.def info-k.def info-w.def target.h lex.h type.h \ - intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ - global.h name.h src.h $(FLAGS_H) $(INPUT_H) $(TOPLEV_H) $(OUTPUT_H) -malloc.o: malloc.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) malloc.h -name.o: name.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bad.h bad.def where.h \ - $(GLIMITS_H) top.h malloc.h name.h global.h info.h info-b.def info-k.def \ - info-w.def target.h $(TREE_H) lex.h type.h symbol.h symbol.def bld.h \ - bld-op.def bit.h com.h com-rt.def lab.h storag.h intrin.h intrin.def \ - equiv.h src.h -parse.o: parse.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h \ - where.h $(GLIMITS_H) com.h com-rt.def $(TREE_H) bld.h bld-op.def bit.h \ - info.h info-b.def info-k.def info-w.def target.h bad.h bad.def lex.h \ - type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ - global.h name.h version.h $(FLAGS_H) -proj.o: proj.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) -src.o: src.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) src.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h -st.o: st.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) st.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h lex.h symbol.h symbol.def bld.h \ - bld-op.def bit.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h type.h lab.h storag.h intrin.h intrin.def equiv.h \ - global.h name.h sta.h stamp-str stb.h expr.h stp.h stt.h stc.h std.h \ - stv.h stw.h ste.h sts.h stu.h -sta.o: sta.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) sta.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h lex.h stamp-str symbol.h symbol.def \ - bld.h bld-op.def bit.h com.h com-rt.def $(TREE_H) info.h info-b.def \ - info-k.def info-w.def target.h type.h lab.h storag.h intrin.h \ - intrin.def equiv.h global.h name.h implic.h stb.h expr.h stp.h stt.h \ - stc.h std.h stv.h stw.h -stb.o: stb.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stb.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h expr.h bld.h bld-op.def bit.h com.h \ - com-rt.def $(TREE_H) info.h info-b.def info-k.def info-w.def target.h \ - lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ - name.h intrin.h intrin.def stp.h stt.h stamp-str src.h sta.h stc.h -stc.o: stc.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stc.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h bld.h bld-op.def bit.h com.h \ - com-rt.def $(TREE_H) info.h info-b.def info-k.def info-w.def target.h \ - lex.h type.h lab.h storag.h symbol.h symbol.def equiv.h global.h \ - name.h intrin.h intrin.def expr.h stp.h stt.h stamp-str data.h implic.h \ - src.h sta.h std.h stv.h stw.h -std.o: std.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) std.h bld.h bld-op.def \ - bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def stp.h stt.h stamp-str stv.h stw.h sta.h ste.h sts.h -ste.o: ste.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(RTL_H) $(TOPLEV_H) ste.h \ - bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h \ - info-b.def info-k.def info-w.def target.h bad.h bad.def where.h \ - $(GLIMITS_H) top.h lex.h type.h lab.h storag.h symbol.h symbol.def \ - equiv.h global.h name.h intrin.h intrin.def stp.h stt.h stamp-str sts.h \ - stv.h stw.h expr.h sta.h -storag.o: storag.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) storag.h bld.h \ - bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def \ - info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ - lex.h type.h lab.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def data.h -stp.o: stp.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stp.h bld.h bld-op.def \ - bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def stt.h -str.o: str.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) src.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h malloc.h stamp-str lex.h -sts.o: sts.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) sts.h malloc.h com.h \ - com-rt.def $(TREE_H) bld.h bld-op.def bit.h info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h intrin.h intrin.def lab.h symbol.h symbol.def equiv.h storag.h \ - global.h name.h -stt.o: stt.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stt.h top.h malloc.h \ - where.h $(GLIMITS_H) bld.h bld-op.def bit.h com.h com-rt.def $(TREE_H) \ - info.h info-b.def info-k.def info-w.def target.h bad.h bad.def lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def stp.h expr.h sta.h stamp-str -stu.o: stu.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) bld.h bld-op.def bit.h \ - malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def implic.h stu.h sta.h stamp-str -stv.o: stv.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stv.h lab.h com.h \ - com-rt.def $(TREE_H) bld.h bld-op.def bit.h malloc.h info.h info-b.def \ - info-k.def info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h \ - lex.h type.h intrin.h intrin.def symbol.h symbol.def equiv.h storag.h \ - global.h name.h -stw.o: stw.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) stw.h bld.h bld-op.def \ - bit.h malloc.h com.h com-rt.def $(TREE_H) info.h info-b.def info-k.def \ - info-w.def target.h bad.h bad.def where.h $(GLIMITS_H) top.h lex.h \ - type.h lab.h storag.h symbol.h symbol.def equiv.h global.h name.h \ - intrin.h intrin.def stv.h sta.h stamp-str -symbol.o: symbol.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) symbol.h \ - symbol.def bld.h bld-op.def bit.h malloc.h com.h com-rt.def $(TREE_H) \ - info.h info-b.def info-k.def info-w.def target.h bad.h bad.def \ - where.h $(GLIMITS_H) top.h lex.h type.h lab.h storag.h intrin.h \ - intrin.def equiv.h global.h name.h src.h st.h -target.o: target.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) \ - target.h $(TREE_H) bad.h bad.def where.h top.h malloc.h info.h \ - info-b.def info-k.def info-w.def type.h lex.h -top.o: top.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) top.h malloc.h where.h \ - $(GLIMITS_H) bad.h bad.def bit.h bld.h bld-op.def com.h com-rt.def \ - $(TREE_H) info.h info-b.def info-k.def info-w.def target.h lex.h type.h \ - lab.h storag.h symbol.h symbol.def equiv.h global.h name.h intrin.h \ - intrin.def data.h expr.h implic.h src.h st.h $(FLAGS_H) $(TOPLEV_H) -type.o: type.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) type.h malloc.h -version.o: version.c -where.o: where.c proj.h $(CONFIG_H) $(SYSTEM_H) $(ASSERT_H) where.h $(GLIMITS_H) \ - top.h malloc.h lex.h - -# The rest of this list (Fortran 77 language-specific files) is hand-generated. - -stamp-str: str-1t.h str-1t.j str-2t.h str-2t.j \ - str-fo.h str-fo.j str-io.h str-io.j str-nq.h str-nq.j \ - str-op.h str-op.j str-ot.h str-ot.j - touch stamp-str - -str-1t.h str-1t.j: fini str-1t.fin - ./fini `echo $(srcdir)/str-1t.fin | sed 's,^\./,,'` str-1t.j str-1t.h - -str-2t.h str-2t.j: fini str-2t.fin - ./fini `echo $(srcdir)/str-2t.fin | sed 's,^\./,,'` str-2t.j str-2t.h - -str-fo.h str-fo.j: fini str-fo.fin - ./fini `echo $(srcdir)/str-fo.fin | sed 's,^\./,,'` str-fo.j str-fo.h - -str-io.h str-io.j: fini str-io.fin - ./fini `echo $(srcdir)/str-io.fin | sed 's,^\./,,'` str-io.j str-io.h - -str-nq.h str-nq.j: fini str-nq.fin - ./fini `echo $(srcdir)/str-nq.fin | sed 's,^\./,,'` str-nq.j str-nq.h - -str-op.h str-op.j: fini str-op.fin - ./fini `echo $(srcdir)/str-op.fin | sed 's,^\./,,'` str-op.j str-op.h - -str-ot.h str-ot.j: fini str-ot.fin - ./fini `echo $(srcdir)/str-ot.fin | sed 's,^\./,,'` str-ot.j str-ot.h - -fini: fini.o proj-h.o - $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o fini fini.o proj-h.o - -fini.o: - $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ - `echo $(srcdir)/fini.c | sed 's,^\./,,'` -o $@ - -# Like proj.o, but depends on hconfig.h instead of config.h. -proj-h.o: proj.c proj.h $(HCONFIG_H) $(SYSTEM_H) $(ASSERT_H) $(GLIMITS_H) - $(HOST_CC) -c -DUSE_HCONFIG $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \ - `echo $(srcdir)/proj.c | sed 's,^\./,,'` -o $@ - -# Other than str-*.j, the *.j files are dummy #include files -# that normally just #include the corresponding back-end *.h -# files, but not if MAKING_DEPENDENCIES is #defined. The str-*.j -# files also are not actually included if MAKING_DEPENDENCIES -# is #defined. The point of all this is to come up with a clean -# dependencies list whether working in a clean directory, such -# that str-*.j and such do not exist, or in a directory full -# of already-built files. Any dependency on a str-*.j file -# implies a dependency on str.h, so we key on that to replace -# it with stamp-str, and dependencies on the other *.j files -# are generally left alone (modulo special macros like RTL_H) -# because we might not want to recompile all of g77 just -# because a back-end file changes. MG is usually "-MG" but -# should be defined with "make MG= deps-kinda..." if using -# a compiler that doesn't support -MG (gcc does as of 2.6) -- -# it prevents diagnostics when an #include file is missing, -# as will be the case with proj.h in a clean directory. -MG=-MG -deps-kinda: - $(HOST_CC) -DMAKING_DEPENDENCIES -MM $(MG) *.c 2>&1 | \ - sed -e 's: \([.]/\)*assert[.]j: $$(ASSERT_H):g' \ - -e 's: \([.]/\)*config[.]j: $$(CONFIG_H):g' \ - -e 's: \([.]/\)*convert[.]j: $$(CONVERT_H):g' \ - -e 's: \([.]/\)*flags[.]j: $$(FLAGS_H):g' \ - -e 's: \([.]/\)*glimits[.]j: $$(GLIMITS_H):g' \ - -e 's: \([.]/\)*hconfig[.]j: $$(HCONFIG_H):g' \ - -e 's: \([.]/\)*input[.]j: $$(INPUT_H):g' \ - -e 's: \([.]/\)*output[.]j: $$(OUTPUT_H):g' \ - -e 's: \([.]/\)*rtl[.]j: $$(RTL_H):g' \ - -e 's: \([.]/\)*system[.]j: $$(SYSTEM_H):g' \ - -e 's: \([.]/\)*tconfig[.]j: $$(TCONFIG_H):g' \ - -e 's: \([.]/\)*tm[.]j: $$(TM_H):g' \ - -e 's: \([.]/\)*toplev[.]j: $$(TOPLEV_H):g' \ - -e 's: \([.]/\)*tree[.]j: $$(TREE_H):g' \ - -e 's: \([.]/\)*str[.]h: stamp-str:g' \ - -e 's:.*g77spec.*::g' \ - -e 's%^\(.*\)[ ]*: %\1: %g' - -# This rule is just a handy way to build the g77 derived files without -# having the gcc source tree around. -g77-only: force - if [ -f g77.texi ] ; then \ - (cd ..; $(MAKE) srcdir=. HOST_CC=cc HOST_CFLAGS=-g -f f/Make-lang.in f77.rebuilt); \ - else \ - $(MAKE) srcdir=. HOST_CC=cc HOST_CFLAGS=-g -f f/Make-lang.in f77.rebuilt; \ - fi - -# -# These exist for maintenance purposes. - -# Update the tags table. -TAGS: force - cd $(srcdir)/f ; \ - etags *.c *.h ; \ - echo 'l' | tr 'l' '\f' >> TAGS ; \ - etags -a ../*.h ../*.c; - -.PHONY: none all all.indirect f77.rebuilt compiler native deps-kinda g77-only TAGS force - -force: diff --git a/contrib/gcc/f/NEWS b/contrib/gcc/f/NEWS deleted file mode 100644 index b8b5243..0000000 --- a/contrib/gcc/f/NEWS +++ /dev/null @@ -1,412 +0,0 @@ -*Note:* This file is automatically generated from the files -`news0.texi' and `news.texi'. `NEWS' is *not* a source file, although -it is normally included within source distributions. - - This file lists news about the GCC-2.95 version (and some other -versions) of the GNU Fortran compiler. Copyright (C) 1995-1999 Free -Software Foundation, Inc. You may copy, distribute, and modify it -freely as long as you preserve this copyright notice and permission -notice. - -News About GNU Fortran -********************** - - Changes made to recent versions of GNU Fortran are listed below, -with the most recent version first. - - The changes are generally listed in order: - - 1. Code-generation and run-time-library bug-fixes - - 2. Compiler and run-time-library crashes involving valid code that - have been fixed - - 3. New features - - 4. Fixes and enhancements to existing features - - 5. New diagnostics - - 6. Internal improvements - - 7. Miscellany - - This order is not strict--for example, some items involve a -combination of these elements. - - Note that two variants of `g77' are tracked below. The `egcs' -variant is described vis-a-vis previous versions of `egcs' and/or an -official FSF version, as appropriate. - - Therefore, `egcs' versions sometimes have multiple listings to help -clarify how they differ from other versions, though this can make -getting a complete picture of what a particular `egcs' version contains -somewhat more difficult. - - *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. - - Nevertheless, information on *previous* releases of `g77', below, is -likely to be more up-to-date and accurate than the equivalent -information that accompanied those releases, assuming the last-updated -date of the information below is later than the dates of those releases. - - That's due to attempts to keep this development version of news -about previous `g77' versions up-to-date. - - An online, "live" version of this document (derived directly from -the mainline, development version of `g77' within `egcs') is available -at `http://www.gnu.org/software/gcc/onlinedocs/g77_news.html'. - - The following information was last updated on 1999-07-08: - -In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versus `EGCS' 1.1.2: -======================================================= - - 1. `g77' no longer generates bad code for assignments, or other - conversions, of `REAL' or `COMPLEX' constant expressions to type - `INTEGER(KIND=2)' (often referred to as `INTEGER*8'). - - For example, `INTEGER*8 J; J = 4E10' now works as documented. - - 2. `g77' no longer truncates `INTEGER(KIND=2)' (usually `INTEGER*8') - subscript expressions when evaluating array references on systems - with pointers widers than `INTEGER(KIND=1)' (such as Alphas). - - 3. `g77' no longer generates bad code for an assignment to a - `COMPLEX' variable or array that partially overlaps one or more of - the sources of the same assignment (a very rare construction). It - now assigns through a temporary, in cases where such partial - overlap is deemed possible. - - 4. `libg2c' (`libf2c') no longer loses track of the file being worked - on during a `BACKSPACE' operation. - - 5. `libg2c' (`libf2c') fixes a bug whereby input to a `NAMELIST' read - involving a repeat count, such as `K(5)=10*3', was not properly - handled by `libf2c'. The first item was written to `K(5)', but - the remaining nine were written elsewhere (still within the array), - not necessarily starting at `K(6)'. - - 6. Automatic arrays now seem to be working on HP-UX systems. - - 7. The `Date' intrinsic now returns the correct result on big-endian - systems. - - 8. Fix `g77' so it no longer crashes when compiling I/O statements - using keywords that define `INTEGER' values, such as `IOSTAT=J', - where J is other than default `INTEGER' (such as `INTEGER*2'). - Instead, it issues a diagnostic. - - 9. Fix `g77' so it properly handles `DATA A/RPT*VAL/', where RPT is - not default `INTEGER', such as `INTEGER*2', instead of producing a - spurious diagnostic. Also fix `DATA (A(I),I=1,N)', where `N' is - not default `INTEGER' to work instead of crashing `g77'. - - 10. The `-ax' option is now obeyed when compiling Fortran programs. - (It is passed to the `f771' driver.) - - * The new `-fbounds-check' option causes `g77' to compile run-time - bounds checks of array subscripts, as well as of substring start - and end points. - - * `libg2c' now supports building as multilibbed library, which - provides better support for systems that require options such as - `-mieee' to work properly. - - * Source file names with the suffixes `.FOR' and `.FPP' now are - recognized by `g77' as if they ended in `.for' and `.fpp', - respectively. - - * The order of arguments to the *subroutine* forms of the `CTime', - `DTime', `ETime', and `TtyNam' intrinsics has been swapped. The - argument serving as the returned value for the corresponding - function forms now is the *second* argument, making these - consistent with the other subroutine forms of `libU77' intrinsics. - - * `g77' now warns about a reference to an intrinsic that has an - interface that is not Year 2000 (Y2K) compliant. Also, `libg2c' - has been changed to increase the likelihood of catching references - to the implementations of these intrinsics using the `EXTERNAL' - mechanism (which would avoid the new warnings). - - 11. `g77' now warns about a reference to a function when the - corresponding *subsequent* function program unit disagrees with - the reference concerning the type of the function. - - * `-fno-emulate-complex' is now the default option. This should - result in improved performance of code that uses the `COMPLEX' - data type. - - * The `-malign-double' option now reliably aligns *all* - double-precision variables and arrays on Intel x86 targets. - - 12. Even without the `-malign-double' option, `g77' reliably aligns - local double-precision variables that are not in `EQUIVALENCE' - areas and not `SAVE''d. - - 13. `g77' now open-codes ("inlines") division of `COMPLEX' operands - instead of generating a run-time call to the `libf2c' routines - `c_div' or `z_div', unless the `-Os' option is specified. - - * `g77' no longer generates code to maintain `errno', a C-language - concept, when performing operations such as the `SqRt' intrinsic. - - 14. `g77' developers can temporarily use the `-fflatten-arrays' option - to compare how the compiler handles code generation using C-like - constructs as compared to the Fortran-like method constructs - normally used. - - 15. A substantial portion of the `g77' front end's code-generation - component was rewritten. It now generates code using facilities - more robustly supported by the `gcc' back end. One effect of this - rewrite is that some codes no longer produce a spurious "label LAB - used before containing binding contour" message. - - * Support for the `-fugly' option has been removed. - - 16. Improve documentation and indexing, including information on Year - 2000 (Y2K) compliance, and providing more information on internals - of the front end. - - 17. Upgrade to `libf2c' as of 1999-05-10. - -In 0.5.24 versus 0.5.23: -======================== - - There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 -is the version number designated for bug fixes and, perhaps, some new -features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as -0.5.24 was planned to require. - - Due to `EGCS' becoming `GCC' (which is now an acronym for "GNU -Compiler Collection"), and `EGCS' 1.2 becoming officially designated -`GCC' 2.95, there seems to be no need for an actual 0.5.24 release. - - To reduce the confusion already resulting from use of 0.5.24 to -designate `g77' versions within `EGCS' versions 1.0 and 1.1, as well as -in versions of `g77' documentation and notices during that period, -"mainline" `g77' version numbering resumes at 0.5.25 with `GCC' 2.95 -(`EGCS' 1.2), skipping over 0.5.24 as a placeholder version number. - - To repeat, there is no `g77' 0.5.24, but there is now a 0.5.25. -Please remain calm and return to your keypunch units. - -In `EGCS' 1.1.2 versus `EGCS' 1.1.1: -==================================== - - * Fix the `IDate' intrinsic (VXT) (in `libg2c') so the returned year - is in the documented, non-Y2K-compliant range of 0-99, instead of - being returned as 100 in the year 2000. - - * Fix the `Date_and_Time' intrinsic (in `libg2c') to return the - milliseconds value properly in VALUES(8). - - * Fix the `LStat' intrinsic (in `libg2c') to return device-ID - information properly in SARRAY(7). - - * Improve documentation. - -In `EGCS' 1.1.1 versus `EGCS' 1.1: -================================== - - * Fix `libg2c' so it performs an implicit `ENDFILE' operation (as - appropriate) whenever a `REWIND' is done. - - (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s - version of `libf2c'.) - - * Fix `libg2c' so it no longer crashes with a spurious diagnostic - upon doing any I/O following a direct formatted write. - - (This bug was introduced in 0.5.23 and `egcs' 1.1 in `g77''s - version of `libf2c'.) - - * Fix `g77' so it no longer crashes compiling references to the - `Rand' intrinsic on some systems. - - * Fix `g77' portion of installation process so it works better on - some systems (those with shells requiring `else true' clauses on - `if' constructs for the completion code to be set properly). - -In `EGCS' 1.1 versus `EGCS' 1.0.3: -================================== - - 18. Fix bugs in the `libU77' intrinsic `HostNm' that wrote one byte - beyond the end of its `CHARACTER' argument, and in the `libU77' - intrinsics `GMTime' and `LTime' that overwrote their arguments. - - 19. Assumed arrays with negative bounds (such as `REAL A(-1:*)') no - longer elicit spurious diagnostics from `g77', even on systems - with pointers having different sizes than integers. - - This bug is not known to have existed in any recent version of - `gcc'. It was introduced in an early release of `egcs'. - - 20. Valid combinations of `EXTERNAL', passing that external as a dummy - argument without explicitly giving it a type, and, in a subsequent - program unit, referencing that external as an external function - with a different type no longer crash `g77'. - - 21. `CASE DEFAULT' no longer crashes `g77'. - - 22. The `-Wunused' option no longer issues a spurious warning about - the "master" procedure generated by `g77' for procedures - containing `ENTRY' statements. - - * Support `FORMAT(I<EXPR>)' when EXPR is a compile-time constant - `INTEGER' expression. - - * Fix `g77' `-g' option so procedures that use `ENTRY' can be - stepped through, line by line, in `gdb'. - - * Allow any `REAL' argument to intrinsics `Second' and `CPU_Time'. - - * Use `tempnam', if available, to open scratch files (as in - `OPEN(STATUS='SCRATCH')') so that the `TMPDIR' environment - variable, if present, is used. - - * `g77''s version of `libf2c' separates out the setting of global - state (such as command-line arguments and signal handling) from - `main.o' into distinct, new library archive members. - - This should make it easier to write portable applications that - have their own (non-Fortran) `main()' routine properly set up the - `libf2c' environment, even when `libf2c' (now `libg2c') is a - shared library. - - 23. `g77' no longer installs the `f77' command and `f77.1' man page in - the `/usr' or `/usr/local' heirarchy, even if the `f77-install-ok' - file exists in the source or build directory. See the - installation documentation for more information. - - 24. `g77' no longer installs the `libf2c.a' library and `f2c.h' - include file in the `/usr' or `/usr/local' heirarchy, even if the - `f2c-install-ok' or `f2c-exists-ok' files exist in the source or - build directory. See the installation documentation for more - information. - - 25. The `libf2c.a' library produced by `g77' has been renamed to - `libg2c.a'. It is installed only in the `gcc' "private" directory - heirarchy, `gcc-lib'. This allows system administrators and users - to choose which version of the `libf2c' library from `netlib' they - wish to use on a case-by-case basis. See the installation - documentation for more information. - - 26. The `f2c.h' include (header) file produced by `g77' has been - renamed to `g2c.h'. It is installed only in the `gcc' "private" - directory heirarchy, `gcc-lib'. This allows system administrators - and users to choose which version of the include file from - `netlib' they wish to use on a case-by-case basis. See the - installation documentation for more information. - - * The `g77' command now expects the run-time library to be named - `libg2c.a' instead of `libf2c.a', to ensure that a version other - than the one built and installed as part of the same `g77' version - is picked up. - - 27. During the configuration and build process, `g77' creates - subdirectories it needs only as it needs them. Other cleaning up - of the configuration and build process has been performed as well. - - 28. `install-info' now used to update the directory of Info - documentation to contain an entry for `g77' (during installation). - - * Some diagnostics have been changed from warnings to errors, to - prevent inadvertent use of the resulting, probably buggy, programs. - These mostly include diagnostics about use of unsupported features - in the `OPEN', `INQUIRE', `READ', and `WRITE' statements, and - about truncations of various sorts of constants. - - 29. Improve compilation of `FORMAT' expressions so that a null byte is - appended to the last operand if it is a constant. This provides a - cleaner run-time diagnostic as provided by `libf2c' for statements - like `PRINT '(I1', 42'. - - 30. Improve documentation and indexing. - - 31. The upgrade to `libf2c' as of 1998-06-18 should fix a variety of - problems, including those involving some uses of the `T' format - specifier, and perhaps some build (porting) problems as well. - -In `EGCS' 1.1 versus `g77' 0.5.23: -================================== - - 32. Fix a code-generation bug that afflicted Intel x86 targets when - `-O2' was specified compiling, for example, an old version of the - `DNRM2' routine. - - The x87 coprocessor stack was being mismanaged in cases involving - assigned `GOTO' and `ASSIGN'. - - 33. `g77' no longer produces incorrect code and initial values for - `EQUIVALENCE' and `COMMON' aggregates that, due to "unnatural" - ordering of members vis-a-vis their types, require initial padding. - - 34. Fix `g77' crash compiling code containing the construct - `CMPLX(0.)' or similar. - - 35. `g77' no longer crashes when compiling code containing - specification statements such as `INTEGER(KIND=7) PTR'. - - 36. `g77' no longer crashes when compiling code such as `J = SIGNAL(1, - 2)'. - - * `g77' now treats `%LOC(EXPR)' and `LOC(EXPR)' as "ordinary" - expressions when they are used as arguments in procedure calls. - This change applies only to global (filewide) analysis, making it - consistent with how `g77' actually generates code for these cases. - - Previously, `g77' treated these expressions as denoting special - "pointer" arguments for the purposes of filewide analysis. - - 37. Fix `g77' crash (or apparently infinite run-time) when compiling - certain complicated expressions involving `COMPLEX' arithmetic - (especially multiplication). - - * Align static double-precision variables and arrays on Intel x86 - targets regardless of whether `-malign-double' is specified. - - Generally, this affects only local variables and arrays having the - `SAVE' attribute or given initial values via `DATA'. - - * The `g77' driver now ensures that `-lg2c' is specified in the link - phase prior to any occurrence of `-lm'. This prevents - accidentally linking to a routine in the SunOS4 `-lm' library when - the generated code wants to link to the one in `libf2c' (`libg2c'). - - * `g77' emits more debugging information when `-g' is used. - - This new information allows, for example, `which __g77_length_a' - to be used in `gdb' to determine the type of the phantom length - argument supplied with `CHARACTER' variables. - - This information pertains to internally-generated type, variable, - and other information, not to the longstanding deficiencies - vis-a-vis `COMMON' and `EQUIVALENCE'. - - * The F90 `Date_and_Time' intrinsic now is supported. - - * The F90 `System_Clock' intrinsic allows the optional arguments - (except for the `Count' argument) to be omitted. - - 38. Upgrade to `libf2c' as of 1998-06-18. - - 39. Improve documentation and indexing. - -In previous versions: -===================== - - Information on previous versions is not provided in this -`egcs/gcc/f/NEWS' file, to keep it short. See `egcs/gcc/f/news.texi', -or any of its other derivations (Info, HTML, dvi forms) for such -information. - diff --git a/contrib/gcc/f/assert.j b/contrib/gcc/f/assert.j deleted file mode 100644 index d9b9daa..0000000 --- a/contrib/gcc/f/assert.j +++ /dev/null @@ -1,27 +0,0 @@ -/* assert.j -- Wrapper for GCC's assert.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_assert -#define _J_f_assert -#include "assert.h" -#endif -#endif diff --git a/contrib/gcc/f/config.j b/contrib/gcc/f/config.j deleted file mode 100644 index fda03eb..0000000 --- a/contrib/gcc/f/config.j +++ /dev/null @@ -1,27 +0,0 @@ -/* config.j -- Wrapper for GCC's config.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_config -#define _J_f_config -#include "config.h" -#endif -#endif diff --git a/contrib/gcc/f/convert.j b/contrib/gcc/f/convert.j deleted file mode 100644 index 76b8e02..0000000 --- a/contrib/gcc/f/convert.j +++ /dev/null @@ -1,28 +0,0 @@ -/* convert.j -- Wrapper for GCC's convert.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_convert -#define _J_f_convert -#include "tree.j" -#include "convert.h" -#endif -#endif diff --git a/contrib/gcc/f/flags.j b/contrib/gcc/f/flags.j deleted file mode 100644 index 44587a4..0000000 --- a/contrib/gcc/f/flags.j +++ /dev/null @@ -1,27 +0,0 @@ -/* flags.j -- Wrapper for GCC's flags.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_flags -#define _J_f_flags -#include "flags.h" -#endif -#endif diff --git a/contrib/gcc/f/g77install.texi b/contrib/gcc/f/g77install.texi deleted file mode 100644 index abc6396..0000000 --- a/contrib/gcc/f/g77install.texi +++ /dev/null @@ -1,2251 +0,0 @@ -@c Copyright (C) 1995-1999 Free Software Foundation, Inc. -@c This is part of the G77 manual. -@c For copying conditions, see the file g77.texi. - -@c The text of this file appears in the file INSTALL -@c in the G77 distribution, as well as in the G77 manual. - -@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-1999 - -@set last-update-install 1999-07-17 - -@include root.texi - -@ifset DOC-INSTALL -@c The immediately following lines apply to the INSTALL file -@c which is generated using this file. -@emph{Note:} This file is automatically generated from the files -@file{install0.texi} and @file{g77install.texi}. -@file{INSTALL} is @emph{not} a source file, -although it is normally included within source distributions. - -This file contains installation information for the GNU Fortran compiler. -Copyright (C) @value{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. - -@node Top,,, (dir) -@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 -@cindex installing, GNU Fortran -@end ifset - -The following information describes how to install @code{g77}. - -@clear OMIT-FSF-G77 - -@ifset EGCS-G77 -@set OMIT-FSF-G77 -@end ifset - -@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 -@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, -and might not accurately reflect the @code{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 @emph{released} @code{g77}. - -In particular, while this information is intended to apply to -the @value{which-g77} version of @code{g77}, -only an official @emph{release} of that version -is expected to contain documentation that is -most consistent with the @code{g77} product in that version. -@end ifset - -The following information was last updated on @value{last-update-install}: - -@menu -* Prerequisites:: Make sure your system is ready for @code{g77}. -* Problems Installing:: Known trouble areas. -* Settings:: Changing @code{g77} internals before building. -* Quick Start:: The easier procedure for non-experts. -* Complete Installation:: For experts, or those who want to be: the details. -* Distributing Binaries:: If you plan on distributing your @code{g77}. -@end menu - -@node Prerequisites -@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 -@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 -@cindex problems installing -@cindex installation problems - -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. - -@xref{Installation Problems,,,gcc,Using and Porting GNU CC}, -for more information on installation problems that can afflict -either @code{gcc} or @code{g77}. - -@menu -* General Problems:: Problems afflicting most or all systems. -* System-specific Problems:: Problems afflicting particular systems. -* Cross-compiler Problems:: Problems afflicting cross-compilation setups. -@end menu - -@node General Problems -@subsection General Problems - -These problems can occur on most or all systems. - -@menu -* GNU C Required:: Why even ANSI C is not enough. -* Patching GNU CC:: Why @code{gcc} needn't be patched. -* Building GNU CC Necessary:: Why you can't build @emph{just} Fortran. -* Missing strtoul or bsearch:: When linking @code{f771} fails. -* Cleanup Kills Stage Directories:: For @code{g77} developers. -* LANGUAGES Macro Ignored:: Sometimes @code{LANGUAGES} is ignored. -@end menu - -@node GNU C Required -@subsubsection GNU C Required -@cindex GNU C required -@cindex requirements, GNU C - -Compiling @code{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 @code{gcc} -installed to build @code{g77}. -As long as you have a working C compiler, you can use a -``bootstrap'' build to automate the process of first building -@code{gcc} using the working C compiler you have, then building -@code{g77} and rebuilding @code{gcc} using that just-built @code{gcc}, -and so on. - -@node Patching GNU CC -@subsubsection Patching GNU CC -@cindex patch files -@cindex GBE - -@code{g77} no longer requires application of a patch file -to the @code{gcc} compiler tree. -In fact, no such patch file is distributed with @code{g77}. -This is as of version 0.5.23 -and @code{egcs} version 1.0. - -@node Building GNU CC Necessary -@subsubsection Building GNU CC Necessary -@cindex @code{gcc}, building -@cindex building gcc - -It should be possible to build the runtime without building @code{cc1} -and other non-Fortran items, but, for now, an easy way to do that -is not yet established. - -@node Missing strtoul or bsearch -@subsubsection Missing strtoul or bsearch -@cindex bsearch -@cindex _bsearch -@cindex strtoul -@cindex _strtoul -@cindex undefined reference (_bsearch) -@cindex undefined reference (_strtoul) -@cindex f771, linking error for -@cindex linking error for f771 -@cindex @code{ld}, error linking f771 -@cindex @code{ld}, can't find _bsearch -@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 -@cindex stage directories -@cindex make clean - -It'd be helpful if @code{g77}'s @file{Makefile.in} or @file{Make-lang.in} -would create the various @file{stage@var{n}} 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 @code{g77} -and version 1.1 of @code{egcs}. -Configuration itself no longer creates any particular directories -that are unique to @code{g77}. -The build procedures in @file{Make-lang.in} take care of -that, on demand. - -@node LANGUAGES Macro Ignored -@subsubsection LANGUAGES Macro Ignored -@cindex @code{LANGUAGES} macro ignored -@cindex ignoring @code{LANGUAGES} macro - -Prior to version 0.5.23 of @code{g77} -and version 1.1 of @code{egcs}, -@code{g77} would sometimes ignore -the absence of @code{f77} and @code{F77} in the -@code{LANGUAGES} macro definition used for the -@code{make} command being processed. - -As of @code{g77} version 0.5.23 -and @code{egcs} version 1.1, -@code{g77} now obeys this macro -in all relevant situations. - -However, in versions of @code{gcc} through 2.8.1, -non-@code{g77} portions of @code{gcc}, -such as @code{g++}, -are known to go ahead and perform various -language-specific activities when their -respective language strings do not appear -in the @code{LANGUAGES} macro in effect -during that invocation of @code{make}. - -It is expected that these remaining problems will -be fixed in a future version of @code{gcc}. - -@node System-specific Problems -@subsection System-specific Problems - -@cindex AIX -A linker bug on some versions of AIX 4.1 might prevent building -when @code{g77} is built within @code{gcc}. -It might also occur when building within @code{egcs}. -@ifset DOC-G77 -@xref{LINKFAIL}. -@end ifset - -@node Cross-compiler Problems -@subsection Cross-compiler Problems -@cindex cross-compiler, problems - -@code{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, @code{g77} can be ported to any configuration to which -@code{gcc}, @code{f2c}, and @code{libf2c} can be ported and made -to work together, aside from the known problems described in this -manual. -If you want to port @code{g77} to a particular configuration, -you should first make sure @code{gcc} and @code{libf2c} can be -ported to that configuration before focusing on @code{g77}, because -@code{g77} is so dependent on them. - -Even for cases where @code{gcc} and @code{libf2c} work, -you might run into problems with cross-compilation on certain machines, -for several reasons. - -@itemize @bullet -@item -There is one known bug -(a design bug to be fixed in 0.6) that prevents configuration of -@code{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. - -@item -@code{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. - -@item -Improvements to the way @code{libg2c} is built could make -building @code{g77} as a cross-compiler easier---for example, -passing and using @samp{$(LD)} and @samp{$(AR)} in the appropriate -ways. -(This is improved in the @code{egcs} version of @code{g77}, -especially as of version 1.1.) - -@item -There are still some challenges putting together the right -run-time libraries (needed by @code{libg2c}) for a target -system, depending on the systems involved in the configuration. -(This is a general problem with cross-compilation, and with -@code{gcc} in particular.) -@end itemize - -@node Settings -@section Changing Settings Before Building - -Here are some internal @code{g77} settings that can be changed -by editing source files in @file{@value{path-g77}/} before building. - -This information, and perhaps even these settings, represent -stop-gap solutions to problems people doing various ports -of @code{g77} have encountered. -As such, none of the following information is expected to -be pertinent in future versions of @code{g77}. - -@menu -* Larger File Unit Numbers:: Raising @code{MXUNIT}. -* Always Flush Output:: Synchronizing write errors. -* Maximum Stackable Size:: Large arrays forced off the stack. -* Floating-point Bit Patterns:: Possible programs building @code{g77} - as a cross-compiler. -* Large Initialization:: Large arrays with @code{DATA} - initialization. -* Alpha Problems Fixed:: Problems with 64-bit systems like - Alphas now fixed? -@end menu - -@node Larger File Unit Numbers -@subsection Larger File Unit Numbers -@cindex MXUNIT -@cindex unit numbers -@cindex maximum unit number -@cindex illegal unit number -@cindex increasing maximum unit number - -As distributed, whether as part of @code{f2c} or @code{g77}, -@code{libf2c} accepts file unit numbers only in the range -0 through 99. -For example, a statement such as @samp{WRITE (UNIT=100)} causes -a run-time crash in @code{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 @code{MXUNIT} macro, which represents the maximum unit -number, to an appropriately higher value. - -To do this, edit the file @file{@value{path-libf2c}/libI77/fio.h} in your -@code{g77} source tree, changing the following line: - -@example -#define MXUNIT 100 -@end example - -Change the line so that the value of @code{MXUNIT} is defined to be -at least one @emph{greater} than the maximum unit number used by -the Fortran programs on your system. - -(For example, a program that does @samp{WRITE (UNIT=255)} would require -@code{MXUNIT} set to at least 256 to avoid crashing.) - -Then build or rebuild @code{g77} as appropriate. - -@emph{Note:} Changing this macro has @emph{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 @samp{WRITE (UNIT=100)}, -but the library and operating system underlying @code{libf2c} might -disallow it if many other files have already been opened (via @code{OPEN} or -implicitly via @code{READ}, @code{WRITE}, and so on). -Information on how to increase these other limits should be found -in your system's documentation. - -@node Always Flush Output -@subsection Always Flush Output -@cindex ALWAYS_FLUSH -@cindex synchronous write errors -@cindex disk full -@cindex flushing output -@cindex fflush() -@cindex I/O, flushing -@cindex output, flushing -@cindex writes, flushing -@cindex NFS -@cindex network file system - -Some Fortran programs require output -(writes) to be flushed to the operating system (under UNIX, -via the @code{fflush()} library call) so that errors, -such as disk full, are immediately flagged via the relevant -@code{ERR=} and @code{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). - -@code{libg2c} supports flagging write errors immediately when -it is built with the @code{ALWAYS_FLUSH} macro defined. -This results in a @code{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 @code{g77} you are building, you might wish to -modify the @code{g77} source tree so that the version of -@code{libg2c} is built with the @code{ALWAYS_FLUSH} macro -defined, enabling this behavior. - -To do this, find this line in @file{@value{path-libf2c}/f2c.h} in -your @code{g77} source tree: - -@example -/* #define ALWAYS_FLUSH */ -@end example - -Remove the leading @samp{/*@w{ }}, -so the line begins with @samp{#define}, -and the trailing @samp{@w{ }*/}. - -Then build or rebuild @code{g77} as appropriate. - -@node Maximum Stackable Size -@subsection Maximum Stackable Size -@vindex FFECOM_sizeMAXSTACKITEM -@cindex code, stack variables -@cindex maximum stackable size -@cindex stack, allocation -@cindex segmentation violation -@code{g77}, on most machines, puts many variables and arrays on the stack -where possible, and can be configured (by changing -@code{FFECOM_sizeMAXSTACKITEM} in @file{@value{path-g77}/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). - -@emph{Note:} Putting more variables and arrays on the stack -might cause problems due to system-dependent limits on stack size. -Also, the value of @code{FFECOM_sizeMAXSTACKITEM} has no -effect on automatic variables and arrays. -@xref{But-bugs}, for more information. - -@node Floating-point Bit Patterns -@subsection Floating-point Bit Patterns - -@cindex cross-compiler, building -@cindex floating-point bit patterns -@cindex bit patterns -The @code{g77} build will crash if an attempt is made to build -it as a cross-compiler -for a target when @code{g77} cannot reliably determine the bit pattern of -floating-point constants for the target. -Planned improvements for version 0.6 of @code{g77} -will give it the capabilities it needs to not have to crash the build -but rather generate correct code for the target. -(Currently, @code{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 @samp{EQUIVALENCE (I,R)} and @samp{DATA R/9.43578/}.) - -@node Large Initialization -@subsection Initialization of Large Aggregate Areas - -@cindex speed, of compiler -@cindex slow compiler -@cindex memory utilization -@cindex large initialization -@cindex aggregate initialization -A warning message is issued when @code{g77} sees code that provides -initial values (e.g. via @code{DATA}) to an aggregate area (@code{COMMON} -or @code{EQUIVALENCE}, or even a large enough array or @code{CHARACTER} -variable) -that is large enough to increase @code{g77}'s compile time by roughly -a factor of 10. - -This size currently is quite small, since @code{g77} -currently has a known bug requiring too much memory -and time to handle such cases. -In @file{@value{path-g77}/data.c}, the macro -@code{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 @code{g77} for -the change to take effect. - -Note that, as of version 0.5.18, improvements have -reduced the scope of the problem for @emph{sparse} -initialization of large arrays, especially those -with large, contiguous uninitialized areas. -However, the warning is issued at a point prior to -when @code{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. - -@node Alpha Problems Fixed -@subsection Alpha Problems Fixed - -@cindex Alpha, support -@cindex 64-bit systems -@code{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 @code{g77} was known to not work -properly on such configurations. - -As of version 0.5.20, @code{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. - -@node Quick Start -@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 -@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 -@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 cexp.c} -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 -@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/contrib/gcc/f/glimits.j b/contrib/gcc/f/glimits.j deleted file mode 100644 index 0262258..0000000 --- a/contrib/gcc/f/glimits.j +++ /dev/null @@ -1,28 +0,0 @@ -/* glimits.j -- Wrapper for GCC's glimits.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#if !USE_HOST_LIMITS -#include "glimits.h" -#else -#include <limits.h> -#endif -#endif diff --git a/contrib/gcc/f/hconfig.j b/contrib/gcc/f/hconfig.j deleted file mode 100644 index c73930c..0000000 --- a/contrib/gcc/f/hconfig.j +++ /dev/null @@ -1,27 +0,0 @@ -/* hconfig.j -- Wrapper for GCC's hconfig.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_hconfig -#define _J_f_hconfig -#include "hconfig.h" -#endif -#endif diff --git a/contrib/gcc/f/input.j b/contrib/gcc/f/input.j deleted file mode 100644 index cc9ff24..0000000 --- a/contrib/gcc/f/input.j +++ /dev/null @@ -1,27 +0,0 @@ -/* input.j -- Wrapper for GCC's input.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_input -#define _J_f_input -#include "input.h" -#endif -#endif diff --git a/contrib/gcc/f/output.j b/contrib/gcc/f/output.j deleted file mode 100644 index 8816b75..0000000 --- a/contrib/gcc/f/output.j +++ /dev/null @@ -1,27 +0,0 @@ -/* output.j -- Wrapper for GCC's output.h - Copyright (C) 1998 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_output -#define _J_f_output -#include "output.h" -#endif -#endif diff --git a/contrib/gcc/f/proj.c b/contrib/gcc/f/proj.c deleted file mode 100644 index 237ebe0..0000000 --- a/contrib/gcc/f/proj.c +++ /dev/null @@ -1,68 +0,0 @@ -/* proj.c file for GNU Fortran - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#include "proj.h" -#include "glimits.j" - -#ifndef HAVE_STRTOUL -unsigned long int -strtoul (const char *nptr, char **endptr, int base) -{ - unsigned long int number = 0; - unsigned long int old_number = 0; - - assert (base == 10); - assert (endptr == NULL); - - while (ISDIGIT (*nptr)) - { - number = old_number * 10 + (*(nptr++) - '0'); - if ((number <= old_number) && (old_number != 0)) - return ULONG_MAX; - old_number = number; - } - - return number; -} -#endif - -#ifndef HAVE_BSEARCH -void * -bsearch (const void *key, const void *base, size_t nmemb, size_t size, - int (*compar) (const void *, const void *)) -{ - size_t i; - int cmp; - - /* We do a dumb incremental search, not a binary search, for now. */ - - for (i = 0; i < nmemb; ++i) - { - if ((cmp = (*compar) (key, base)) == 0) - return base; - if (cmp < 0) - break; - base += size; - } - - return NULL; -} -#endif diff --git a/contrib/gcc/f/rtl.j b/contrib/gcc/f/rtl.j deleted file mode 100644 index ab78e3a..0000000 --- a/contrib/gcc/f/rtl.j +++ /dev/null @@ -1,28 +0,0 @@ -/* rtl.j -- Wrapper for GCC's rtl.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_rtl -#define _J_f_rtl -#include "config.j" -#include "rtl.h" -#endif -#endif diff --git a/contrib/gcc/f/system.j b/contrib/gcc/f/system.j deleted file mode 100644 index 38547c8..0000000 --- a/contrib/gcc/f/system.j +++ /dev/null @@ -1,27 +0,0 @@ -/* system.j -- Wrapper for GCC's system.h - Copyright (C) 1998 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_system -#define _J_f_system -#include "system.h" -#endif -#endif diff --git a/contrib/gcc/f/tconfig.j b/contrib/gcc/f/tconfig.j deleted file mode 100644 index 9c4c3ec..0000000 --- a/contrib/gcc/f/tconfig.j +++ /dev/null @@ -1,27 +0,0 @@ -/* tconfig.j -- Wrapper for GCC's tconfig.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_tconfig -#define _J_f_tconfig -#include "tconfig.h" -#endif -#endif diff --git a/contrib/gcc/f/tm.j b/contrib/gcc/f/tm.j deleted file mode 100644 index e0d7594..0000000 --- a/contrib/gcc/f/tm.j +++ /dev/null @@ -1,27 +0,0 @@ -/* tm.j -- Wrapper for GCC's tm.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_tm -#define _J_f_tm -#include "tm.h" -#endif -#endif diff --git a/contrib/gcc/f/toplev.j b/contrib/gcc/f/toplev.j deleted file mode 100644 index 4b8b797..0000000 --- a/contrib/gcc/f/toplev.j +++ /dev/null @@ -1,27 +0,0 @@ -/* toplev.j -- Wrapper for GCC's toplev.h - Copyright (C) 1998 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_toplev -#define _J_f_toplev -#include "toplev.h" -#endif -#endif diff --git a/contrib/gcc/f/tree.j b/contrib/gcc/f/tree.j deleted file mode 100644 index b0bf98a..0000000 --- a/contrib/gcc/f/tree.j +++ /dev/null @@ -1,28 +0,0 @@ -/* tree.j -- Wrapper for GCC's tree.h - Copyright (C) 1995 Free Software Foundation, Inc. - Contributed by James Craig Burley. - -This file is part of GNU Fortran. - -GNU Fortran is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -GNU Fortran is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Fortran; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. */ - -#ifndef MAKING_DEPENDENCIES -#ifndef _J_f_tree -#define _J_f_tree -#include "config.j" -#include "tree.h" -#endif -#endif |