ml-nlffigen(1)

πŸ“¦
version 110.79 Β· 2 versions
, in debian bookworm, ubuntu jammy, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– bestie, welcome to ml-nlffigen(1) from the General Commands Manual πŸ’–

okay so this is the page for ml-nlffigen(1), and it's giving "Debian wrote this because upstream didn't ship a man page" energy. Let's get into it, no cap. πŸ¦‹


🌸 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. (Debian said "fine, I'll do it myself" πŸ’€)

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. Literally the matchmaker between your C code and your ML code. 🫢

πŸ”₯ OPTIONS πŸ”₯

A summary of options is included below. Buckle up, bestie, there are a lot. πŸ‘‘

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

🌈 SEE ALSO 🌈

  • sml(1), ml-build(1).
  • This program described in more detail in NLFFI: A new SML/NJ Foreign-Function Interface , Matthias Blume, which is available in /usr/share/doc/smlnj-doc/nlffi.pdf.gz.

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


mwah πŸ’‹ that's the whole page, bestie. It was ml-nlffigen(1) from the General Commands Manual, dated April 25, 2003. Periodt. πŸ‘‘βœ¨

πŸ“¦ where this page comes from