Building


Patience is required: Currently SquirrelJME is in active development and although it can run and produce binaries, there are limitations to consider. Currently only a limited set of programs may be ran on SquirrelJME.


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 (referred to as build hereafter). 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 (referred to as build hereafter).

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

Compiled SummerCoat ROM

This ROM file is required in order to work with SummerCoat or RatufaCoat.

This will create a file called squirreljme-summercoatrom.zip which will contain the needed ROM file squirreljme.sqc.

Additionally if all tests need to be built then a test ROM can be included as well.

Shaded JARs for Java SE

Shaded SquirrelJME JARs are standalone JARs which can run on an existing Java SE or Java ME system depending on which target it was built for. Generally these JARs are just packaged by themselves and include the entire set of libraries and applications from within SquirrelJME. These shaded JARs are usually intended for demo projects and such. The JARs additionally are pure Java code so they require a host Java VM. To contain the SquirrelJME environment, an implementation of a virtual machine is used which is capable of using and running the class library. This virtual machine has a speed penalty because it is running the Java byte code itself however it is a compatible environment.

Building For Java SE

It is recommended that an out-of-tree build is performed (this means building from another directory that is not in the SquirrelJME source tree). All the commands pertain specifically to the build system itself.

Building for Java ME

NOTE: If the shaded JAR is not running on SquirrelJME, some features will not be available for use. It should still run however.

RatufaCoat

Building the C based virtual machine depends on a C compiler.

Note that you will need to build a separate SummerCoat ROM as above or use a pre-existing one. If you are building for a standard C setup with no graphical display or otherwise, to build the project you use make:

RetroArch

Building for RetroArch uses the makefilelibretro makefile. As such building SquirrelJME for your current system involves using the alternative makefile.

Development Virtual Machines

For development purposes you may use the virtual machines provided by the SquirrelJME run-time. You can launch a built-in application by calling the build system in the following format: build launch program (...), this will use the default virtual machine implementation.

The following virtual machines are available, these may be selected by using build launch -v (vmname) program (...):