I plan to frequently post a similar table showing my progress in building the Self VM with the different OS–compiler combinations.

This will be such an update post although, however, it is neither in the frequency I hoped I would deliver nor will it contain a table in the way promised. Both is easy to explain: onehundredandfiftytwo different ways to build the Self VM.

There are certainly different configurations for debugging/optimization, and when we look at the Apples, even two different means to carry out the actual compilation of Self. In the default case, Makefiles, this makes two configurations, and three for Apple Xcode.

Not enough, Self itself provides some kind of configurability. It supports a ‘profiled’ build and the possibility to compile with ‘fast floats’, any of which is optional. That makes four configurations.

Are you still with me? Fine. So let’s dissect all possibilities.

Linux: 32 VMs

Linux is easy, there are two of them, both with a gcc and a clang compiler, both using Makefiles to carry out compilation. Ubuntu brings gcc 4.6 by default, Fedora 4.7. For both, the clang version is 3.0. Think of the four Self configurations and the two build configurations, and we get

Ubunutu: 16 VMs

gcc 4.6: 8 VMs (4 Self configs × 2 build configs)

clang 3.0: 8 VMs (4 Self configs × 2 build configs)

Fedora: 16 VMs

gcc 4.7: 8 VMs (4 Self configs × 2 build configs)

clang 3.0: 8 VMs (4 Self configs × 2 build configs)

Mac OS X 10.7 (Lion): 40 VMs

As I already pointed out, on OS X, it is possible to use Xcode as means of building besides using Makefiles. Also, I enabled an ‘optimized with debug symbols’ build in Xcode, yielding three build configurations for Xcode. The four Self configurations stay the same.

Xcode 4.3: 24 VMs

LLVM-gcc 4.2: 12 VMs (4 Self configs × 3 build configs)

Clang 3.1: 12 VMs (4 Self configs × 3 build configs)

Makefile build: 16 VMs

LLVM-gcc 4.2: 8 VMs (4 Self configs × 2 build configs)

Clang 3.1: 8 VMs (4 Self configs × 2 build configs)

Mac OS X 10.6 (Snow Leopard): 80 VMs

This is mostly the same as for Lion with the exception that I also tries building using the Xcode 3.2 toolchain. Hence twice the VMs.

Xcode 4.2: 24 VMs

LLVM-gcc 4.2: 12 VMs (4 Self configs × 3 build configs)

Clang 3.0: 12 VMs (4 Self configs × 3 build configs)

Makefile build (Xcode 4.2 based): 16 VMs

LLVM-gcc 4.2: 8 VMs (4 Self configs × 2 build configs)

Clang 3.0: 8 VMs (4 Self configs × 2 build configs)

Xcode 3.2: 24 VMs

LLVM-gcc 4.2: 12 VMs (4 Self configs × 3 build configs)

Clang 1.6: 12 VMs (4 Self configs × 3 build configs)

Makefile build (Xcode 3.2 based): 16 VMs

LLVM-gcc 4.2: 8 VMs (4 Self configs × 2 build configs)

Clang 1.6: 8 VMs (4 Self configs × 2 build configs)

Important findings

132 out of 152 VMs compiled and linked.

20 VMs (all Clang with Xcode 3.2 on Mac OS X 10.6) did not compile. The reason: surprisingly, Clang 1.6 did not support C++ proper.

CMake helps alot. But this makes another post.

Do they run?

Well, not all of them, I think. Most non-profiled, non-fastfloat do, and they do load self worlds. Most clang-compiled, optimized VMs get hiccups when you want to dismiss a debugger in a Self world. If you want, I provide all 132 VMs for testing purposes.

The Table

Finally, here is the promised table.

PS: As some of you liked the play-form of the last post, here’s my first try of a haiku:

Looking at three screens,
Hundredfiftytwo VMs,
that takes time to build.