<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>How to build the JOGL OpenGL binding for Java</title>
</head>
<body>

<h1>How to build the JOGL OpenGL binding for Java</h1>
<hr>

Here are the steps that are required in order to build the JOGL
OpenGL binding from a fresh copy of the source distribution:

<OL>
  <LI> <B>Install the JDK:</B> <br> the JOGL build requires JDK 1.4.2 or later. On AMD64 platforms such as Linux/AMD64, Solaris/AMD64 and Windows/AMD64, the build requires the Sun JDK 5.0 or later, as the 1.4.2 releases did not have an AMD64-specific JVM. On these platforms, it is also currently necessary to have e.g. <code>bin/amd64/java</code> in your PATH, although from a technical standpoint this could be worked around in the build process.
  <LI> <B>Install Ant:</B> <br> Download and unpack the latest version of Ant from <a href="http://ant.apache.org/">http://ant.apache.org</a> and add the <code>bin/</code> subdirectory to your PATH environment variable.
  <LI> <B>Install ANTLR:</B> <br> Download and unpack the latest version of ANTLR from <a href="http://www.antlr.org">http://www.antlr.org</a>. Only the jar file is needed.

  <LI> <B>Unset your CLASSPATH environment variable:</B> <br> The Ant build requires that the JOGL jars not be visible on the classpath. On Unix, type <code> unsetenv CLASSPATH </code> into a csh or tcsh shell, or <code> unset CLASSPATH </code> into a Bourne shell. On Windows, type <code> set CLASSPATH= </code> into a command prompt.

  <LI> <B>Check out the GlueGen source tree:</B> <br> JOGL relies on the GlueGen project to autogenerate most of the Java and JNI code for the OpenGL interface. The <code>jogl/</code> and <code>gluegen/</code> workspaces must be side-by-side in order for JOGL to build properly.

  <LI> <B>Copy and edit gluegen.properties:</B> <br>
    Copy <b>make/gluegen.properties</b> from the GlueGen workspace into your home directory (pointed to by the Java system property <b>user.home</b>). <br>
    Edit the copy to change the location of the ANTLR jar file (typically <b>$HOME/antlr-2.7.2/antlr.jar</b>).

  <LI> <B>Copy and edit jogl.properties:</B> <br>
    Copy <b>make/jogl.properties</b> into your home directory (pointed to by the Java system property <b>user.home</b>). <br>
    Edit the copy to change any settings that are necessary, in particular the setting of win32.c.compiler on Windows platforms (one of "vc6", "vc7", "vc8", or "mingw").
    <UL>
      <LI>The Windows build requires one of Microsoft Visual C++ 6, 7 (Visual Studio .NET), 8 (Microsoft Visual C++ 2005) or the free MinGW (<a href="http://www.mingw.org/">http://www.mingw.org/</a>) compilers to be installed. Choose the appropriate setting of win32.c.compiler for the compiler being used. The C compiler executable (cl.exe, gcc.exe) must be in your PATH; see below.
      <LI> When building with VC6, VC7, or VC8, you must first run the <code>vcvars32.bat</code> environment variable setup script from the appropriate version of Visual C++. The Windows C compiler you choose in jogl.properties (i.e., <code>win32.c.compiler=vc6</code>) must match the version of the compiler from which you executed <code>vcvars32.bat</code>. No error checking is done on the compiler version used, so please be careful.
    </UL>  

  <LI> <B>Build the source tree:</B> <br> Open a command shell in the "make" directory of the source tree and type "ant"</code>.
      <UL>
	<LI>An experimental binding to the high-level <a href="http://developer.nvidia.com/view.asp?PAGE=cg_main">Cg</a> language by NVidia corporation can be generated by specifying <code>-Djogl.cg=1</code> to ant; e.g. <code>ant -Djogl.cg=1</code>. The Cg binding has been tested on Windows, Linux, and Mac OS X.
      </UL>
      
  <LI> <B>Add JOGL to your CLASSPATH:</B> <br> To be able to use JOGL once built, you must add the build process' resulting jogl.jar (<source tree root>/build/jogl.jar) to your CLASSPATH environment variable.
  <LI> <B>Add JOGL to your PATH, LD_LIBRARY_PATH, or DYLD_LIBRARY_PATH:</B> <br> To be able to use JOGL once built, you must also add the build process's JNI code library directory (&lt;source tree root&gt;/build/obj) to your PATH (on Windows), LD_LIBRARY_PATH (on most Unix platforms), or DYLD_LIBRARY_PATH (on Mac OS X) environment variable.

  <LI> <B>Test if everything's working:</B> <br> To test if everything went well, you should check out the source code for the <B>jogl-demos</B> project (available at <a href = "http://jogl-demos.dev.java.net/">http://jogl-demos.dev.java.net/</a>), build the demos using the supplied instructions, and run the Gears demo ("java demos.gears.Gears").
  <LI> <B>Build Javadoc:</B> <br> "ant javadoc" will produce the end-user documentation for JOGL along with some auxiliary utility packages. The developers' documentation, including that for the GlueGen tool, can be generated for your current platform using one of the following commands: "ant javadoc.dev.win32", "ant javadoc.dev.x11", or "ant javadoc.dev.macosx". (The javadoc for the Cg binding can be built by inserting <code>-Djogl.cg=1</code> into the command line as above.)
</OL>
 
Note that there are a lot of warnings produced by ANTLR 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. <P>

<h2> Common build problems </h2>

<OL>

<LI> <B>Your CLASSPATH environment variable appears to be set (some JOGL classes are currently visible to the build.)</B>, and $CLASSPATH isn't set.

<DL>
<DD> An older version of JOGL was installed into the extension directory of the JDK you're using to build the current JOGL. On Windows and Linux, delete any ANTLR jars from jre/lib/ext, and on Mac OS X, delete them from /Library/Java/Extensions. It is generally not a good idea to drop JOGL directly into the extensions directory, as this can interfere with upgrades via Java Web Start.
</DL>

<LI> <B>CharScanner; panic: ClassNotFoundException: com.sun.gluegen.cgram.CToken</B>

<DL>
<DD> This occurs because ANTLR was dropped into the Extensions
directory of the JRE/JDK. On Windows and Linux, delete any ANTLR jars from jre/lib/ext, and on Mac OS X, delete them from /Library/Java/Extensions. Use the antlr.jar property in the build.xml to point to a JRE-external location of this jar file.
</DL>

</OL>

- Christopher Kline and Kenneth Russell, June 2003

</body>
</html>