root/juggler/branches/2.0_alpha_4/INSTALL.txt

Revision 14775, 22.2 kB (checked in by patrickh, 4 years ago)

Regenerate.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1          Building and Installing the Juggler Project (Version 1.1/2.0)
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 and the Dependencies
18
19                 How to Get the Juggler Suite from CVS
20
21                 Downloading Binary Dependencies
22
23    Compiling
24
25                 Important Note Regarding Compiling
26
27                 Compiling the Juggler Suite of Tools
28
29                 Tips for Compiling Individual Tools in the Juggler Suite
30
31 Introduction
32
33    You have downloaded the source code for Version 1.1 of the Juggler
34    Project. This is the code that will become VR Juggler 2.0, and it is the
35    code that is used to create the VR juggler 2.0 pre-releases. Please be
36    aware that this code represents a work in progress, and if you acquired it
37    directly from CVS rather than using a pre-packaged source code snapshot,
38    the code may have bugs affecting compilation and execution.
39
40    This document explains how to build the modules of the Juggler Project
41    from the source code. We begin by explaining some issues related to
42    specific operating systems. We then explain how to get the source code
43    from our CVS repository. (Those users who downloaded a pre-packaged source
44    release can skip ahead to the section called "Using configure.pl"). We
45    conclude with instructions on how to build VR Juggler and its individual
46    components.
47
48    Before reading further, we recommend that readers take a look at the Wiki
49    page relating to building from CVS
50    (http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs).
51    It is a supplement to this document containing tips and reminders for
52    those users building the CVS version of VR Juggler. It is not a
53    replacement for this document, nor can it stand on its own as build
54    instructions. You are reading the definitive build instructions; the Wiki
55    page merely provides informal, extra information.
56
57   Important Notes for IRIX Users
58
59    Despite our best efforts, there are some issues related to compiling the
60    Juggler Project on IRIX. We introduce them in this section and explain how
61    to work around them.
62
63     Perl Version
64
65    There are many Perl scripts used as part of getting, configuring, and
66    building the Juggler Suite of tools. In particular, two scripts required
67    for compiling need Perl 5.005 or newer. The version of Perl that ships
68    with IRIX 6.5 is very old (circa 1997) and does not work with many Perl
69    scripts we have written. SGI provides a much newer version of Perl (5.6.1)
70    with their freeware tools (http://freeware.sgi.com/). It will be necessary
71    to install that version for our scripts to work. This version is typically
72    installed as /usr/freeware/bin/perl.
73
74    Once you have a modern Perl installed, you can run various Perl scripts as
75    follows:
76
77  /usr/freeware/bin/perl <script-name>
78
79    The above will be required any time a Perl script fails with an error
80    similar to the following:
81
82  Perl 5.005 required--this is only version 5.00404, stopped at ./configure.pl line 35.
83  BEGIN failed--compilation aborted at ./configure.pl line 35.
84
85    Furthermore, it is highly recommended that the --with-perl argument be
86    passed to configure.pl. This argument gives all the Autoconf-based
87    configure scripts a hint about where the preferred version of Perl lives.
88    If using /usr/freeware/bin/perl to run configure.pl, we recommend that the
89    configure.pl command line appear similar to the following:
90
91  /usr/freeware/bin/perl configure.pl --with-perl=/usr/freeware/bin
92
93    Note that the value given to --with-perl is the directory where the perl
94    executable can be found. The configure scripts will add this directory to
95    the front of the search path when trying to find a suitable perl
96    executable. Once it is found, all the Perl scripts used for configuration,
97    compilation, and installation will use that executable.
98
99    To simplify command execution somewhat, it can help to have
100    /usr/freeware/bin (or whatever path is appropriate) in your path before
101    /bin or /usr/bin or any of the other myriad directories where Perl might
102    exist on IRIX. In such a situation, none of the above extra steps should
103    be necessary. The correct version of Perl will be found simply by virtue
104    of it being early in your path.
105
106     MIPSpro Compiler Version
107
108    Reports have been made on the VR Juggler mailing list regarding compile
109    failures (including segmentation faults within the compiler) occur when
110    using the MIPSpro Compilers Version 7.3.1.1m. We have found upgrading to
111    Version 7.3.1.3m (or newer) fixes the problems.
112
113    A new feature of VR Juggler 1.1 is support for GCC on IRIX. Users who do
114    not have MIPSpro or cannot upgrade can compile and run VR Juggler (without
115    OpenGL Performer support) using the version of GCC distributed by SGI. It
116    can be downloaded from http://freeware.sgi.com/index-by-alpha.html for
117    free. When configuring the source with configure.pl (described later), use
118    the option --with-gcc.
119
120   Important Note for Win32 Users
121
122    VR Juggler 1.1 uses a lot of C++ templates. Some components of the system
123    will not compile with MS Visual Studio 6.0, and as a result, we currently
124    require the use of Visual Studio 7 (.NET) to compile the source code. We
125    understand that this is an inconvenience, and we are interested in methods
126    for compiling the code with Visual Studio 6. However, due to VC6's poor
127    support for templates and the C++ standard in general, users need to be
128    aware that it may not be possible.
129
130 Getting the Source Code and the Dependencies
131
132    In this section, we explain how to get the Juggler Project source code and
133    the dependencies required to build Juggler. There are two ways to get the
134    source code: from a pre-packaged source release archive or from the CVS
135    repository on SourceForge. If you got the code from a pre-packaged source
136    archive, that code is a complete "snapshot" of the CVS repository at the
137    time of release. It contains all dependencies that would otherwise have
138    been acquired using CVS. It does not contain binary dependencies that must
139    be downloaded separately (such as NSPR, the Java Developer Kit, a C++
140    compiler, etc.).
141
142    The current list of required software packages is as follows:
143
144      o CppDOM (http://www.sf.net/projects/xml-cppdom/): A lightweight,
145        easy-to-use XML parser written in C++. CppDOM must be compiled and
146        installed for use with VR Juggler.
147
148      o Boost (http://www.boost.org/): A C++ library providing many powerful
149        utility classes and libraries. Boost must be compiled and installed
150        for use with VR Juggler.
151
152      o GMTL (http://ggt.sf.net/): A generic math library that makes use of
153        C++ templates and STL paradigms. GMTL must be installed for use with
154        VR Juggler.
155
156    The following lists semi-optional packages:
157
158      o NSPR (http://www.mozilla.org/projects/nspr/): The Netscape Portable
159        Runtime, which can be used by VPR for threading and sockets (required
160        on Win32, Solaris, and Mac OS X).
161
162      o Java Developer Kit (http://java.sun.com/): The J2SE SDK (or JDK) is
163        used to compile all the Java code used in the Juggler Project. Without
164        it, none of the Java code can be built. We require version 1.3 or
165        newer; we recommend version 1.4 or newer. The Java Standard Edition
166        (J2SE) can be downloaded from http://java.sun.com/j2se/.
167
168      o OpenORB (http://openorb.sourceforge.net/): A pure Java implementation
169        of CORBA 2.3, required for the Tweek Java GUI if you are using a
170        version of the JDK older than 1.4.0.
171
172      o omniORB (http://omniorb.sourceforge.net/): A C++ implementation of
173        CORBA 2.3, required for the Tweek C++ API.
174
175    In the following subsections, we describe how to get all of the above
176    except Boost, CppDOM, the JDK, OpenORB, omniORB, and NSPR. These must be
177    downloaded individually from the sites listed above. You may also have to
178    compile one or more of the packages if binary distributions are not
179    available. Which packages you download depends on what you already have
180    installed. Note carefully which packages are needed based on the software
181    you have installed and what versions of tools (such as the JDK) that you
182    download.
183
184   How to Get the Juggler Suite from CVS
185
186    You can optionally get the Juggler Project as a source code tarball from
187    the website (http://www.vrjuggler.org/) or you can execute the following
188    commands from a shell to get the code from our CVS repository:
189
190  cvs -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler login
191  cvs -z3 -d :pserver:anonymous@cvs.vrjuggler.sourceforge.net:/cvsroot/vrjuggler co juggler
192
193   Downloading Binary Dependencies
194
195    In addition to source the dependencies acquired through CVS, there are
196    some third-party dependencies that must be installed separately. Remember
197    that no Java code in VR Juggler can be used without the JDK and a working
198    Java version of CORBA (either from OpenORB, JacORB, or the JDK itself).
199
200     Boost
201
202    The minimum required version of Boost, as of this writing, is 1.31.0. The
203    Boost source can be downloaded from http://www.sf.net/projects/boost/. To
204    compile and install Boost, refer to its installation documentation
205    (http://www.boost.org/more/getting_started.html#Build_Install). Note that
206    you need the command bjam (referred to as "boost-jam" on the Boost
207    download page) to build Boost.
208
209     CppDOM
210
211    For XML processing, we use CppDOM 0.3.2 or newer. The source and binary
212    distributions for some platforms can be downloaded from
213    http://www.sf.net/projects/xml-cppdom/. If a binary version is not
214    available for your operating system you must compile and install CppDOM
215    yourself. Note that you need SCons (http://scons.sourceforge.net/) to
216    build and install CppDOM.
217
218     GMTL
219
220    For high-level mathematical operations, we use GMTL 0.3.2 or newer. The
221    source distribution can be downloaded from
222    http://www.sf.net/projects/ggt/. Note that you need SCons
223    (http://scons.sourceforge.net/) to build and install GMTL.
224
225     Netscape Portable Runtime (NSPR)
226
227    Our operating system abstraction, VPR, can make use of NSPR for operating
228    system primitives. On some platforms (IRIX, FreeBSD, Linux), the use of
229    NSPR is strictly optional. On others (Win32, Mac OS X, and Solaris), it is
230    required. Based on your local system, you should decide whether you need
231    NSPR. Binary versions of NSPR can be downloaded from
232    ftp://ftp.mozilla.org/pub/mozilla.org/nspr/releases. At this time, we
233    recommend the use of version 4.2 or newer.
234
235     Java Developer Kit (also called the J2SE SDK)
236
237    We make use of the Java programming language in addition to C++. Java is
238    used exclusively for GUIs such as Tweek and VRJConfig (which is a JavaBean
239    that is loaded into Tweek). To compile the Java code, a JDK is necessary.
240    We currently require version 1.3 or newer; we recommend version 1.4 or
241    newer. The Java Standard Edition can be downloaded from
242    http://java.sun.com/j2se/. More information can be found at
243    http://java.sun.com/.
244
245     OpenORB
246
247    OpenORB is a pure-Java implementation of CORBA 2.3. It is required in
248    order to compile the Tweek Java API (and hence VRJConfig) if you are using
249    a version of the JDK older than 1.4.0. OpenORB 1.3.0 can be downloaded
250    from http://openorb.sourceforge.net/.
251
252    There are three JAR files needed to use OpenORB 1.3 with Juggler Project
253    code. They are openorb-1.3.0.jar, avalon-framework.jar, and logkit.jar.
254    All three come with a standard OpenORB distribution. We will show how to
255    tell the configure scripts about these JAR files later.
256
257     omniORB
258
259    omniORB is a C++ implementation of CORBA 2.3. It is required in order to
260    compile the Tweek C++ API. At this time, the Tweek C++ API is not required
261    for VR Juggler, but this situation will change in the near future. At this
262    time, we primarily use omniORB 4.0.x. omniORB can be downloaded from
263    http://omniorb.sourceforge.net/.
264
265    omniORB 3.0 has strange conventions for how installations are made. Within
266    the bin and lib directories, there are platform-specific subdirectories
267    that contain the actual binaries (except when installed on FreeBSD via the
268    Ports Collection). Because of this, several extra options must be
269    specified in order to tell the Tweek configure script where to find
270    everything. Please refer to the section called "Tweek" for more details on
271    this.
272
273 Compiling
274
275    In this section, we describe how to compile the Juggler Project. We focus
276    on VR Juggler as a whole, but information about some of the individual
277    components is provided later.
278
279   Important Note Regarding Compiling
280
281    You have downloaded developmental code. It may not be stable, and it may
282    not even compile. Compiling VR Juggler itself can be a little complicated
283    for anyone who does not have some background in using CVS, Autoconf, C++,
284    and make or Visual Studio.
285
286   Compiling the Juggler Suite of Tools
287
288    This section explains how to get, configure, and compile all of the tools
289    that make up VR Juggler. Each tool compiles to its own library and can be
290    installed individually. (Refer to the README file in this directory for
291    more information about the specific modules.)
292
293    To build VR Juggler on Windows, you must use the Visual Studio solution.
294    After getting the dependencies needed to compile VR Juggler (see the next
295    section), refer to the README.html file located in the vc7 subdirectory of
296    this directory. Do not bother to the rest of this document.
297
298     Configuring VR Juggler
299
300    Every time you update the source code acquired from CVS, it is recommended
301    that you run autogen.sh. This script is found in the top-level juggler
302    directory, and it is run as follows:
303
304  ./autogen.sh
305
306    This autogen.sh script must be run from the directory where it exists. Do
307    not try to run it from a build directory or any other place in the Juggler
308    source tree. The same holds for the individual autogen.sh scripts in the
309    various modules, should you need to run one individually.
310
311       Using configure.pl
312
313    In the base juggler source directory, we have a "global" configure script
314    written in Perl called configure.pl. To get the command-line options for
315    this script, use one of the following (the second being much more
316    detailed):
317
318  ./configure.pl --help
319  ./configure.pl --manual
320
321    To configure your system, you will need to see what options all the
322    Autoconf-based configure scripts in VR Juggler need. To get this text,
323    enter:
324
325  ./configure.pl --all-help
326
327    configure.pl can run in a different "build" directory or in the directory
328    where it resides. Here is how we (the Juggler Team) have been using it:
329
330     1. Make a directory for compiling. There are many good reasons to do this
331        away from the main source tree (though they will not be listed here).
332
333  mkdir build.linux.posix
334
335        This example using an ad hoc naming convention based on operating
336        system and threading subsystem. Other examples could be
337        build.irix.sproc, build.solaris.nspr, etc.
338
339     2. Enter the new build directory.
340
341  cd build.linux.posix
342
343     3. Configure all the modules making up VR Juggler. This is when you must
344        tell the module configure scripts where all the package dependencies
345        are found. For this description, we will use the term <JAVA_ORB_PATH>
346        to refer to the installation directory containing a Java-based CORBA
347        implementation. Assume that this is an absolute path (e.g.,
348        <JAVA_ORB_PATH> = /home/user1/pkgs/openorb). For this example, we will
349        use the OpenORB 1.3 JAR file list.
350
351  ../configure.pl --prefix=$HOME/vrjuggler-2.0 --with-java-orb=OpenORB --with-java-orb-jar="<JAVA_ORB_PATH>/lib/openorb-1.3.0.jar:<JAVA_ORB_PATH>/lib/avalon-framework.jar:<JAVA_ORB_PATH>/lib/logkit.jar"
352
353        If you are using JDK 1.4.0 or newer, your command line can be
354        simplified to the following:
355
356  ../configure.pl --prefix=$HOME/vrjuggler-2.0 --with-java-orb=JDK
357
358   Note
359
360        You will probably have to specify the paths to your local CppDOM,
361        GMTL, and Boost installations using the options --with-cppdom,
362        --with-gmtl-prefix and --with-boost unless they are installed in the
363        default location (/usr/local). By default, Boost 1.31 installs its
364        header files in a subdirectory of include called boost-1_31. That is,
365        if Boost is installed in /home/user1/pkgs/boost, the header files will
366        be in /home/user1/pkgs/boost/include/boost-1_31. In this case, you
367        must also specify the option
368        --with-boost-includes=/home/user1/pkgs/boost/include/boost-1_31 when
369        running configure.pl.
370
371    By default, the configuration process will configure VR Juggler and all of
372    its dependencies. This includes Sonix, which is an interesting special
373    case. Sonix can make use of Aaudiere, OpenAL, or AudioWorks to add sound
374    to VR Juggler applications. If none of those packages is found, Sonix will
375    "stub out" its sound APIs. This means that Sonix and the VR Juggler Sound
376    Manager can still be used in applications, but no audio will be heard at
377    run time. See the section called "Sonix" for more information about how to
378    configure Sonix to use Audiere, OpenAL, or AudioWorks.
379
380    For example uses of configure.pl, take a look at the Wiki page relating to
381    building from CVS
382    (http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs).
383    It is not a replacement for this document, but it shows how some members
384    of the Juggler team configure VR Juggler. It also has information on more
385    advanced uses of configure.pl that are beyond the scope of this document.
386
387       Using Locally Installed Software
388
389    As noted in the section called "Getting the Source Code and the
390    Dependencies", VR Juggler depends on several external software packages.
391    As an example, consider the case where the GMTL library is installed in
392    /home/user1/pkgs/GMTL with the headers in /home/user1/pkgs/GMTL/include.
393    To use this installation, run configure.pl as follows:
394
395  ../configure.pl --with-gmtl-prefix=/home/user1/pkgs/GMTL
396
397    The --with-gmtl-prefix option could of course be mixed in with those shown
398    in the previous section.
399
400     Compiling VR Juggler
401
402    Once the configuration process is complete, the code can be compiled.
403    Remember that we require the use of GNU make 3.78 or newer.
404
405     1. Compile the source tree using GNU make.
406
407  gmake build
408
409     2. Once this completes, you will have a full build of VR Juggler. For
410        those who are not interested in developing VR Juggler or its component
411        modules, it is recommended that you install the software and use the
412        installed version for application development. Do this as follows:
413
414  gmake install
415
416   Tips for Compiling Individual Tools in the Juggler Suite
417
418    In this section, we provide tips for ensuring that individual tools in the
419    Juggler Suite are compiled correctly. For the most part, this duplicates
420    information that can be found on the Wiki page relating to building from
421    CVS
422    (http://www.vrjuggler.org/twiki_public/bin/view/Juggler/BuildingFromCvs).
423
424     Sonix
425
426    Sonix wraps other audio subsystems such as OpenAL (www.openal.org),
427    Audiere (audiere.sf.net), or AudioWorks (multigen.com). At least one of
428    these packages must be installed for use by Sonix in order to hear sounds
429    in VR Juggler applications. Once you have all the necessary source code
430    and third-party package installations, add one or more of the following
431    options to your configure.pl command line to enable the appropriate audio
432    subsystem:
433
434      o --enable-openal --with-openal=<OPENAL_PATH>: Enable the use of OpenAL
435        and tell the build where OpenAL is installed. The default search path
436        is /usr/local.
437
438      o --enable-audiere --with-audiere=<AUDIERE_PATH>: Enable the use of
439        Audiere and tell the build where Audiere is installed. The default
440        search path is /usr/local.
441
442      o --enable-audioworks --with-audioworks=<AUDIOWORKS_PATH>: Enable the
443        use of AudioWorks and tell the build where AudioWorks is installed.
444        The default search path is /usr.
445
446   Note
447
448    AudioWorks and OpenAL cannot be compiled together. They depend on mutually
449    exclusive VPR threading subsystems. Warnings will be printed by the Sonix
450    configure script indicating this fact. OpenAL and Audiere can be compiled
451    together, however.
452
453     Tweek
454
455    Tweek needs JDK 1.3.1 or newer and the third-party CORBA implementations
456    omniORB 3.0.4 or newer (C++) and OpenORB 1.2.0 or newer (Java). These
457    packages can be downloaded from the following websites:
458
459      o omniORB: http://www.omniorb.org/ or http://omniorb.sourceforge.net/
460
461      o OpenORB: http://openorb.sourceforge.net/
462
463    Remember that a separate Java implementation of CORBA is only required if
464    you are using a version of the JDK older than 1.4.0.
465
466    For the following steps, assume that you have omniORB installed in
467    <OMNIORB_PATH> and OpenORB is installed in <OPENORB_PATH>.
468
469    IRIX users must configure Tweek (and its VPR dependency) to use the POSIX
470    subsystem or the NSPR subsystem. omniORB will not work with SPROC threads.
471    To configure VPR to use either POSIX threads or NSPR threads, pass either
472    --enable-subsystem=POSIX or --enable-subsystem=NSPR respectively to
473    configure.pl.
474
475    Assuming you have the external packages installed, do the following from
476    the top-level juggler directory:
477
478  mkdir build
479  cd build
480  ../configure.pl --with-cxx-orb=omniORB4 --with-cxx-orb-root=<OMNIORB_PATH> --with-java-orb=OpenORB --with-java-orb-jar=<OPENORB_PATH>/lib/openorb-1.2.0.jar
481  gmake build install
482
483    If JDK 1.4.0 or newer is used, you do not need OpenORB (or any other
484    third-party CORBA implementation for Java). In that case, pass
485    --with-java-orb=JDK to configure.pl and remove the --with-java-orb-jar
486    option. If you are using omniORB 3.x, pass --with-cxx-orb=omniORB3
487    instead.
488
489    Depending on your omniORB installation, you may have to pass extra
490    arguments to configure.pl so that the configuration process can find the
491    omniidl binary and the omniORB libraries. For example, on Red Hat Linux
492    7.2 with omniORB 3.0.x, the following arguments must be specified in
493    addition to the above:
494
495  --with-cxx-orb-bin=<OMNIORB_PATH>/bin/i586_linux_2.0_glibc --with-cxx-orb-lib=<OMNIORB_PATH>/lib/i586_linux_2.0_glibc
Note: See TracBrowser for help on using the browser.