| 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&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 “<span class="quote">snapshot</span>” 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 “How to Get the Juggler Suite from CVS”</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 | | “<span class="quote">boost-jam</span>” 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 “Tweek”</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 “<span class="quote">add-on</span>” 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 “<span class="quote">global</span>” 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 | | “<span class="quote">build</span>” 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 “<span class="quote">stub out</span>” 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 “Sonix”</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 “Getting the Source Code and the Dependencies”</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=<OPENAL_PATH></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=<AUDIERE_PATH></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=<AUDIOWORKS_PATH></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"><OMNIORB_PATH></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&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 | “<span class="quote">snapshot</span>” 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 “How to Get the Juggler Suite from CVS”</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 |
|---|
| | 113 | 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, |
|---|
| | 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 “<span class="quote">boost-jam</span>” 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 “<span class="quote">darwin</span>” 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 “Tweek”</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 |
|---|