DragonFly On-Line Manual Pages
bfort(1) bfort(1)
NAME
bfort - program to extract short definitions for a Fortran to C
interface
INPUT
filenames
- Names the files from which lint definitions are to be
extracted
-nomsgs
- Do not generate messages for routines that can not be
converted to Fortran.
-nofort
- Generate messages for all routines/macros without a Fortran
counterpart.
-dir name
- Directory for output file
-I name
- file that contains common includes
-mapptr
- translate pointers to integer indices
-ptrprefix
- prefix for names of functions to convert to/from pointers
(default is __). The macro that selects the form based on the
pointer size can be changed with -ptr64.
-anyname
- Generate a single Fortran wrapper that works for almost all
systems, by adding C preprocessor names (see below). These
names can be changed with -fcaps, -fuscore, and -fduscore.
-ferr - Fortran versions return the value of the routine as the last
argument (an integer). This is used in MPI and is a not
uncommon approach for handling error returns.
-mpi - Handle MPI datatypes (some things are pointers by definition)
-mpi2 - Handle MPI datatypes using MPI2 converstion functions (some
things are pointers by definition)
-no_pmpi
- Do not generate PMPI names
-pmpi name
- Change macro used to select MPI profiling version
-noprofile
- Turn off the generation of the profiling version
-mnative
- Multiple indirects are native datatypes (no coercion)
-voidisptr
- Consider "void *" as a pointer to a structure.
-ansi - C routines use ANSI prototype form rather than K&R C form
-ansiheader
- Generate ANSI-C style headers instead of Fortran interfaces
This will be useful for creating ANSI prototypes without ANSI-
fying the code. These use a trick to provide both ANSI and non-
ANSI prototypes. The declarations are wrapped in "ANSI_ARGS",
the definition of which should be
#ifdef ANSI_ARG
#undef ANSI_ARG
#endif
#ifdef __STDC__
#define ANSI_ARGS(a) a
#else
#define ANSI_ARGS(a) ()
#endif
-nodebug
- Do not add
#ifndef DEBUG_ALL
#define DEBUG_ALL
#endif
to the wrapper file.
-anyname
- Generate a single wrapper that can handle the three most
common cases: trailing underscore, no underscore, and all caps.
The choice is based on whether
FORTRANCAPS: Names are uppercase, no trailing underscore
FORTRANUNDERSCORE: Names are lowercase, trailing underscore
are defined.
FORTRANDOUBLEUNDERSCORE: Names are lowercase, with TWO trailing
underscores. This is needed when some versions of "f2c" are
used to generate C for Fortran routines. Note that f2c uses two
underscores ONLY when the name already contains an underscore
(at least on the FreeBSD system that I use that uses f2c). To
handle this case, the generated code contains the second
underscore only when the name already contains one.
If -mapptr is also chosen, then
POINTER_64_BITS
will also be used to determine if pointers are to long to fit in
a 32-bit Fortran integer. Routines that destroy a pointer will
need to manually insert a call to __RmPointer. The routines for
managing the pointers are in ptrcvt.c
In addition, if -mpi is used and -no_pmpi is not, the MPI
profiling names are also generated, surrounded by
MPI_BUILD_PROFILING.
NOTE
We really need a way to specify a general type as a pointer, so that it
will be handled as a pointer. The -mpi option is a kludge for a
pressing need. Eventually should provide a "-ptr name" option and keep
in a search space when looking for known types.
AUTHOR
Bill Gropp
LOCATION
bfort.c
1/5/2000 bfort(1)