Get Teem at Fast, secure and Free Open Source software downloads
to teem

Use of GNU Make;
Build Details



(This information is irrelevant for non-Cygwin Windows users)

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 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:

Environment variables: The environment variables specific to teem all start with TEEM_. Currently, their only role is to control how "make" runs to build things. These are the variables which have a global effect on how all teem libraries are built. More specific information about the system of Makefiles can be found here.
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.