+++ /dev/null
-1998-08-11
-
-This directory contains the libf2c library packaged for use with g77
-to configure and build automatically (in principle!) as part of the
-top-level configure and make steps. g77 names this library `libg2c'
-to avoid conflicts with existing copies of `libf2c' on a system.
-
-Some small changes have been made vis-a-vis the netlib distribution of
-libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
-(excellently) by David M. Gay <dmg@bell-labs.com>. See the Notice files
-for copyright information. We usually try to get g77-specific changes
-rolled back into the libf2c distribution.
-
-Files that come directly from netlib are either maintained in the
-libf2c directory under their original names or, if they are not pertinent
-for g77's version of libf2c, under their original names with `.netlib'
-appended. For example, permissions.netlib is a copy of f2c's top-level
-`permissions' file in the netlib distribution. In this case, it applies
-only to the relevant portions of the libF77/ and libI77/ directories; it
-does not apply to the libU77/ directory, which is distributed under
-different licensing arrangements. Similarly, the `makefile.netlib' files
-in the libF77/ and libI77/ subdirectories are copies of the respective
-`makefile' files in the netlib distribution, but are not used when
-building g77's version of libf2c.
-
-The README.netlib files in libF77/ and libI77/ thus might be
-interesting, but should not be taken as guidelines for how to
-configure and build libf2c in g77's distribution.
-
-* Read permissions.netlib for licensing conditions that apply to
- distributing programs containing portions of code in the libF77/ and
- libI77/ subdirectories. Also read disclaimer.netlib.
-
-* Read libU77/COPYING.LIB for licensing conditions that apply to
- distributing programs containing portions of code in the libU77/
- subdirectory.
-
-Among the user-visible changes (choices) g77 makes in its version of libf2c:
-
-- f2c.h configured to default to padding unformatted direct reads
- (#define Pad_UDread), because that's the behavior most users
- expect.
-
-- f2c.h configured to default to outputting leading zeros before
- decimal points in formatted and list-directed output, to be compatible
- with many other compilers (#define WANT_LEAD_0). Either way is
- standard-conforming, however, and you should try to avoid writing
- code that assumes one format or another.
-
-- dtime_() and etime_() are from Dave Love's libU77, not from
- netlib's libF77.
-
-- Routines that are intended to be called directly via user code
- (as in `CALL EXIT', but not the support routines for `OPEN')
- have been renamed from `<name>' to `G77_<name>_0'. This, in
- combination with g77 recognizing these names as intrinsics and
- calling them directly by those names, reduces the likelihood of
- interface mismatches occurring due to use of compiler options
- that change code generation, and permits use of these names as
- both intrinsics and user-supplied routines in applications (as
- required by the Fortran standards). f2cext.c contains "jacket"
- routines named `<name>' that call `G77_<name>_0', to support
- code that relies on calling the relevant routines as `EXTERNAL'
- routines.
-
- Note that the `_0' in the name denotes version 0 of the *interface*,
- not the *implementation*, of a routine. The interface of a
- given routine *must not change* -- instead, introduce a new copy
- of the code, with an increment (e.g. `_1') suffix, having the
- new interface. Whether the previous interface is maintained is
- not as important as ensuring the routine implementing the new
- interface is never successfully linked to a call in existing,
- e.g. previously compiled, code that expects the old interface.
-
-- Version.c in the subdirectories contains g77-specific version
- information and a routine (per subdirectory) to print both the
- netlib and g77 version information when called. The `g77 -v'
- command is designed to trigger this, by compiling, linking, and
- running a small program that calls the routines in sequence.
-
-- libF77/main.c no longer contains the actual code to copy the
- argc and argv values into globals or to set up the signal-handling
- environment. These have been removed to libF77/setarg.c and
- libF77/setsig.c, respectively. libF77/main.c contains procedure
- calls to the new code in place of the code itself. This should
- simplify linking executables with a main() function other than
- that in libF77/main.c (such as one written by the user in C or
- C++). See the g77 documentation for more information.
-
-- Complex-arithmetic support routines in libF77/ take a different approach
- to avoiding problems resulting from aliased input and output arguments,
- which should avoid particularly unusual alias problems that netlib
- libf2c might suffer from.
-
-- libF77/signal_.c supports systems with 64-bit pointers and 32-bit
- integers.
-
-- I/O routines in libI77/ have code to detect attempts to do recursive
- I/O more "directly", mainly to lead to a clearer diagnostic than
- typically occurs under such conditions.
-
-- Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
- string when printing a fatal diagnostic involving formatted I/O.
-
-- libI77/open.c supports a more robust, perhaps more secure, method
- of naming temporary files on some systems.
-
-- Some g77-specific handling of building under Microsoft operating
- systems exists, mainly in libI77/.