Building


Patience is required: Currently SquirrelJME is in a state of development and does not produce any actual runnable binaries yet. There is no current predicated time when SquirrelJME will be able to run general software and games.


SquirrelJME requires the following before it can be built:

Notes on Running

SquirrelJME uses a simplified error system which starts with a two capital letter prefix followed by two digits and letters.

Installing Java

SquirrelJME requires a Java 7 virtual machine in order to build itself.

Common Linux Distributions

If you use a common and popular Linux distribution it likely has a JDK available.

Oracle's JDK

Oracle's JDK supports the following (as of this writing):

Oracle's Java JDK can be downloaded from:

Ensure that you download and install the JDK.

If running on ReactOS/Windows/Wine, make sure that the PATH environment variables refers to the JDK's binary directory:

Bootstrap Build Environment

The main interaction with the SquirrelJME build environment is with the build bootstrapper which initializes, compiles, and runs the build environment.

System Specific

Each system has a different interface to the bootstrap environment, beyond this the remainder of it is the same regardless of the system used.

ReactOS and Windows

Oracle's Java JDK can be downloaded from:

The script used for building is build.cmd. This requires the command prompt which may be accessed by running cmd. This may be found in the start menu or may be accessed via Windows Key + R, typing cmd, then hitting enter.

Recommended setup for running the environment, assuming SquirrelJME source code is located in the example c:\users\stephanie\desktop\squirreljme:

UNIX-Like: Linux, Mac OS X, Solaris, BSD, etc.

The script used for building is build.sh.

Recommended setup for running the environment, assuming SquirrelJME source code is located in the example /home/stephanie/squirreljme:

Standard Building

Compiling SquirrelJME binaries to run on a target system uses the following format, the main command being target.

The options used to build the target vary depending on how the build system parses them.

JIT Configuration Options

These options may be used when creating configurations to have the JIT compile for a specific platform.

jit Namespace

These options affect the operation of the JIT.

jit.target Namespace

These options only affect the target depending on the target architecture and CPU.

jit.rename Namespace

This namespace contains the unsafe renames which are only performed in the package net.multiphasicapps.squirreljme.unsafe, the pairs are in the form of:

In that example any static method calls for methods in __Ext_systemvm__ will be rewritten to use __Int_examplesystemvm__ as the class instead.

JIT Configuration Options

This is a list of options which may be passed to the JIT.