logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

ml-nlffigen - SML No Longer Foreign Function Interface tool

Author

       This manual page was written by Aaron Matthew Read <amread@nyx.net>, for the Debian GNU/Linux system (but
       may be used by others).

                                                 April 25, 2003                                   ml-nlffigen(1)

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.

Name

       ml-nlffigen - SML No Longer Foreign Function Interface tool

Options

       A summary of options is included below.

       -dirdir-dd
           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.

       -widthw-ww
           Sets output line width (just a guess) to w.  default: 75.

       -smloptionx
           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.)

       -lambdasplitx-lsx
           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.

       -targett-tt
           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.

       -libhandleh-lhh
           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.

       -includef-addf
           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 -dirdir option.

       -cmfilef-cmf
           Specify  name  of the generated .cm file, relative to the directory specified by the -dirdir option.
           default: nlffi-generated.cm.

       -cppopto
           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.

       -Ux
           The string -Ux gets added to the list of cpp options.

       -Dx
           The string -Dx gets added to the list of cpp options.

       -Ix
           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.

       -matchr-mr
           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.

       -prefixp-pp
           Generated ML structure names will all have prefix p (in addition to the usual "S_" or  "U_"  or  "F_"
           ...)

       -gensymg-gg
           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.

See Also

sml(1), ml-build(1).
       This program described in more detail in NLFFI:AnewSML/NJForeign-FunctionInterface , Matthias Blume,
       which is available in /usr/share/doc/smlnj-doc/nlffi.pdf.gz.

Synopsis

ml-nlffigen [option] -- file

See Also