Changeset 18954

Show
Ignore:
Timestamp:
06/04/06 08:34:31 (2 years ago)
Author:
patrick
Message:

Regen.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/branches/2.0/INSTALL.html

    r17628 r18954  
    11<html><head> 
    22      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    3    <title>Building and Installing the Juggler Project (Version 2.0)</title><link rel="stylesheet" href="base_style.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.68.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e1"></a>Building and Installing the Juggler Project (Version 2.0)</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="othername">The Juggler Team</span></h3></div></div></div><div><p class="pubdate">$Date$</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#d0e15">Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e30">Important Notes for IRIX Users</a></span></dt><dt><span class="section"><a href="#d0e114">Important Note for Win32 Users</a></span></dt></dl></dd><dt><span class="section"><a href="#source.code.section">Getting the Source Code and the Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#section.cvs.access">How to Get the Juggler Suite from CVS</a></span></dt><dt><span class="section"><a href="#d0e216">Downloading Third-Party Dependencies</a></span></dt></dl></dd><dt><span class="section"><a href="#compile.section">Compiling</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e302">Important Note Regarding Compiling</a></span></dt><dt><span class="section"><a href="#d0e313">Compiling the Juggler Suite of Tools</a></span></dt><dt><span class="section"><a href="#compile.individual.section">Tips for Compiling Individual Tools in the Juggler Suite</a></span></dt></dl></dd></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e15"></a>Introduction</h2></div></div></div><p>You have downloaded the source code for Version 2.0 of the Juggler 
    4     Project. This document explains how to build the modules of the Juggler 
    5     Project from the source code. We begin by explaining some issues related 
    6     to specific operating systems. We then explain how to get the source code 
    7     from our CVS repository. (Those users who downloaded a pre-packaged source 
    8     release can skip ahead to <a href="#using.configure.pl" title="Using configure.pl">the section called &#8220;Using <span><strong class="command">configure.pl</strong></span>&#8221;</a>). We 
    9     conclude with instructions on how to build VR Juggler and its individual 
    10     components.</p><p>Before reading further, we recommend that readers take a look at the 
    11     Wiki page relating to building from CVS (<a href="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs" target="_top">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</a>). 
    12     It is a <span class="emphasis"><em>supplement</em></span> to this document containing tips 
    13     and reminders for those users building the CVS version of VR Juggler. It 
    14     is not a replacement for this document, nor can it stand on its own as 
    15     build instructions. You are reading the definitive build instructions; the 
    16     Wiki page merely provides informal, extra information.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e30"></a>Important Notes for IRIX Users</h3></div></div></div><p>Despite our best efforts, there are some issues related to 
    17       compiling the Juggler Project on IRIX. We introduce them in this section 
    18       and explain how to work around them.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e35"></a>Perl Version</h4></div></div></div><p>There are many Perl scripts used as part of getting, 
    19         configuring, and building the Juggler Suite of tools. In particular, 
    20         two scripts required for compiling need Perl 5.005 or newer. The 
    21         version of Perl that ships with IRIX 6.5 is very old (circa 1997) and 
    22         does not work with many Perl scripts we have written. SGI provides a 
    23         much newer version of Perl (5.6.1) with their freeware tools (<a href="http://freeware.sgi.com/" target="_top">http://freeware.sgi.com/</a>). It 
    24         will be necessary to install that version for our scripts to work. 
    25         This version is typically installed as 
    26         <code class="filename">/usr/freeware/bin/perl</code>.</p><p>Once you have a modern Perl installed, you can run various Perl 
    27         scripts as follows:</p><pre class="screen">/usr/freeware/bin/perl &lt;script-name&gt;</pre><p>The above will be required any time a Perl script fails with an 
    28         error similar to the following:</p><pre class="screen">Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35. 
     3   <title>Building and Installing the Juggler Project (Version 2.0)</title><link rel="stylesheet" href="base_style.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e1"></a>Building and Installing the Juggler Project (Version 2.0)</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="othername">The Juggler Team</span></h3></div></div></div><div><p class="pubdate">$Date$</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#d0e15">Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e30">Important Notes for IRIX Users</a></span></dt><dt><span class="section"><a href="#d0e114">Important Note for Windows Users</a></span></dt></dl></dd><dt><span class="section"><a href="#source.code.section">Getting the Source Code and the Dependencies</a></span></dt><dd><dl><dt><span class="section"><a href="#section.cvs.access">How to Get the Juggler Suite from CVS</a></span></dt><dt><span class="section"><a href="#d0e216">Downloading Third-Party Dependencies</a></span></dt></dl></dd><dt><span class="section"><a href="#compile.section">Compiling</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e308">Important Note Regarding Compiling</a></span></dt><dt><span class="section"><a href="#d0e319">Compiling the Juggler Suite of Tools</a></span></dt><dt><span class="section"><a href="#compile.individual.section">Tips for Compiling Individual Tools in the Juggler 
     4         Suite</a></span></dt></dl></dd></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e15"></a>Introduction</h2></div></div></div><p>You have downloaded the source code for Version 2.0 of the Juggler 
     5      Project. This document explains how to build the modules of the Juggler 
     6      Project from the source code. We begin by explaining some issues related 
     7      to specific operating systems. We then explain how to get the source 
     8      code from our CVS repository. (Those users who downloaded a pre-packaged 
     9      source release can skip ahead to <a href="#using.configure.pl" title="Using configure.pl">the section called &#8220;Using <span><strong class="command">configure.pl</strong></span>&#8221;</a>). 
     10      We conclude with instructions on how to build VR Juggler and its 
     11      individual components.</p><p>Before reading further, we recommend that readers take a look at 
     12      the Wiki page relating to building from CVS (<a href="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs" target="_top">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</a>). 
     13      It is a <span class="emphasis"><em>supplement</em></span> to this document containing tips 
     14      and reminders for those users building the CVS version of VR Juggler. It 
     15      is not a replacement for this document, nor can it stand on its own as 
     16      build instructions. You are reading the definitive build instructions; 
     17      the Wiki page merely provides informal, extra information.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e30"></a>Important Notes for IRIX Users</h3></div></div></div><p>Despite our best efforts, there are some issues related to 
     18         compiling the Juggler Project on IRIX. We introduce them in this 
     19         section and explain how to work around them.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e35"></a>Perl Version</h4></div></div></div><p>There are many Perl scripts used as part of getting, 
     20            configuring, and building the Juggler Suite of tools. In 
     21            particular, two scripts required for compiling need Perl 5.005 or 
     22            newer. The version of Perl that ships with IRIX 6.5 is very old 
     23            (circa 1997) and does not work with many Perl scripts we have 
     24            written. SGI provides a much newer version of Perl (5.6.1) with 
     25            their freeware tools (<a href="http://freeware.sgi.com/" target="_top">http://freeware.sgi.com/</a>). 
     26            It will be necessary to install that version for our scripts to 
     27            work. This version is typically installed as 
     28            <code class="filename">/usr/freeware/bin/perl</code>.</p><p>Once you have a modern Perl installed, you can run various 
     29            Perl scripts as follows:</p><pre class="screen">/usr/freeware/bin/perl &lt;script-name&gt;</pre><p>The above will be required any time a Perl script fails with 
     30            an error similar to the following:</p><pre class="screen">Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35. 
    2931BEGIN failed--compilation aborted at ./configure.pl line 35.</pre><p>Furthermore, it is highly recommended that the 
    30         <code class="option">--with-perl</code> argument be passed to 
    31         <span><strong class="command">configure.pl</strong></span>. This argument gives all the 
    32         Autoconf-based configure scripts a hint about where the preferred 
    33         version of Perl lives. If using 
    34         <code class="filename">/usr/freeware/bin/perl</code> to run 
    35         <span><strong class="command">configure.pl</strong></span>, we recommend that the 
    36         <span><strong class="command">configure.pl</strong></span> command line appear similar to the 
    37         following:</p><pre class="screen">/usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin</pre><p>Note that the value given to <code class="option">--with-perl</code> is the 
    38         <span class="emphasis"><em>directory</em></span> where the <span><strong class="command">perl</strong></span> 
    39         executable can be found. The configure scripts will add this directory 
    40         to the front of the search path when trying to find a suitable 
    41         <span><strong class="command">perl</strong></span> executable. Once it is found, all the Perl 
    42         scripts used for configuration, compilation, and installation will use 
    43         that executable.</p><p>To simplify command execution somewhat, it can help to have 
    44         <code class="filename">/usr/freeware/bin</code> (or whatever path is 
    45         appropriate) in your path before <code class="filename">/bin</code> or 
    46         <code class="filename">/usr/bin</code> or any of the other myriad directories 
    47         where Perl might exist on IRIX. In such a situation, none of the above 
    48         extra steps should be necessary. The correct version of Perl will be 
    49         found simply by virtue of it being early in your path.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e98"></a>MIPSpro Compiler Version</h4></div></div></div><p>Reports have been made on the VR Juggler mailing list regarding 
    50         compile failures (including segmentation faults within the compiler) 
    51         occur when using the MIPSpro Compilers Version 7.3.1.1m. We have found 
    52         upgrading to Version 7.3.1.3m (or newer) fixes the problems.</p><p>A new feature of VR Juggler 1.1 and newer is support for GCC on 
    53         IRIX. Users who do not have MIPSpro or cannot upgrade can compile and 
    54         run VR Juggler (without OpenGL Performer support) using the version of 
    55         GCC distributed by SGI. It can be downloaded from <a href="http://freeware.sgi.com/index-by-alpha.html" target="_top">http://freeware.sgi.com/index-by-alpha.html</a> 
    56         for free. When configuring the source with 
    57         <span><strong class="command">configure.pl</strong></span> (described later), use the option 
    58         <code class="option">--with-gcc</code>.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e114"></a>Important Note for Win32 Users</h3></div></div></div><p>VR Juggler 1.1 and newer use a lot of C++ features not supported 
    59       by Visual Studio 6.0. Microsoft <a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q243/4/51.asp&amp;NoWebContent=1" target="_top">acknowledges</a> 
    60       the issues concerning noncompliance to the C++ Standard with Visual 
    61       Studio 6.0, and it appears that they have no plans to fix these 
    62       problems. Therefore, we require the use of Visual Studio 7.x (.NET 2002 
    63       or 2003) to compile the source code.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="source.code.section"></a>Getting the Source Code and the Dependencies</h2></div></div></div><p>In this section, we explain how to get the Juggler Project source 
    64     code and the dependencies required to build Juggler. There are two ways to 
    65     get the source code: from a pre-packaged source release archive or from 
    66     the CVS repository on SourceForge. If you got the code from a pre-packaged 
    67     source archive, that code is a complete &#8220;<span class="quote">snapshot</span>&#8221; of the CVS 
    68     repository at the time of release. It contains all dependencies that would 
    69     otherwise have been acquired using CVS. It <span class="emphasis"><em>does not</em></span> 
    70     contain binary dependencies that must be downloaded separately (such as 
    71     NSPR, the Java Developer Kit, a C++ compiler, etc.).</p><p>The current list of <span class="emphasis"><em>required</em></span> software packages 
    72     is as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>CppDOM (<a href="http://www.sourceforge.net/projects/xml-cppdom/" target="_top">http://www.sf.net/projects/xml-cppdom/</a>): 
    73         A lightweight, easy-to-use XML parser written in C++. CppDOM must be 
    74         compiled and installed for use with VR Juggler.</p></li><li><p>Boost (<a href="http://www.boost.org/" target="_top">http://www.boost.org/</a>): A C++ 
    75         library providing many powerful utility classes and libraries. Boost 
    76         must be compiled and installed for use with VR Juggler.</p></li><li><p>GMTL (<a href="http://ggt.sourceforge.net/" target="_top">http://ggt.sf.net/</a>): A 
    77         generic math library that makes use of C++ templates and STL 
    78         paradigms. GMTL must be installed for use with VR Juggler.</p></li></ul></div><p>The following lists <span class="emphasis"><em>semi-optional</em></span> 
    79     packages:</p><div class="itemizedlist"><ul type="disc"><li><p>NSPR (<a href="http://www.mozilla.org/projects/nspr/" target="_top">http://www.mozilla.org/projects/nspr/</a>): 
    80         The Netscape Portable Runtime, which can be used by VPR for threading 
    81         and sockets (required on Win32 and Solaris).</p></li><li><p>Java Developer Kit (<a href="http://java.sun.com/" target="_top">http://java.sun.com/</a>): The J2SE SDK 
    82         (or JDK) is used to compile all the Java code used in the Juggler 
    83         Project. Without it, none of the Java code can be built. We require 
    84         version 1.4 or newer. The Java Standard Edition (J2SE) can be 
    85         downloaded from <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>.</p></li><li><p>omniORB (<a href="http://www.jdom.org/" target="_top">http://omniorb.sourceforge.net/</a>): A 
    86         C++ implementation of CORBA 2.3, required for the Tweek C++ 
    87         API.</p></li></ul></div><p>The following are fully optional packages that are primarily of 
    88     interest only to people doing development on the Juggler Suite 
    89     itself:</p><div class="itemizedlist"><ul type="disc"><li><p>JUnit (<a href="http://www.junit.org/" target="_top">http://www.junit.org/</a>): A unit 
    90         testing framework for Java.</p></li><li><p>CppUnit (<a href="http://cppunit.sourceforge.net/" target="_top">http://cppunit.sourceforge.net/</a>): 
    91         A unit testing framework for C++. The Juggler C++ test suties make use 
    92         of extensions to CppUnit. An extended version of the CppUnit source 
    93         that includes these extensions can be acquired from the Juggler CVS 
    94         repository in the module <code class="literal">cppunit</code>. Refer to <a href="#section.cvs.access" title="How to Get the Juggler Suite from CVS">the section called &#8220;How to Get the Juggler Suite from CVS&#8221;</a> for instructions about accessing the 
    95         Juggler CVS repository.</p></li></ul></div><p>The third-party dependencies must be downloaded from the sites 
    96     listed above and installed manually. You may also have to compile one or 
    97     more of the packages if binary distributions are not available. Which 
    98     packages you download depends on what you already have installed. Note 
    99     carefully which packages are needed based on the software you have 
    100     installed and what versions of tools (such as the JDK) that you 
    101     download.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="section.cvs.access"></a>How to Get the Juggler Suite from CVS</h3></div></div></div><p>You can optionally get the Juggler Project as a source code 
    102       tarball from the website (<a href="http://www.vrjuggler.org/" target="_top">http://www.vrjuggler.org/</a>) or 
    103       you can execute the following commands from a shell to get the code from 
    104       our CVS repository:</p><pre class="screen">cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler login 
    105 cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler co juggler</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e216"></a>Downloading Third-Party Dependencies</h3></div></div></div><p>In addition to source the dependencies acquired through CVS, there 
    106       are some third-party dependencies that must be installed separately. 
    107       Remember that no Java code in VR Juggler can be used without the JDK and 
    108       a working Java version of CORBA.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e221"></a>Boost</h4></div></div></div><p>The minimum required version of Boost, as of this writing, is 
    109         1.31.0. The Boost source can be downloaded from <a href="http://www.sf.net/projects/boost/" target="_top">http://www.sf.net/projects/boost/</a>. 
    110         To compile and install Boost, refer to its installation documentation 
    111         (<a href="http://www.boost.org/more/getting_started.html#Build_Install" target="_top">http://www.boost.org/more/getting_started.html#Build_Install</a>). 
    112         Note that you need the command <span><strong class="command">bjam</strong></span> (referred to as 
    113         &#8220;<span class="quote">boost-jam</span>&#8221; on the Boost download page) to build 
    114         Boost.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e238"></a>CppDOM</h4></div></div></div><p>For XML processing, we use CppDOM 0.3.2 or newer. The source and 
    115         binary distributions for some platforms can be downloaded from <a href="http://www.sf.net/projects/xml-cppdom/" target="_top">http://www.sf.net/projects/xml-cppdom/</a>. 
    116         If a binary version is not available for your operating system you 
    117         must compile and install CppDOM yourself. Note that you need SCons 
    118         (<a href="http://scons.sourceforge.net/" target="_top">http://scons.sourceforge.net/</a>) 
    119         to build and install CppDOM.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e249"></a>GMTL</h4></div></div></div><p>For high-level mathematical operations, we use GMTL 0.3.2 or 
    120         newer. The source distribution can be downloaded from <a href="http://www.sf.net/projects/ggt/" target="_top">http://www.sf.net/projects/ggt/</a>. 
    121         Note that you need SCons (<a href="http://scons.sourceforge.net/" target="_top">http://scons.sourceforge.net/</a>) 
    122         to build and install GMTL.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e260"></a>Netscape Portable Runtime (NSPR)</h4></div></div></div><p>Our operating system abstraction, VPR, can make use of NSPR for 
    123         operating system primitives. On some platforms (IRIX, FreeBSD, Linux, 
    124         Mac OS X), the use of NSPR is strictly optional. On others (Win32, 
    125         HP-UX, and Solaris), it is required. Based on your local system, you 
    126         should decide whether you need NSPR. Binary versions of NSPR can be 
    127         downloaded from <a href="ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases" target="_top">ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases</a>. 
    128         At this time, we recommend the use of version 4.2 or newer.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e268"></a>Java Developer Kit (also called the J2SE SDK)</h4></div></div></div><p>We make use of the Java programming language in addition to C++. 
    129         Java is used exclusively for GUIs such as Tweek and VRJConfig (which 
    130         is a JavaBean that is loaded into Tweek). To compile the Java code, a 
    131         JDK is necessary. We currently require version 1.4 or newer. The Java 
    132         Standard Edition can be downloaded from <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>. 
    133         More information can be found at <a href="http://java.sun.com/" target="_top">http://java.sun.com/</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e279"></a>omniORB</h4></div></div></div><p>omniORB is a C++ implementation of CORBA 2.3. It is required in 
    134         order to compile the Tweek C++ API. At this time, the Tweek C++ API is 
    135         not required for VR Juggler, but this situation will change in the 
    136         near future. At this time, we primarily use omniORB 4.0.x. omniORB can 
    137         be downloaded from <a href="http://omniorb.sourceforge.net/" target="_top">http://omniorb.sourceforge.net/</a>.</p><p>omniORB 3.0 has strange conventions for how installations are 
    138         made. Within the <code class="filename">bin</code> and <code class="filename">lib</code> 
    139         directories, there are platform-specific subdirectories that contain 
    140         the actual binaries (except when installed on FreeBSD via the Ports 
    141         Collection). Because of this, several extra options must be specified 
    142         in order to tell the Tweek configure script where to find everything. 
    143         Please refer to <a href="#tweek.build.section" title="Tweek">the section called &#8220;Tweek&#8221;</a> for more 
    144         details on this.</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compile.section"></a>Compiling</h2></div></div></div><p>In this section, we describe how to compile the Juggler Project. We 
    145     focus on VR Juggler as a whole, but information about some of the 
    146     individual components is provided later.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e302"></a>Important Note Regarding Compiling</h3></div></div></div><p>You have downloaded <span class="emphasis"><em>developmental</em></span> code. It 
    147       may not be stable, and it may not even compile. Compiling VR Juggler 
    148       itself can be a little complicated for anyone who does not have some 
    149       background in using CVS, Autoconf, C++, and <span><strong class="command">make</strong></span> or 
    150       Visual Studio.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e313"></a>Compiling the Juggler Suite of Tools</h3></div></div></div><p>This section explains how to get, configure, and compile all of 
    151       the tools that make up VR Juggler. Each tool compiles to its own library 
    152       and can be installed individually. (Refer to the 
    153       <code class="filename">README</code> file in this directory for more information 
    154       about the specific modules.)</p><p>To build VR Juggler on Windows, you must use the Visual Studio 
    155       solution. After getting the dependencies needed to compile VR Juggler 
    156       (see the next section), refer to the <a href="vc7/README.html" target="_top">README.html</a> file located in the 
    157       <code class="filename">vc7</code> subdirectory of this directory. Do not bother 
    158       to the rest of this document.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="config.vrjuggler.section"></a>Configuring the Juggler Build</h4></div></div></div><p>We now explain the process by which the Juggler build is 
    159         configured. The Juggler Suite makes use of the well-known, widely used 
    160         GNU tools Autoconf and GNU Make. We provide a wrapper script written 
    161         in Perl called <span><strong class="command">configure.pl</strong></span> that gets the process 
    162         started.</p><p>The Juggler build is highly automated. The trickiest part is 
    163         telling the build where to find the third-party dependencies. This 
    164         part can be simplified, however, by installing the third-party 
    165         dependencies in the default location where the search will be 
    166         performed. In most cases, this is <code class="filename">/usr/local</code>, but 
    167         in others it is <code class="filename">/usr</code>. The default search location 
    168         is determined by whether the dependency is considered to be a 
    169         fundamental part of the operating system installation (such as OpenGL) 
    170         or if it is an &#8220;<span class="quote">add-on</span>&#8221; package (such as Boost, GMTL, 
    171         CppDOM, or omniORB).</p><div class="sidebar"><p>The distinction between <code class="filename">/usr/local</code> and 
    172           <code class="filename">/usr</code> is complicated by the fact that most Linux 
    173           distributions have <span class="emphasis"><em>everything</em></span> installed in 
    174           <code class="filename">/usr</code>. While Linux may be popular, it should not 
    175           (yet) be considered a model example of how to do things. In 
    176           traditional UN*X distributions (BSD and System V), 
    177           <code class="filename">/usr</code> is only used for the fundamental operating 
    178           system pieces; <code class="filename">/usr/local</code> is used for extra 
    179           bits. The Juggler build is based on these assumptions. Furthermore, 
    180           most open source software packages (e.g., Boost, omniORB, Perl, 
    181           Python) default to installing themselves in 
    182           <code class="filename">/usr/local</code>, which suggests that the authors of 
    183           those tools generally expect their software to be in 
    184           <code class="filename">/usr/local</code>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="using.configure.pl"></a>Using <span><strong class="command">configure.pl</strong></span></h5></div></div></div><p>In the base <code class="filename">juggler</code> source directory, we 
    185           have a &#8220;<span class="quote">global</span>&#8221; configure script written in Perl called 
    186           <span><strong class="command">configure.pl</strong></span>. To get the command-line options for 
    187           this script, use one of the following (the second being much more 
    188           detailed):</p><pre class="screen">./configure.pl --help 
    189 ./configure.pl --manual</pre><p>To configure your system, you will need to see what options 
    190           all the Autoconf-based configure scripts in VR Juggler need. To get 
    191           this text, enter:</p><pre class="screen">./configure.pl --all-help</pre><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>In order for this to work, the configure script for each 
    192               of the Juggler modules must be generated. This can be done 
    193               manually by running <span><strong class="command">autogen.sh</strong></span> in the 
    194               top-level <code class="filename">juggler</code> directory. It use is 
    195               simple:</p><pre class="screen">./autogen.sh</pre><p>This <span><strong class="command">autogen.sh</strong></span> script must be run from 
    196               the directory where it exists. Do not try to run it from a build 
    197               directory or any other place in the Juggler source tree. The 
    198               same holds for the individual <span><strong class="command">autogen.sh</strong></span> 
    199               scripts in the various modules, should you need to run one 
    200               individually.</p></div><p><span><strong class="command">configure.pl</strong></span> can run in a unique 
    201           &#8220;<span class="quote">build</span>&#8221; directory or in the directory where it resides. 
    202           Here is how we (the Juggler Team) have been using it:</p><div class="orderedlist"><ol type="1"><li><p>Make a directory for compiling. There are many good 
    203               reasons to do this away from the main source tree (though they 
    204               will not be listed here).</p><pre class="screen">mkdir build.linux.posix</pre><p>This example using an ad hoc naming convention based on 
    205               operating system and threading subsystem. Other examples could 
    206               be <code class="filename">build.irix.sproc</code>, 
    207               <code class="filename">build.solaris.nspr</code>, etc.</p></li><li><p>Enter the new build directory.</p><pre class="screen">cd build.linux.posix</pre></li><li><p>Configure all the modules making up VR Juggler. This is 
    208               when you must tell the module configure scripts where all the 
    209               package dependencies are found.</p><pre class="screen">../configure.pl --prefix=$HOME/vrjuggler-2.0 --with-java-orb=JDK</pre><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>You will probably have to specify the paths to your 
    210                 local CppDOM, GMTL, and Boost installations using the options 
    211                 <code class="option">--with-cppdom</code>, <code class="option">--with-gmtl</code>, 
    212                 and <code class="option">--with-boost</code> unless they are installed in 
    213                 the default location (<code class="filename">/usr/local</code>). By 
    214                 default, Boost 1.31 installs its header files in a 
    215                 subdirectory of <code class="filename">include</code> called 
    216                 <code class="filename">boost-1_31</code>. That is, if Boost is 
    217                 installed in <code class="filename">/home/user1/pkgs/boost</code>, the 
    218                 header files will be in 
    219                 <code class="filename">/home/user1/pkgs/boost/include/boost-1_31</code>. 
    220                 In this case, you must also specify the option 
    221                 <code class="option">--with-boost-includes=/home/user1/pkgs/boost/include/boost-1_31</code> 
    222                 when running <span><strong class="command">configure.pl</strong></span>.</p></div></li></ol></div><p>By default, the configuration process will configure VR 
    223           Juggler and all of its dependencies. This includes Sonix, which is 
    224           an interesting special case. Sonix can make use of Aaudiere, OpenAL, 
    225           or AudioWorks to add sound to VR Juggler applications. If none of 
    226           those packages is found, Sonix will &#8220;<span class="quote">stub out</span>&#8221; its 
    227           sound APIs. This means that Sonix and the VR Juggler Sound Manager 
    228           can still be used in applications, but no audio will be heard at run 
    229           time. See <a href="#sonix.compile.section" title="Sonix">the section called &#8220;Sonix&#8221;</a> for more 
    230           information about how to configure Sonix to use Audiere, OpenAL, or 
    231           AudioWorks.</p><p>For example uses of <span><strong class="command">configure.pl</strong></span>, take a 
    232           look at the Wiki page relating to building from CVS (<a href="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs" target="_top">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</a>). 
    233           It is not a replacement for this document, but it shows how some 
    234           members of the Juggler team configure VR Juggler. It also has 
    235           information on more advanced uses of <span><strong class="command">configure.pl</strong></span> 
    236           that are beyond the scope of this document.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e498"></a>Using Locally Installed Software</h5></div></div></div><p>As noted in <a href="#source.code.section" title="Getting the Source Code and the Dependencies">the section called &#8220;Getting the Source Code and the Dependencies&#8221;</a>, VR Juggler 
    237           depends on several external software packages. As an example, 
    238           consider the case where the GMTL library is installed in 
    239           <code class="filename">/home/user1/pkgs/GMTL</code> with the headers in 
    240           <code class="filename">/home/user1/pkgs/GMTL/include</code>. To use this 
    241           installation, run <span><strong class="command">configure.pl</strong></span> as follows:</p><pre class="screen">../configure.pl --with-gmtl=/home/user1/pkgs/GMTL</pre><p>The <code class="option">--with-gmtl</code> option could of course be 
    242           mixed in with those shown in the previous section.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="compile.vrjuggler.section"></a>Compiling VR Juggler</h4></div></div></div><p>Once the configuration process is complete, the code can be 
    243         compiled. Remember that we require the use of GNU make 3.78 or 
    244         newer.</p><div class="orderedlist"><ol type="1"><li><p>Compile the source tree using GNU make.</p><pre class="screen">gmake build</pre></li><li><p>Once this completes, you will have a full build of VR 
    245             Juggler. For those who are not interested in developing VR Juggler 
    246             or its component modules, it is recommended that you install the 
    247             software and use the installed version for application 
    248             development. Do this as follows:</p><pre class="screen">gmake install</pre></li></ol></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="compile.individual.section"></a>Tips for Compiling Individual Tools in the Juggler Suite</h3></div></div></div><p>In this section, we provide tips for ensuring that individual 
    249       tools in the Juggler Suite are compiled correctly. For the most part, 
    250       this duplicates information that can be found on the Wiki page relating 
    251       to building from CVS (<a href="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs" target="_top">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</a>).</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sonix.compile.section"></a>Sonix</h4></div></div></div><p>Sonix wraps other audio subsystems such as OpenAL (<a href="http://www.openal.org/" target="_top">www.openal.org</a>), Audiere (<a href="http://audiere.sf.net/" target="_top">audiere.sf.net</a>), or AudioWorks 
    252         (<a href="http://www.multigen.com/" target="_top">multigen.com</a>). At least 
    253         one of these packages must be installed for use by Sonix in order to 
    254         hear sounds in VR Juggler applications. Once you have all the 
    255         necessary source code and third-party package installations, add one 
    256         or more of the following options to your 
    257         <span><strong class="command">configure.pl</strong></span> command line to enable the appropriate 
    258         audio subsystem:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="option">--enable-openal 
    259             --with-openal=&lt;OPENAL_PATH&gt;</code>: Enable the use of 
    260             OpenAL and tell the build where OpenAL is installed. The default 
    261             search path is <code class="filename">/usr/local</code>.</p></li><li><p><code class="option">--enable-audiere 
    262             --with-audiere=&lt;AUDIERE_PATH&gt;</code>: Enable the use of 
    263             Audiere and tell the build where Audiere is installed. The default 
    264             search path is <code class="filename">/usr/local</code>.</p></li><li><p><code class="option">--enable-audioworks 
    265             --with-audioworks=&lt;AUDIOWORKS_PATH&gt;</code>: Enable the use 
    266             of AudioWorks and tell the build where AudioWorks is installed. 
    267             The default search path is <code class="filename">/usr</code>.</p></li></ul></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>AudioWorks and OpenAL cannot be compiled together. They depend 
    268           on mutually exclusive VPR threading subsystems. Warnings will be 
    269           printed by the Sonix configure script indicating this fact. OpenAL 
    270           and Audiere can be compiled together, however.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="tweek.build.section"></a>Tweek</h4></div></div></div><p>Tweek needs JDK 1.4 or newer and a C++ CORBA implementation. 
    271         Currently, we primarily use omniORB 4.0, but omniORB 3.0 can be used. 
    272         Visit the <a href="http://omniorb.sourceforge.net/" target="_top">omniORB 
    273         website</a> to download omniORB.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>IRIX users must configure Tweek (and its VPR dependency) to 
    274           use the POSIX subsystem or the NSPR subsystem. omniORB 
    275           <span class="emphasis"><em>will not work</em></span> with SPROC threads. To configure 
    276           VPR to use either POSIX threads or NSPR threads, pass either 
    277           <code class="option">--enable-subsystem=POSIX</code> or 
    278           <code class="option">--enable-subsystem=NSPR</code> respectively to 
    279           <span><strong class="command">configure.pl</strong></span>.</p></div><p>For the following steps, assume that you have omniORB installed 
    280         in <code class="filename">&lt;OMNIORB_PATH&gt;</code>. Assuming you have the 
    281         external packages installed, do the following from the top-level 
    282         <code class="filename">juggler</code> directory:</p><pre class="screen">mkdir build 
     32            <code class="option">--with-perl</code> argument be passed to 
     33            <span><strong class="command">configure.pl</strong></span>. This argument gives all the 
     34            Autoconf-based configure scripts a hint about where the preferred 
     35            version of Perl lives. If using 
     36            <code class="filename">/usr/freeware/bin/perl</code> to run 
     37            <span><strong class="command">configure.pl</strong></span>, we recommend that the 
     38            <span><strong class="command">configure.pl</strong></span> command line appear similar to the 
     39            following:</p><pre class="screen">/usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin</pre><p>Note that the value given to <code class="option">--with-perl</code> is 
     40            the <span class="emphasis"><em>directory</em></span> where the 
     41            <span><strong class="command">perl</strong></span> executable can be found. The configure 
     42            scripts will add this directory to the front of the search path 
     43            when trying to find a suitable <span><strong class="command">perl</strong></span> executable. 
     44            Once it is found, all the Perl scripts used for configuration, 
     45            compilation, and installation will use that executable.</p><p>To simplify command execution somewhat, it can help to have 
     46            <code class="filename">/usr/freeware/bin</code> (or whatever path is 
     47            appropriate) in your path before <code class="filename">/bin</code> or 
     48            <code class="filename">/usr/bin</code> or any of the other myriad 
     49            directories where Perl might exist on IRIX. In such a situation, 
     50            none of the above extra steps should be necessary. The correct 
     51            version of Perl will be found simply by virtue of it being early 
     52            in your path.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e98"></a>MIPSpro Compiler Version</h4></div></div></div><p>Reports have been made on the VR Juggler mailing list 
     53            regarding compile failures (including segmentation faults within 
     54            the compiler) occur when using the MIPSpro Compilers Version 
     55            7.3.1.1m. We have found upgrading to Version 7.3.1.3m (or newer) 
     56            fixes the problems.</p><p>A new feature of VR Juggler 1.1 and newer is support for GCC 
     57            on IRIX. Users who do not have MIPSpro or cannot upgrade can 
     58            compile and run VR Juggler (without OpenGL Performer support) 
     59            using the version of GCC distributed by SGI. It can be downloaded 
     60            from <a href="http://freeware.sgi.com/index-by-alpha.html" target="_top">http://freeware.sgi.com/index-by-alpha.html</a> 
     61            for free. When configuring the source with 
     62            <span><strong class="command">configure.pl</strong></span> (described later), use the option 
     63            <code class="option">--with-gcc</code>.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e114"></a>Important Note for Windows Users</h3></div></div></div><p>VR Juggler 1.1 and newer use a lot of C++ features not 
     64         supported by Visual Studio 6.0. Microsoft <a href="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q243/4/51.asp&amp;NoWebContent=1" target="_top">acknowledges</a> 
     65         the issues concerning noncompliance to the C++ Standard with Visual 
     66         Studio 6.0, and it appears that they have no plans to fix these 
     67         problems. Therefore, we require the use of Visual Studio 7.x (.NET 
     68         2002 or 2003) to compile the source code.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="source.code.section"></a>Getting the Source Code and the Dependencies</h2></div></div></div><p>In this section, we explain how to get the Juggler Project source 
     69      code and the dependencies required to build Juggler. There are two ways 
     70      to get the source code: from a pre-packaged source release archive or 
     71      from the CVS repository on SourceForge. If you got the code from a 
     72      pre-packaged source archive, that code is a complete 
     73      &#8220;<span class="quote">snapshot</span>&#8221; of the CVS repository at the time of release. It 
     74      contains all dependencies that would otherwise have been acquired using 
     75      CVS. It <span class="emphasis"><em>does not</em></span> contain binary dependencies that 
     76      must be downloaded separately (such as NSPR, the Java Developer Kit, a 
     77      C++ compiler, etc.).</p><p>The current list of <span class="emphasis"><em>required</em></span> software 
     78      packages is as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>CppDOM (<a href="http://www.sourceforge.net/projects/xml-cppdom/" target="_top">http://www.sf.net/projects/xml-cppdom/</a>): 
     79            A lightweight, easy-to-use XML parser written in C++. CppDOM must 
     80            be compiled and installed for use with VR Juggler.</p></li><li><p>Boost (<a href="http://www.boost.org/" target="_top">http://www.boost.org/</a>): A C++ 
     81            library providing many powerful utility classes and libraries. 
     82            Boost must be compiled and installed for use with VR 
     83            Juggler.</p></li><li><p>GMTL (<a href="http://ggt.sourceforge.net/" target="_top">http://ggt.sf.net/</a>): A 
     84            generic math library that makes use of C++ templates and STL 
     85            paradigms. GMTL must be installed for use with VR Juggler.</p></li></ul></div><p>The following lists <span class="emphasis"><em>semi-optional</em></span> 
     86      packages:</p><div class="itemizedlist"><ul type="disc"><li><p>NSPR (<a href="http://www.mozilla.org/projects/nspr/" target="_top">http://www.mozilla.org/projects/nspr/</a>): 
     87            The Netscape Portable Runtime, which can be used by VPR for 
     88            threading and sockets (required on Win32 and Solaris).</p></li><li><p>Java Developer Kit (<a href="http://java.sun.com/" target="_top">http://java.sun.com/</a>): The J2SE 
     89            SDK (or JDK) is used to compile all the Java code used in the 
     90            Juggler Project. Without it, none of the Java code can be built. 
     91            We require version 1.4 or newer. The Java Standard Edition (J2SE) 
     92            can be downloaded from <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>.</p></li><li><p>omniORB (<a href="http://www.jdom.org/" target="_top">http://omniorb.sourceforge.net/</a>): 
     93            A C++ implementation of CORBA 2.3, required for the Tweek C++ 
     94            API.</p></li></ul></div><p>The following are fully optional packages that are primarily of 
     95      interest only to people doing development on the Juggler Suite 
     96      itself:</p><div class="itemizedlist"><ul type="disc"><li><p>JUnit (<a href="http://www.junit.org/" target="_top">http://www.junit.org/</a>): A unit 
     97            testing framework for Java.</p></li><li><p>CppUnit (<a href="http://cppunit.sourceforge.net/" target="_top">http://cppunit.sourceforge.net/</a>): 
     98            A unit testing framework for C++. The Juggler C++ test suties make 
     99            use of extensions to CppUnit. An extended version of the CppUnit 
     100            source that includes these extensions can be acquired from the 
     101            Juggler CVS repository in the module <code class="literal">cppunit</code>. 
     102            Refer to <a href="#section.cvs.access" title="How to Get the Juggler Suite from CVS">the section called &#8220;How to Get the Juggler Suite from CVS&#8221;</a> for instructions 
     103            about accessing the Juggler CVS repository.</p></li></ul></div><p>The third-party dependencies must be downloaded from the sites 
     104      listed above and installed manually. You may also have to compile one or 
     105      more of the packages if binary distributions are not available. Which 
     106      packages you download depends on what you already have installed. Note 
     107      carefully which packages are needed based on the software you have 
     108      installed and what versions of tools (such as the JDK) that you 
     109      download.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="section.cvs.access"></a>How to Get the Juggler Suite from CVS</h3></div></div></div><p>You can optionally get the Juggler Project as a source code 
     110         tarball from the website (<a href="http://www.vrjuggler.org/" target="_top">http://www.vrjuggler.org/</a>) or 
     111         you can execute the following commands from a shell to get the code 
     112         from our CVS repository:</p><pre class="screen">cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler login 
     113cvs -z3 -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler co juggler</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e216"></a>Downloading Third-Party Dependencies</h3></div></div></div><p>In addition to source the dependencies acquired through CVS, 
     114         there are some third-party dependencies that must be installed 
     115         separately. Remember that no Java code in VR Juggler can be used 
     116         without the JDK and a working Java version of CORBA.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e221"></a>Boost</h4></div></div></div><p>The minimum required version of Boost, as of this writing, 
     117            is 1.31.0. The Boost source can be downloaded from <a href="http://www.sf.net/projects/boost/" target="_top">http://www.sf.net/projects/boost/</a>. 
     118            To compile and install Boost, refer to its installation 
     119            documentation (<a href="http://www.boost.org/more/getting_started.html#Build_Install" target="_top">http://www.boost.org/more/getting_started.html#Build_Install</a>). 
     120            Note that you need the command <span><strong class="command">bjam</strong></span> (referred 
     121            to as &#8220;<span class="quote">boost-jam</span>&#8221; on the Boost download page) to 
     122            build Boost.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>Mac OS X users should compile the Boost libraries using 
     123               the &#8220;<span class="quote">darwin</span>&#8221; toolset.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e244"></a>CppDOM</h4></div></div></div><p>For XML processing, we use CppDOM 0.3.2 or newer. The source 
     124            and binary distributions for some platforms can be downloaded from 
     125            <a href="http://www.sf.net/projects/xml-cppdom/" target="_top">http://www.sf.net/projects/xml-cppdom/</a>. 
     126            If a binary version is not available for your operating system you 
     127            must compile and install CppDOM yourself. Note that you need SCons 
     128            (<a href="http://scons.sourceforge.net/" target="_top">http://scons.sourceforge.net/</a>) 
     129            to build and install CppDOM.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e255"></a>GMTL</h4></div></div></div><p>For high-level mathematical operations, we use GMTL 0.3.2 or 
     130            newer. The source distribution can be downloaded from <a href="http://www.sf.net/projects/ggt/" target="_top">http://www.sf.net/projects/ggt/</a>. 
     131            Note that you need SCons (<a href="http://scons.sourceforge.net/" target="_top">http://scons.sourceforge.net/</a>) 
     132            to build and install GMTL.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e266"></a>Netscape Portable Runtime (NSPR)</h4></div></div></div><p>Our operating system abstraction, VPR, can make use of NSPR 
     133            for operating system primitives. On some platforms (IRIX, FreeBSD, 
     134            Linux, Mac OS X), the use of NSPR is strictly optional. On others 
     135            (Win32, HP-UX, and Solaris), it is required. Based on your local 
     136            system, you should decide whether you need NSPR. Binary versions 
     137            of NSPR can be downloaded from <a href="ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases" target="_top">ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases</a>. 
     138            At this time, we recommend the use of version 4.2 or newer.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e274"></a>Java Developer Kit (also called the J2SE SDK)</h4></div></div></div><p>We make use of the Java programming language in addition to 
     139            C++. Java is used exclusively for GUIs such as Tweek and VRJConfig 
     140            (which is a JavaBean that is loaded into Tweek). To compile the 
     141            Java code, a JDK is necessary. We currently require version 1.4 or 
     142            newer. The Java Standard Edition can be downloaded from <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>. 
     143            More information can be found at <a href="http://java.sun.com/" target="_top">http://java.sun.com/</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e285"></a>omniORB</h4></div></div></div><p>omniORB is a C++ implementation of CORBA 2.3. It is required 
     144            in order to compile the Tweek C++ API. At this time, the Tweek C++ 
     145            API is not required for VR Juggler, but this situation will change 
     146            in the near future. At this time, we primarily use omniORB 4.0.x. 
     147            omniORB can be downloaded from <a href="http://omniorb.sourceforge.net/" target="_top">http://omniorb.sourceforge.net/</a>.</p><p>omniORB 3.0 has strange conventions for how installations 
     148            are made. Within the <code class="filename">bin</code> and 
     149            <code class="filename">lib</code> directories, there are platform-specific 
     150            subdirectories that contain the actual binaries (except when 
     151            installed on FreeBSD via the Ports Collection). Because of this, 
     152            several extra options must be specified in order to tell the Tweek 
     153            configure script where to find everything. Please refer to <a href="#tweek.build.section" title="Tweek">the section called &#8220;Tweek&#8221;</a> for more details on this.</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="compile.section"></a>Compiling</h2></div></div></div><p>In this section, we describe how to compile the Juggler Project. 
     154      We focus on VR Juggler as a whole, but information about some of the 
     155      individual components is provided later.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e308"></a>Important Note Regarding Compiling</h3></div></div></div><p>You have downloaded <span class="emphasis"><em>developmental</em></span> code. It 
     156         may not be stable, and it may not even compile. Compiling VR Juggler 
     157         itself can be a little complicated for anyone who does not have some 
     158         background in using CVS, Autoconf, C++, and <span><strong class="command">make</strong></span> 
     159         or Visual Studio.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e319"></a>Compiling the Juggler Suite of Tools</h3></div></div></div><p>This section explains how to get, configure, and compile all of 
     160         the tools that make up VR Juggler. Each tool compiles to its own 
     161         library and can be installed individually. (Refer to the 
     162         <code class="filename">README</code> file in this directory for more 
     163         information about the specific modules.)</p><p>To build VR Juggler on Windows, you must use the Visual Studio 
     164         solution. After getting the dependencies needed to compile VR Juggler 
     165         (see the next section), refer to the <a href="vc7/README.html" target="_top">README.html</a> file located in the 
     166         <code class="filename">vc7</code> subdirectory of this directory. Do not 
     167         bother to the rest of this document.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e335"></a>Per-Module Dependencies</h4></div></div></div><p>Here, we provide per-module dependency information. Given 
     168            that the dependencies for any single module are met, the modules 
     169            may be reused effectively outside the scope of immersive VR 
     170            application development. Below, we list the 
     171            <span class="emphasis"><em>minimum</em></span> required version for each dependency, 
     172            and where appropriate, we note which dependencies are 
     173            optional.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e343"></a>VPR</h5></div></div></div><p>VPR provides a cross-platform, object-oriented operating 
     174               system abstraction. It is the foundation for all other Juggler 
     175               modules.</p><div class="itemizedlist"><ul type="disc"><li><p>CppDOM 0.3.2</p></li><li><p>Boost headers and Boost.Filesystem 1.31.0</p></li><li><p>NSPR (Windows, Solaris, and HP-UX only) 4.4</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e358"></a>Tweek C++ API</h5></div></div></div><p>Tweek implements a distributed model/view/controller 
     176               system on top of CORBA. The Tweek C++ API provides the C++ 
     177               component of that system. Code written on top of the Tweek C++ 
     178               API normally acts as the model piece of the distributed 
     179               model/view/controller system.</p><div class="itemizedlist"><ul type="disc"><li><p>VPR</p></li><li><p>omniORB 4.0</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e370"></a>Tweek Java API</h5></div></div></div><p>Tweek implements a distributed model/view/controller 
     180               system on top of CORBA. The Tweek Java API provides the Java 
     181               component of that system. The main part of the Tweek Java API 
     182               is the Tweek JavaBean Loader, a GUI application that loads 
     183               Tweek Beans that normally function as the view and controller 
     184               pieces of the distributed module/view/controller system.</p><div class="itemizedlist"><ul type="disc"><li><p>J2SE SDK 1.4</p></li><li><p>JDOM (included with Juggler source)</p></li><li><p>Ant (included with Juggler source)</p></li><li><p>JacORB IDL-to-Java compiler (included with Juggler 
     185                     source)</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e388"></a>Tweek Python API</h5></div></div></div><p>Tweek implements a distributed model/view/controller 
     186               system on top of CORBA. The Tweek Python API provides the 
     187               Python component of that system. The main part of the Tweek 
     188               Java API is the <span class="emphasis"><em>unfinished</em></span> TweekQt GUI, an 
     189               application that loads Python modules that normally function as 
     190               the view and controller pieces of the distributed 
     191               module/view/controller system.</p><div class="itemizedlist"><ul type="disc"><li><p>Python 2.3</p></li><li><p>omniORBpy 2.0</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e403"></a>JCCL C++ API</h5></div></div></div><p>The JCCL C++ API provides an interface for loading 
     192               XML-based configurations. It includes the run-time 
     193               reconfiguration feature of Juggler.</p><div class="itemizedlist"><ul type="disc"><li><p>VPR</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e412"></a>JCCL Java API</h5></div></div></div><p>The JCCL Java API provides a programming interface for 
     194               editing Juggler configuration files and config definition files 
     195               as well as JavaBeans for editing these files using a graphical 
     196               interface.</p><div class="itemizedlist"><ul type="disc"><li><p>Tweek Java API</p></li><li><p>TableLayout package (included with Juggler 
     197                     source)</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e424"></a>JCCL Remote Run-Time Reconfiguration Plug-in 
     198               (C++)</h5></div></div></div><p>The C++ JCCL Remote Run-Time Reconfiguration Plug-in is 
     199               an optional extension to the JCCL Config Manager for allowing 
     200               remote manipulation of a Juggler configuration at run time 
     201               based on Tweek.</p><div class="itemizedlist"><ul type="disc"><li><p>Tweek C++ API</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e433"></a>JCCL Remote Run-Time Reconfiguration Plug-in 
     202               (Java)</h5></div></div></div><p>The Java JCCL Remote Run-Time Reconfiguration Plug-in is 
     203               an optional extension that provides the features needed for a 
     204               Java-based editor to communicate with the C++ Remote Run-Time 
     205               Reconfiguration Plug-in to edit Juggler configurations 
     206               live.</p><div class="itemizedlist"><ul type="disc"><li><p>Tweek Java API</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e442"></a>Sonix</h5></div></div></div><p>Sonix is an abstraction layer for positional sound 
     207               software. Sonix itself cannot play audio, but it includes 
     208               plug-ins based on popular interfaces for playing audio. Each 
     209               plug-in depends on a specific audio software library.</p><div class="itemizedlist"><ul type="disc"><li><p>VPR</p></li><li><p>GMTL 0.1.9</p></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e454"></a>Sonix OpenAL Plug-in</h6></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Sonix</p></li><li><p>OpenAL</p></li><li><p>Free ALUT</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e467"></a>Sonix Audiere Plug-in</h6></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Sonix</p></li><li><p>Audiere</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e477"></a>Sonix AudioWorks Plug-in</h6></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Sonix</p></li><li><p>AudioWorks</p></li></ul></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e487"></a>Gadgeteer</h5></div></div></div><p>Gadgeteer handles all input devices that can be used by 
     210               VR Juggler applications.</p><div class="itemizedlist"><ul type="disc"><li><p>VPR</p></li><li><p>JCCL</p></li><li><p>GMTL 0.1.9</p></li><li><p>X Window System (non-Windows platforms)</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e505"></a>Gadgeteer Device Driver Plug-ins</h5></div></div></div><p>The device driver plug-ins for Gadgeteer are independent 
     211               components that are discovered and used at run time based on 
     212               the application configuration. Drivers with dependencies are 
     213               optional.</p><div class="itemizedlist"><ul type="disc"><li><p>Gadgeteer</p></li><li><p>VRPN 06.06 for the VRPN driver plug-in</p></li><li><p>TrackD API 4 for the TrackD API driver 
     214                     plug-in</p></li><li><p>Microsoft Speech API for the MS Speech API driver 
     215                     plug-in</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e523"></a>Gadgeteer Cluster Plug-ins</h5></div></div></div><p>The cluster plug-ins extend the functionality of the 
     216               clustering infrastructure built into Gadgeteer.</p><div class="itemizedlist"><ul type="disc"><li><p>Gadgeteer</p></li></ul></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e532"></a>VR Juggler</h5></div></div></div><p>The VR Juggler module is the unifying piece that pulls 
     217               all the other Juggler modules together. It provides a virtual 
     218            &nb