Jikes Developer FAQ Jikes

 

Compiling

Tools

To compile Jikes, you'll need a shell, GNU make and a C++ compiler.

 

Build environment configuration

Jikes uses an autoconf/automake script, configure, to automatically detect the capabilities of your platform, and set the appropriate compiler flags. The configure script is available at the root of the Jikes source tree.

This script will run several tests and basically creates two important files:

  • config.h: contains the flags set by the script. This file is included when compiling (used to enable the appropriate #ifdef sections in the source code).
  • Makefile: created where you invoke the configure script. Used by the make tool to compile Jikes.

The easiest way to configure the build environment is to invoke the configure script from the jikes root directory: the Makefile will be created in this same directory, and the config.h file in the src/ directory.

in the root dir of Jikes:
./configure

 

If the configure script does run properly or crashes, it produces a log file (config.log) that you can use to see what test failed or crashed. It's especially useful when trying to compile Jikes on a new platform which is not properly handled by the script and which requires extra parameters. It's also a good starting point when posting about configure-related problems in the mailing list.

 

Configure script arguments

The configure script accepts many possible arguments, most of which you will never use. A complete list of possible argumets will be printed if you pass the --help argument to the configure script. The most frequently used configure options are:

--prefix=[install directory]
--enable-debug (enables debug build)
--host=[host platform]
CXX=[C++ compiler]
CXXFLAGS=[C++ compiler flags]

 

Building in a different directory

If you want to have the object files (.o) and jikes executable created in a separate directory (cleaner to separate source code and object files; also useful when having more than one build configuration), just go to the wanted directory and invoke the configure script from there. The files will be created under this directory, including the Makefile that you'll invoke later.

 

C++ Namespaces support

Jikes source code is C++ namespace compliant, which means that compilers which allow namespaces can be used to compile Jikes. This is normally automatically detected by the configure script, but you can force it by specifying the following additional parameter if not properly detected:

./configure HAVE_NAMESPACES=1

 

In addition to this, an extra parameter may be needed depending on your compiler and your needs: when switched on, every class, method and variable is declared inside the Jikes namespace (useful if one of Jikes-defined names collide with an external library, or if your compiler is a bit touchy about namespaces):

./configure --enable-jikes-namespace

 

Note: --enable-jikes-namespace must not be specified if your compiler does not support namespaces (or if configure did not detect its supports it and you did not force it as shown above by using HAVE_NAMESPACES), or you'll get nasty compiling errors ;o)

 

Building Jikes

Once the configure script has finished, the jikes executable can be built using the make command. If GNU make is installed as gmake on your system, use it instead of make in the following instructions.

make
(jikes executable is generated in src/ directory)

 

The most commonly used make targets are:

make clean (remove executable and .o files)
make distclean (remove all generated files)
make install (install into --prefix dir)
make install-strip (install without debug symbols)