blob: 73fe34369c33c20c7803980a7968c933d27c5bac [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 style="background:red"><center>The VMKit project is retired</center></h1>
<!--*********************************************************************-->
<font color="red">
<p>You can still play with the last VMKit release, but the project is not more maintained.
Moreover, the information on these pages may be out of date.</p>
<p>If you are interested in restarting the project,
please contact <a href="mailto:gael.thomas00@gmail.com">Gaƫl Thomas</a></p>
</font>
<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>
<li>Download, compile and install <a href="http://openjdk.java.net/">Openjdk</a> version 6u23
<!-- <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>
<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>
</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>