Targets

This section describes all the targets related to building VR Juggler from its source code. The targets are grouped together depending upon how they are related. For information on what is actually done as part of the compiling process, see the section called “Process of Building (Individual Steps)”. A current list of all the targets (with descriptions) can be found at the top of Makefile.in in the top-level VR Juggler source directory.

world

Clean up the build environment and then build and install everything using the default ABI and ISA. This is a simple target for those who just want to build and install VR Juggler as simply as possible. “Everything” in this case is the following:

  • Debugging, optimized, and profiled versions of the library binaries

  • Shared and static versions of the library binaries (if both are supported on the target platform)

  • Header files

  • Sample applications, test code, and user tools

  • Data files (sample config files, model files, etc.)

  • VRJConfig (if it was built)

world-all-abi

This is the same as the 'world' target except that it builds and installs all possible ABI and ISA combinations for the target platform. On IRIX, for example, this means that all combinations of N32, 64, mips3, and mips4 (debugging and optimized versions) are built and installed. Most platforms currently support only one ABI/ISA combination thus making this target the same as 'world'.

release

This target is similar to 'world' except that the installation tree is suitable for redistribution. Extra files such as the change logs, the release notes, and the license files are installed. In addition, the tree is stamped with a build time to help track possible differences between two releases of the same version. (This has only occurred for one VR Juggler beta release, but it seems like a good idea to have the build time included with a distribution.)

release-all-abi

This is the same as the 'release' target except that it builds and installs all possible ABI and ISA combinations for the target platform. On IRIX, for example, this means that all combinations of N32, 64, mips3, and mips4 (debugging and optimized versions) are built and installed. Most platforms currently support only one ABI/ISA combination thus making this target the same as 'release'.

buildworld

This target is the same as 'all'. In other words, it builds everything. It executes the first phase of the 'world' target (i.e., only the build phase, not the install phase). Since it builds both debugging and optimized versions of VR Juggler without installing, it is useful for testing changes to the library code to ensure that it works in both the debugging and optimized cases.

all-abi

In the same manner as 'world-all-abi', this target builds, but does not install, all possible ABI/ISA combinations for the target platform. Thus, it provides functionality that could also be called 'buildworld-all-abi', but the length of such a target's name is unwieldy.

debug

Build only the debugging version of the library binaries (both static and dynamic). In other words, the libraries are built so that debugging symbols are turned on. It is the combination of 'dbg' and 'dbg-dso' (see below). This is the default target and is what gets built if running make(1) with no arguments.

optim

Build only the optimized version of the library binaries (both static and dynamic). This is built with no debugging symbols at all. It is the combination of 'opt' and 'opt-dso'.

profiled

Build only the profiled version of the library binaries (both static and dynamic). This capability is dependent on the compiler being used. Not all compilers support the process of generating profiled code, so this target may have no effect. Profiled libares are built with debugging symbols. This target is the combination of 'prof' and 'prof-dso'.

dbg

Build only the static debugging version of the libraries. This does the same thing as 'debug' but does not compile the dynamic libraries.

dbg-dso

Build only the dynamic debugging version of the libraries. This does the same thing as 'debug' but does not compile the static libraries.

opt

Build only the static optimized version of the libraries. This does the same thing as 'optim' but does not compile the dynamic libraries.

opt-dso

Build only the dynamic optimized version of the libraries. This does the same thing as 'optim' but does not compile the static libraries.

prof

Build only the static profiled version of the libraries. This does the same thing as 'profiled' but does not compile the dynamic libraries.

prof-dso

Build only the dynamic profiled version of the libraries. This does the same thing as 'profiled' but does not compile the static libraries.

vrjconfig

Compile the VRJConfig Java files and collect them into VRJConfig.jar. This is only done if the configure script found a working Java compiler during its phase of the compile process.

links

Set up the developer pseudo-installation environment. More detail is given on this subject below in the section called “Developer Installation”.

clean

Clean up everything in the build environment. This uses the 'clean' target defined by Doozer++ that is automatically included by all makefiles. The cleaning process is recursive just as the build process is. Each makefile may define which files are safe for cleaning, but generally core files, compiler-generated files, and object files are the only things removed during this process.

cleandepend

Clean up the automatically generated dependency files (the .d files in each directory). This method for cleaning up deletes only these files and nothing else--ever.

clean-links

Remove the developer pseudo-installation environment. More detail is given on this subject in the section called “Developer Installation”.

clobber

Clean up (clobber) the entire build environment except what was generated by configure. This runs the above clean-up targets and removes the object directory(ies) and lib directory(ies). Its purpose is to reset the build environment to its state just prior to running configure.

info

Print out all the targets with short descriptions as well as default values for some variables that may be overridden by the user. For more information about variables in the Juggler makefiles, see the section called “Useful Variables”.

Build targets executed from the top-level directory generate the object files in a directory tree created during compilation named as obj/platform/ABI/ISA/opt|debug. It is always a subdirectory of the top-level directory in the build environment. The path to this directory is passed as an argument to the recursive make process overriding the $(OBJDIR) variable.

Similarly, a subtree is made for the library binaries. It is named as lib/ISA/opt|debug (or lib32/... or lib64/... depending on the platform and the ABI). Since the library binaries are built only by the Makefile in the top-level directory, it is only used by builds from that directory.

Targets such as 'dbg', 'opt' and 'clean' are available for use in the individual subdirectories. Building a target from within a subdirectory is localized to that subdirectory. Thus, all object files would be generated in the directory where the target was run rather than in the obj subdirectory. For example, the following process would build only the object files in the Config directory:

% cd Config
% gmake opt

Those object files can be removed by running the 'clean' target in that directory.