blob: 466c97cac15392bebdc4d0ce312dee13e2b145af [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 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>
<p><b>Prerequisites</b><br/>
You will have to install a C++ compiler and Java 1.5 or more in order to
compile vmkit2</p>
<ol>
<li>Download <a href="http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz">
LLVM 3.3</a> and
<a href="http://llvm.org/releases/3.3/cfe-3.3.src.tar.gz">Clang 3.3</a>
source code.
</li>
<ul>
<li><tt>tar zxvf llvm-3.3.src.tar.gz</tt></li>
<li><tt>cd llvm-3.3.src/tools</li></tt>
<li><tt>tar zxvf ../../cfe-3.3.src.tar.gz</tt></li>
<li><tt>mv cfe-3.3.src clang</li></tt>
<li><tt>cd ..</li></tt>
<li><tt>./configure --enable-optimized; make</tt></li>
</ul>
<br>Note: To compile LLVM and VMKit with RTTI enabled, one can pass the parameter
REQUIRES_RTTI=1 to llvm make. Passing this argument removes the flag -fno-rtti from
the compiler options. Ex: $ make REQUIRES_RTTI=1
<p><b>Skip the Classpath steps if you plan to use OpenJDK.</b><br/>
<li><a href="ftp://ftp.gnu.org/gnu/classpath/classpath-0.99.tar.gz">Download
GNU Classpath 0.99</a>:</li>
<ul>
<li><tt>tar zxvf classpath-0.99.tar.gz</tt></li>
<li><tt>cd classpath-0.99</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-llvm-config-path=&lt;path/to/llvm-config&gt;</tt></dt>
<dd>Tell vmkit where the llvm-config binary is 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>
<ul>
<li>
<p>you can use GNU Classpath by configuring the following :</p>
<dt>
<tt>--with-gnu-classpath-glibj=&lt;path/to/file/glibj.zip&gt;</tt>
</dt>
<dd>Tell vmkit where GNU Classpath glibj.zip is located.</dd>
<br/>
<dt>
<tt>--with-gnu-classpath-libs=&lt;path/to/libs/directory&gt;</tt>
</dt>
<dd>Tell vmkit where GNU Classpath libs are located.</dd>
</li>
<li>
<p>or OpenJDK by configuring :</p>
<dt>
<tt>--with-classpath-impl=openjdk</tt>
</dt>
<dd>Tell vmkit to use OpenJDK classpath implementation.</dd>
<br/>
<dt>
<tt>--with-openjdk-path=&lt;directory&gt;</tt>
</dt>
<dd>Tell vmkit where OpenJDK is located.</dd>
</li>
</ul>
</dl>
</ul>
<li>Build vmkit:</li>
<ul>
<li><tt>make</tt> (this will give you a release build)</li>
</ul>
<li>Try it out: (assuming vmkit/Release+Asserts/bin is in your path)</li>
<ul>
<li><tt>j3 --help</tt></li>
<li><tt>j3 HelloWorld</tt></li>
</ul>
</ol>
</div>
</body>
</html>