| <!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=<path/to/llvm-config></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=<path/to/file/glibj.zip></tt> |
| </dt> |
| <dd>Tell vmkit where GNU Classpath glibj.zip is located.</dd> |
| <br/> |
| <dt> |
| <tt>--with-gnu-classpath-libs=<path/to/libs/directory></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=<directory></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> |