| 5 | | <articleinfo> |
|---|
| 6 | | <title>Building and Installing the Juggler Project (Version 2.0)</title> |
|---|
| 7 | | |
|---|
| 8 | | <authorgroup> |
|---|
| 9 | | <author> |
|---|
| 10 | | <othername>The Juggler Team</othername> |
|---|
| 11 | | </author> |
|---|
| 12 | | </authorgroup> |
|---|
| 13 | | |
|---|
| 14 | | <pubdate>$Date$</pubdate> |
|---|
| 15 | | </articleinfo> |
|---|
| 16 | | |
|---|
| 17 | | <section> |
|---|
| 18 | | <title>Introduction</title> |
|---|
| 19 | | |
|---|
| 20 | | <para>You have downloaded the source code for Version 2.0 of the Juggler |
|---|
| 21 | | Project. This document explains how to build the modules of the Juggler |
|---|
| 22 | | Project from the source code. We begin by explaining some issues related |
|---|
| 23 | | to specific operating systems. We then explain how to get the source code |
|---|
| 24 | | from our CVS repository. (Those users who downloaded a pre-packaged source |
|---|
| 25 | | release can skip ahead to <xref linkend="using.configure.pl" />). We |
|---|
| 26 | | conclude with instructions on how to build VR Juggler and its individual |
|---|
| 27 | | components.</para> |
|---|
| 28 | | |
|---|
| 29 | | <para>Before reading further, we recommend that readers take a look at the |
|---|
| 30 | | Wiki page relating to building from CVS (<ulink |
|---|
| 31 | | url="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</ulink>). |
|---|
| 32 | | It is a <emphasis>supplement</emphasis> to this document containing tips |
|---|
| 33 | | and reminders for those users building the CVS version of VR Juggler. It |
|---|
| 34 | | is not a replacement for this document, nor can it stand on its own as |
|---|
| 35 | | build instructions. You are reading the definitive build instructions; the |
|---|
| 36 | | Wiki page merely provides informal, extra information.</para> |
|---|
| 37 | | |
|---|
| 38 | | <section> |
|---|
| 39 | | <title>Important Notes for IRIX Users</title> |
|---|
| 40 | | |
|---|
| 41 | | <para>Despite our best efforts, there are some issues related to |
|---|
| 42 | | compiling the Juggler Project on IRIX. We introduce them in this section |
|---|
| 43 | | and explain how to work around them.</para> |
|---|
| | 5 | <articleinfo> |
|---|
| | 6 | <title>Building and Installing the Juggler Project (Version 2.0)</title> |
|---|
| | 7 | |
|---|
| | 8 | <authorgroup> |
|---|
| | 9 | <author> |
|---|
| | 10 | <othername>The Juggler Team</othername> |
|---|
| | 11 | </author> |
|---|
| | 12 | </authorgroup> |
|---|
| | 13 | |
|---|
| | 14 | <pubdate>$Date$</pubdate> |
|---|
| | 15 | </articleinfo> |
|---|
| | 16 | |
|---|
| | 17 | <section> |
|---|
| | 18 | <title>Introduction</title> |
|---|
| | 19 | |
|---|
| | 20 | <para>You have downloaded the source code for Version 2.0 of the Juggler |
|---|
| | 21 | Project. This document explains how to build the modules of the Juggler |
|---|
| | 22 | Project from the source code. We begin by explaining some issues related |
|---|
| | 23 | to specific operating systems. We then explain how to get the source |
|---|
| | 24 | code from our CVS repository. (Those users who downloaded a pre-packaged |
|---|
| | 25 | source release can skip ahead to <xref linkend="using.configure.pl" />). |
|---|
| | 26 | We conclude with instructions on how to build VR Juggler and its |
|---|
| | 27 | individual components.</para> |
|---|
| | 28 | |
|---|
| | 29 | <para>Before reading further, we recommend that readers take a look at |
|---|
| | 30 | the Wiki page relating to building from CVS (<ulink |
|---|
| | 31 | url="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</ulink>). |
|---|
| | 32 | It is a <emphasis>supplement</emphasis> to this document containing tips |
|---|
| | 33 | and reminders for those users building the CVS version of VR Juggler. It |
|---|
| | 34 | is not a replacement for this document, nor can it stand on its own as |
|---|
| | 35 | build instructions. You are reading the definitive build instructions; |
|---|
| | 36 | the Wiki page merely provides informal, extra information.</para> |
|---|
| 46 | | <title>Perl Version</title> |
|---|
| 47 | | |
|---|
| 48 | | <para>There are many Perl scripts used as part of getting, |
|---|
| 49 | | configuring, and building the Juggler Suite of tools. In particular, |
|---|
| 50 | | two scripts required for compiling need Perl 5.005 or newer. The |
|---|
| 51 | | version of Perl that ships with IRIX 6.5 is very old (circa 1997) and |
|---|
| 52 | | does not work with many Perl scripts we have written. SGI provides a |
|---|
| 53 | | much newer version of Perl (5.6.1) with their freeware tools (<ulink |
|---|
| 54 | | url="http://freeware.sgi.com/">http://freeware.sgi.com/</ulink>). It |
|---|
| 55 | | will be necessary to install that version for our scripts to work. |
|---|
| 56 | | This version is typically installed as |
|---|
| 57 | | <filename>/usr/freeware/bin/perl</filename>.</para> |
|---|
| 58 | | |
|---|
| 59 | | <para>Once you have a modern Perl installed, you can run various Perl |
|---|
| 60 | | scripts as follows:</para> |
|---|
| 61 | | |
|---|
| 62 | | <screen>/usr/freeware/bin/perl <script-name></screen> |
|---|
| 63 | | |
|---|
| 64 | | <para>The above will be required any time a Perl script fails with an |
|---|
| 65 | | error similar to the following:</para> |
|---|
| 66 | | |
|---|
| 67 | | <screen>Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35. |
|---|
| | 39 | <title>Important Notes for IRIX Users</title> |
|---|
| | 40 | |
|---|
| | 41 | <para>Despite our best efforts, there are some issues related to |
|---|
| | 42 | compiling the Juggler Project on IRIX. We introduce them in this |
|---|
| | 43 | section and explain how to work around them.</para> |
|---|
| | 44 | |
|---|
| | 45 | <section> |
|---|
| | 46 | <title>Perl Version</title> |
|---|
| | 47 | |
|---|
| | 48 | <para>There are many Perl scripts used as part of getting, |
|---|
| | 49 | configuring, and building the Juggler Suite of tools. In |
|---|
| | 50 | particular, two scripts required for compiling need Perl 5.005 or |
|---|
| | 51 | newer. The version of Perl that ships with IRIX 6.5 is very old |
|---|
| | 52 | (circa 1997) and does not work with many Perl scripts we have |
|---|
| | 53 | written. SGI provides a much newer version of Perl (5.6.1) with |
|---|
| | 54 | their freeware tools (<ulink |
|---|
| | 55 | url="http://freeware.sgi.com/">http://freeware.sgi.com/</ulink>). |
|---|
| | 56 | It will be necessary to install that version for our scripts to |
|---|
| | 57 | work. This version is typically installed as |
|---|
| | 58 | <filename>/usr/freeware/bin/perl</filename>.</para> |
|---|
| | 59 | |
|---|
| | 60 | <para>Once you have a modern Perl installed, you can run various |
|---|
| | 61 | Perl scripts as follows:</para> |
|---|
| | 62 | |
|---|
| | 63 | <screen>/usr/freeware/bin/perl <script-name></screen> |
|---|
| | 64 | |
|---|
| | 65 | <para>The above will be required any time a Perl script fails with |
|---|
| | 66 | an error similar to the following:</para> |
|---|
| | 67 | |
|---|
| | 68 | <screen>Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35. |
|---|
| 70 | | <para>Furthermore, it is highly recommended that the |
|---|
| 71 | | <option>--with-perl</option> argument be passed to |
|---|
| 72 | | <command>configure.pl</command>. This argument gives all the |
|---|
| 73 | | Autoconf-based configure scripts a hint about where the preferred |
|---|
| 74 | | version of Perl lives. If using |
|---|
| 75 | | <filename>/usr/freeware/bin/perl</filename> to run |
|---|
| 76 | | <command>configure.pl</command>, we recommend that the |
|---|
| 77 | | <command>configure.pl</command> command line appear similar to the |
|---|
| 78 | | following:</para> |
|---|
| 79 | | |
|---|
| 80 | | <screen>/usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin</screen> |
|---|
| 81 | | |
|---|
| 82 | | <para>Note that the value given to <option>--with-perl</option> is the |
|---|
| 83 | | <emphasis>directory</emphasis> where the <command>perl</command> |
|---|
| 84 | | executable can be found. The configure scripts will add this directory |
|---|
| 85 | | to the front of the search path when trying to find a suitable |
|---|
| 86 | | <command>perl</command> executable. Once it is found, all the Perl |
|---|
| 87 | | scripts used for configuration, compilation, and installation will use |
|---|
| 88 | | that executable.</para> |
|---|
| 89 | | |
|---|
| 90 | | <para>To simplify command execution somewhat, it can help to have |
|---|
| 91 | | <filename>/usr/freeware/bin</filename> (or whatever path is |
|---|
| 92 | | appropriate) in your path before <filename>/bin</filename> or |
|---|
| 93 | | <filename>/usr/bin</filename> or any of the other myriad directories |
|---|
| 94 | | where Perl might exist on IRIX. In such a situation, none of the above |
|---|
| 95 | | extra steps should be necessary. The correct version of Perl will be |
|---|
| 96 | | found simply by virtue of it being early in your path.</para> |
|---|
| | 71 | <para>Furthermore, it is highly recommended that the |
|---|
| | 72 | <option>--with-perl</option> argument be passed to |
|---|
| | 73 | <command>configure.pl</command>. This argument gives all the |
|---|
| | 74 | Autoconf-based configure scripts a hint about where the preferred |
|---|
| | 75 | version of Perl lives. If using |
|---|
| | 76 | <filename>/usr/freeware/bin/perl</filename> to run |
|---|
| | 77 | <command>configure.pl</command>, we recommend that the |
|---|
| | 78 | <command>configure.pl</command> command line appear similar to the |
|---|
| | 79 | following:</para> |
|---|
| | 80 | |
|---|
| | 81 | <screen>/usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin</screen> |
|---|
| | 82 | |
|---|
| | 83 | <para>Note that the value given to <option>--with-perl</option> is |
|---|
| | 84 | the <emphasis>directory</emphasis> where the |
|---|
| | 85 | <command>perl</command> executable can be found. The configure |
|---|
| | 86 | scripts will add this directory to the front of the search path |
|---|
| | 87 | when trying to find a suitable <command>perl</command> executable. |
|---|
| | 88 | Once it is found, all the Perl scripts used for configuration, |
|---|
| | 89 | compilation, and installation will use that executable.</para> |
|---|
| | 90 | |
|---|
| | 91 | <para>To simplify command execution somewhat, it can help to have |
|---|
| | 92 | <filename>/usr/freeware/bin</filename> (or whatever path is |
|---|
| | 93 | appropriate) in your path before <filename>/bin</filename> or |
|---|
| | 94 | <filename>/usr/bin</filename> or any of the other myriad |
|---|
| | 95 | directories where Perl might exist on IRIX. In such a situation, |
|---|
| | 96 | none of the above extra steps should be necessary. The correct |
|---|
| | 97 | version of Perl will be found simply by virtue of it being early |
|---|
| | 98 | in your path.</para> |
|---|
| | 99 | </section> |
|---|
| | 100 | |
|---|
| | 101 | <section> |
|---|
| | 102 | <title>MIPSpro Compiler Version</title> |
|---|
| | 103 | |
|---|
| | 104 | <para>Reports have been made on the VR Juggler mailing list |
|---|
| | 105 | regarding compile failures (including segmentation faults within |
|---|
| | 106 | the compiler) occur when using the MIPSpro Compilers Version |
|---|
| | 107 | 7.3.1.1m. We have found upgrading to Version 7.3.1.3m (or newer) |
|---|
| | 108 | fixes the problems.</para> |
|---|
| | 109 | |
|---|
| | 110 | <para>A new feature of VR Juggler 1.1 and newer is support for GCC |
|---|
| | 111 | on IRIX. Users who do not have MIPSpro or cannot upgrade can |
|---|
| | 112 | compile and run VR Juggler (without OpenGL Performer support) |
|---|
| | 113 | using the version of GCC distributed by SGI. It can be downloaded |
|---|
| | 114 | from <ulink |
|---|
| | 115 | url="http://freeware.sgi.com/index-by-alpha.html">http://freeware.sgi.com/index-by-alpha.html</ulink> |
|---|
| | 116 | for free. When configuring the source with |
|---|
| | 117 | <command>configure.pl</command> (described later), use the option |
|---|
| | 118 | <option>--with-gcc</option>.</para> |
|---|
| | 119 | </section> |
|---|
| 116 | | </section> |
|---|
| 117 | | |
|---|
| 118 | | <section> |
|---|
| 119 | | <title>Important Note for Win32 Users</title> |
|---|
| 120 | | |
|---|
| 121 | | <para>VR Juggler 1.1 and newer use a lot of C++ features not supported |
|---|
| 122 | | by Visual Studio 6.0. Microsoft <ulink |
|---|
| 123 | | url="http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q243/4/51.asp&NoWebContent=1">acknowledges</ulink> |
|---|
| 124 | | the issues concerning noncompliance to the C++ Standard with Visual |
|---|
| 125 | | Studio 6.0, and it appears that they have no plans to fix these |
|---|
| 126 | | problems. Therefore, we require the use of Visual Studio 7.x (.NET 2002 |
|---|
| 127 | | or 2003) to compile the source code.</para> |
|---|
| 128 | | </section> |
|---|
| 129 | | </section> |
|---|
| 130 | | |
|---|
| 131 | | <section id="source.code.section"> |
|---|
| 132 | | <title>Getting the Source Code and the Dependencies</title> |
|---|
| 133 | | |
|---|
| 134 | | <para>In this section, we explain how to get the Juggler Project source |
|---|
| 135 | | code and the dependencies required to build Juggler. There are two ways to |
|---|
| 136 | | get the source code: from a pre-packaged source release archive or from |
|---|
| 137 | | the CVS repository on SourceForge. If you got the code from a pre-packaged |
|---|
| 138 | | source archive, that code is a complete <quote>snapshot</quote> of the CVS |
|---|
| 139 | | repository at the time of release. It contains all dependencies that would |
|---|
| 140 | | otherwise have been acquired using CVS. It <emphasis>does not</emphasis> |
|---|
| 141 | | contain binary dependencies that must be downloaded separately (such as |
|---|
| 142 | | NSPR, the Java Developer Kit, a C++ compiler, etc.).</para> |
|---|
| 143 | | |
|---|
| 144 | | <para>The current list of <emphasis>required</emphasis> software packages |
|---|
| 145 | | is as follows:</para> |
|---|
| 146 | | |
|---|
| 147 | | <itemizedlist> |
|---|
| 148 | | <listitem> |
|---|
| 149 | | <para>CppDOM (<ulink |
|---|
| 150 | | url="http://www.sourceforge.net/projects/xml-cppdom/">http://www.sf.net/projects/xml-cppdom/</ulink>): |
|---|
| 151 | | A lightweight, easy-to-use XML parser written in C++. CppDOM must be |
|---|
| 152 | | compiled and installed for use with VR Juggler.</para> |
|---|
| 153 | | </listitem> |
|---|
| 154 | | |
|---|
| 155 | | <listitem> |
|---|
| 156 | | <para>Boost (<ulink |
|---|
| 157 | | url="http://www.boost.org/">http://www.boost.org/</ulink>): A C++ |
|---|
| 158 | | library providing many powerful utility classes and libraries. Boost |
|---|
| 159 | | must be compiled and installed for use with VR Juggler.</para> |
|---|
| 160 | | </listitem> |
|---|
| 161 | | |
|---|
| 162 | | <listitem> |
|---|
| 163 | | <para>GMTL (<ulink |
|---|
| 164 | | url="http://ggt.sourceforge.net/">http://ggt.sf.net/</ulink>): A |
|---|
| 165 | | generic math library that makes use of C++ templates and STL |
|---|
| 166 | | paradigms. GMTL must be installed for use with VR Juggler.</para> |
|---|
| 167 | | </listitem> |
|---|
| 168 | | </itemizedlist> |
|---|
| 169 | | |
|---|
| 170 | | <para>The following lists <emphasis>semi-optional</emphasis> |
|---|
| 171 | | packages:</para> |
|---|
| 172 | | |
|---|
| 173 | | <itemizedlist> |
|---|
| 174 | | <listitem> |
|---|
| 175 | | <para>NSPR (<ulink |
|---|
| 176 | | url="http://www.mozilla.org/projects/nspr/">http://www.mozilla.org/projects/nspr/</ulink>): |
|---|
| 177 | | The Netscape Portable Runtime, which can be used by VPR for threading |
|---|
| 178 | | and sockets (required on Win32 and Solaris).</para> |
|---|
| 179 | | </listitem> |
|---|
| 180 | | |
|---|
| 181 | | <listitem> |
|---|
| 182 | | <para>Java Developer Kit (<ulink |
|---|
| 183 | | url="http://java.sun.com/">http://java.sun.com/</ulink>): The J2SE SDK |
|---|
| 184 | | (or JDK) is used to compile all the Java code used in the Juggler |
|---|
| 185 | | Project. Without it, none of the Java code can be built. We require |
|---|
| 186 | | version 1.4 or newer. The Java Standard Edition (J2SE) can be |
|---|
| 187 | | downloaded from <ulink |
|---|
| 188 | | url="http://java.sun.com/j2se/">http://java.sun.com/j2se/</ulink>.</para> |
|---|
| 189 | | </listitem> |
|---|
| 190 | | |
|---|
| 191 | | <listitem> |
|---|
| 192 | | <para>omniORB (<ulink |
|---|
| 193 | | url="http://www.jdom.org/">http://omniorb.sourceforge.net/</ulink>): A |
|---|
| 194 | | C++ implementation of CORBA 2.3, required for the Tweek C++ |
|---|
| 195 | | API.</para> |
|---|
| 196 | | </listitem> |
|---|
| 197 | | </itemizedlist> |
|---|
| 198 | | |
|---|
| 199 | | <para>The following are fully optional packages that are primarily of |
|---|
| 200 | | interest only to people doing development on the Juggler Suite |
|---|
| 201 | | itself:</para> |
|---|
| 202 | | |
|---|
| 203 | | <itemizedlist> |
|---|
| 204 | | <listitem> |
|---|
| 205 | | <para>JUnit (<ulink |
|---|
| 206 | | url="http://www.junit.org/">http://www.junit.org/</ulink>): A unit |
|---|
| 207 | | testing framework for Java.</para> |
|---|
| 208 | | </listitem> |
|---|
| 209 | | |
|---|
| 210 | | <listitem> |
|---|
| 211 | | <para>CppUnit (<ulink |
|---|
| 212 | | url="http://cppunit.sourceforge.net/">http://cppunit.sourceforge.net/</ulink>): |
|---|
| 213 | | A unit testing framework for C++. The Juggler C++ test suties make use |
|---|
| 214 | | of extensions to CppUnit. An extended version of the CppUnit source |
|---|
| 215 | | that includes these extensions can be acquired from the Juggler CVS |
|---|
| 216 | | repository in the module <literal>cppunit</literal>. Refer to <xref |
|---|
| 217 | | linkend="section.cvs.access" /> for instructions about accessing the |
|---|
| 218 | | Juggler CVS repository.</para> |
|---|
| 219 | | </listitem> |
|---|
| 220 | | </itemizedlist> |
|---|
| 221 | | |
|---|
| 222 | | <para>The third-party dependencies must be downloaded from the sites |
|---|
| 223 | | listed above and installed manually. You may also have to compile one or |
|---|
| 224 | | more of the packages if binary distributions are not available. Which |
|---|
| 225 | | packages you download depends on what you already have installed. Note |
|---|
| 226 | | carefully which packages are needed based on the software you have |
|---|
| 227 | | installed and what versions of tools (such as the JDK) that you |
|---|
| 228 | | download.</para> |
|---|
| 229 | | |
|---|
| 230 | | <section id="section.cvs.access"> |
|---|
| 231 | | <title>How to Get the Juggler Suite from CVS</title> |
|---|
| 232 | | |
|---|
| 233 | | <para>You can optionally get the Juggler Project as a source code |
|---|
| 234 | | tarball from the website (<ulink |
|---|
| 235 | | url="http://www.vrjuggler.org/">http://www.vrjuggler.org/</ulink>) or |
|---|
| 236 | | you can execute the following commands from a shell to get the code from |
|---|
| 237 | | our CVS repository:</para> |
|---|
| 238 | | |
|---|
| 239 | | <screen>cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler login |
|---|
| | 133 | </section> |
|---|
| | 134 | |
|---|
| | 135 | <section id="source.code.section"> |
|---|
| | 136 | <title>Getting the Source Code and the Dependencies</title> |
|---|
| | 137 | |
|---|
| | 138 | <para>In this section, we explain how to get the Juggler Project source |
|---|
| | 139 | code and the dependencies required to build Juggler. There are two ways |
|---|
| | 140 | to get the source code: from a pre-packaged source release archive or |
|---|
| | 141 | from the CVS repository on SourceForge. If you got the code from a |
|---|
| | 142 | pre-packaged source archive, that code is a complete |
|---|
| | 143 | <quote>snapshot</quote> of the CVS repository at the time of release. It |
|---|
| | 144 | contains all dependencies that would otherwise have been acquired using |
|---|
| | 145 | CVS. It <emphasis>does not</emphasis> contain binary dependencies that |
|---|
| | 146 | must be downloaded separately (such as NSPR, the Java Developer Kit, a |
|---|
| | 147 | C++ compiler, etc.).</para> |
|---|
| | 148 | |
|---|
| | 149 | <para>The current list of <emphasis>required</emphasis> software |
|---|
| | 150 | packages is as follows:</para> |
|---|
| | 151 | |
|---|
| | 152 | <itemizedlist> |
|---|
| | 153 | <listitem> |
|---|
| | 154 | <para>CppDOM (<ulink |
|---|
| | 155 | url="http://www.sourceforge.net/projects/xml-cppdom/">http://www.sf.net/projects/xml-cppdom/</ulink>): |
|---|
| | 156 | A lightweight, easy-to-use XML parser written in C++. CppDOM must |
|---|
| | 157 | be compiled and installed for use with VR Juggler.</para> |
|---|
| | 158 | </listitem> |
|---|
| | 159 | |
|---|
| | 160 | <listitem> |
|---|
| | 161 | <para>Boost (<ulink |
|---|
| | 162 | url="http://www.boost.org/">http://www.boost.org/</ulink>): A C++ |
|---|
| | 163 | library providing many powerful utility classes and libraries. |
|---|
| | 164 | Boost must be compiled and installed for use with VR |
|---|
| | 165 | Juggler.</para> |
|---|
| | 166 | </listitem> |
|---|
| | 167 | |
|---|
| | 168 | <listitem> |
|---|
| | 169 | <para>GMTL (<ulink |
|---|
| | 170 | url="http://ggt.sourceforge.net/">http://ggt.sf.net/</ulink>): A |
|---|
| | 171 | generic math library that makes use of C++ templates and STL |
|---|
| | 172 | paradigms. GMTL must be installed for use with VR Juggler.</para> |
|---|
| | 173 | </listitem> |
|---|
| | 174 | </itemizedlist> |
|---|
| | 175 | |
|---|
| | 176 | <para>The following lists <emphasis>semi-optional</emphasis> |
|---|
| | 177 | packages:</para> |
|---|
| | 178 | |
|---|
| | 179 | <itemizedlist> |
|---|
| | 180 | <listitem> |
|---|
| | 181 | <para>NSPR (<ulink |
|---|
| | 182 | url="http://www.mozilla.org/projects/nspr/">http://www.mozilla.org/projects/nspr/</ulink>): |
|---|
| | 183 | The Netscape Portable Runtime, which can be used by VPR for |
|---|
| | 184 | threading and sockets (required on Win32 and Solaris).</para> |
|---|
| | 185 | </listitem> |
|---|
| | 186 | |
|---|
| | 187 | <listitem> |
|---|
| | 188 | <para>Java Developer Kit (<ulink |
|---|
| | 189 | url="http://java.sun.com/">http://java.sun.com/</ulink>): The J2SE |
|---|
| | 190 | SDK (or JDK) is used to compile all the Java code used in the |
|---|
| | 191 | Juggler Project. Without it, none of the Java code can be built. |
|---|
| | 192 | We require version 1.4 or newer. The Java Standard Edition (J2SE) |
|---|
| | 193 | can be downloaded from <ulink |
|---|
| | 194 | url="http://java.sun.com/j2se/">http://java.sun.com/j2se/</ulink>.</para> |
|---|
| | 195 | </listitem> |
|---|
| | 196 | |
|---|
| | 197 | <listitem> |
|---|
| | 198 | <para>omniORB (<ulink |
|---|
| | 199 | url="http://www.jdom.org/">http://omniorb.sourceforge.net/</ulink>): |
|---|
| | 200 | A C++ implementation of CORBA 2.3, required for the Tweek C++ |
|---|
| | 201 | API.</para> |
|---|
| | 202 | </listitem> |
|---|
| | 203 | </itemizedlist> |
|---|
| | 204 | |
|---|
| | 205 | <para>The following are fully optional packages that are primarily of |
|---|
| | 206 | interest only to people doing development on the Juggler Suite |
|---|
| | 207 | itself:</para> |
|---|
| | 208 | |
|---|
| | 209 | <itemizedlist> |
|---|
| | 210 | <listitem> |
|---|
| | 211 | <para>JUnit (<ulink |
|---|
| | 212 | url="http://www.junit.org/">http://www.junit.org/</ulink>): A unit |
|---|
| | 213 | testing framework for Java.</para> |
|---|
| | 214 | </listitem> |
|---|
| | 215 | |
|---|
| | 216 | <listitem> |
|---|
| | 217 | <para>CppUnit (<ulink |
|---|
| | 218 | url="http://cppunit.sourceforge.net/">http://cppunit.sourceforge.net/</ulink>): |
|---|
| | 219 | A unit testing framework for C++. The Juggler C++ test suties make |
|---|
| | 220 | use of extensions to CppUnit. An extended version of the CppUnit |
|---|
| | 221 | source that includes these extensions can be acquired from the |
|---|
| | 222 | Juggler CVS repository in the module <literal>cppunit</literal>. |
|---|
| | 223 | Refer to <xref linkend="section.cvs.access" /> for instructions |
|---|
| | 224 | about accessing the Juggler CVS repository.</para> |
|---|
| | 225 | </listitem> |
|---|
| | 226 | </itemizedlist> |
|---|
| | 227 | |
|---|
| | 228 | <para>The third-party dependencies must be downloaded from the sites |
|---|
| | 229 | listed above and installed manually. You may also have to compile one or |
|---|
| | 230 | more of the packages if binary distributions are not available. Which |
|---|
| | 231 | packages you download depends on what you already have installed. Note |
|---|
| | 232 | carefully which packages are needed based on the software you have |
|---|
| | 233 | installed and what versions of tools (such as the JDK) that you |
|---|
| | 234 | download.</para> |
|---|
| | 235 | |
|---|
| | 236 | <section id="section.cvs.access"> |
|---|
| | 237 | <title>How to Get the Juggler Suite from CVS</title> |
|---|
| | 238 | |
|---|
| | 239 | <para>You can optionally get the Juggler Project as a source code |
|---|
| | 240 | tarball from the website (<ulink |
|---|
| | 241 | url="http://www.vrjuggler.org/">http://www.vrjuggler.org/</ulink>) or |
|---|
| | 242 | you can execute the following commands from a shell to get the code |
|---|
| | 243 | from our CVS repository:</para> |
|---|
| | 244 | |
|---|
| | 245 | <screen>cvs -d :pserver:anonymous@cvs.sourceforge.net:/cvsroot/vrjuggler login |
|---|
| 252 | | <title>Boost</title> |
|---|
| 253 | | |
|---|
| 254 | | <para>The minimum required version of Boost, as of this writing, is |
|---|
| 255 | | 1.31.0. The Boost source can be downloaded from <ulink |
|---|
| 256 | | url="http://www.sf.net/projects/boost/">http://www.sf.net/projects/boost/</ulink>. |
|---|
| 257 | | To compile and install Boost, refer to its installation documentation |
|---|
| 258 | | (<ulink |
|---|
| 259 | | url="http://www.boost.org/more/getting_started.html#Build_Install">http://www.boost.org/more/getting_started.html#Build_Install</ulink>). |
|---|
| 260 | | Note that you need the command <command>bjam</command> (referred to as |
|---|
| 261 | | <quote>boost-jam</quote> on the Boost download page) to build |
|---|
| 262 | | Boost.</para> |
|---|
| | 250 | <title>Downloading Third-Party Dependencies</title> |
|---|
| | 251 | |
|---|
| | 252 | <para>In addition to source the dependencies acquired through CVS, |
|---|
| | 253 | there are some third-party dependencies that must be installed |
|---|
| | 254 | separately. Remember that no Java code in VR Juggler can be used |
|---|
| | 255 | without the JDK and a working Java version of CORBA.</para> |
|---|
| | 256 | |
|---|
| | 257 | <section> |
|---|
| | 258 | <title>Boost</title> |
|---|
| | 259 | |
|---|
| | 260 | <para>The minimum required version of Boost, as of this writing, |
|---|
| | 261 | is 1.31.0. The Boost source can be downloaded from <ulink |
|---|
| | 262 | url="http://www.sf.net/projects/boost/">http://www.sf.net/projects/boost/</ulink>. |
|---|
| | 263 | To compile and install Boost, refer to its installation |
|---|
| | 264 | documentation (<ulink |
|---|
| | 265 | url="http://www.boost.org/more/getting_started.html#Build_Install">http://www.boost.org/more/getting_started.html#Build_Install</ulink>). |
|---|
| | 266 | Note that you need the command <command>bjam</command> (referred |
|---|
| | 267 | to as <quote>boost-jam</quote> on the Boost download page) to |
|---|
| | 268 | build Boost.</para> |
|---|
| | 269 | </section> |
|---|
| | 270 | |
|---|
| | 271 | <section> |
|---|
| | 272 | <title>CppDOM</title> |
|---|
| | 273 | |
|---|
| | 274 | <para>For XML processing, we use CppDOM 0.3.2 or newer. The source |
|---|
| | 275 | and binary distributions for some platforms can be downloaded from |
|---|
| | 276 | <ulink |
|---|
| | 277 | url="http://www.sf.net/projects/xml-cppdom/">http://www.sf.net/projects/xml-cppdom/</ulink>. |
|---|
| | 278 | If a binary version is not available for your operating system you |
|---|
| | 279 | must compile and install CppDOM yourself. Note that you need SCons |
|---|
| | 280 | (<ulink |
|---|
| | 281 | url="http://scons.sourceforge.net/">http://scons.sourceforge.net/</ulink>) |
|---|
| | 282 | to build and install CppDOM.</para> |
|---|
| | 283 | </section> |
|---|
| | 284 | |
|---|
| | 285 | <section> |
|---|
| | 286 | <title>GMTL</title> |
|---|
| | 287 | |
|---|
| | 288 | <para>For high-level mathematical operations, we use GMTL 0.3.2 or |
|---|
| | 289 | newer. The source distribution can be downloaded from <ulink |
|---|
| | 290 | url="http://www.sf.net/projects/ggt/">http://www.sf.net/projects/ggt/</ulink>. |
|---|
| | 291 | Note that you need SCons (<ulink |
|---|
| | 292 | url="http://scons.sourceforge.net/">http://scons.sourceforge.net/</ulink>) |
|---|
| | 293 | to build and install GMTL.</para> |
|---|
| | 294 | </section> |
|---|
| | 295 | |
|---|
| | 296 | <section> |
|---|
| | 297 | <title>Netscape Portable Runtime (NSPR)</title> |
|---|
| | 298 | |
|---|
| | 299 | <para>Our operating system abstraction, VPR, can make use of NSPR |
|---|
| | 300 | for operating system primitives. On some platforms (IRIX, FreeBSD, |
|---|
| | 301 | Linux, Mac OS X), the use of NSPR is strictly optional. On others |
|---|
| | 302 | (Win32, HP-UX, and Solaris), it is required. Based on your local |
|---|
| | 303 | system, you should decide whether you need NSPR. Binary versions |
|---|
| | 304 | of NSPR can be downloaded from <ulink |
|---|
| | 305 | url="ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases">ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases</ulink>. |
|---|
| | 306 | At this time, we recommend the use of version 4.2 or newer.</para> |
|---|
| | 307 | </section> |
|---|
| | 308 | |
|---|
| | 309 | <section> |
|---|
| | 310 | <title>Java Developer Kit (also called the J2SE SDK)</title> |
|---|
| | 311 | |
|---|
| | 312 | <para>We make use of the Java programming language in addition to |
|---|
| | 313 | C++. Java is used exclusively for GUIs such as Tweek and VRJConfig |
|---|
| | 314 | (which is a JavaBean that is loaded into Tweek). To compile the |
|---|
| | 315 | Java code, a JDK is necessary. We currently require version 1.4 or |
|---|
| | 316 | newer. The Java Standard Edition can be downloaded from <ulink |
|---|
| | 317 | url="http://java.sun.com/j2se/">http://java.sun.com/j2se/</ulink>. |
|---|
| | 318 | More information can be found at <ulink |
|---|
| | 319 | url="http://java.sun.com/">http://java.sun.com/</ulink>.</para> |
|---|
| | 320 | </section> |
|---|
| | 321 | |
|---|
| | 322 | <section> |
|---|
| | 323 | <title>omniORB</title> |
|---|
| | 324 | |
|---|
| | 325 | <para>omniORB is a C++ implementation of CORBA 2.3. It is required |
|---|
| | 326 | in order to compile the Tweek C++ API. At this time, the Tweek C++ |
|---|
| | 327 | API is not required for VR Juggler, but this situation will change |
|---|
| | 328 | in the near future. At this time, we primarily use omniORB 4.0.x. |
|---|
| | 329 | omniORB can be downloaded from <ulink |
|---|
| | 330 | url="http://omniorb.sourceforge.net/">http://omniorb.sourceforge.net/</ulink>.</para> |
|---|
| | 331 | |
|---|
| | 332 | <para>omniORB 3.0 has strange conventions for how installations |
|---|
| | 333 | are made. Within the <filename>bin</filename> and |
|---|
| | 334 | <filename>lib</filename> directories, there are platform-specific |
|---|
| | 335 | subdirectories that contain the actual binaries (except when |
|---|
| | 336 | installed on FreeBSD via the Ports Collection). Because of this, |
|---|
| | 337 | several extra options must be specified in order to tell the Tweek |
|---|
| | 338 | configure script where to find everything. Please refer to <xref |
|---|
| | 339 | linkend="tweek.build.section" /> for more details on this.</para> |
|---|
| | 340 | </section> |
|---|
| 279 | | <title>GMTL</title> |
|---|
| 280 | | |
|---|
| 281 | | <para>For high-level mathematical operations, we use GMTL 0.3.2 or |
|---|
| 282 | | newer. The source distribution can be downloaded from <ulink |
|---|
| 283 | | url="http://www.sf.net/projects/ggt/">http://www.sf.net/projects/ggt/</ulink>. |
|---|
| 284 | | Note that you need SCons (<ulink |
|---|
| 285 | | url="http://scons.sourceforge.net/">http://scons.sourceforge.net/</ulink>) |
|---|
| 286 | | to build and install GMTL.</para> |
|---|
| | 362 | <title>Compiling the Juggler Suite of Tools</title> |
|---|
| | 363 | |
|---|
| | 364 | <para>This section explains how to get, configure, and compile all of |
|---|
| | 365 | the tools that make up VR Juggler. Each tool compiles to its own |
|---|
| | 366 | library and can be installed individually. (Refer to the |
|---|
| | 367 | <filename>README</filename> file in this directory for more |
|---|
| | 368 | information about the specific modules.)</para> |
|---|
| | 369 | |
|---|
| | 370 | <para>To build VR Juggler on Windows, you must use the Visual Studio |
|---|
| | 371 | solution. After getting the dependencies needed to compile VR Juggler |
|---|
| | 372 | (see the next section), refer to the <ulink |
|---|
| | 373 | url="vc7/README.html">README.html</ulink> file located in the |
|---|
| | 374 | <filename>vc7</filename> subdirectory of this directory. Do not |
|---|
| | 375 | bother to the rest of this document.</para> |
|---|
| | 376 | |
|---|
| | 377 | <section id="config.vrjuggler.section"> |
|---|
| | 378 | <title>Configuring the Juggler Build</title> |
|---|
| | 379 | |
|---|
| | 380 | <para>We now explain the process by which the Juggler build is |
|---|
| | 381 | configured. The Juggler Suite makes use of the well-known, widely |
|---|
| | 382 | used GNU tools Autoconf and GNU Make. We provide a wrapper script |
|---|
| | 383 | written in Perl called <command>configure.pl</command> that gets |
|---|
| | 384 | the process started.</para> |
|---|
| | 385 | |
|---|
| | 386 | <para>The Juggler build is highly automated. The trickiest part is |
|---|
| | 387 | telling the build where to find the third-party dependencies. This |
|---|
| | 388 | part can be simplified, however, by installing the third-party |
|---|
| | 389 | dependencies in the default location where the search will be |
|---|
| | 390 | performed. In most cases, this is <filename>/usr/local</filename>, |
|---|
| | 391 | but in others it is <filename>/usr</filename>. The default search |
|---|
| | 392 | location is determined by whether the dependency is considered to |
|---|
| | 393 | be a fundamental part of the operating system installation (such |
|---|
| | 394 | as OpenGL) or if it is an <quote>add-on</quote> package (such as |
|---|
| | 395 | Boost, GMTL, CppDOM, or omniORB).</para> |
|---|
| | 396 | |
|---|
| | 397 | <sidebar> |
|---|
| | 398 | <para>The distinction between <filename>/usr/local</filename> |
|---|
| | 399 | and <filename>/usr</filename> is complicated by the fact that |
|---|
| | 400 | most Linux distributions have <emphasis>everything</emphasis> |
|---|
| | 401 | installed in <filename>/usr</filename>. While Linux may be |
|---|
| | 402 | popular, it should not (yet) be considered a model example of |
|---|
| | 403 | how to do things. In traditional UN*X distributions (BSD and |
|---|
| | 404 | System V), <filename>/usr</filename> is only used for the |
|---|
| | 405 | fundamental operating system pieces; |
|---|
| | 406 | <filename>/usr/local</filename> is used for extra bits. The |
|---|
| | 407 | Juggler build is based on these assumptions. Furthermore, most |
|---|
| | 408 | open source software packages (e.g., Boost, omniORB, Perl, |
|---|
| | 409 | Python) default to installing themselves in |
|---|
| | 410 | <filename>/usr/local</filename>, which suggests that the |
|---|
| | 411 | authors of those tools generally expect their software to be in |
|---|
| | 412 | <filename>/usr/local</filename>.</para> |
|---|
| | 413 | </sidebar> |
|---|
| | 414 | |
|---|
| | 415 | <section id="using.configure.pl"> |
|---|
| | 416 | <title>Using <command>configure.pl</command></title> |
|---|
| | 417 | |
|---|
| | 418 | <para>In the base <filename>juggler</filename> source |
|---|
| | 419 | directory, we have a <quote>global</quote> configure script |
|---|
| | 420 | written in Perl called <command>configure.pl</command>. To get |
|---|
| | 421 | the command-line options for this script, use one of the |
|---|
| | 422 | following (the second being much more detailed):</para> |
|---|
| | 423 | |
|---|
| | 424 | <screen>./configure.pl --help |
|---|
| | 425 | ./configure.pl --manual</screen> |
|---|
| | 426 | |
|---|
| | 427 | <para>To configure your system, you will need to see what |
|---|
| | 428 | options all the Autoconf-based configure scripts in VR Juggler |
|---|
| | 429 | need. To get this text, enter:</para> |
|---|
| | 430 | |
|---|
| | 431 | <screen>./configure.pl --all-help</screen> |
|---|
| | 432 | |
|---|
| | 433 | <para><important> |
|---|
| | 434 | <para>In order for this to work, the configure script for |
|---|
| | 435 | each of the Juggler modules must be generated. This can |
|---|
| | 436 | be done manually by running <command>autogen.sh</command> |
|---|
| | 437 | in the top-level <filename>juggler</filename> directory. |
|---|
| | 438 | It use is simple:</para> |
|---|
| | 439 | |
|---|
| | 440 | <screen>./autogen.sh</screen> |
|---|
| | 441 | |
|---|
| | 442 | <para>This <command>autogen.sh</command> script must be |
|---|
| | 443 | run from the directory where it exists. Do not try to run |
|---|
| | 444 | it from a build directory or any other place in the |
|---|
| | 445 | Juggler source tree. The same holds for the individual |
|---|
| | 446 | <command>autogen.sh</command> scripts in the various |
|---|
| | 447 | modules, should you need to run one individually.</para> |
|---|
| | 448 | </important><command>configure.pl</command> can run in a |
|---|
| | 449 | unique <quote>build</quote> directory or in the directory where |
|---|
| | 450 | it resides. Here is how we (the Juggler Team) have been using |
|---|
| | 451 | it:</para> |
|---|
| | 452 | |
|---|
| | 453 | <orderedlist> |
|---|
| | 454 | <listitem> |
|---|
| | 455 | <para>Make a directory for compiling. There are many good |
|---|
| | 456 | reasons to do this away from the main source tree (though |
|---|
| | 457 | they will not be listed here).</para> |
|---|
| | 458 | |
|---|
| | 459 | <screen>mkdir build.linux.posix</screen> |
|---|
| | 460 | |
|---|
| | 461 | <para>This example using an ad hoc naming convention |
|---|
| | 462 | based on operating system and threading subsystem. Other |
|---|
| | 463 | examples could be <filename>build.irix.sproc</filename>, |
|---|
| | 464 | <filename>build.solaris.nspr</filename>, etc.</para> |
|---|
| | 465 | </listitem> |
|---|
| | 466 | |
|---|
| | 467 | <listitem> |
|---|
| | 468 | <para>Enter the new build directory.</para> |
|---|
| | 469 | |
|---|
| | 470 | <screen>cd build.linux.posix</screen> |
|---|
| | 471 | </listitem> |
|---|
| | 472 | |
|---|
| | 473 | <listitem> |
|---|
| | 474 | <para>Configure all the modules making up VR Juggler. |
|---|
| | 475 | This is when you must tell the module configure scripts |
|---|
| | 476 | where all the package dependencies are found.</para> |
|---|
| | 477 | |
|---|
| | 478 | <screen>../configure.pl --prefix=$HOME/vrjuggler-2.0 --with-java-orb=JDK</screen> |
|---|
| | 479 | |
|---|
| | 480 | <important> |
|---|
| | 481 | <para>You will probably have to specify the paths to |
|---|
| | 482 | your local CppDOM, GMTL, and Boost installations using |
|---|
| | 483 | the options <option>--with-cppdom</option>, |
|---|
| | 484 | <option>--with-gmtl</option>, and |
|---|
| | 485 | <option>--with-boost</option> unless they are |
|---|
| | 486 | installed in the default location |
|---|
| | 487 | (<filename>/usr/local</filename>). By default, Boost |
|---|
| | 488 | 1.31 installs its header files in a subdirectory of |
|---|
| | 489 | <filename>include</filename> called |
|---|
| | 490 | <filename>boost-1_31</filename>. That is, if Boost is |
|---|
| | 491 | installed in |
|---|
| | 492 | <filename>/home/user1/pkgs/boost</filename>, the |
|---|
| | 493 | header files will be in |
|---|
| | 494 | <filename>/home/user1/pkgs/boost/include/boost-1_31</filename>. |
|---|
| | 495 | In this case, you must also specify the option |
|---|
| | 496 | <option>--with-boost-includes=/home/user1/pkgs/boost/include/boost-1_31</option> |
|---|
| | 497 | when running <command>configure.pl</command>.</para> |
|---|
| | 498 | </important> |
|---|
| | 499 | </listitem> |
|---|
| | 500 | </orderedlist> |
|---|
| | 501 | |
|---|
| | 502 | <para>By default, the configuration process will configure VR |
|---|
| | 503 | Juggler and all of its dependencies. This includes Sonix, which |
|---|
| | 504 | is an interesting special case. Sonix can make use of Aaudiere, |
|---|
| | 505 | OpenAL, or AudioWorks to add sound to VR Juggler applications. |
|---|
| | 506 | If none of those packages is found, Sonix will <quote>stub |
|---|
| | 507 | out</quote> its sound APIs. This means that Sonix and the VR |
|---|
| | 508 | Juggler Sound Manager can still be used in applications, but no |
|---|
| | 509 | audio will be heard at run time. See <xref |
|---|
| | 510 | linkend="sonix.compile.section" /> for more information about |
|---|
| | 511 | how to configure Sonix to use Audiere, OpenAL, or |
|---|
| | 512 | AudioWorks.</para> |
|---|
| | 513 | |
|---|
| | 514 | <para>For example uses of <command>configure.pl</command>, take |
|---|
| | 515 | a look at the Wiki page relating to building from CVS (<ulink |
|---|
| | 516 | url="http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs">http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs</ulink>). |
|---|
| | 517 | It is not a replacement for this document, but it shows how |
|---|
| | 518 | some members of the Juggler team configure VR Juggler. It also |
|---|
| | 519 | has information on more advanced uses of |
|---|
| | 520 | <command>configure.pl</command> that are beyond the scope of |
|---|
| | 521 | this document.</para> |
|---|
| | 522 | </section> |
|---|
| | 523 | |
|---|
| | 524 | <section> |
|---|
| | 525 | <title>Using Locally Installed Software</title> |
|---|
| | 526 | |
|---|
| | 527 | <para>As noted in <xref linkend="source.code.section" />, VR |
|---|
| | 528 | Juggler depends on several external software packages. As an |
|---|
| | 529 | example, consider the case where the GMTL library is installed |
|---|
| | 530 | in <filename>/home/user1/pkgs/GMTL</filename> with the headers |
|---|
| | 531 | in <filename>/home/user1/pkgs/GMTL/include</filename>. To use |
|---|
| | 532 | this installation, run <command>configure.pl</command> as |
|---|
| | 533 | follows:</para> |
|---|
| | 534 | |
|---|
| | 535 | <screen>../configure.pl --with-gmtl=/home/user1/pkgs/GMTL</screen> |
|---|
| | 536 | |
|---|
| | 537 | <para>The <option>--with-gmtl</option> option could of course |
|---|
| | 538 | be mixed in with those shown in the previous section.</para> |
|---|
| | 539 | </section> |
|---|
| | 540 | </section> |
|---|
| | 541 | |
|---|
| | 542 | <section id="compile.vrjuggler.section"> |
|---|
| | 543 | <title>Compiling VR Juggler</title> |
|---|
| | 544 | |
|---|
| | 545 | <para>Once the configuration process is complete, the code can be |
|---|
| | 546 | compiled. Remember that we require the use of GNU make 3.78 or |
|---|
| | 547 | newer.</para> |
|---|
| | 548 | |
|---|
| | 549 | <orderedlist> |
|---|
| | 550 | <listitem> |
|---|
| | 551 | <para>Compile the source tree using GNU make.</para> |
|---|
| | 552 | |
|---|
| | 553 | <screen>gmake build</screen> |
|---|
| | 554 | </listitem> |
|---|
| | 555 | |
|---|
| | 556 | <listitem> |
|---|
| | 557 | <para>Once this completes, you will have a full build of VR |
|---|
| | 558 | Juggler. For those who are not interested in developing VR |
|---|
| | 559 | Juggler or its component modules, it is recommended that you |
|---|
| | 560 | install the software and use the installed version for |
|---|
| | 561 | application development. Do this as follows:</para> |
|---|
| | 562 | |
|---|
| | 563 | <screen>gmake install</screen> |
|---|
| | 564 | </listitem> |
|---|
| | 565 | </orderedlist> |
|---|
| | 566 | </section> |
|---|