root/juggler/tags/2.0_alpha_2/INSTALL.html

Revision 12111, 44.7 kB (checked in by patrickh, 6 years ago)

Regen.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 <html><head>
2       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
3    <title>Building and Installing the Juggler Project</title><link rel="stylesheet" href="base_style.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="d0e1"></a>Building and Installing the Juggler Project</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="othername">The Juggler Team</span></h3></div></div></div><div><p class="pubdate">$Date$</p></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="#d0e15">Introduction</a></dt><dd><dl><dt><a href="#d0e30">Important Notes for IRIX Users</a></dt><dt><a href="#d0e114">Important Note for Win32 Users</a></dt></dl></dd><dt><a href="#source.code.section">Getting the Source Code and the Dependencies</a></dt><dd><dl><dt><a href="#d0e234">How to Get the Juggler Suite and External Dependencies from CVS</a></dt><dt><a href="#using.cvs-gather.section">Using cvs-gather</a></dt><dt><a href="#d0e429">Downloading Binary Dependencies</a></dt></dl></dd><dt><a href="#compile.section">Compiling</a></dt><dd><dl><dt><a href="#d0e511">Important Note Regarding Compiling</a></dt><dt><a href="#d0e522">Compiling the Juggler Suite of Tools</a></dt><dt><a href="#compile.individual.section">Compiling Individual Tools in the Juggler Suite</a></dt></dl></dd></dl></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e15"></a>Introduction</h2></div></div><div></div></div><p>This document explains how to build the modules of the Juggler
4     Project from the source code. We begin by explaining some issues related
5     to specific operating systems. We then explain how to get the source code
6     from our CVS repository. (Those users who downloaded a pre-packaged source
7     release can skip ahead to <a href="#using.configure.pl" title="Using configure.pl">Section&nbsp;, &#8220;Using configure.pl&#8221;</a>). We
8     conclude with instructions on how to build VR Juggler and its individual
9     components.</p><p>Before reading further, we recommend that readers take a look at the
10     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>).
11     It is a <span class="emphasis"><em>supplement</em></span> to this document containing tips
12     and reminders for those users building the CVS version of VR Juggler. It
13     is not a replacement for this document, nor can it stand on its own as
14     build instructions. You are reading the definitive build instructions; the
15     Wiki page merely provides informal, extra information.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e30"></a>Important Notes for IRIX Users</h3></div></div><div></div></div><p>Despite our best efforts, there are some issues related to
16       compiling the Juggler Project on IRIX. We introduce them in this section
17       and explain how to work around them.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e35"></a>Perl Version</h4></div></div><div></div></div><p>There are many Perl scripts used as part of getting,
18         configuring, and building the Juggler Suite of tools. In particular,
19         two scripts required for compiling need Perl 5.005 or newer. The
20         version of Perl that ships with IRIX 6.5 is very old (circa 1997) and
21         does not work with many Perl scripts we have written. SGI provides a
22         much newer version of Perl (5.6.1) with their freeware tools (<a href="http://freeware.sgi.com/" target="_top">http://freeware.sgi.com/</a>). It
23         will be necessary to install that version for our scripts to work.
24         This version is typically installed as <tt class="filename">/usr/freeware/bin/perl</tt>.</p><p>Once you have a modern Perl installed, you can run various Perl
25         scripts as follows:</p><pre class="screen">/usr/freeware/bin/perl &lt;script-name&gt;</pre><p>The above will be required any time a Perl script fails with an
26         error similar to the following:</p><pre class="screen">Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35.
27 BEGIN failed--compilation aborted at ./configure.pl line 35.</pre><p>Furthermore, it is highly recommended that the <tt class="option">--with-perl</tt>
28         argument be passed to <b class="command">configure.pl</b>. This argument
29         gives all the Autoconf-based configure scripts a hint about where the
30         preferred version of Perl lives. If using <tt class="filename">/usr/freeware/bin/perl</tt>
31         to run <b class="command">configure.pl</b>, we recommend that the
32         <b class="command">configure.pl</b> command line appear similar to the
33         following:</p><pre class="screen">/usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin</pre><p>Note that the value given to <tt class="option">--with-perl</tt> is the
34         <span class="emphasis"><em>directory</em></span> where the <b class="command">perl</b>
35         executable can be found. The configure scripts will add this directory
36         to the front of the search path when trying to find a suitable
37         <b class="command">perl</b> executable. Once it is found, all the Perl
38         scripts used for configuration, compilation, and installation will use
39         that executable.</p><p>To simplify command execution somewhat, it can help to have
40         <tt class="filename">/usr/freeware/bin</tt> (or whatever path is
41         appropriate) in your path before <tt class="filename">/bin</tt> or
42         <tt class="filename">/usr/bin</tt> or any of the other myriad directories
43         where Perl might exist on IRIX. In such a situation, none of the above
44         extra steps should be necessary. The correct version of Perl will be
45         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></div></div><p>Reports have been made on the VR Juggler mailing list regarding
46         compile failures (including segmentation faults within the compiler)
47         occur when using the MIPSpro Compilers Version 7.3.1.1m. We have found
48         upgrading to Version 7.3.1.3m (or newer) fixes the problems.</p><p>A new feature of VR Juggler 1.1 is support for GCC on IRIX.
49         Users who do not have MIPSpro or cannot upgrade can compile and run VR
50         Juggler (without OpenGL Performer support) using the version of GCC
51         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>
52         for free. When configuring the source with <b class="command">configure.pl</b>
53         (described later), use the option <tt class="option">--with-gcc</tt>.</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></div></div><p>VR Juggler 1.1 uses a lot of C++ templates. Some components of the
54       system will not compile with MS Visual Studio 6.0, and as a result, we
55       currently require the use of Visual Studio 7 (.NET) to compile the
56       source code. We understand that this is an inconvenience, and we are
57       interested in methods for compiling the code with Visual Studio 6.
58       However, due to VC6's poor support for templates and the C++
59       standard in general, users need to be aware that it may not be possible.</p><p>VR Juggler and all its modules have a &#8220;<span class="quote">unified</span>&#8221; build
60       system. That is, the same build system works on UNIX-based systems as on
61       Win32. To do this, we require the use of Cygwin (<a href="http://sources.redhat.com/cygwin/download.html" target="_top">http://sources.redhat.com/cygwin/download.html</a>)
62       to provide a build environment for all of the code found in this source
63       tree. We also require the use of an extension to Cygwin that we call
64       &#8220;<span class="quote">juggler-tools</span>&#8221;. The archive may be downloaded from <a href="http://www.vrjuggler.org/download/juggler-tools.zip" target="_top">http://www.vrjuggler.org/download/juggler-tools.zip</a>.
65       After being installed, the <tt class="filename">juggler-tools</tt> directory
66       should be added at the <span class="emphasis"><em>end</em></span> of your path so that it
67       adds to the Cygwin environment and does not conflict with it.</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></div></div><p>In this section, we explain how to get the Juggler Project source
68     code and the dependencies required to build Juggler. There are two ways to
69     get the source code: from a pre-packaged source release archive or from
70     the CVS repository on SourceForge. If you got the code from a pre-packaged
71     source archive, that code is a complete &#8220;<span class="quote">snapshot</span>&#8221; of the CVS
72     repository at the time of release. It contains all dependencies that would
73     otherwise have been acquired using CVS. It <span class="emphasis"><em>does not</em></span>
74     contain binary dependencies that must be downloaded separately (such as
75     NSPR, JDOM, JDK, etc.).</p><p>The current list of <span class="emphasis"><em>required</em></span> software packages
76     is as follows:</p><div class="itemizedlist"><ul type="disc"><li><p>GMTL (<a href="http://ggt.sourceforge.net/" target="_top">http://ggt.sf.net/</a>):
77         A generic math library that makes use of C++ templates and STL
78         paradigms.</p></li><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++.</p></li><li><p>Boost (<a href="http://www.boost.org/" target="_top">http://www.boost.org/</a>):
80         A C++ library providing many powerful utility classes and libraries.</p></li><li><p>Doozer++ (<a href="http://www.sf.net/projects/doozer/" target="_top">http://www.sf.net/projects/doozer/</a>):
81         A foundation for the development of complex build systems using
82         Autoconf and GNU make. This is the basis for the entire Juggler
83         Project build system.</p></li><li><p>Doozer (<a href="http://www.sf.net/projects/doozer/" target="_top">http://www.sf.net/projects/doozer/</a>):
84         A foundation for rapid makefile development based on GNU make. This is
85         needed for building the sample VR Juggler applications.</p></li></ul></div><p>The following lists <span class="emphasis"><em>semi-optional</em></span> 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>):
86         The Netscape Portable Runtime, which can be used by VPR for threading
87         and sockets (required on Win32, Solaris, and Mac OS X).</p></li><li><p>Java Developer Kit (<a href="http://java.sun.com/" target="_top">http://java.sun.com/</a>):
88         The JDK is used to compile all the Java code used in the Juggler
89         Project. Without it, none of the Java code can be built. We require
90         version 1.3 or newer. The Java Standard Edition can be downloaded from
91         <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>.</p></li><li><p>JDOM (<a href="http://www.jdom.org/" target="_top">http://www.jdom.org/</a>):
92         An XML parser for Java, needed for the Tweek Java GUI and for the VR
93         Juggler configuration editor VRJConfig.</p></li><li><p>OpenORB (<a href="http://www.jdom.org/" target="_top">http://openorb.sourceforge.net/</a>):
94         A pure Java implementation of CORBA 2.3, required for the Tweek Java
95         GUI.</p></li><li><p>omniORB (<a href="http://www.jdom.org/" target="_top">http://omniorb.sourceforge.net/</a>):
96         A C++ implementation of CORBA 2.3, required for the Tweek C++ API.</p></li></ul></div><p>In the following subsections, we describe how to get all of the
97     above except JDK, JDOM, OpenORB, omniORB, and NSPR. These must be
98     downloaded separately from the sites listed above.</p><p>This remainder of this section is <span class="emphasis"><em>only</em></span> for
99     those users who want to get the Juggler Project source code from the CVS
100     repository on SourceForge. Those users who have downloaded a pre-packaged
101     version of the source should skip ahead to <a href="#using.configure.pl" title="Using configure.pl">Section&nbsp;, &#8220;Using configure.pl&#8221;</a>.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e234"></a>How to Get the Juggler Suite and External Dependencies from CVS</h3></div></div><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>)
103       or you can follow these steps to get the code from our CVS repository.</p><div class="orderedlist"><ol type="1"><li><p>Check out the 'juggler' module using CVS.</p><pre class="screen">cvs -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler login
104 cvs -z3 -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler co juggler</pre></li><li><p>Get external packages that Juggler depends on. Typically you
105           will run cvs-gather.pl, found in the top-level <tt class="filename">juggler</tt>
106           directory. For most users, the follow command will do the job:</p><pre class="screen">./cvs-gather.pl --verbose</pre><p>Ideally, users can just let the command run, but sometimes a
107           password must be entered. The CVS password prompt will appear at
108           such times. Each of the projects downloaded using
109           <b class="command">cvs-gather</b> come from SourceForge, and for
110           anonymous CVS access there is no password. Hence, simply pressing
111           the <span class="keysym">ENTER</span> key will allow the download to continue.</p><p>You can use the <b class="command">cvs-gather</b> tool, or you can
112           read the file <tt class="filename">Gatherrc</tt> and get the packages
113           manually. If you choose not to use <b class="command">cvs-gather</b>,
114           you must be familiar with CVS and with the use of CVS tags to check
115           out code. For more details about <b class="command">cvs-gather</b>, see
116           <a href="#using.cvs-gather.section" title="Using cvs-gather">Section&nbsp;, &#8220;Using cvs-gather&#8221;</a>. If you choose to follow
117           this step as shown above, you may skip ahead to <a href="#compile.section" title="Compiling">Section&nbsp;, &#8220;Compiling&#8221;</a>.</p></li></ol></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="using.cvs-gather.section"></a>Using <b class="command">cvs-gather</b></h3></div></div><div></div></div><p><b class="command">cvs-gather</b> is a utility we include in the base
118       <tt class="filename">juggler</tt> source directory to help you collect
119       third-party (external) source code that the Juggler Project needs in
120       order to build. To get help on using this tool, use one of the following
121       (the second version gives much more detailed output):</p><pre class="screen">./cvs-gather.pl --help
122 ./cvs-gather.pl --manual
123 </pre><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e296"></a>Standard Use of <b class="command">cvs-gather</b></h4></div></div><div></div></div><p>In most cases, <b class="command">cvs-gather</b> can be used as
124         follows:</p><pre class="screen">./cvs-gather.pl
125 </pre><p>All the output will be written to the file <tt class="filename">gather.log</tt>.
126         If you would like to see the progress of CVS as it checks out files,
127         run the command this way:</p><pre class="screen">./cvs-gather.pl --verbose
128 </pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="cvs-gather.advanced.section"></a>Advanced Use of <b class="command">cvs-gather</b></h4></div></div><div></div></div><p>Use of <b class="command">cvs-gather</b> is not required. You can
129         limit what packages are downloaded. You can even skip
130         <b class="command">cvs-gather</b> altogether if you already have all the
131         necessary packages in your system or if you feel like getting these
132         packages manually. For a list of the package dependencies, refer to
133         the file <tt class="filename">juggler/Gatherrc</tt>. For more information
134         about the file format, refer to the <b class="command">cvs-gather</b>
135         manual.</p><p>To limit which packages get downloaded through
136         <b class="command">cvs-gather</b>, use the <tt class="option">--target</tt>
137         option, as shown below:</p><pre class="screen">./cvs-gather --target Boost,Doozer++</pre><p>or</p><pre class="screen">./cvs-gather --target Boost --target Doozer++</pre><p>The names given as arguments to <tt class="option">--target</tt> are
138         the module names listed in <tt class="filename">juggler/Gatherrc</tt>. Any
139         number of target module names may be listed.</p><p>For <b class="command">cvs-gather</b> to work, it uses a
140         &#8220;<span class="quote">gather rc</span>&#8221; file. This<tt class="filename"></tt> file
141         specifies the external project CVS locations. <b class="command">cvs-gather</b>
142         reads these CVS locations and then checks each one out locally for use
143         in building the Juggler Project. There are three possible default
144         names for a &#8220;<span class="quote">gather rc</span>&#8221; file:</p><div class="orderedlist"><ol type="1"><li><p><tt class="filename">Gatherrc</tt> (in the working directory)</p></li><li><p><tt class="filename">.gatherrc</tt> (in the working directory)</p></li><li><p><tt class="filename">$HOME/.gatherrc</tt></p></li></ol></div><p><b class="command">cvs-gather</b> searches for these three files by
145         default in the order shown above. Alternatively, a user-defined file (<tt class="filename">deps.gatherrc</tt>,
146         for example) can be named on the command line as follows:</p><pre class="screen">./cvs-gather.pl --cfg=deps.gatherrc</pre><p>To simplify shared use of a single configuration file, the
147         contents of the file may be overridden on the command line or through
148         the use of an &#8220;<span class="quote">overrides</span>&#8221; file. The following shows such
149         a file that overrides the CVSROOT settings in <tt class="filename">juggler/Gatherrc</tt>:</p><pre class="programlisting">      #JugglerBaseStuff.CVSROOT=patrickh@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler
150       Doozer.CVSROOT = patrickh@cvs.doozer.sourceforge.net:/cvsroot/doozer
151       Doozer++.CVSROOT = patrickh@cvs.doozer.sourceforge.net:/cvsroot/doozer
152       GMTL.CVSROOT = patrickh@cvs.ggt.sourceforge.net:/cvsroot/ggt                  </pre><p>The current <tt class="filename">Gatherrc</tt> only allows anonymous
153         CVS access. To override that, we suggest making per-user override
154         files. To use the override file, just add the argument
155         <tt class="option">--override=&lt;filename&gt;</tt> when running
156         <b class="command">cvs-gather</b>.</p><p>The following shows how to run <b class="command">cvs-gather</b>
157         with your own overrides file (called <tt class="filename">my_gatheroverride</tt>):</p><pre class="screen">cvs-gather.pl --override=my_gatheroverride</pre><p>If all goes well, you'll get everything you need to compile.</p></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e429"></a>Downloading Binary Dependencies</h3></div></div><div></div></div><p>In addition to source the dependencies acquired through CVS, there
158       are some third-party dependencies that must be installed separately. As
159       of this writing, these dependencies are semi-optional. That is, VR
160       Juggler can be used on most platforms without these dependencies, but it
161       is recommended that you get them anyway. In particular, no Java code in
162       VR Juggler can be used without JDOM and OpenORB.</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e434"></a>Netscape Portable Runtime (NSPR)</h4></div></div><div></div></div><p>Our operating system abstraction, VPR, can make use of NSPR for
163         operating system primitives. On some platforms (IRIX, FreeBSD, Linux),
164         the use of NSPR is strictly optional. On others (Win32, Mac OS X, and
165         Solaris), it is required. Based on your local system you should decide
166         whether you need NSPR. Binary versions of NSPR can be downloaded from
167         <a href="ftp://ftp.mozilla.org/pub/nspr/releases/" target="_top">ftp://ftp.mozilla.org/pub/nspr/releases/</a>.
168         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="d0e442"></a>Java Developer Kit (JDK)</h4></div></div><div></div></div><p>We make use of the Java programming language in addition to C++.
169         Java is used exclusively for GUIs such as Tweek and VRJConfig (which
170         is a JavaBean that is loaded into Tweek). To compile the Java code, a
171         JDK is necessary. We currently require version 1.3 or newer. The Java
172         Standard Edition can be downloaded from <a href="http://java.sun.com/j2se/" target="_top">http://java.sun.com/j2se/</a>.
173         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="d0e453"></a>JDOM</h4></div></div><div></div></div><p>JDOM is a pure-Java API for handling XML using a simplified DOM
174         model. We use JDOM extensively for all XML handling in Java. This
175         includes the Tweek Java GUI and the VR Juggler configuration editor,
176         VRJConfig. At this time, we recommend the use of JDOM B8. It can be
177         downloaded from <a href="http://www.jdom.org/" target="_top">http://www.jdom.org/</a>.</p><p>There are two JAR files needed to use JDOM with Juggler Project
178         code. They are <tt class="filename">jdom.jar</tt> and <tt class="filename">xerces.jar</tt>.
179         Both come with a standard JDOM distribution. We will show how to tell
180         the configure scripts about these JAR files later.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e469"></a>OpenORB</h4></div></div><div></div></div><p>OpenORB is a pure-Java implementation of CORBA 2.3. It is
181         required in order to compile the Tweek Java API (and hence VRJConfig).
182         OpenORB 1.3.0 can be downloaded from <a href="http://openorb.sourceforge.net/" target="_top">http://openorb.sourceforge.net/</a>.</p><p>There are three JAR files needed to use OpenORB 1.3 with Juggler
183         Project code. They are <tt class="filename">openorb-1.3.0.jar</tt>,
184         <tt class="filename">avalon-framework.jar</tt>, and <tt class="filename">logkit.jar</tt>.
185         All three come with a standard OpenORB distribution. We will show how
186         to tell the configure scripts about these JAR files later.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e488"></a>omniORB</h4></div></div><div></div></div><p>omniORB is a C++ implementation of CORBA 2.3. It is required in
187         order to compile the Tweek C++ API. At this time, the Tweek C++ API is
188         not required for VR Juggler, but this situation will change in the
189         near future. At this time, we primarily use omniORB 3.0.5, though we
190         have tested beta versions of 4.0 successfully. omniORB can be
191         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
192         made. Within the <tt class="filename">bin</tt> and <tt class="filename">lib</tt>
193         directories, there are platform-specific subdirectories that contain
194         the actual binaries (except when installed on FreeBSD via the Ports
195         Collection). Because of this, several extra options must be specified
196         in order to tell the Tweek configure script where to find everything.
197         Please refer to <a href="#tweek.build.section" title="Tweek (Individual)">Section&nbsp;, &#8220;Tweek (Individual)&#8221;</a> for more
198         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></div></div><p>In this section, we describe how to compile the Juggler Project. We
199     focus on VR Juggler as a whole, but information about some of the
200     individual components is provided later.</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e511"></a>Important Note Regarding Compiling</h3></div></div><div></div></div><p>You have downloaded <span class="emphasis"><em>developmental</em></span> code. It
201       may not be stable, and it may not even compile. Compiling VR Juggler
202       itself can be a little complicated for anyone who does not have some
203       background in Autoconf, C++, and <b class="command">make</b>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e522"></a>Compiling the Juggler Suite of Tools</h3></div></div><div></div></div><p>This section explains how to get, configure, and compile all of
204       the tools that make up VR Juggler. Each tool compiles to its own library
205       and can be installed individually. (Refer to the <tt class="filename">README</tt>
206       file in this directory for more information about the specific modules.)</p><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="config.vrjuggler.section"></a>Configuring VR Juggler</h4></div></div><div></div></div><p>Every time you update the source code acquired from CVS and
207         <b class="command">cvs-gather</b>, it is recommended that you run
208         <b class="command">autogen.sh</b>. This script is found in the top-level
209         <tt class="filename">juggler</tt> directory, and it is run as follows:</p><pre class="screen">./autogen.sh</pre><p>This <b class="command">autogen.sh</b> script must be run from the
210         directory where it exists. Do not try to run it from a build directory
211         or any other place in the Juggler source tree. The same holds for the
212         individual <b class="command">autogen.sh</b> scripts in the various
213         modules, should you need to run one individually.</p><div class="section" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e554"></a>Win32 Issues</h5></div></div><div></div></div><p>The VR Juggler build system is &#8220;<span class="quote">unified</span>&#8221; in that
214           the same build code runs on UNIX-based systems as on Windows.
215           However, the build system is very UNIX-centric, and as a result,
216           using it on Windows is a little more complicated than we would like.
217           It does not help that Cygwin is a poor substitute for a real
218           UNIX-like environment.</p><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e562"></a>Dealing with Cygwin Autoconf and Automake</h6></div></div><div></div></div><p>On Win32, recent versions of Cygwin install Autoconf 2.13
219             <span class="emphasis"><em>and</em></span> Autoconf 2.5x. Similarly, Automake 1.4
220             <span class="emphasis"><em>and</em></span> Automake 1.5 are installed. The former
221             versions (2.13 and 1.4) are considered &#8220;<span class="quote">stable</span>&#8221; while
222             the latter are &#8220;<span class="quote">developmental</span>&#8221;. While the VR Juggler
223             build system does work with either set on UNIX-based systems, the
224             build system does not work with Automake 1.5 on Win32. At this
225             time, it is unclear why it does not work, but the following
226             provides a workaround for running <b class="command">autogen.sh</b> on
227             Win32 using the default BASH environment:</p><pre class="screen">ACLOCAL=/usr/autotool/stable/bin/aclocal ./autogen.sh</pre><p>If you are using tcsh, use the following command instead:</p><pre class="screen">env ACLOCAL=/usr/autotool/stable/bin/aclocal ./autogen.sh</pre></div><div class="section" lang="en"><div class="titlepage"><div><div><h6 class="title"><a name="d0e588"></a>Paths</h6></div></div><div></div></div><p>Paths are a major source of confusion when building VR
228             Juggler on Win32. It is very important that everyone who tries to
229             build on Win32 read this section and understand it. The basic
230             principle is that using the VR Juggler build system works the same
231             on Windows as on UNIX-based systems. However, paths must be
232             handled specially due to the fundamental differences between
233             Windows and UNIX.</p><p>The most important part of dealing with paths on Win32 is
234             this: the path must be given as the full DOS drive path, but
235             <tt class="filename">/</tt> should be used instead of
236             <tt class="filename">\</tt> as the path separator. The Cygwin
237             <tt class="filename">/cygdrive</tt> paths <span class="emphasis"><em>cannot</em></span>
238             be used when running the <b class="command">configure</b> scripts.
239             This is because the paths are passed onto Windows software such as
240             Visual Studio and the Java compiler. These are not Cygwin
241             programs, and thus, they do not understand the
242             <tt class="filename">/cygdrive</tt> syntax.</p><p>This issue is really not that complicated if you exercise
243             some common sense and keep the following rule of thumb in mind:
244             any path that will be used by a compiler must be a DOS-style path,
245             and any path that will be used by the shell must be a Cygwin-style
246             path. In general, the only time to use a Cygwin-style path is when
247