Commit | Line | Data |
---|---|---|
c0a3b488 AC |
1 | =================== |
2 | System requirements | |
3 | =================== | |
4 | ||
dca24e57 AC |
5 | Compiling the mlt tool requires a "working version" of SML/NJ. It's |
6 | best to use version 110.46 or later. You may have problems with any | |
7 | version whatsoever, though, since this stuff uses some SML/NJ compiler | |
8 | internals, and they may change often. | |
9 | ||
10 | If you're using a pre-110.46 version, you'll need to, at a minimum, | |
11 | get the SML/NJ source, make the following patches, and build it. Of | |
12 | course, there are no promises that everything will then work with that | |
13 | particular version. (Especially problematic are the changes in the | |
14 | Basis library spec that aren't backwards compatible.) The patch | |
15 | involves modifying some of the included .cm files to make a few | |
c0a3b488 AC |
16 | additional internal structures visible. The necessary changes to make |
17 | are described below, with paths given relative to your base SML/NJ | |
18 | directory. The lines listed for each file should be added right before | |
19 | the "is" keyword at the end of the exports list for a library. The | |
20 | "is" is on the first non-indented line after the initial "Library" | |
21 | line in each of these files. | |
22 | ||
23 | The following lines to src/compiler/core.cm: | |
24 | structure Types | |
25 | structure EntityEnv | |
26 | structure Modules | |
27 | structure Stamps | |
28 | structure Bindings | |
29 | structure TypesUtil | |
30 | structure VarCon | |
31 | structure ModuleUtil | |
32 | structure II | |
33 | structure BasicTypes | |
34 | structure PPType | |
35 | structure Access | |
36 | ||
37 | The following lines to both src/system/smlnj/compiler/current.cm | |
38 | and src/system/smlnj/compiler/x86.cm: | |
39 | structure Types | |
40 | structure EntityEnv | |
41 | structure Modules | |
42 | structure Stamps | |
43 | structure Bindings | |
44 | structure TypesUtil | |
45 | structure VarCon | |
46 | structure ModuleUtil | |
47 | structure II | |
48 | structure BasicTypes | |
49 | structure PPType | |
50 | structure Access | |
51 | structure Unify | |
52 | ||
53 | The following line to src/compiler/Elaborator/elaborate.cm: | |
54 | structure Unify | |
55 | ||
56 | Finally, add the following line somewhere _below_ the "is" in | |
57 | src/system/smlnj/compiler/x86.cm: | |
58 | $smlnj/viscomp/elaborate.cm | |
59 | ||
60 | After making these changes, you can rebuild and install the compiler | |
61 | with the following sequence of commands: | |
62 | ||
63 | cd $smlnjdir/src/system | |
64 | sml | |
65 | CM.autoload "$smlnj/cmb.cm"; | |
66 | CMB.make (); | |
67 | <exit from sml by typing the end-of-file sequence> | |
68 | ./makeml | |
69 | ./installml | |
70 | ||
71 | ||
72 | ============= | |
73 | Configuration | |
74 | ============= | |
75 | ||
76 | If it is possible for you to modify a file /etc/mlt.conf, then you | |
77 | can edit this file to set various options related to locations of | |
78 | important files on your file system. In particular, you may want to | |
79 | set the 'compiler', 'lib', and 'sml' options (documented in the | |
80 | manual) if you have SML/NJ installed somewhere besides /usr/local/sml | |
81 | or the mlt src directory somewhere besides /usr/local/share/mlt/src. | |
82 | If you can't modify /etc/mlt.conf, then you can change the first | |
83 | variable definition in src/config.sml to a different path, or you can | |
84 | leave it as is and provide all configuration in the local mlt.conf | |
85 | file for each project. | |
86 | ||
87 | You should also edit the paths in the simple install script in this | |
88 | directory if you want to install system-wide binaries and scripts to | |
89 | somewhere besides /usr/local/bin. | |
90 | ||
91 | These changes may be made for you by a fancy configuration program in | |
92 | a future release. | |
93 | ||
94 | ||
95 | ======== | |
96 | Building | |
97 | ======== | |
98 | ||
99 | All sources may be built by running the build script in this | |
100 | directory. It does a clean re-build of all source files and stabilizes | |
101 | all libraries produced. The build script is not appropriate for use | |
102 | during development. Use the standard SML/NJ CM mechanisms if you are | |
103 | changing the code and don't want to recompile everything each time. | |
104 | ||
105 | [There is probably a better way to do this, but I haven't figured one | |
106 | out yet.] |