Syzygy's build system is designed to let you compile your software using the optional supporting libraries but without installing them in a standard system location. This allows non-root users to compile Syzygy with supporting libraries. The build system expects the "external" libraries to be installed in a directory given by the SZGEXTERNAL environment variable.

The Syzygy makefiles (via szg/build/make/Makefile.libscan) will automatically detect the presence of the libraries, given that they are copied to the places outlined below. See Makefile.libscan for details. This is the file you should change if you need to use different library versions or otherwise tweak this process for your local installation.

General Comments on External Libraries

With the possible exception of the GLUT libraries, if you do not properly install an optional library in SZGEXTERNAL, Syzygy programs will still build and run, but with certain features (such as sound) disabled. When an external library requires a shared library, the runtime linker must be able to find it. A Makefile target exists to install shared libries in $SZGBIN.

  cd $SZGHOME/build
  make install-shared

If you have compiled your executables from scratch on a Unix system, they have a runtime linker path including $SZGBIN. Consequently, installing the shared libraries with the Syzygy executables will let the runtime linker find them. If you are on a Windows system, the runtime linker automatically searches the directory in which the executable it runs resides.

A note about GLUT. Syzygy compilation requires it (although hopefully it won't in version 1.2). Some systems will have in installed by default (Mac OS X). Some systems might or might not have it installed (Linux, SGI), and some will probably not have it installed (Windows). If it is installed so that the compiler will automatically find the header and library and the runtime linker will find the shared library, then you need do nothing else. Otherwise, you can either install GLUT like that yourself, or install it for Syzygy only in SZGEXTERNAL, as described below.

Directory Structure of SZGEXTERNAL

The top level of the SZGEXTERNAL directory has subdirectories for each system (Linux, Windows, Mac OS X, SGI) that it supports. When creating your own SZGEXTERNAL, you do not need all of these subdirectories, since you might support only one or two system types.

  SZGEXTERNAL
    darwin
    linux
    sgi
    win32

The subdirectories of each system-specific directory vary depending on the supporting libraries required on that platform. As a general rule, each subdirectory will contain in turn "include" and "lib" subdirectories for headers and libraries, respectively. Here is a list of libraries required for full functionality:

  darwin
    fmod-4
    jpeg

  linux
    fmod-4
    glut-3.7
    jpeg
    lib3ds
    vrpn
    zlib

  sgi
    glut-3.7

  win32
    STLport
    ascension
    fmod-4
    glut-3.7
    isense
    jpeg
    lib3ds
    sapi-5.1
    zlib
    evart

Use of Specific Libraries

Installing Libraries for Windows

Of special note is the STLport library. If you are using Visual Studio 6 to compile Syzygy, you CANNOT use the native STL. In this case, you MUST use STLport (the software will crash otherwise). If you are using Visual STudio .NET, you should use the native STL.

Installing Libraries for Mac OS X (darwin)

Installing Libraries for Linux

Installing Libraries for SGI