MKABS  (1)                   (V2.00)                   MKABS  (1)

NAME
   mkabs64
   mkabs32
   mkabs   - Creates an executable module from a set of fortran-
             callable user-supplied and/or default libraries.

SYNOPSIS
   mkabs64
   mkabs32
   mkabs   [ progname [supp.o [...] ] ] [-absname "absolute name" ] 
           [-progname "program name" [...] ]  [-obj supp.o [...] ]
           [-prog "user program library" [...] ]  [-xlib ]
           [-sub "user subroutine libraries" [...] ]
           [-FFLAGS ... ] [-echo ] [-map [ "map value" ]

DESCRIPTION
   mkabs creates an absolute module from at least one main routine
   called 'progname'. These routines are 'subroutinezed' versions
   of standart programs. In terms of FORTRAN, this means simply
   replacing the first line statement 'PROGRAM progname' by a
   'SUBROUTINE progname' statement. Several such modules can then
   be included in a single library archive. The name of this archive
   can be passed by the 'prog' key or by the USRLIBP environment
   variable. The accessory routines needed by any of the progname(s)
   can be supplied by the program library (in which case they should
   have been compiled with the respective main programs), by explicit 
   pre-compiled object files, by the second set of libraries pointed 
   to by the 'sub' key, or by the default RPN library. At least one 
   program or one subroutine library name has to specified. The linker 
   searches the libraries in that order, once and only once.  A second
   environment variable USRLIBS can also supply the optional subroutine
   library names, while the standard variable ARMNLIB gives the residence
   of the rpn libraries. The flags used in compiling progname in the
   first place should be re-supplied (quoted) at this time following
   the FFLAGS key, as they most likely indicate which other default
   system libraries should be searched. The result is an executable
   absname.Abs. The mkabs64 and mkabs32 calls are versions of mkabs
   that generate 64- or 32-bit words executables, respectively, while
   mkabs itself generates executables that have word sizes defined
   according to the value of the MACHINE_BITS environment variable,
   if it is defined, or 32-bits, if not.

   progname
  -progname ProgramName1 ...
        Program module to create. File absname.Abs is written in the
        working directory. This is the only required parameter. If
        the second form is used, several modules can be loaded in
        the same absname.Abs

  -absname AbsoluteName
        Name of the executable to be created. If only one program
        name has been supplied, this defaults to "$progname.Abs".
        Otherwise, the default is "Main"

   supp.o ...
  -obj supp.o ...
        Any number of optional pre-compiled object files.
        The second form has to be used if the previous key
        "-progname" is used

   -prog ProgLibName
        Name of the program library archive. This can be supplied
        either explicitly here or through the USRLIBP environment 
        variable. This library set is searched first

   -sub SubLibName
        Name of one or more optional subroutine library archive. 
        Can also be supplied through the USRLIBS environment variable.
        This library set is searched in second

   -xlib [ RPNLibName ]
        Name of the library that contains the RPN lowest-level code.
        The primary default (obtained when xlib is not specified)
        is set to rmnlib.a. Specifying xlib by itself will insert
        the latest version of the usual RPN library. This library
        set is searched last

   -FFLAGS [ CompilerFlags ]
        Fortran compiler flags. These are set to '-O' by default.
        The same flags that where supplied in the original compilation
        of the progname(s) should be given here (except for -c). Note
        that an equal is to be used to escape the minus sign (see
        the first example and the cclargs man page).

   -echo
        Echoes the values used for the parameters.

   -map [ MapValue ]
        The map parameter can be "none","part" or "full". 
        "none" is the default, while specifying map without a value
        implies "part". "part" will produce a map of the code up to
        a load of the system libraries. "full" will include these
        latter. The map itself goes to a file named $absname.map.

EXAMPLES
   1)   export USRLIBS
        USRLIBS="UsrSubLib1.a UsrSubLib2.a"
        mkabs progname supp.o -xlib -prog ProgLib -FFLAGS '=-O:-mp'
        progname.Abs [ optionnal progname parametres ]
   2)   mkabs -progname prog1 prog2 prog3 -absname mainame \
              -obj compile.o -sub malib.a -map
        mainame.Abs -prog1 [ optionnal prog1 parametres ]
        mainame.Abs -prog2 [ optionnal prog2 parametres ]
        mainame.Abs -prog3 [ optionnal prog3 parametres ]

NOTES
        In the previous example, the -prog(i) execution parametres
        are hybrid parametres in that they are defined to be both
        keyword and and positional format. That is, they must have
        a "-" and they must also appear immediatly after $absname.

AUTHOR
        Bernard Dugas - Decembre 1991

UPDATES
        Implement multi-module mains
        Several modifications to the cleanup
        Map are available on MIPS, HP and NEC
        Mario Lepine, Bernard Dugas - October 1994