Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / CompilationManager.adoc
1 CompilationManager
2 ==================
3
4 The http://www.smlnj.org/doc/CM/index.html[Compilation Manager] (CM) is SML/NJ's mechanism for supporting programming-in-the-very-large.
5
6 == Porting SML/NJ CM files to MLton ==
7
8 To help in porting CM files to MLton, the MLton source distribution
9 includes the sources for a utility, `cm2mlb`, that will print an
10 <:MLBasis: ML Basis> file with essentially the same semantics as the
11 CM file -- handling the full syntax of CM supported by your installed
12 SML/NJ version and correctly handling export filters. When `cm2mlb`
13 encounters a `.cm` import, it attempts to convert it to a
14 corresponding `.mlb` import. CM anchored paths are translated to
15 paths according to a default configuration file
16 (<!ViewGitFile(mlton,master,util/cm2mlb/cm2mlb-map)>). For example,
17 the default configuration includes
18 ----
19 # Standard ML Basis Library
20 $SMLNJ-BASIS $(SML_LIB)/basis
21 $basis.cm $(SML_LIB)/basis
22 $basis.cm/basis.cm $(SML_LIB)/basis/basis.mlb
23 ----
24 to ensure that a `$/basis.cm` import is translated to a
25 `$(SML_LIB)/basis/basis.mlb` import. See `util/cm2mlb` for details.
26 Building `cm2mlb` requires that you have already installed a recent
27 version of SML/NJ.