MLton 20070826 CompilingWithSMLNJ
Home  Index  
You can compile MLton with SML/NJ, however the resulting compiler will run much more slowly than MLton compiled by itself. We don't recommend using SML/NJ as a means of porting MLton to a new platform or bootstrapping on a new platform.

If you do want to build MLton with SML/NJ, it is best to have a binary MLton package installed. If you don't, here are some issues you may encounter when you run make nj-mlton.

You will get (many copies of) the error message:

/bin/sh: mlton: not found

The Makefile calls mlton to determine dependencies, and can proceed in spite of this error.

If you don't have a mlton executable, you will get the error message:

Error: cannot upgrade basis because the compiler doesn't work

We use upgrade-basis.sml to work around basis library differences, allowing a version of MLton written for a newer basis library to be compiled by an older version of MLton. The file isn't necessary when building with SML/NJ, but is listed in $(SOURCES), so the Makefile is attempting to build it. Building upgrade-basis.sml requires the old version of MLton to be around so that the right stubs can be built.

To work around this problem, do one of the following.

If you don't have an mllex executable, you will get the error message:

mllex: Command not found

Building MLton requires mllex and mlyacc executables, which are distributed with a binary package of MLton. The easiest solution is to copy the front-end lexer/parser files from a different machine (ml.grm.sml, ml.grm.sig, ml.lex.sml, mlb.grm.sig, mlb.grm.sml).


Last edited on 2006-10-19 17:06:01 by StephenWeeks.