So, why revamping Self’s build process? What could be the outcome of this?
My mini-roadmap for this project is
- Make the Self VM build on major operating systems
- Make the Self VM build with those OSs’ prevalent compilers
- Make building the Self VM more approachable.
As Self is traditionally a Unix VM and there is currently too few code for Windows in the current code base, the first point limits to Linux and Mac OS X at the moment. The versions of both I can get hold of and, therefore, aim for are as follows:
- Mac OS X 10.6 (Snow Leopard)
- Mac OS X 10.7 (Lion)
- Ubuntu 12.04
- Fedora 17
To my astonishment, there are only two overlaps in the default compilers for each and every platform, namely LLVM-GCC for OS Xen and Clang 3.0 for Linuxen and OS 10.6. By ‘default’ I mean those that are easily installable without manual compiling or adding strange servers to your package managers sources. This limits the compiler choice to the following compilers:
- 4.2 (Apple LLVM-gcc)
- 4.4, 4.5, 4.6
As this is already confusing, I hope the following table will clarify the compiler–OS relations a little.
|Linux||Mac OS X|
|Ubuntu 12.04||Fedora 17||10.6 (Snow Leopard)/Xcode 4.2||10.7 (Lion)/Xcode 4.3|
|GCC||Gnu GCC 4.4, 4.5, 4.6||Gnu GCC 4.7||Apple LLVM-GCC 4.2||Apple LLVM-GCC 4.2|
|Clang||Clang 3.0||Clang 3.0||Clang 3.0||Clang 3.1|
And as you would guess it, every compiler complains about different things within the same code base. But more on this in a later post.
I plan to frequently post a similar table showing my progress in building the Self VM with the different OS–compiler combinations.
So much for points 1 and 2. Quite orthogonal to this is 3, making the build process itself more approachable.
I will have a separate post on this later-on.