Building IcedTea with CACAO as VM on...
We have finally integrated CACAO into IcedTea's build system (http://icedtea.classpath.org/hg/icedtea6/rev/395d2515deeb).
...Ubuntu
Install OpenJDK from Ubuntu and build with it:
# aptitude install openjdk-6-jdk
Configure IcedTea to use CACAO as VM:
$ ./configure --with-icedtea-home=/usr/lib/jvm/java-6-openjdk --with-icedtea --with-cacao
Bootstrapping IcedTea with CACAO/GNU Classpath
Configure GNU Classpath to use CACAO as Java in it's wrapper scripts:
$ ./configure --prefix=$PREFIX/classpath JAVA=$PREFIX/cacao/bin/cacao $ make $ make install
Configure IcedTea with:
$ ./configure \ --with-gcj-home=$PREFIX/cacao-openjdk-icedtea \ --with-java=$PREFIX/cacao/bin/cacao \ --with-javah=$PREFIX/classpath/bin/gjavah \ --with-jar=$PREFIX/classpath/bin/gjar \ --with-rmic=$PREFIX/classpath/bin/grmic \ --with-libgcj-jar=$PREFIX/classpath/share/classpath/glibj.zip \ --without-rhino \ --with-cacao \ --with-cacao-home=$PREFIX/cacao-openjdk-icedtea $ make
OpenSolaris (using JamVM)
First of all the OpenJDK build system needs some environment variables set:
export ALT_COMPILER_PATH=/opt/SunStudioExpress/bin export ALT_CUPS_HEADERS_PATH=/usr/include export ENFORCE_C_COMPILER_REV=5.10 export ENFORCE_COMPILER_REV=5.9
Place a link to jni.h and jni.h in bootstrap/ecj/include/
$ pushd bootstrap/ecj/include/ $ ln -s ../../../openjdk-ecj/jdk/src/share/javavm/export/jni.h . $ ln -s ../../../openjdk-ecj/jdk/src/solaris/javavm/export/jni_md.h . $ popd
Actually I think this is an upstream bug, as the include directories are:
-I../../../../src/solaris/javavm/export -I../../../../src/share/javavm/export -I../../../../src/share/javavm/include -I../../../../src/solaris/javavm/include
which only work for jdk/ but not for e.g. corba/.
jvmtiEnterTrace.cpp is generated wrongly:
$ ls -l openjdk-ecj/control/build/solaris-i586/hotspot/outputdir/solaris_i486_compiler2/generated/jvmtifiles/ total 521 -rw-r--r-- 1 twisti staff 199963 2008-10-12 11:59 jvmtiEnter.cpp -rw-r--r-- 1 twisti staff 199963 2008-10-12 12:21 jvmtiEnterTrace.cpp ...
...and it's really the same file:
$ md5sum jvmtiEnter.cpp jvmtiEnterTrace.cpp 8a21ad4522cac8c6bd100afdd956d9f4 jvmtiEnter.cpp 8a21ad4522cac8c6bd100afdd956d9f4 jvmtiEnterTrace.cpp
So I copied jvmtiEnterTrace.cpp over from a Linux build.
Install IPSFWungif from blastwave.org and symlink the required files:
# pkg install IPSFWungif # cd /usr/include # ln -s /opt/sfw/include/gif_lib.h . # cd /usr/lib # ln -s /opt/sfw/lib/libungif.so libgif.so