Syzygy works on reasonably modern versions of Linux, Windows, Mac OS X, and Irix. Every user should read the testing document. You will also want to look at the chapter on installing supporting libraries for Syzygy compilation. If you want to write Syzygy programs in Python, then you will also need to read about compiling the Python bindings.

Software Packages

The following software (and data) packages are part of the Syzygy distribution:

A Note about GLUT

We're gradually phasing the GLUT dependency out of Syzygy. GLUT is no longer used for window mangagement, but it is still used in a few places for rendering (e.g. using glutWireSphere() to draw a wireframe sphere). These are the only GLUT commands that you can use in your programs, and if you do use them you should include the header arGlut.h.

OS-Specific Build Instructions



Mac OS X

The Syzygy shared library code uses dlopen, as is provided in szg/contrib/dlcompat. You must compile this first:

  1. cd szg/contrib/dlcompat
  2. make

    PLEASE NOTE that the Syzygy application frameworks now use their own windowing API (as built on X11) in place of GLUT. Consequently, to run Syzygy graphical applications you will need X11 installed on your system and running (by default it does not start at system start). If X11 is not running, the application will fail upon launch with an error message prompting you to start X11.


Either install GLUT on your machine in the normal Unix way or follow the SGI instructions here to install GLUT in a Syzygy-specific way, which does not require "root".

Syzygy Build Environment Variables

The Syzygy build process uses recursive make. A top-level Makefile in szg/build guesses the operating system and executes a machine-specific Makefile in a subdirectory. For example, on a Windows machine, the Syzygy shared library libarLanguage.dll would be built in szg/build/win32/language, but on a Linux system would be built in szg/build/linux/language. The Makefile guesses the operating system via uname, defaulting to the OSTYPE environment variable if this fails. If the top-level makefile fails to guess your machine type, you can fix the problem by setting $OSTYPE (to "linux" or "cygwin", for instance).

To build Syzygy, You MUST set SZGHOME to the path to the top-level Syzygy install directory. You will probably also want to set SZGEXTERNAL, which points to the directory containing the external dependencies (see Supporting Libraries). By default, copies of libraries and executables will end up in the directory szg/bin/<OS>, e.g szg/bin/win32; if you want them to go somewhere else, you can set SZGBIN to the path to the desired directory.

On Windows, when setting directories with these environment variables use forward slashes instead of backslashes and do NOT use the cygwin abbreviations "/cygdrive/d" or "/d" for "d:". Otherwise, the shell/compiler combination will misinterpret them. For example, you should use:


The following environment variables are meaningful on all systems:

The following environment variables only have meaning on Windows.

Compiling the Syzygy Libraries

Make sure you have followed the following specific guidelines for your platform (if any):

  1. Unpack szg-1.3.[zip/tar.gz].

  2. You MUST set $SZGHOME appropriately and should optionally set other variables (Syzygy Build Environment Variables).

  3. In szg/build, type "make". Note that "make clean" deletes previously-built libraries. On Windows this must be done from a cygwin or MinGW shell since syzygy uses GNU make (actually, any shell will do provided the appropriate version of make.exe, compiler, linker, and so on are on your application search path as specified by the PATH environment variable. One of us routinely uses IPython as a build shell). On Irix, you MUST use "gmake" instead of "make", since Syzygy uses GNU make syntax.

Potential problems

Generated Files

The make process will build a collection of shared libraries that collectively comprise the Syzygy toolkit (shown here with Linux/Irix extensions, replace '.so' with '.dll' for Windows):

Compiling the Sample Applications in szg

Many example applications are included with the Syzygy code (located in szg/src/demo).

  1. Set SZGHOME, SZGBIN, SZGEXTERNAL, etc. as before.

  2. To build all the samples, in szg/build type "make demo", which will result in the executables being placed either in szg/win/<MACHINE_TYPE> or in the directory pointed to by the SZGBIN environment variable. The "demo" target also rebuilds the libraries (i.e. does the equivalent of "make") if needed. If one sample application fails to build, it continues to the next. You can clean the demo directories with "make demo-clean".

    You can also build demos individually. For example, to build the atlantis demo on Linux, cd szg/build/linux/demo/atlantis; make. As above, for this to work properly, the build environment variables must be set appropriately.

Advanced Makefile Targets

NOTE: Syzygy no longer supports precompiled SDK's.