This is version 1.5 of Yaf77, which stands for Yet another f77-like driver
for f2c translator. Yaf77 consists of modified version of the original f77
script which comes with the f2c package and F77ext library which adds few
widely used intrinsics not found in the f2c libs. 

Why _another_? Well, almost everyone who uses f2c, modifies the script driver,
and I'm not an exception :). My aim was to have an aka f77 driver that would:
1) accept options that one expects from a real f77 compiler
2) allow transparent passing options to any stage of compilation (i.e.,
   preprocessing, f2c translation, compiling resulting C code etc) if there is a
   need
3) understand (some)  gcc-style flags, so that syntax could be close enough to
   that of g77
4) allow verbose execution so that you see what really happens at any stage
5) have `-help' option :), which currently gives:

usage:
        yaf77 [-options ...] <files>

where options include:
    -c                           no linking, leave relocatables
    -o _file_                    place output in file _file_
    -u                           make the default type of all variables
                                   `undefined'
    -w                           suppress all warning messages
    -w66                         suppress Fortran 66 compatibility warnings
    -free                        assume free-format input
    -C                           check that subscripts  are  within declared
                                   array bounds
    -N_t_nnn                     allow nnn entries in table _t_
    -r8                          promote REAL to DOUBLE PRECISION, COMPLEX 
                                   to DOUBLE COMPLEX
    -bs|-fno-backslash           do not interpret backslash escapes in
                                   character strings
    -g                           add debugging symbols
    -pg                          compile with profiling support
    -no-F77ext                   do not link against F77ext library
    -I _dir_                     append directory _dir_ to  the list of
                                   directories searched for include files;
                                   affects both #include and INCLUDE statements
    -D _macro_<=definition>      pass macro _macro_ to preprocessor
    -U _macro_                   undefines macro _macro_
    -B _prefix_                  add _prefix_ to search path of C compiler
    -b _machine_                 compile for target _machine_
    -aout                        for Linux dual aout/elf boxes, compile in aout
                                   format; the same as `-b i486-linuxaout'
    -m386|-m486|-m586|-mpentium  make specific code optimizations for Intel 
                                   processors (use -mpentium iff your gcc
                                   compiler supports it)
    -ieee|-mieee-fp              make executables confirm to the IEEE floating  
                                   point standards
    -pipe                        use pipes instead of temporary files during
                                   compilation (after f2c translation done)
    -O0                          do not optimize (default)
    -O|-O1 ... -O9               perform different levels of optimization
    -S                           stop before assembling; leave assembler codes
    -fpic                        generate position-independent code (for
                                   dynamic linking)
    -fPIC                        the same as above, even if branches need
                                   large displacements
    -l_library_                  use the library named _library_ when linking
    -L _dir_                     add directory _dir_ to the list of directories
                                   to be searched for `-l'
    -s                           strip executable
    -static                      produce statically linked executables
    -f2carg _arg_                pass argument _arg_ to f2c translator
    -ccarg _arg_                 pass argument _arg_ to C compiler
    -asarg _arg_                 pass argument _arg_ to assembler
    -ldarg _arg_                 pass argument _arg_ to linker
    -v                           verbose execution
    -vv                          be more verbose
    -V                           print out version info and exit
    -help                        print out this message

files:
    *.f                          FORTRAN source files
    *.F                          FORTRAN sources, to be preprocessed
    *.[c,C]                      C/C++ source files 
    *.s                          Assembly language files 
    *.[o,a]                      Relocatables and ar archives
    *.[so,sa]*                   Shared libraries


Another part of the package, libF77ext, is supposed to compensate for the
absence in f2c of some functions and subroutines which are not in ANSI F77, but
are widely used. Those functions can be easily written in C, and have been
posted infinite number of times to the Fortran  newsgroup, but still almost
every tenth question sent to this newsgroup deals with this issue, especially
it concerns Linux users (it's only recently g77 became a part of few
distributions; and it's considered to be less stable at the moment than f2c).
The tiny library of these routines is linked at the final stage of compilation
and can be disabled by demand (see the `-no-F77ext' flag above). 

As of now, the library adds the following extensions:

ETIME(), FDATE(), SECOND(), EXIT(), RAND() and SLEEP().

There are also bitwise functions:

IAND(), IOR(), NOT(), IEOR() and ISHFT()

that are supported by f2c since recently, and  which are not included in the
libary by default. If you want those functions anyway, you have to uncomment
the corresponding line in the F77ext/Makefile. 



Evgeny

   ____________________________________________________________
  / Evgeny Stambulchik  <fnevgeny@plasma-gate.weizmann.ac.il>  \
 /  Plasma Laboratory, Weizmann Institute of Science, Israel \  \
 |  Phone : (972)8-9343-610  == | == FAX   : (972)8-9343-491 |  |
 |  URL   :    http://plasma-gate.weizmann.ac.il/~fnevgeny/  |  |
 |  Finger for PGP key >=====================================+  | 
 |______________________________________________________________| 
