blob: 677cb46ca4fbffee06674562f8d8e0749213eefc [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>VMKit - Getting Started</title>
<link type="text/css" rel="stylesheet" href="menu.css" />
<link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
<h1>Getting Started: Building and Running VMKit</h1>
<p>This page gives you the shortest path to checking out vmkit and demos a few
options. This should get you up and running with the minimum of muss and fuss.
If you like what you see, please consider <a href="get_involved.html">getting
involved</a> with the vmkit community.</p>
<h2>A word of warning</h2>
<p>While this work aims to provide a fully functional JVM, it
is <em>still early work</em> and is under heavy development.
<p>Some of the common missing pieces in vmkit/llvm are:</p>
<ol>
<li> Mixed interpretation/compilation.</li>
<li> Adaptive optimization.</li>
</ol>
<h2 id="build">Building vmkit / working with the code</h2>
<p>If you would like to check out and build the project, the current scheme
is:</p>
<ol>
<li><a href="http://www.llvm.org/docs/GettingStarted.html#checkout">Checkout
and build LLVM</a> from SVN head. Make sure you have llvm-gcc or clang available
when you configure LLVM. Alternatively, you can also checkout clang in llvm/tools.</li>
<ul>
<li><tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
<li><tt>cd llvm</tt></li>
<li><tt>./configure; make</tt></li>
</ul>
<li><a href="ftp://ftp.gnu.org/gnu/classpath/classpath-0.97.2.tar.gz">Download
GNU Classpath 0.97.2</a>:</li>
<ul>
<li><tt>tar zxvf classpath-0.97.2.tar.gz</tt></li>
<li><tt>cd classpath-0.97.2</tt></li>
<li><tt>./configure --disable-plugin --disable-examples --disable-Werror; make</tt></li>
<li><tt>cd lib</li></tt>
<li><tt>If you are running on Linux:</li></tt>
<ul>
<li><tt>ln -s ../native/jni/gtk-peer/.libs/libgtkpeer.so;</li></tt>
<li><tt>ln -s ../native/jni/gconf-peer/.libs/libgconfpeer.so;</li></tt>
<li><tt>ln -s ../native/jni/java-io/.libs/libjavaio.so;</li></tt>
<li><tt>ln -s ../native/jni/java-lang/.libs/libjavalangreflect.so;</li></tt>
<li><tt>ln -s ../native/jni/java-lang/.libs/libjavalang.so;</li></tt>
<li><tt>ln -s ../native/jni/java-net/.libs/libjavanet.so;</li></tt>
<li><tt>ln -s ../native/jni/java-nio/.libs/libjavanio.so;</li></tt>
<li><tt>ln -s ../native/jni/java-util/.libs/libjavautil.so;</li></tt>
</ul>
<li><tt>If you are running on MacOS:</li></tt>
<ul>
<li><tt>ln -s ../native/jni/gtk-peer/.libs/libgtkpeer.dylib;</li></tt>
<li><tt>ln -s ../native/jni/gconf-peer/.libs/libgconfpeer.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-io/.libs/libjavaio.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-lang/.libs/libjavalangreflect.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-lang/.libs/libjavalang.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-net/.libs/libjavanet.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-nio/.libs/libjavanio.dylib;</li></tt>
<li><tt>ln -s ../native/jni/java-util/.libs/libjavautil.dylib;</li></tt>
</ul>
</ul>
<li>Checkout vmkit:</li>
<ul>
<li><tt>svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit</tt></li>
</ul>
<li>Configure vmkit:</li>
<ul>
<li><tt>./configure </tt></li>
<dl>
<dt><tt>--with-llvmsrc=&lt;directory&gt;</tt></dt>
<dd>Tell vmkit where the LLVM source tree is located.</dd>
<dt><br/><tt>--with-llvmobj=&lt;directory&gt;</tt></dt>
<dd>Tell vmkit where the LLVM object tree is located.</dd>
<dt><br/><tt>--with-gnu-classpath-glibj=&lt;file or directory&gt;</tt></dt>
<dd>Tell vmkit where GNU Classpath glibj.zip is located.</dd>
<dt><br/><tt>--with-gnu-classpath-libs=&lt;directory&gt;</tt></dt>
<dd>Tell vmkit where GNU Classpath libs are located.</dd>
<dt><br/><tt>--with-mmtk-plan=</tt> </dt>
<dd>
<ul>
<li><tt>org.mmtk.plan.marksweep.MS (default)</tt></li>
<li><tt>org.mmtk.plan.copyms.CopyMS</tt></li>
<li><tt>org.mmtk.plan.semispace.SS</tt></li>
<li><tt>org.mmtk.plan.immix.Immix</tt></li>
<li><tt>org.mmtk.plan.generational.marksweep.GenMS</tt></li>
<li><tt>org.mmtk.plan.generational.copying.GenCopy</tt></li>
<li><tt>org.mmtk.plan.generational.immix.GenImmix</tt></li>
</ul>
</dd>
</dl>
</ul>
<li>Build vmkit:</li>
<ul>
<li><tt>cd vmkit</tt></li>
<li><tt>make</tt> (this will give you a debug build)</li>
</ul>
<li>Try it out: (assuming vmkit/Debug/bin is in your path)</li>
<ul>
<li><tt>j3 --help</tt></li>
<li><tt>j3 HelloWorld</tt></li>
</ul>
</ol>
</div>
</body>
</html>