bin/ and lib/ directories are
created at compile time as are bin/ and lib/ directories
in all the subdirectories. bin/ and lib/ directories
contain executables and libraries respectively. There's a little
more to the bin/ and lib/ directories which is described
more fully below in the section on ARCH-OS.
The docs Subdirectory
This subdirectory contains MITRE-produced
documentation on the distribution, the core libraries, and the Hub.
The src Subdirectory
This subdirectory contains the sources for
the core of the Communicator distribution.
HUB/
C code for the Hub itself. The Hub
acts as an intelligent router whose behavior can be controlled by a script.
libGalaxy/ C code for the core Communicator support
library, including frame processing, HUB-server communication, printing,
command line argument parsing, and the default server wrapper.
The MITRE
Subdirectory
The MITRE subdirectory includes examples of
Communicator functionality and utilities which use the Communicator libraries
in illustrative ways. MITRE also provides a set of programming language
bindings (for Python, Java, and Allegro Common Lisp), servers (DB, UI,
frame transducer), and tools (process monitor, tools for parsing MIT log
files, scripts for running MIT servers). See the main
index for a comprehensive list of these resources.
The
Galaxy Subdirectory
Here's an overview of the directories under galaxy/src/.
verify_program/,
verify_dctl_file/
Hub script and dialogue control file verifiers.
libGalaxyEnhancements/
MIT enhancements to the Communicator core,
including turn management.
libGalaxyHubControl/
MIT Hub scripting module (used by the
Hub by default)
Templates
The templates/ subdirectory contains
configuration and support files which are included in the various Makefiles.
Essentially that's where we consolidate stuff which is common to all the
Makefiles.
ARCH-OS Support
The only thing to note is that the Makefiles
will put things under subdirectories of the form $ARCH-OS (e.g. sparc-sunos,
sparc-solaris). The bin/ directory also contains a csh script called
fat_binary,
which determines the correct executable to exec. For example, making an
executable named a.out will create a symbolic link in bin/
to fat_binary (i.e. bin/a.out -> bin/fat_binary).
fat_binary
determines the $ARCH-OS of the machine it's running on, looks at the name
by which it was called, and invokes the correct executable.