]> gcc.gnu.org Git - gcc.git/blame - libf2c/README
Daily bump.
[gcc.git] / libf2c / README
CommitLineData
beaa74ae 11998-08-11
81fea2b1 2
beaa74ae
DL
3This directory contains the libf2c library packaged for use with g77
4to configure and build automatically (in principle!) as part of the
5top-level configure and make steps. g77 names this library `libg2c'
6to avoid conflicts with existing copies of `libf2c' on a system.
81fea2b1 7
beaa74ae
DL
8Some small changes have been made vis-a-vis the netlib distribution of
9libf2c, which comes from <ftp:bell-labs.com/netlib/f2c/> and is maintained
10(excellently) by David M. Gay <dmg@bell-labs.com>. See the Notice files
11for copyright information. We usually try to get g77-specific changes
12rolled back into the libf2c distribution.
81fea2b1
JL
13
14Files that come directly from netlib are either maintained in the
beaa74ae
DL
15libf2c directory under their original names or, if they are not pertinent
16for g77's version of libf2c, under their original names with `.netlib'
17appended. For example, permissions.netlib is a copy of f2c's top-level
18`permissions' file in the netlib distribution. In this case, it applies
19only to the relevant portions of the libF77/ and libI77/ directories; it
20does not apply to the libU77/ directory, which is distributed under
21different licensing arrangements. Similarly, the `makefile.netlib' files
22in the libF77/ and libI77/ subdirectories are copies of the respective
23`makefile' files in the netlib distribution, but are not used when
24building g77's version of libf2c.
25
26The README.netlib files in libF77/ and libI77/ thus might be
81fea2b1
JL
27interesting, but should not be taken as guidelines for how to
28configure and build libf2c in g77's distribution.
29
beaa74ae
DL
30* Read permissions.netlib for licensing conditions that apply to
31 distributing programs containing portions of code in the libF77/ and
32 libI77/ subdirectories. Also read disclaimer.netlib.
33
34* Read libU77/COPYING.LIB for licensing conditions that apply to
35 distributing programs containing portions of code in the libU77/
36 subdirectory.
81fea2b1 37
beaa74ae 38Among the user-visible changes (choices) g77 makes in its version of libf2c:
81fea2b1
JL
39
40- f2c.h configured to default to padding unformatted direct reads
41 (#define Pad_UDread), because that's the behavior most users
42 expect.
43
44- f2c.h configured to default to outputting leading zeros before
45 decimal points in formatted and list-directed output, to be compatible
46 with many other compilers (#define WANT_LEAD_0). Either way is
47 standard-conforming, however, and you should try to avoid writing
48 code that assumes one format or another.
49
50- dtime_() and etime_() are from Dave Love's libU77, not from
51 netlib's libF77.
beaa74ae
DL
52
53- Routines that are intended to be called directly via user code
54 (as in `CALL EXIT', but not the support routines for `OPEN')
55 have been renamed from `<name>' to `G77_<name>_0'. This, in
56 combination with g77 recognizing these names as intrinsics and
57 calling them directly by those names, reduces the likelihood of
58 interface mismatches occurring due to use of compiler options
59 that change code generation, and permits use of these names as
60 both intrinsics and user-supplied routines in applications (as
61 required by the Fortran standards). f2cext.c contains "jacket"
62 routines named `<name>' that call `G77_<name>_0', to support
63 code that relies on calling the relevant routines as `EXTERNAL'
64 routines.
65
66 Note that the `_0' in the name denotes version 0 of the *interface*,
67 not the *implementation*, of a routine. The interface of a
68 given routine *must not change* -- instead, introduce a new copy
69 of the code, with an increment (e.g. `_1') suffix, having the
70 new interface. Whether the previous interface is maintained is
71 not as important as ensuring the routine implementing the new
72 interface is never successfully linked to a call in existing,
73 e.g. previously compiled, code that expects the old interface.
74
75- Version.c in the subdirectories contains g77-specific version
76 information and a routine (per subdirectory) to print both the
77 netlib and g77 version information when called. The `g77 -v'
78 command is designed to trigger this, by compiling, linking, and
79 running a small program that calls the routines in sequence.
80
81- libF77/main.c no longer contains the actual code to copy the
82 argc and argv values into globals or to set up the signal-handling
83 environment. These have been removed to libF77/setarg.c and
84 libF77/setsig.c, respectively. libF77/main.c contains procedure
85 calls to the new code in place of the code itself. This should
86 simplify linking executables with a main() function other than
87 that in libF77/main.c (such as one written by the user in C or
88 C++). See the g77 documentation for more information.
89
90- Complex-arithmetic support routines in libF77/ take a different approach
91 to avoiding problems resulting from aliased input and output arguments,
92 which should avoid particularly unusual alias problems that netlib
93 libf2c might suffer from.
94
95- libF77/signal_.c supports systems with 64-bit pointers and 32-bit
96 integers.
97
98- I/O routines in libI77/ have code to detect attempts to do recursive
99 I/O more "directly", mainly to lead to a clearer diagnostic than
100 typically occurs under such conditions.
101
102- Formatted-I/O routines in libI77/ have code to pretty-print a FORMAT
103 string when printing a fatal diagnostic involving formatted I/O.
104
105- libI77/open.c supports a more robust, perhaps more secure, method
106 of naming temporary files on some systems.
107
108- Some g77-specific handling of building under Microsoft operating
109 systems exists, mainly in libI77/.
This page took 0.180365 seconds and 5 git commands to generate.