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:
- GCC
- 4.2 (Apple LLVM-gcc)
- 4.4, 4.5, 4.6
- 4.7
- Clang
- 3.0
- 3.1
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.