Use of GNU Make;
Teem uses a system of GNU makefiles in order to build the software. The actions of "make" depends on where its invoked in the tree, what environment variables set, and of course, what targets are specified. This system has evolved over the years to match my pattern of development, which includes working simultaneously on different platforms which share a file system. This page aims to describe the functioning of GNU make with teem, starting with the useful and ending with the obscure. Referring to information about the directory structure may be useful.
Some terminology. Teem is made of a number of libraries, such as nrrd. One result of compiling a library is the creation of some files such as libnrrd.a and libnrrd.so. To distinguish between the nrrd "library" in general, and these lib files, I call the lib files "libs". Teem also comes with some simple command-line programs which demonstrate and use the libraries, I call these "bins". Many of the libraries have associated testing programs, compiled from sources in the test subdirectory of each library. These programs are called "tests".
Here is an overview of the different ways that you can invoke make, and how it will behave according to where you're starting it from.
The makefiles are:
|TEEM_ARCH||The architecture you're compiling with and for. This is the only environment variable which MUST be set in order to build libraries in teem. Currently supported are "irix6.n32", "irix6.64", "linux", and "solaris".|
|TEEM_LINK_SHARED||If set to the string "true" then binaries, when linked, will be linked with shared libraries, and not static libraries. If not set, we link against static libraries, in order to produce stand-alone binaries (or as stand-alone as the system allows).|
|TEEM_PURIFY||If set to "true", run purify on all compiles and links. The architecture-specific makefile must define PURIFY.|