In many applications, the most natural computer language to write in may
be different from the most natural language to provide a library in. For
example, many scientific computing applications are written in Fortran, while
many software libraries---particularly those dealing with complicated data
structures or dynamic memory management---are written in C.
Providing an interface so that Fortran programs can call routines written in C
can be a tedious and error-prone process. We describe here a tool that
automatically generates a Fortran-callable wrapper for routines written
in C, using only a small, structured comment and the declaration of the
routine in C. This tool has been used on two large software packages, PETSc
and the MPICH implementation of MPI.