Boost.Build - sunpro toolset

###  | # Boost.Build ## sunpro toolset

## Introduction

Boost.Build's `sunpro` toolset supports the Sun ONE Studio compiler. This compiler has been known under several trade names including Sun WorkShop and Forte Developer. For convenience, this document will refer to numbered releases of the compiler when differention is neccessary; this release number can be obtained by running `CC ‑V` at the command line.

## Compatibility

As of this writing (November 2003) the Sun C++ compiler has difficulty building many of the libraries included with Boost. Complete regression test information is available, although absent from the regression tables are some libraries that Sun C++ has particular difficulty with, including `mpl` and `spirit`.

### Notes on specific versions

Best results can be obtained by being up-to-date on the most recent patches for your compiler version. Information on patches is available from Sun Microsystems.

Compiler Version | Trade Name(s) | Notes
--- | --- | ---
<= 5.2 | Sun WorkShop 5 Sun WorkShop 6 Sun WorkShop 6 update 1 | No current information available. Boost is unlikely to be very functional with these older releases, as they do not support some of the necessary parts of the C++ language. Patches and workarounds are welcome.
5.3 | Sun WorkShop 6 update 2 | The most recent reports seem to imply that this release is “hopeless for Boost”, but patches and workarounds are welcome.
5.4 | Forte Developer 7 | This version recognizes an undocumented, unsupported flag that improves its success in compiling templates: `‑Qoption CC ‑xcomdat` This flag changes the template instantiation method from “exported” to an improved “global” which has been found to eliminate some compiler bugs regarding the instantiation of template run-time type information. This option, if used, is required for both compiling and linking.
5.5 | Sun ONE Studio 8 | No current information is available. This version changes the default template instantiation method from “exported” (using a template repository) to “global” (storing instances in object files with global linkage). The linker should then automatically detect and eliminate duplicate definitions. This change should improve template performace over previous releases.

## Configuration Variables

The sunpro toolset responds to the following variables which can be set in the environment or configured on the bjam command line using `‑sVARIABLE_NAME=`value:

Variable Name | Semantics | Default | Notes
--- | --- | --- | ---
`SUNPRO_ROOT_DIRECTORY` | Path to installation directory of compiler tools. | (none) | Usually there is no need to set this variable at all. However, if `CC` is not in the path is is usually sufficient to configure this one variable. A typical value for this variable is `/opt/SUNWspro`.
`SUNPRO_BIN_DIRECTORY` | Path to bin directory. | `$(SUNPRO_ROOT_DIRECTORY)/bin/` |
`SUNPRO_CXX` | The name by which the C++ compiler is invoked | `$(SUNPRO_BIN_DIRECTORY)CC` | You can also use this in lieu of setting the <cxxflags> property to force options such as `‑Qoption CC ‑xcomdat` into the CC command line: `“‑sSUNPRO_CXX=CC ‑Qoption CC ‑xcomdat”`.
`SUNPRO_CC` | The name by which the C compiler is invoked | `$(SUNPRO_BIN_DIRECTORY)cc` |

Revised 03 Nov, 2003

Christopher Currie, Gennadiy Rozental, Jens Maurer