Conventions for Implementation Subdirectories

Conventions for Implementation Subdirectories


Under a projects implementation directory there is a separate subdirectory for each different platform on which a project will be compiled. A platform is defined by three characteristics:

  1. a binary executable format for a particular type of hardware/OS
  2. a system library path configuration
  3. a project library selection
One or more machines that have the same values for all of these characteristics constitute a "platform", with a specific implementation subdirectory.

Based on the three platform characteristics, implementation subdirectories have a three-part name:

  1. hardware/os name, typically that of a vendor, such as SUN4 or HP700; without any additional suffixing, the standard operating system is assumed, e.g., Solaris and HP/UX for SUN4 and HP700, respectively; if a non-standard OS is used, then an appropriate suffix is added, as in SUN4-linux.
  2. hostname, hostname abbreviation, or some other suitable mnemonic that designates a particular system library configuration; e.g., at Cal Poly we use "G" to designate a cluster of SUN4s named galaxy, phoenix, falcon, and hornet that are all configured the same librarywise; the hostname abbreviation can be omitted if there is only a single host of the given hardware type.
  3. project library selection, which is one of "production", "beta", "alpha", "work" or "work-work"; the last of these is for an individual's work directory, in cases where someone is working on some part of a support library that needs to be tested in an individual directory before being release to projects/work; if the project library suffix is omitted from the name, the project is assumed to build with the highest level project library currently released
For example, the following is the name for a SUN4 machine, in the galaxy cluster of like-configured machines, using the work level of project directories:

The subdirectory name "SUN4", with no suffixes, designates an implementation subdirectory in which a project is built for a commonly configured SUN4 platform, with the highest released library level for all project libraries used in the build.