Saturday, June 1, 2013

Building an OCaml package

Building an OCaml package

The details relating to OCaml package construction are provided in the the OCaml System Release 4.00 documentation and users manual. Here's how I go about it. The key to building an OCaml package is to first compile the package modules with the -for-pack flag and then combine the compiled modules with the -pack flag. The procedure can be nicely wrapped up in an OMake macro, presented in this OMakefile schematic. 

make_package(P, libname, S) =
  for_pack (P, f) = 
    OCAMLFLAGS = -for-pack $(P)
    $(f).cmx $(f)$(EXT_OBJ):
  foreach (f, $(S))
    for_pack ($(P), $(f))
    .DEFAULT: $(OCamlPackage $(P), $(S))
  .DEFAULT: $(OCamlLibraryInstall _,$(BIN_DIR), $(libname), $(P))

S=$(rootname $(file $(basename $(glob *.ml)) ))

make_package(Foo, foo, $(S))