= CompilingWithSMLNJ

You can compile MLton with <<SMLNJ#,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
<<PortingMLton#,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 smlnj-mlton`.

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

----
/bin/sh: mlton: command not found
----

and

----
make[2]: mlton: Command not found
----

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

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