Building JOGL on the command line: Difference between revisions

From JogampWiki
Jump to navigation Jump to search
m (formatting)
 
(19 intermediate revisions by 2 users not shown)
Line 2: Line 2:


To build JOGL on the command line, we'll need to install prerequisites like Ant, pull the code from a Git repository, and run the Ant build scripts.
To build JOGL on the command line, we'll need to install prerequisites like Ant, pull the code from a Git repository, and run the Ant build scripts.
Note: A static html version exists in the JOGL project ''doc'' folder, [{{SERVER}}/jogl/doc/HowToBuild.html see].


= Supported platforms =
= Supported platforms =
Line 9: Line 11:
= Install a JDK =
= Install a JDK =


The first thing we need is a Java Development Kit (JDK). JOGL will work with [http://openjdk.java.net/ OpenJDK] and [http://icedtea.classpath.org/ IcedTea], but here we use Oracle's JDK as an example.
The first thing we need is a Java Development Kit (JDK). JOGL will work with [http://openjdk.java.net/ OpenJDK] and [http://icedtea.classpath.org/ IcedTea], but here we use Oracle's and Apple's JDKs as examples.
 
If you've got some kind of Java installed, but you're not sure whether it's a JDK or a Java Runtime Environment (JRE), look inside the directory. If it's got a <tt>jre</tt> subdirectory inside, it's a JDK. A JRE contains only <tt>bin</tt> and <tt>lib</tt> directories.


* Download the JDK from at http://www.oracle.com/technetwork/java/javase/downloads/index.html.
* Check if you have a JDK
** Make sure you get Java SE 6 update 23 or later.
** You must use a JDK, not a JRE, because Ant needs <tt>bin/javac</tt>, which doesn't come in the JRE. On Windows and Linux, Ant also needs <tt>lib/tools.jar</tt>, which doesn't come in the JRE.
* Install the JDK wherever you like.
** On Windows and Linux, if you've got some kind of Java installed, but you're not sure whether it's a JDK or a Java Runtime Environment (JRE), look inside the directory. If it's got a <tt>jre</tt> subdirectory inside, it's a JDK. A JRE contains only <tt>bin</tt> and <tt>lib</tt> directories.
** On Mac OS X, Apple's JDK 6 may be included with the operating system, depending on what version you're running. It would be at <tt>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk</tt>. If you want to use Java 7, you'll need to install that yourself (see below).
* Get a JDK if needed
** On Windows and Linux, download the JDK from at http://www.oracle.com/technetwork/java/javase/downloads/index.html. Make sure you get Java SE 6 update 24 or later. You can install the JDK wherever you like.
** On Mac OS X, for Java 7 and later, you can download it from http://www.oracle.com/technetwork/java/javase/downloads/index.html just like on Windows and Linux. If you're using Apple's JDK 6, click "Apple menu > Software update..." to update Apple's JDK.
* Add the JDK's <tt>bin</tt> directory to your path.
* Add the JDK's <tt>bin</tt> directory to your path.
** You must use a JDK, not a JRE, because Ant needs <tt>bin/javac</tt>, which doesn't come in the JRE.
** On Windows, append <tt>;your JDK\bin</tt> to your Path environment variable.
** On Windows, append <tt>;your JDK\bin</tt> to your Path environment variable.
** On Linux, append <tt>:your JDK/bin</tt> to your PATH environment variable.
** On Linux, append <tt>:your JDK/bin</tt> to your PATH environment variable.
* Set the <tt>JAVA_HOME</tt> environment variable to your JDK path.
** On Mac OS X, prepend <tt>/Library/Java/JavaVirtualMachines/jdk1.7.x_x.jdk/Contents/Home/bin:</tt> (or <tt>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:</tt> for Apple's JDK 6) to your PATH environment variable.
** You must use a JDK, not a JRE, because Ant needs <tt>lib/tools.jar</tt>, which doesn't come in the JRE.
* Set the <tt>JAVA_HOME</tt> environment variable
** On Windows and Linux, set the <tt>JAVA_HOME</tt> environment variable to your JDK path.
** On Mac OS X, set <tt>JAVA_HOME</tt> to <tt>/Library/Java/JavaVirtualMachines/jdk1.7.x_x.jdk/Contents/Home</tt> (or <tt>/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home</tt> for Apple's JDK 6).
* Test your JDK by opening a shell and typing <tt>java -version</tt> and <tt>javac -version</tt>
* Test your JDK by opening a shell and typing <tt>java -version</tt> and <tt>javac -version</tt>


 
If you're using an existing JDK instead of installing a new one, make sure you don't have any JOGL or ANTLR JARs in its extension directory. This can cause strange build or runtime problems.
If you're using an existing JDK instead of installing a new one, make sure you don't have any JOGL or ANTLR JARs in its extension directory. This can cause build problems.
* On Windows and Linux, delete any JOGL or ANTLR JARs from <tt>jre/lib/ext</tt>
* On Windows and Linux, delete any JOGL or ANTLR JARs from <tt>jre/lib/ext</tt>
* On Mac OS X, delete any JOGL or ANTLR JARs from <tt>/Library/Java/Extensions</tt>
* On Mac OS X, delete any JOGL or ANTLR JARs from <tt>/Library/Java/Extensions</tt> and <tt>~/Library/Java/Extensions</tt>


= Install Ant =
= Install Ant =
Line 38: Line 42:
* Add Ant executables to your path
* Add Ant executables to your path
** On Windows, append <tt>;your Ant dir\bin</tt> to your Path environment variable.
** On Windows, append <tt>;your Ant dir\bin</tt> to your Path environment variable.
** On Linux or Mac OS X, append <tt>:your Ant dir/bin</tt> to your PATH environment variable.
** On Linux, append <tt>:your Ant dir/bin</tt> to your PATH environment variable.
** On Mac OS X, prepend <tt>your Ant dir/bin:</tt> to your PATH environment variable.
* Test your Ant installation by opening a shell and typing <tt>ant -version</tt>
* Test your Ant installation by opening a shell and typing <tt>ant -version</tt>
** If you have problems, more detailed installation instructions are at http://ant.apache.org/manual/index.html.
** If you have problems, more detailed installation instructions are at http://ant.apache.org/manual/index.html.
Line 47: Line 52:


* On Windows, remove it from the list of environment variables in "My Computer > Properties > Advanced > Environment Variables > System Variables".
* On Windows, remove it from the list of environment variables in "My Computer > Properties > Advanced > Environment Variables > System Variables".
* On Linux or Mac OS X, remove it from your <tt>.cshrc</tt> or equivalent shell setup file.
* On Linux, remove it from your <tt>.cshrc</tt> or equivalent shell setup file.
* On Mac OS X, remove it from your <tt>.bash_profile</tt> or equivalent shell setup file.


= Install Git =
= Install Git =
Line 55: Line 61:
* On Windows
* On Windows
** Go to http://code.google.com/p/msysgit/downloads/list.
** Go to http://code.google.com/p/msysgit/downloads/list.
** Click the download link for an installer (for example <tt>Git-1.7.3.1-preview20101002.exe</tt>), then run it.
** Click the download link for an installer (for example <tt>Git-1.7.7.1-preview20111027.exe</tt>), then run it.
** Choose "Run Git from the Windows Command Prompt" during the install process.
** Choose "Run Git from the Windows Command Prompt" during the install process.
* On Linux and Solaris
* On Linux and Solaris
Line 61: Line 67:
* On Mac OS X
* On Mac OS X
** Go to http://code.google.com/p/git-osx-installer/downloads/list.
** Go to http://code.google.com/p/git-osx-installer/downloads/list.
** Click the download link for an installer (for example <tt>git-1.7.3.4-x86_64-leopard.dmg</tt>), then open it.
** Click the download link for an installer (for example <tt>git-1.7.7-intel-universal-snow-leopard.dmg</tt>). Once it's downloaded, click "Downloads > git-1.7.7-intel-universal-snow-leopard.dmg" to open it.
** Drag the Git icon into your Applications folder.
** Double-click the icon for <tt>git-1.7.7-intel-universal-snow-leopard.pkg</tt> and follow the instructions to install it.
** Prepend <tt>/usr/local/git/bin:</tt> to your PATH environment variable.
* Test your Git installation by opening a new shell and typing <tt>git --version</tt>
* Test your Git installation by opening a new shell and typing <tt>git --version</tt>


= Install MinGW (Windows only) =
= Install MinGW (''Windows'' only) =
 
For the JOGL build scripts to run on Windows, you'll need Minimalist GNU for Windows (MinGW) so you can use the GCC compiler.
 
We have to use MinGW64 not just for the 64bit build, but for the 32bit build as well.
Homepage is http://mingw-w64.sourceforge.net.


For the JOGL build scripts to run on Windows, you'll need Minimalist GNU for Windows (MinGW) so you can use the gcc compiler.
MinGW64 is deployed in different configurations, the following lists
the version we use:
* version: 4.8.1
* threading: win32
* exceptions: SJLJ
* revision: 5


* Create a <tt>C:\MinGW</tt> directory.
== ''Windows'' /x86 (32 bit) ==
* Download the installer from http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get/ into the new directory.
* Manual Installation
** For example, version mingw-get-0.1-alpha-5 is in a file called <tt>mingw-get-0.1-mingw32-alpha-5-bin.zip</tt>
** Download from http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/, i.e.  
* Extract the installer file.
        http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-win32/sjlj/
** The <tt>bin</tt>, <tt>libexec</tt>, and <tt>var</tt> directories should be directly inside <tt>C:\MinGW</tt>
** Unzip using 7zip into <tt> C:\ </tt> and rename folder <tt>C:\MinGW32</tt> to <tt>C:\MinGW</tt>
* UI Installation
** Download the installer http://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/mingw-builds-install.exe/download
** Chose options as described above plus ''host x32'' for 32bit host
** Install ..
** Copy the including <tt> MinGW32 </tt> folder to become <tt> C:\MinGW</tt>
* Append <tt>;C:\MinGW\bin</tt> to the end of your Path environment variable.
* Append <tt>;C:\MinGW\bin</tt> to the end of your Path environment variable.
* Open new shell and type <tt>mingw-get install gcc</tt>
 
** This may take a few minutes to download and install the rest of MinGW.
== ''Windows'' /x86_64 (64 bit) ==
* Test your MinGW installation by opening a new shell and typing <tt>gcc --version</tt>
* Manual Installation
** Download from http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/, i.e.
        http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/64-bit/threads-win32/sjlj/
** Unzip using 7zip into <tt> C:\ </tt>, new folder should be named <tt>C:\MinGW64</tt>
* UI Installation
** Download the installer http://sourceforge.net/projects/mingwbuilds/files/mingw-builds-install/mingw-builds-install.exe/download
** Chose options as described above plus ''host x64'' for 32bit host
** Install ..
** Copy the including <tt> MinGW64 </tt> folder to become <tt>C:\MinGW64</tt>
* Append <tt>;C:\MinGW64\bin</tt> to the end of your Path environment variable.
 
Now you may test your MinGW installation by opening a new shell and typing <tt>gcc --version</tt>


= Check and install developer packages (Linux and Solaris only) =
= Check and install developer packages (Linux and Solaris only) =
Line 83: Line 116:
Depending on your Linux or Solaris flavor and version, you may need to install some developer packages to build JOGL. See the [[Required developer packages|list of developer packages for each operating system distribution]] to check if you're missing one.
Depending on your Linux or Solaris flavor and version, you may need to install some developer packages to build JOGL. See the [[Required developer packages|list of developer packages for each operating system distribution]] to check if you're missing one.


= Pull the JOGL source code from Git =
= Install Xcode (Mac OS X only) =
 
The easiest way to set up GCC on Mac OS X is to install Xcode 4. It's a cheap download from the Mac App Store. Once you've installed it, open a new shell and type <tt>gcc --version</tt> to make sure GCC is available.
 
= Pull the JOGL source code from GitHub or JogAmp =


You'll need to get the source code for two projects, gluegen and jogl. The simple way to get it is by cloning the canonical repository.
You'll need to get the source code for two projects, gluegen and jogl. The simple way to get it is by cloning the canonical repository.


* Open a shell and cd to where you want the code to go
* Open a shell and cd to where you want the code to go.
* Type <tt>git clone git://github.com/sgothel/gluegen.git gluegen</tt> and wait for the code to download.
* Type <tt>git clone --recurse-submodules git://github.com/sgothel/gluegen.git gluegen</tt> and wait for the code to download.
* Type <tt>git clone git://github.com/sgothel/jogl.git jogl</tt> and wait for the code to download.
* Type <tt>git clone --recurse-submodules git://github.com/sgothel/jogl.git jogl</tt> and wait for the code to download.
 
If you wish, you can clone from <tt>git://jogamp.com/srv/scm</tt> instead of <tt>git://github.com/sgothel</tt>. The contents of the two repositories should be the same.


If you're going to be contributing fixes or doing development, you'll need to check out from your own GitHub account. The instructions at [[Contributing a new feature or fix|"Contributing a new feature or fix"]] explain how to do that.


After this is done, you should see a <tt>gluegen</tt> and a <tt>jogl</tt> directory side by side in your working directory. They need to be together like this or the build won't work properly.
After this is done, you should see a <tt>gluegen</tt> and a <tt>jogl</tt> directory side by side in your working directory. They need to be together like this or the build won't work properly.
Line 112: Line 152:
= Test the JOGL build =
= Test the JOGL build =


To test the build, cd to <tt>jogl/make</tt> and type <tt>ant junit.run</tt>. This will run the full suite of JUnit tests.
Before runing the tests, make sure the Z-Zip file archiver is installed.
* If you don't have it, download the latest version from http://www.7-zip.org/ and install it.
* Make sure <tt>7z</tt> is visible in a command shell.
** On Windows, append <tt>;C:\Program Files\7-Zip</tt> to your PATH environment variable.
* Test 7-Zip by opening a new shell and typing <tt>7z</tt>
 
Then to run the full suite of JUnit tests:
* For gluegen, cd to <tt>gluegen/make</tt> and type <tt>ant junit.run</tt>
* For jogl, cd to <tt>jogl/make</tt> and type <tt>ant junit.run</tt>


= Build Javadoc (optional) =
= Build Javadoc (optional) =
Line 121: Line 169:


If you want to set different options for components and compilers during the Ant build, copy <tt>gluegen/make/gluegen.properties</tt> and/or <tt>jogl/make/jogl.properties</tt> into your home directory (pointed to by the Java system property <tt>user.home</tt>) and edit them as desired.
If you want to set different options for components and compilers during the Ant build, copy <tt>gluegen/make/gluegen.properties</tt> and/or <tt>jogl/make/jogl.properties</tt> into your home directory (pointed to by the Java system property <tt>user.home</tt>) and edit them as desired.
For example, if you want to build JOGL with extra debugging information in the JARs and native libraries, create a <tt>jogl.properties</tt> file in your home directory and add these lines to it:
<pre>javacdebuglevel=source,lines,vars
c.compiler.debug=true</pre>
The first line puts debugging information in the class files so you can step through Java files. The second line puts debugging information in the native libraries so you can step through C files containing JNI code.
WARNING: Make sure there are no trailing spaces on the property lines in this file, or they may have no effect. This seems to be due to the way Ant reads these files.


= Try the experimental nvidia Cg toolkit binding (optional) =
= Try the experimental nvidia Cg toolkit binding (optional) =
Line 130: Line 187:
* Original JOGL build instructions by Christopher Kline and Kenneth Russell, June 2003 (revised November 2006).
* Original JOGL build instructions by Christopher Kline and Kenneth Russell, June 2003 (revised November 2006).
* Revised by Sven Gothel and Michael Bien, May 2010.
* Revised by Sven Gothel and Michael Bien, May 2010.
* Revised by Wade Walker, January 2011.
* Revised by Wade Walker, January-March 2011.

Latest revision as of 14:02, 10 October 2015

Overview

To build JOGL on the command line, we'll need to install prerequisites like Ant, pull the code from a Git repository, and run the Ant build scripts.

Note: A static html version exists in the JOGL project doc folder, see.

Supported platforms

Currently we support building JOGL on Linux (x86 32- and 64-bit), Windows XP/Vista/7 (32- and 64-bit) and Mac OS X (x86 32- and 64-bit). Additional platforms like Solaris/OpenSolaris, FreeBSD and HP/UX are handled by the build system, but are not officially supported.

Install a JDK

The first thing we need is a Java Development Kit (JDK). JOGL will work with OpenJDK and IcedTea, but here we use Oracle's and Apple's JDKs as examples.

  • Check if you have a JDK
    • You must use a JDK, not a JRE, because Ant needs bin/javac, which doesn't come in the JRE. On Windows and Linux, Ant also needs lib/tools.jar, which doesn't come in the JRE.
    • On Windows and Linux, if you've got some kind of Java installed, but you're not sure whether it's a JDK or a Java Runtime Environment (JRE), look inside the directory. If it's got a jre subdirectory inside, it's a JDK. A JRE contains only bin and lib directories.
    • On Mac OS X, Apple's JDK 6 may be included with the operating system, depending on what version you're running. It would be at /System/Library/Java/JavaVirtualMachines/1.6.0.jdk. If you want to use Java 7, you'll need to install that yourself (see below).
  • Get a JDK if needed
  • Add the JDK's bin directory to your path.
    • On Windows, append ;your JDK\bin to your Path environment variable.
    • On Linux, append :your JDK/bin to your PATH environment variable.
    • On Mac OS X, prepend /Library/Java/JavaVirtualMachines/jdk1.7.x_x.jdk/Contents/Home/bin: (or /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin: for Apple's JDK 6) to your PATH environment variable.
  • Set the JAVA_HOME environment variable
    • On Windows and Linux, set the JAVA_HOME environment variable to your JDK path.
    • On Mac OS X, set JAVA_HOME to /Library/Java/JavaVirtualMachines/jdk1.7.x_x.jdk/Contents/Home (or /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home for Apple's JDK 6).
  • Test your JDK by opening a shell and typing java -version and javac -version

If you're using an existing JDK instead of installing a new one, make sure you don't have any JOGL or ANTLR JARs in its extension directory. This can cause strange build or runtime problems.

  • On Windows and Linux, delete any JOGL or ANTLR JARs from jre/lib/ext
  • On Mac OS X, delete any JOGL or ANTLR JARs from /Library/Java/Extensions and ~/Library/Java/Extensions

Install Ant

If you don't already have Ant installed, or your version is older than 1.8, you'll need to install a new version of Ant.

  • Download Ant 1.8 or later from http://ant.apache.org/bindownload.cgi.
    • For example, download the file apache-ant-1.8.2-bin.zip and unzip it to your desired installation directory.
  • Set your ANT_HOME environment variable to the new installation directory.
  • Add Ant executables to your path
    • On Windows, append ;your Ant dir\bin to your Path environment variable.
    • On Linux, append :your Ant dir/bin to your PATH environment variable.
    • On Mac OS X, prepend your Ant dir/bin: to your PATH environment variable.
  • Test your Ant installation by opening a shell and typing ant -version

Unset the classpath

Unset the CLASSPATH environment variable if it exists. Having this set with random JARs on it is one of the main causes of build problems.

  • On Windows, remove it from the list of environment variables in "My Computer > Properties > Advanced > Environment Variables > System Variables".
  • On Linux, remove it from your .cshrc or equivalent shell setup file.
  • On Mac OS X, remove it from your .bash_profile or equivalent shell setup file.

Install Git

The JOGL project uses Git for source code management and collaboration. If you don't already have it, you'll need to install Git 1.6.0 or later.

  • On Windows
  • On Linux and Solaris
  • On Mac OS X
    • Go to http://code.google.com/p/git-osx-installer/downloads/list.
    • Click the download link for an installer (for example git-1.7.7-intel-universal-snow-leopard.dmg). Once it's downloaded, click "Downloads > git-1.7.7-intel-universal-snow-leopard.dmg" to open it.
    • Double-click the icon for git-1.7.7-intel-universal-snow-leopard.pkg and follow the instructions to install it.
    • Prepend /usr/local/git/bin: to your PATH environment variable.
  • Test your Git installation by opening a new shell and typing git --version

Install MinGW (Windows only)

For the JOGL build scripts to run on Windows, you'll need Minimalist GNU for Windows (MinGW) so you can use the GCC compiler.

We have to use MinGW64 not just for the 64bit build, but for the 32bit build as well. Homepage is http://mingw-w64.sourceforge.net.

MinGW64 is deployed in different configurations, the following lists the version we use:

  • version: 4.8.1
  • threading: win32
  • exceptions: SJLJ
  • revision: 5

Windows /x86 (32 bit)

       http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/32-bit/threads-win32/sjlj/

Windows /x86_64 (64 bit)

       http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.1/64-bit/threads-win32/sjlj/

Now you may test your MinGW installation by opening a new shell and typing gcc --version

Check and install developer packages (Linux and Solaris only)

Depending on your Linux or Solaris flavor and version, you may need to install some developer packages to build JOGL. See the list of developer packages for each operating system distribution to check if you're missing one.

Install Xcode (Mac OS X only)

The easiest way to set up GCC on Mac OS X is to install Xcode 4. It's a cheap download from the Mac App Store. Once you've installed it, open a new shell and type gcc --version to make sure GCC is available.

Pull the JOGL source code from GitHub or JogAmp

You'll need to get the source code for two projects, gluegen and jogl. The simple way to get it is by cloning the canonical repository.

If you wish, you can clone from git://jogamp.com/srv/scm instead of git://github.com/sgothel. The contents of the two repositories should be the same.

If you're going to be contributing fixes or doing development, you'll need to check out from your own GitHub account. The instructions at "Contributing a new feature or fix" explain how to do that.

After this is done, you should see a gluegen and a jogl directory side by side in your working directory. They need to be together like this or the build won't work properly.

Build JOGL

You actually have to build gluegen first, then jogl.

  • Build gluegen
    • cd to gluegen/make
    • Type ant clean
    • Type ant
  • Build jogl
    • cd to jogl/make
    • Type ant clean
    • Type ant


During the build, ANTLR produces lots of warnings about the C grammar and our modifications to some of the signatures of the productions. The C grammar warnings have been documented by the author of the grammar as having been investigated completely and harmless, and the warnings about our modifications are also harmless.

Test the JOGL build

Before runing the tests, make sure the Z-Zip file archiver is installed.

  • If you don't have it, download the latest version from http://www.7-zip.org/ and install it.
  • Make sure 7z is visible in a command shell.
    • On Windows, append ;C:\Program Files\7-Zip to your PATH environment variable.
  • Test 7-Zip by opening a new shell and typing 7z

Then to run the full suite of JUnit tests:

  • For gluegen, cd to gluegen/make and type ant junit.run
  • For jogl, cd to jogl/make and type ant junit.run

Build Javadoc (optional)

Type ant javadoc in the jogl/make directory. This will produce the end-user documentation for JOGL along with some auxiliary utility packages.

Set up custom Ant properties (optional)

If you want to set different options for components and compilers during the Ant build, copy gluegen/make/gluegen.properties and/or jogl/make/jogl.properties into your home directory (pointed to by the Java system property user.home) and edit them as desired.

For example, if you want to build JOGL with extra debugging information in the JARs and native libraries, create a jogl.properties file in your home directory and add these lines to it:

javacdebuglevel=source,lines,vars
c.compiler.debug=true

The first line puts debugging information in the class files so you can step through Java files. The second line puts debugging information in the native libraries so you can step through C files containing JNI code.

WARNING: Make sure there are no trailing spaces on the property lines in this file, or they may have no effect. This seems to be due to the way Ant reads these files.

Try the experimental nvidia Cg toolkit binding (optional)

If you want to try the experimental binding to nvidia's Cg shader language, first download the Cg toolkit for your platform. Then, when you build the jogl project, add the -Djogl.cg=1 option to the ant command line. The Cg binding has been tested on Windows, Linux, and Mac OS X.

Acknowledgements

  • Original JOGL build instructions by Christopher Kline and Kenneth Russell, June 2003 (revised November 2006).
  • Revised by Sven Gothel and Michael Bien, May 2010.
  • Revised by Wade Walker, January-March 2011.