Section: User Commands (1)Updated: April 25, 2003Local indexUp
NAME
ml-nlffigen - SML No Longer Foreign Function Interface tool
SYNOPSIS
ml-nlffigen
[option]
--
file
DESCRIPTION
This manual page documents briefly the
ml-nlffigen
command.
This manual page was written for the Debian distribution
because the original program does not have a manual page.
ml-nlffigen,
a glue-code generator for
the new
NLFFI
foreign function interface. The generator reads
C source code and emits ML code along with a description file for CM.
OPTIONS
A summary of options is included below.
-dir dir
-d d
Output directory where all generated files are placed.
default:
NLFFI-Generated.
-allSU
Instructs
ml-nlffigen
to include all structs and unions,
even those that are defined in included files (as opposed
to files explicitly listed as arguments).
default:
off.
-width w
-w w
Sets output line width (just a guess) to
w
.
default:
75.
-smloption x
Instructs
ml-nlffigen
to include
x
into the list
of options to annotate .sml entries in the generated .cm
file with.
default:
noguid.
-guid
Removes the default
-noguid
from the list of sml options.
(This re-enables strict handling of type- and object-identity
but can have negative impact on CM cutoff recompilation
performance if the programmer routinely removes the entire
tree of ml-nlffigen-generated files during development.)
-lambdasplit x
-ls x
Instructs
ml-nlffigen
to generate "lambdasplit"
options for all ML files (see CM manual for what this means;
it does not currently work anyway because cross-module
inlining is broken).
default:
nothing.
-target t
-t t
Sets the target to
t
(which must be one of "sparc-unix","x86-unix", or "x86-win32").
default:
current architecture.
-light
-l
Suppress "heavy" versions of function wrappers and
field accessors; also resets any earlier
-heavy
to default.
default: not suppressed.
-heavy
-h
suppress "light" versions of function wrappers and
field accessors; also resets any earlier
-light
to default.
default: not suppressed
-namedargs
-na
Instruct
ml-nlffigen
to generated function wrappers that
use named arguments (ML records) instead of tuples if
there is enough information for this in the C source;
(this is not always very useful).
default: off.
-nocollect
Do not do the following:
Collect enum constants from truly unnamed enumerations
(those without tags that occur at toplevel or in an
unnamed context, i.e., not in a typedef or another
named struct or union) into a single artificial
enumeration tagged by ' (single apostrohe). The corresponding
ML-side representative will be a structure named E_'.
-enum-constructors
-ec
When possible (i.e., if all values of a given enumeration
are different from each other), make the ML representation
type of the enumeration a datatype. The default (and
fallback) is to make that type the same as
MLRep.Signed.int
.
-libhandle h
-lh h
Use the variable
h
to refer to the handle to the
shared library object. Given the constraints of CM,
h
must have the form of a long ML identifier, e.g.,
MyLibrary.libhandle.default:Library.libh.
-include f
-add f
Mention file
f
in the generated .cm file. This option
is necessary at least once for providing the library handle.
It can be used arbitrarily many times, resulting in more
than one such programmer-supplied file to be mentioned.
If
f
is relative, then it must be relative to the directory
specified in the
-dir dir
option.
-cmfile f
-cm f
Specify name of the generated .cm file, relative to
the directory specified by the
-dir dir
option.
default:
nlffi-generated.cm.
-cppopt o
The string
o
gets added to the list of options to be
passed to cpp (the C preprocessor). The list of options
gets substituted for
%o
in the cpp command line template.
-U x
The string
-Ux
gets added to the list of cpp options.
-D x
The string
-Dx
gets added to the list of cpp options.
-I x
The string
-Ix
gets added to the list of cpp options.
-version
Just write the version number of
ml-nlffigen
to standard
output and then quit.
-match r
-m r
Normally
ml-nlffigen
will include ML definitions for a C
declaration if the C declaration textually appears in
one of the files specified at the command line. Definitions
in #include-d files will normally not appear (unless
their absence would lead to inconsistencies).
By specifying
-matchr
,
ml-nlffigen
will also include
definitions that occur in recursively #include-d files
for which the
awk-style
regular expression
r
matches their names.
-prefix p
-p p
Generated ML structure names will all have prefix
p
(in addition to the usual "S_" or "U_" or "F_" ...)
-gensym g
-g g
Names "gensym-ed" by
ml-nlffigen
(for anonymous struct/union/
enums) will get an additional suffix
_g.
(This should
be used if output from several indepdendent runs of
ml-nlffigen
are to coexist in the same ML program.)
--
Terminate processing of options, remaining arguments are
taken to be C sources.