First, seriously consider whether or not you need to build your own copy of the libraries. The software distributed by the Systems group is available pre-built in /users/c/chaos/, as discussed below.
For those who need it, software source is available directly from the CVS source repository at /users/c/chaos/CVSmaster. Access to this repository is granted only to members of the Unix group "chaos". Generally, you'll only need this if you are doing development on one of the libraries. Otherwise, the publicly available distributions on ftp.cc.gatech.edu. These distributions will not be the absolute latest, but they should represent stable and functional versions. If these don't work for you because you must have the latest and greatest or because you must use software which we don't distribute publicly, consider using the pre-built libraries. If that won't work for some reason, talk to someone involved in the maintenance of the library about becoming a member of the "chaos" group or getting a more up-to-date release in some other way.
Generally, all of our software comes with a configure script. This is a /bin/sh script that examines system-specific characteristics and generates the appropriate Makefile and config.h files for the machine on which your are building. (It caches those characteristics in the file config.cache. Remember to remove that file if you build for a different architecture in the same directory!) Most configure scripts have optional arguments that affect the way the software is configures. Running "configure --help" will print those options.
Many of our projects depend upon other projects. The configure script automatically searches for those projects' libraries and include files so that it can add the correct -I and -L arguments to compile and link lines. It first searches `pwd`/.., then $HOME, then /users/c/chaos and uses the first that it finds. Warning: If you work on several different architectures, having a project built for a different architecture laying around can result in a failed configure or a failed build.
Some of our distributions build differently depending upon what they find or where they find themselves. For example, builds outside of the gatech.edu domain may default to use different servers. Others will build more limited versions of themselves if certain projects are not available. For example, DataExchange will build without derived event channels if dynamic code generation is not found and without threading support if the project gen_threads is not found. Generally this is noted in the output from configure.
Configure can also be affected by various environment variables. For example, configure prefers to use gcc if it is available, but will use the compiler specified by the $CC environment variable if it is set.
SGI supports three different application binary interfaces (ABIs). These are the old 32-bit ABI (-o32), the new 32-bit ABI (-n32) and the 64-bit ABI (-64). Object files for different ABIs cannot be mixed. The newer Irix C and C++ compilers any of the ABIs, depending upon the value of the SGI_ABI environment variable. At the time of this writing, gcc is unable to generate anything except the -o32 ABI and may not work at all on 64-bit machines. The code in /users/c/chaos has been compiled with cc and CC. The architecture specific directories are irix6, irix6-n32 and irix6-64, for the -o32, -n32 and -64 ABIs, respectively.
Sun recently added support for a 64-bit ABI in the SunSoft C compiler under Solaris 7. 64-bit programs can only run on machines running the 64-bit kernel. Unfortunately, many Solaris 7 machines are not running this. The command isainfo will print out sparcv9 as well as sparc if the machine has a 64-bit kernel. To get the SunSoft C compiler to generate 64-bit binaries you must use the flag -xarch=v9 to a newer compiler (such as is in /opt/SUNWspro6.1/bin). gcc has no 64-bit support at this time. The code in /users/c/chaos has been compiled with the SunSoft compilers.
WinNT is a troublesome platform for us for a variety of reasons. In particular, we want to build all our software from the same source tree, but the configure scripts we use to configure our software for various Unix platforms don't run easily or cleanly on NT. For performance reasons, we have chosen to avoid the Cygnus tools and libraries and instead ported all packages to raw NT and the Visual C++ compiler. However, we do not maintain VC++ project files for the libraries because it would be hard to keep them consistent with the Unix versions.
To get around the configuration problem, we use the MKS toolkit. This gives us a ksh-like shell and other useful tools like sed, make and awk. MKS ksh is close enough to Unix that a sed script can translate the normal configure script to a configure.nt that will run on NT. So, the normal build pattern is to run configure.nt and then do make. However, there are a few gotcha's. Configure won't find a C compiler or various other tools unless you tell it where to get them. The following environment variables may be helpful:
export CC="cl -nologo" export CXX="cl -nologo" export SHELL=sh export TMPDIR=C:/temp export MVPROG=cp export YACC="bison -y" export BISON_SIMPLE="s:/Apps/gnu/lib/bison.simple" export BISON_HAIRY="s:/Apps/gnu/lib/bison.hairy" export LEX="flex -Ss:/apps/gnu/lib/flex.skel"Additionally, you'll need to configure your PATH to point to the VC++ bin directory, the S:/apps/gnu/bin directory and maybe more. Try looking at ~eisen/.profile.mks.ksh
If you don't have MKS, we do distribute makefile.nt's and config.nt's. These hold copies of what is generated for each makefile and config.h when we run configure.nt on our systems. They might have to be heavily edited to work for you, and the generated makefile may still reference things like sed, flex and bison, that you may not have. But we distribute makefile.nt and config.nt in the vain hope that they might be useful to someone.
If building from scratch seems too difficult, you are welcome to use pre-built libraries in /users/e/eisen/winnt/{include,lib,bin}. However, you should be aware that if you compiler options don't match what I used, then you'll probably have to build from scratch. These things are probably compiled with /MT (for multi-threading) but without debugging. If Win NT had a user-level cron command I'd build nightly. But it doesn't, so I build occasionally when I think of it.