root/juggler/tags/1.1_dr_1/INSTALL.txt

Revision 9285, 18.5 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                   Building and Installing the Juggler Project
2
3   The Juggler Team
4
5    $Date$
6
7      ----------------------------------------------------------------------
8
9    Table of Contents
10
11    Introduction
12
13                 Important Notes for IRIX Users
14
15                 Important Note for Win32 Users
16
17    Getting the Source Code
18
19                 How to get the Juggler Suite and external package
20                 dependencies
21
22                 Using cvs-gather
23
24    Compiling
25
26                 Important Note Regarding Compiling
27
28                 Compiling the Juggler Suite of Tools
29
30 Introduction
31
32    This document explains how to build the modules of the Juggler Project
33    from the source code. We begin by explaining some issues related to
34    specific operating systems. We then explain how to get the source code
35    from our CVS repository. (Those users who downloaded a pre-packaged source
36    release can skip ahead to the section called "Using configure.pl"). We
37    conclude with instructions on how to build VR Juggler and its individual
38    components.
39
40   Important Notes for IRIX Users
41
42    Despite our best efforts, there are some issues related to compiling the
43    Juggler Project on IRIX. We introduce them in this section and explain how
44    to work around them.
45
46     Perl Version
47
48    There are many Perl scripts used as part of getting, configuring, and
49    building the Juggler Suite of tools. In particular, two scripts required
50    for compiling need Perl 5.005 or newer. The version of Perl that ships
51    with IRIX 6.5 is very old (circa 1997) and does not work with many Perl
52    scripts we have written. SGI provides a much newer version of Perl (5.6.1)
53    with their freeware tools (http://freeware.sgi.com/). It will be necessary
54    to install that version for our scripts to work. This version is typically
55    installed as /usr/freeware/bin/perl.
56
57    Once you have a modern Perl installed, you can run various Perl scripts as
58    follows:
59
60  /usr/freeware/bin/perl <script-name>
61
62    The above will be required any time a Perl script fails with an error
63    similar to the following:
64
65  Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35.
66  BEGIN failed--compilation aborted at ./configure.pl line 35.
67
68     MIPSpro Compiler Version
69
70    Reports have been made on the VR Juggler mailing list regarding compile
71    failures (including segmentation faults within the compiler) occur when
72    using the MIPSpro Compilers Version 7.3.1.1m. We have found upgrading to
73    Version 7.3.1.3m (or newer) fixes the problems.
74
75    A new feature of VR Juggler 1.1 is support for GCC on IRIX. Users who do
76    not have MIPSpro or cannot upgrade can compile and run VR Juggler (without
77    OpenGL Performer support) using the version of GCC distributed by SGI. It
78    can be downloaded from http://freeware.sgi.com/index-by-alpha.html for
79    free. When configuring the source with configure.pl (described later), use
80    the option --with-gcc.
81
82   Important Note for Win32 Users
83
84    VR Juggler 1.1 uses a lot of C++ templates. Some components of the system
85    will not compile with MS Visual Studio 6.0, and as a result, we currently
86    require the use of Visual Studio 7 (.NET) to compile the source code. We
87    understand that this is an inconvenience, and we are interested in methods
88    for compiling the code with Visual Studio 6. However, due to VC6's poor
89    support for templates and the C++ standard in general, users need to be
90    aware that it may not be possible.
91
92 Getting the Source Code
93
94    This section is for those users who want to get the Juggler Project source
95    code from the CVS repository on SourceForge. Those users who have
96    downloaded a pre-packaged version of the source can skip ahead to the
97    section called "Using configure.pl".
98
99    Getting the source code takes a few steps. You have to first download or
100    check out the Juggler Project source code and some external packages such
101    as GMTL, CppDOM, Boost, and possibly NSPR. The steps are listed in the
102    following subsections. The current list of required software packages is
103    as follows:
104
105      o GMTL (http://ggt.sf.net/): A generic math library that makes use of
106        C++ templates and STL paradigms
107
108      o CppDOM (http://www.sf.net/projects/xml-cppdom/): A lightweight,
109        easy-to-use XML parser written in C++
110
111      o Boost (http://www.boost.org/): A C++ library providing many powerful
112        tools
113
114    The following lists semi-optional packages:
115
116      o NSPR (http://www.mozilla.org/projects/nspr/): The Netscape Portable
117        Runtime, which can be used by VPR for threading and sockets (required
118        on Win32)
119
120      o JDOM (http://www.jdom.org/): An XML parser for Java (required only for
121        VjControl, the GUI for editing VR Juggler configuration files)
122
123    The following describes how to get all of the above except JDOM and NSPR.
124    These must be downloaded separately.
125
126   How to get the Juggler Suite and external package dependencies
127
128    You can optionally get the Juggler Project as a source code tarball from
129    the website (http://www.vrjuggler.org/) or you can follow these steps to
130    get the code from our CVS repository.
131
132    1. Check out the 'juggler' module using CVS.
133
134  cvs -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler login
135  cvs -z3 -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler co juggler
136
137    2. Get external packages that Juggler depends on. Typically you will run
138        cvs-gather.pl, found in the top-level juggler directory. For most
139        users, the follow command will do the job:
140
141  ./cvs-gather.pl --verbose
142
143        Ideally, users can just let the command run, but sometimes a password
144        must be entered. The CVS password prompt will appear at such times.
145        Each of the projects downloaded using cvs-gather come from
146        SourceForge, and for anonymous CVS access there is no password. Hence,
147        simply pressing the ENTER key will allow the download to continue.
148
149        You can use the cvs-gather tool, or you can read the file Gatherrc and
150        get the packages manually. For more details about this, see the
151        section called "Using cvs-gather". If you choose to follow this step
152        as shown above, you may skip ahead to the section called "Compiling".
153
154   Using cvs-gather
155
156    cvs-gather is a utility we include in the base juggler source directory to
157    help you collect third-party (external) source code that the Juggler
158    Project needs in order to build. To get help on using this tool, use one
159    of the following (the second version gives much more detailed output):
160
161  ./cvs-gather.pl --help
162  ./cvs-gather.pl --manual
163
164     Standard use of cvs-gather
165
166    In most cases, cvs-gather can be used as follows:
167
168  ./cvs-gather.pl
169
170    All the output will be written to the file gather.log. If you would like
171    to see the progress of CVS as it checks out files, run the command this
172    way:
173
174  ./cvs-gather.pl --verbose
175
176     Advanced use of cvs-gather
177
178    Use of cvs-gather is not required. You can limit what packages are
179    downloaded. You can even skip cvs-gather altogether if you already have
180    all the necessary packages in your system or if you feel like getting
181    these packages manually. For a list of the package dependencies, refer to
182    the file juggler/Gatherrc. For more information about the file format,
183    refer to the cvs-gather manual.
184
185    To limit which packages get downloaded through cvs-gather, use the
186    --target option, as shown below:
187
188  ./cvs-gather --target Boost,Doozer++
189
190    or
191
192  ./cvs-gather --target Boost --target Doozer++
193
194    The names given as arguments to --target are the module names listed in
195    juggler/Gatherrc. Any number of target module names may be listed.
196
197    For cvs-gather to work, it uses a "gather rc" file. This file specifies
198    the external project CVS locations. cvs-gather reads these CVS locations
199    and then checks each one out locally for use in building the Juggler
200    Project. There are three possible default names for a "gather rc" file:
201
202    1. Gatherrc (in the working directory)
203
204    2. .gatherrc (in the working directory)
205
206    3. $HOME/.gatherrc
207
208    cvs-gather searches for these three files by default in the order shown
209    above. Alternatively, a user-defined file (deps.gatherrc, for example) can
210    be named on the command line as follows:
211
212  ./cvs-gather.pl --cfg=deps.gatherrc
213
214    To simplify shared use of a single configuration file, the contents of the
215    file may be overridden on the command line or through the use of an
216    "overrides" file. The following shows such a file that overrides the
217    CVSROOT settings in juggler/Gatherrc:
218
219        #JugglerBaseStuff.CVSROOT=patrickh@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler
220        Doozer.CVSROOT = patrickh@cvs.doozer.sourceforge.net:/cvsroot/doozer
221        Doozer++.CVSROOT = patrickh@cvs.doozer.sourceforge.net:/cvsroot/doozer
222        GMTL.CVSROOT = patrickh@cvs.ggt.sourceforge.net:/cvsroot/ggt                 
223
224    The current Gatherrc only allows anonymous CVS access. To override that,
225    we suggest making per-user override files. To use the override file, just
226    add the argument --override=<filename> when running cvs-gather.
227
228    The following shows how to run cvs-gather with your own overrides file
229    (called my_gatheroverride):
230
231  cvs-gather.pl --override=my_gatheroverride
232
233    If all goes well, you'll get everything you need to compile.
234
235 Compiling
236
237    In this section, we describe how to compile the Juggler Project. We focus
238    on VR Juggler as a whole, but information about some of the individual
239    components is provided later.
240
241   Important Note Regarding Compiling
242
243    You have downloaded developmental code. It may not be stable, and it may
244    not even compile. Compiling VR Juggler itself can be a little complicated
245    for anyone who does not have some background in Autoconf, C++, and make.
246
247   Compiling the Juggler Suite of Tools
248
249    This section explains how to get, configure, and compile all of the tools
250    that make up VR Juggler. Each tool compiles to its own library and can be
251    installed individually. (Refer to the README file in this directory for
252    more information about the specific modules.)
253
254     Configuring VR Juggler
255
256    Every time you update the source code acquired from CVS and cvs-gather, it
257    is recommended that you run autogen.sh. This script is found in the
258    top-level juggler directory, and it is run as follows:
259
260  ./autogen.sh
261
262   Note
263
264    On Win32, recent versions of Cygwin install Autoconf 2.13 and Autoconf
265    2.5x. Similarly, Automake 1.4 and Automake 1.5 are installed. The former
266    versions (2.13 and 1.4) are considered "stable" while the latter are
267    "developmental". While the VR Juggler build system does work with either
268    set on UNIX-based systems, the build system does not work with Automake
269    1.5 on Win32. At this time, it is unclear why it does not work, but the
270    following provides a workaround for running autogen.sh on Win32 using the
271    default BASH environment:
272
273  ACLOCAL=/usr/autotool/stable/bin/aclocal ./autogen.sh
274
275    If you are using tcsh, use the following command instead:
276
277  env ACLOCAL=/usr/autotool/stable/bin/aclocal ./autogen.sh
278
279       Using configure.pl
280
281    In the base juggler source directory, we have a "global" configure script
282    written in Perl called configure.pl. To get the command-line options for
283    this script, use one of the following (the second being much more
284    detailed):
285
286  ./configure.pl --help
287  ./configure.pl --manual
288
289    To configure your system, you will need to see what options all the
290    Autoconf-based configure scripts in VR Juggler need. To get this text,
291    enter:
292
293  ./configure.pl --all-help
294
295    configure.pl can run in a different "build" directory or in the directory
296    where it resides. Here is how we (the Juggler Team) have been using it:
297
298    1. Make a directory for compiling. There are many good reasons to do this
299        away from the main source tree (though they will not be listed here).
300
301  mkdir build.linux.posix
302
303        This example using an ad hoc naming convention based on operating
304        system and threading subsystem. Other examples could be
305        build.irix.sproc, build.solaris.nspr, etc.
306
307    2. Enter the new build directory.
308
309  cd build.linux.posix
310
311    3. Configure all the modules making up VR Juggler. This is when you must
312        tell the module configure scripts where all the package dependencies
313        are found. For this description, we will use the term <JDOMPATH> to
314        refer to the JDOM installation. Assume that this is an absolute path
315        (e.g., <JDOMPATH> = /home/user1/pkgs/jdom).
316
317  ../configure.pl --prefix=$HOME/vrjuggler-2.0 --with-jdom="<JDOMPATH>/build/jdom.jar:<JDOMPATH>/lib/xerces.jar"
318
319        On Win32, remember that the path is given as the full DOS drive path,
320        but / should be used instead of \ as the path separator.
321
322       Using locally installed software
323
324    As noted in the section called "Getting the Source Code", VR Juggler
325    depends on several external software packages. The cvs-gather tool
326    collects the source code for those packages into the directory
327    juggler/external, but some users may already have one or more of these
328    installed locally. For those users, they have the option of referring to
329    the local installation(s) and limiting the work done by cvs-gather (see
330    the section called "Advanced use of cvs-gather" for more details).
331
332    As an example, consider the case where the Boost C++ library is installed
333    in /usr/local with the headers in /usr/local/include. To use this instead
334    of the version downloaded into juggler/external, run configure.pl as
335    follows:
336
337  ../configure.pl --with-boostroot=/usr/local
338
339    This option could of course be mixed in with those shown in the previous
340    section. In this situation, all paths for the Boost headers will reference
341    /usr/local/include; everything in juggler/external/boost will be ignored.
342
343    There are similar options for GMTL and CppDOM. Other external dependencies
344    not downloaded with cvs-gather, such as NSPR and JDOM, require the use of
345    such command-line arguments. Refer to the output from running configure.pl
346    --all-help for more detailed information.
347
348     Compiling VR Juggler
349
350    Once the configuration process is complete, the code can be compiled.
351    Remember that we require the use of GNU make 3.78 or newer.
352
353    1. Compile the source tree using GNU make.
354
355  gmake build
356
357    2. Once this completes, you will have a full build of VR Juggler. For
358        those who are not interested in developing VR Juggler or its component
359        modules, it is recommended that you install the software and use the
360        installed version for application development. Do this as follows:
361
362  gmake install
363
364     Compiling individual tools in the Juggler Suite
365
366    Sometimes you do not want to build everything in the Juggler Suite. Here
367    are steps for configuring/building each package individually.
368
369       VPR (individual)
370
371    VPR can be configured a number of ways. Except when building on Win32, no
372    external packages are required. For Win32, NSPR (www.mozilla.org) is
373    required. To build VPR, do the following from the top-level juggler
374    directory:
375
376    1. mkdir build.vpr
377  cd build.vpr
378
379    2. ../configure.pl --module=VPR --prefix=$HOME/vpr-inst
380
381    3. gmake debug install
382
383    4. setenv VPR_BASE_DIR $HOME/vpr-inst
384
385    If you want to use NSPR, make sure a binary version is installed. In step
386    2, add the arguments --enable-subsystem=NSPR and --with-nspr=<path to
387    NSPR>. Once that is done, proceed with steps 3 and 4 as normal.
388
389       Sonix (individual)
390
391    Sonix requires a third-party software package called GMTL (ggt.sf.net).
392    Sonix wraps other audio subsystems such as OpenAL (www.openal.org) or
393    AudioWorks (multigen.com). One of these subsystems are required in order
394    to hear sound. Once you have all the necessary source code and third-party
395    package installations, to the following from the top-level juggler
396    directory:
397
398    1. mkdir build.sonix
399  cd build.sonix
400
401    2. Choose one of the following depending on which subsystem (or both) you
402        want to enable in sonix...
403
404  ../configure.pl --module=Sonix --prefix=$HOME/sonix-inst --enable-openal --with-oalroot=/usr/local
405  ../configure.pl --module=Sonix --prefix=$HOME/sonix-inst --enable-audioworks
406
407    3. gmake debug install
408
409    4. setenv SNX_BASE_DIR $HOME/sonix-inst
410
411       JCCL (individual)
412
413    JCCL requires VPR, CppDOM (http://www.sf.net/projects/xml-cppdom/), and
414    JDOM B7 or newer (http://www.jdom.org/). To build JCCL, do the following
415    from the top-level juggler directory:
416
417    1. mkdir build.jccl
418  cd build.jccl
419
420    2. ../configure.pl --module=JCCL --prefix=$HOME/jccl-inst --with-jdom="<JDOMPATH>/build/jdom.jar:<JDOMPATH>/lib/xerces.jar"
421
422    3. gmake debug install
423
424    4. setenv JCCL_BASE_DIR $HOME/jccl-inst
425
426       Gadgeteer (individual)
427
428    Gadgeteer depends on JCCL and on VPR. It also needs the third-party math
429    library GMTL (http://ggt.sf.net/). Assuming you have all the source code,
430    do the following from the top-level juggler directory:
431
432    1. mkdir build.gadgeteer
433  cd build.gadgeteer
434
435    2. ../configure.pl --module=Gadgeteer --prefix=$HOME/gadgeteer-inst --with-jdom="<JDOMPATH>/build/jdom.jar:<JDOMPATH>/lib/xerces.jar"
436
437    3. gmake debug install
438
439    4. setenv GADGET_BASE_DIR $HOME/gadgeteer-inst
440
441       Tweek (individual)
442
443    Tweek depends on VPR. It needs JDK 1.3.1, JDOM B7 or newer, and the
444    third-party CORBA implementations omniORB 3.0.4 (C++) and OpenORB 1.2.0
445    (Java). These packages can be downloaded from the following websites:
446
447      o JDOM: http://www.jdom.org/
448
449      o omniORB: http://www.omniorb.org/
450
451      o OpenORB: http://www.openorb.org/
452
453    For the following steps, assume that you have omniORB installed in
454    <OMNIORBPATH>, OpenORB is installed in <OPENORBPATH>, and JDOM is
455    installed in <JDOMPATH>.
456
457    Assuming you have the external packages installed, do the following from
458    the top-level juggler directory:
459
460    1. mkdir build.tweek
461  cd build.tweek
462
463    2. ../configure.pl --module=Tweek --prefix=$HOME/tweek-inst --with-jdom=<JDOMPATH>/jdom.jar:<JDOMPATH>/xerces.jar --with-cxx-orb=omniORB3 --with-cxx-orb-root=<OMNIORBPATH> --with-java-orb=OpenORB --with-java-orb-jar=<OPENORBPATH>/lib/openorb-1.2.0.jar
464
465    3. gmake debug install
466
467    4. setenv TWEEK_BASE_DIR $HOME/tweek-inst
468
469    If JDK 1.4.0 is used, you do not need OpenORB (or any other third-party
470    CORBA implementation for Java). In that case, pass --with-java-orb=JDK to
471    configure.pl.
472
473    Depending on your omniORB installation, you may have to pass extra
474    arguments to configure.pl so that the configuration process can find the
475    omniidl binary and the omniORB libraries. For example, on RedHat Linux
476    7.2, the following arguments must be specified in addition to the above:
477
478  --with-cxx-orb-bin=<OMNIORBPATH>/bin/i586_linux_2.0_glibc --with-cxx-orb-lib=<OMNIORBPATH>/lib/i586_linux_2.0_glibc
Note: See TracBrowser for help on using the browser.