Understanding Rogue Wave Build Codes

Article ID: 1134
Last updated: 31 Jan, 2008
Article ID: 1134
Last updated: 31 Jan, 2008
Revision: 1
Views: 4998
Posted: 25 Jun, 2001
by Dean J.
Updated: 31 Jan, 2008
by Dean J.
Problem


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.


This article was:   Helpful | Not helpful
Report an issue
Article ID: 1134
Last updated: 31 Jan, 2008
Revision: 1
Views: 4998
Posted: 25 Jun, 2001 by Dean J.
Updated: 31 Jan, 2008 by Dean J.
Also listed in


Others in this category