| | | | Browse by category |
I'm confused by the different codes Rogue Wave uses to designate different types of builds. How do the codes indicate whether or not I'm using a standard library, using a single-threaded or multithreaded build, or building a debug or release version of my application?
Cause
Rogue Wave build codes require some explanation.
Action
SPM and RCB Build Configuration Tables
Software Parts Manager (SPM) Build Codes
SPM uses numeric codes with letter suffixes, such as "7s," to designate different types of builds. Once you understand these codes, you can tell at a glance whether a particular build:
- Requires/supports a standard library
- Is single-threaded or multithreaded
- Is a debug or release version
- Employs static or dynamic binding
SPM build codes are based on the following patterns:
- Numeric codes range from 0 through 15.
- Lower-numbered builds (0 through 7) use no standard library, while higher-numbered builds (8 through 15) do. (The system doesn't indicate whether a build uses the Rogue Wave Standard C++ Library, or the native standard library that shipped with your compiler.)
- Single-threaded builds are 0, 3, 8, and 11, while multithreaded builds are 4, 7, 12, and 15.
- Debug builds are odd-numbered, while release builds are even-numbered.
- Static builds end with the letter s, while dynamic (or shared) builds end with d.
These codes are summarized in the following table.
Software Parts Manager (SPM) Build Codes | ||||||
Build Code | Std Lib | Multithreaded | Debug | Static | ||
0d | No | No | No | No | ||
0s | No | No | No | Yes | ||
3d | No | No | Yes | No | ||
3s | No | No | Yes | Yes | ||
4d | No | Yes | No | No | ||
4s | No | Yes | No | Yes | ||
7d | No | Yes | Yes | No | ||
7s | No | Yes | Yes | Yes | ||
8d | Yes | No | No | No | ||
8s | Yes | No | No | Yes | ||
11d | Yes | No | Yes | No | ||
11s | Yes | No | Yes | Yes | ||
12d | Yes | Yes | No | No | ||
12s | Yes | Yes | No | Yes | ||
15d | Yes | Yes | Yes | No | ||
15s | Yes | Yes | Yes | Yes |
Rogue Wave Component Builder (RCB) Build Tags
When you use RCB, you can choose either the numeric SPM coding scheme described above, or the RCB coding scheme, which uses a combination of letters to form a descriptive tag. We believe the RCB tags are more intuitive and informative than the SPM numeric code.
In the RCB coding scheme, the letters define builds as follows:
- x - Uses no standard library
- r - Uses the Rogue Wave Standard C++ Library
- q - Uses some other standard library--not the Rogue Wave or the native versions
- (No code) - Uses the native standard library that shipped with the compiler
- m - Multithreaded
- (No code) - Single-threaded
- s - Static binding
- (No code) - Shared (or dynamic) binding
- d - Debug version
- (No code) - Release version
As you can see, the RCB tags provide expanded information about which standard library is associated with a particular build: no standard library, the Rogue Wave Standard C++ Library, the compiler's "native" standard library, or some "other" standard library. (Rogue Wave does not support "other" configurations at this time).
Another important difference in the RCB coding scheme is that the absence of a letter is significant. For example, the letter d designates a debug build, and the absence of a letter designates a release build. (Please note a possible source of confusion: under the SPM coding scheme, the letter d stands for dynamic binding.)
As the table below illustrates, not all tags have the same number of letters. In fact, one configuration--a single-threaded, dynamic, release build using a native standard library--has no tag at all. With this particular configuration, you must provide a user tag. (Versions of RCB after 1.0.1 prompt you to supply a user tag; version 1.0.1 exits with a stack trace upon detecting an empty build tag.)
The table below shows the RCB coding scheme, along with the corresponding SPM code.
Rogue Wave Component Builder (RCB) Build Tags | ||||||
SPM Build Code | RCB Tag | Std Lib | Multithreaded | Debug | Static | Verbose RCB Tag |
0d | x | None | No | No | No | _NoStdLib_NoThrLib_Dynamic_Release |
0s | xs | None | No | No | Yes | _NoStdLib_NoThrLib_Static_Release |
3d | xd | None | No | Yes | No | _NoStdLib_NoThrLib_Dynamic_Debug |
3s | xsd | None | No | Yes | Yes | _NoStdLib_NoThrLib_Static_Debug |
4d | xm | None | Yes | No | No | _NoStdLib_Win32ThrLib_Dynamic_Release |
4s | xms | None | Yes | No | Yes | _NoStdLib_PosixThrLib_Static_Release |
7d | xmd | None | Yes | Yes | No | _NoStdLib_Win32ThrLib_Dynamic_Debug |
7s | xmsd | None | Yes | Yes | Yes | _NoStdLib_PosixThrLib_Static_Debug |
8d | r | Rogue Wave | No | No | No | _RogueWaveStdLib_NoThrLib_Dynamic_Release |
8s | rs | Rogue Wave | No | No | Yes | _RogueWaveStdLib_NoThrLib_Static_Release |
11d | rd | Rogue Wave | No | Yes | No | _RogueWaveStdLib_NoThrLib_Dynamic_Debug |
11s | rsd | Rogue Wave | No | Yes | Yes | _RogueWaveStdLib_NoThrLib_Static_Debug |
12d | rm | Rogue Wave | Yes | No | No | _RogueWaveStdLib_Win32ThrLib_Dynamic_Release |
12s | rms | Rogue Wave | Yes | No | Yes | _RogueWaveStdLib_PosixThrLib_Static_Release |
15d | rmd | Rogue Wave | Yes | Yes | No | _RogueWaveStdLib_Win32ThrLib_Dynamic_Debug |
15s | rmsd | Rogue Wave | Yes | Yes | Yes | _RogueWaveStdLib_PosixThrLib_Static_Debug |
8d | (See note 3 below) | Native | No | No | No | _NativeStdLib_NoThrLib_Dynamic_Release |
8s | s | Native | No | No | Yes | _NativeStdLib_NoThrLib_Static_Release |
11d | d | Native | No | Yes | No | _NativeStdLib_NoThrLib_Dynamic_Debug |
11s | sd | Native | No | Yes | Yes | _NativeStdLib_NoThrLib_Static_Debug |
12d | m | Native | Yes | No | No | _NativeStdLib_PosixThrLib_Dynamic_Release |
12s | ms | Native | Yes | No | Yes | _NativeStdLib_SolarisThrLib_Static_Release |
15d | md | Native | Yes | Yes | No | _NativeStdLib_PosixThrLib_Dynamic_Debug |
15s | msd | Native | Yes | Yes | Yes | _NativeStdLib_SolarisThrLib_Static_Debug |
8d | q | Other | No | No | No | _OtherStandardLib_NoThrLib_Dynamic_Release |
8s | qs | Other | No | No | Yes | _OtherStandardLib_NoThrLib_Static_Release |
11d | qd | Other | No | Yes | No | _OtherStandardLib_NoThrLib_Dynamic_Debug |
11s | qsd | Other | No | Yes | Yes | _OtherStandardLib_NoThrLib_Static_Debug |
12d | qm | Other | Yes | No | No | _OtherStandardLib_PosixThrLib_Dynamic_Release |
12s | qms | Other | Yes | No | Yes | _OtherStandardLib_PosixThrLib_Static_Release |
15d | qmd | Other | Yes | Yes | No | _OtherStandardLib_PosixThrLib_Dynamic_Debug |
15s | qmsd | Other | Yes | Yes | Yes | _OtherStandardLib_PosixThrLib_Static_Debug |
General notes:
1. | This is a table that decodes the build codes, not a support matrix. Not all of the build combinations shown are supported by all vendors. For example, Microsoft doesn't support shared (dynamic) single-threaded builds, such as 0d, 3d, 8d, or 11d; Rogue Wave doesn't support non-standard library builds on HPUX; with the SunPro 5.x compiler, only the native standard library that ships with the compiler is supported (Exception: using Compatibility Mode). |
2. | Not all possible combinations of standard libraries and threading libraries are illustrated. The threading libraries shown represent only some of the combinations that Rogue Wave supports. |
3. | The native standard library build configuration designated as "8d" under the SPM coding scheme has no tag under the RCB coding scheme. You must supply a user tag with this build configuration if you choose to use the RCB coding scheme. |
4. | Rogue Wave doesn't support builds using "other" standard libraries. These builds are included in the table only for completeness. |