| 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 , “Using configure.pl”</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 <script-name></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 “<span class="quote">unified</span>” 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 |
“<span class="quote">juggler-tools</span>”. 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 “<span class="quote">snapshot</span>” 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 , “Using configure.pl”</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 , “Using cvs-gather”</a>. If you choose to follow |
|---|
| 117 |
this step as shown above, you may skip ahead to <a href="#compile.section" title="Compiling">Section , “Compiling”</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 |
“<span class="quote">gather rc</span>” 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 “<span class="quote">gather rc</span>” 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 “<span class="quote">overrides</span>” 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=<filename></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 , “Tweek (Individual)”</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 “<span class="quote">unified</span>” 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 “<span class="quote">stable</span>” while |
|---|
| 222 |
the latter are “<span class="quote">developmental</span>”. 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 |
|
|---|