=================== System requirements =================== Compiling the mlt tool requires a "working version" of SML/NJ. I've tested it with 110.42. You'll need to get the SML/NJ source code package and modify some of the included .cm files to make a few additional internal structures visible. The necessary changes to make are described below, with paths given relative to your base SML/NJ directory. The lines listed for each file should be added right before the "is" keyword at the end of the exports list for a library. The "is" is on the first non-indented line after the initial "Library" line in each of these files. The following lines to src/compiler/core.cm: structure Types structure EntityEnv structure Modules structure Stamps structure Bindings structure TypesUtil structure VarCon structure ModuleUtil structure II structure BasicTypes structure PPType structure Access The following lines to both src/system/smlnj/compiler/current.cm and src/system/smlnj/compiler/x86.cm: structure Types structure EntityEnv structure Modules structure Stamps structure Bindings structure TypesUtil structure VarCon structure ModuleUtil structure II structure BasicTypes structure PPType structure Access structure Unify The following line to src/compiler/Elaborator/elaborate.cm: structure Unify Finally, add the following line somewhere _below_ the "is" in src/system/smlnj/compiler/x86.cm: $smlnj/viscomp/elaborate.cm After making these changes, you can rebuild and install the compiler with the following sequence of commands: cd $smlnjdir/src/system sml CM.autoload "$smlnj/cmb.cm"; CMB.make (); ./makeml ./installml ============= Configuration ============= If it is possible for you to modify a file /etc/mlt.conf, then you can edit this file to set various options related to locations of important files on your file system. In particular, you may want to set the 'compiler', 'lib', and 'sml' options (documented in the manual) if you have SML/NJ installed somewhere besides /usr/local/sml or the mlt src directory somewhere besides /usr/local/share/mlt/src. If you can't modify /etc/mlt.conf, then you can change the first variable definition in src/config.sml to a different path, or you can leave it as is and provide all configuration in the local mlt.conf file for each project. You should also edit the paths in the simple install script in this directory if you want to install system-wide binaries and scripts to somewhere besides /usr/local/bin. These changes may be made for you by a fancy configuration program in a future release. ======== Building ======== All sources may be built by running the build script in this directory. It does a clean re-build of all source files and stabilizes all libraries produced. The build script is not appropriate for use during development. Use the standard SML/NJ CM mechanisms if you are changing the code and don't want to recompile everything each time. [There is probably a better way to do this, but I haven't figured one out yet.]