Yesterday, I succeeded in getting the furthest I have so far in building JikesRVM. I’m guessing I’m nearly at the end and just falling at the final hurdle, as it gets to writing the boot image:
[echo] Building bootimage. Output redirected to : /home/gandalf/projects/java/classpath/jikesrvm/target/development_x86_64-linux/BootImageWriterOutput.txt
[java] Java Result: 1
[echo] BootImageWriter: compiler arg: O2
[echo] VM_BootImageCompiler: init (opt compiler)
[echo] Exception in thread “main” java.lang.UnsatisfiedLinkError: VMSupportsCS8
[echo] at BootImageWriter.createBootImageObjects(BootImageWriter.java:1109)
[echo] at BootImageWriter.main(BootImageWriter.java:614)
What’s proved such a problem is not so much JikesRVM itself as ant. It seems to assume a Sun-esque JDK and tries to run everything from tools.jar by default (presumably for efficiency, as this avoids spawning another VM). I’ve got round this by creating a tools.jar using OpenJDK and a little build system I hacked together. I’ve just announced this on the OpenJDK distro packaging mailing list, and hope that it can be made public in the same place as IcedTea (which can now build a Free OpenJDK).
Because this little bit of hackery gives me a tools.jar containing javac and javah, and an apt binary, the JikesRVM build process is satisfied. Of course, javac and javah have always been around on my path; it just doesn’t seem to want to use them. Next step is to see if the GNU Classpath tools will work as well, with the addition of a little wrapper for javah (so com.sun.tools.javah.Main exists, simply calling the GNU equivalent).
Any help on this final build problem would be much appreciated too. I’m eager to get hacking and actually contributing code for SoC!
I’ve narrowed down the problem above which is nothing to do with Jikes RVM, but instead is due to a hole in CACAO’s implementation of the java.util.concurrent framework. VMSupportsCS8 is a native method which returns true if the underlying JVM supports lockless CompareAndSet for longs. I’m now looking around for VMs that do provide this…