[kaffe] Use Kaffe as bootstraping JavaVM for JC

jserv at linux2.cc.ntu.edu.tw jserv at linux2.cc.ntu.edu.tw
Tue Apr 27 02:25:03 PDT 2004

Hi all,

  JC Virtual Machine[1] takes an unusual way to implement JavaVM via
converting class files into C source files using the Soot[2] Java 
bytecode analysis framework, compiles them with GCC, and loads them 
using a built-in ELF object file loader. The documents shipped with 
JC mentions that JC needs Java2 compatible runtime for generating
codes. I attempted to use Kaffe as bootstrapping JavaVM for JC, and
it worked fortunately. Here is my instruction:

* Download classpath-0.08
  # wget http://ftp.gnu.org/gnu/classpath/classpath-0.08.tar.gz

* build and install Classpath
  # ./configure --prefix=/usr/local/jc --enable-jni --with-jikes
  # make install

* patch JC-1.1 with the following:

diff -u jc-1.1/configure jc-1.1-fixed/configure
--- jc-1.1/configure    2004-04-12 00:35:44.000000000 +0800
+++ jc-1.1-fixed/configure      2004-04-15 20:47:02.000000000 +0800
@@ -1171,7 +1171,7 @@
 uname -s = `(uname -s) 2>/dev/null || echo unknown`
 uname -v = `(uname -v) 2>/dev/null || echo unknown`
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/usr/bin/uname  = `(/usr/bin/uname) 2>/dev/null || echo unknown`
 /bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
 /bin/arch              = `(/bin/arch) 2>/dev/null              || echo
@@ -9807,7 +9807,7 @@
 # Get host architecture
-JC_ARCH=`uname -p | sed -e 's/i[456]86/i386/g'`
+JC_ARCH=`uname -m | sed -e 's/i[456]86/i386/g'`

* Build and install JC
  # JAVA=/usr/lib/kaffe/bin/kaffe sh configure --prefix=/usr/local
  # make install

  where JAVA indicates where Kaffe was installed. I found JC could
  cooperate with Kaffe version 1.1.4.

* Create your personalized .jc startup file (~/.jc)
  # JC defaults

* consult JC's manual for advanced usage
  # jc --help

That's all.

Jim Huang
[1] http://jcvm.sourceforge.net/
[2] http://www.sable.mcgill.ca/soot/

More information about the kaffe mailing list