(Configuration Management Tool).
Packages "use" each other, explicitly,
in much the same manner that modules use each other
in object-oriented programming.
Each package contains one or more "constituents", as described below.
Constituents
An FSW "constituent" is a closely-related set of source-code files
(e.g., foo.c, foo.h),
producing a closely-related set of product files.
For example, a communications package could contain a
"transmit" constituent and a "receive" constituent.
Each constituent can access common code
that is also maintained in the package.
Versions
Each FSW package may be present in one or more "versions".
The "dev" (development) version is used by the package developer(s)
as a way of presenting "pre-release" software to other developers.
There will also, in general, be a "current" production version,
which is deemed safe for use in developing other software.
On the Package pages
(e.g., CCSDS),
any links (e.g., Doxygen, LTX) for the current production version
are emboldened.
Tags
The FSW build system supports several "tags",
each of which specifies a set of build parameters:
- sun-gcc (build for Solaris "host" system, using GCC)
- linux-gcc (build for Linux "host" system, using GCC)
The sun-gcc and linux-gcc tags are used for software
which will be run on Sparc/Solaris and Intel/Linux platforms,
respectively.
- mv2303 (build for mv2303 SBC, running VxWorks)
- mv2304 (build for mv2304 SBC, running VxWorks)
The mv2303 and mv2304 are VME-based single-board computers (SBCs),
designed for use in embedded systems.
They employ the PPC603 and PPC604 CPUs, respectively.
- mcp750 (build for mcp750 SBC, running VxWorks)
- rad750 (build for rad750 SBC, running VxWorks)
The mcp750 and rad750 are cPCI-based SBCs,
designed for use in embedded systems.
They both employ the PPC750 CPU,
but the rad750 has been hardened against radiation.
- i845e (build for i845e SBC, running VxWorks)
The i845e is a PCI-based motherboard for the Pentium IV.
The FSW uses these for simulation, etc.
Types
For "host" systems (e.g., linux-gcc, sun-gcc),
the FSW build system supports two types of output binary files:
- "exe" (executable programs)
- "shr" (shared libraries)
For "embedded" systems (e.g., all SBCs, the i845e)
the FSW build system supports two types of output binary files:
- "bsp" (absolutely-linked objects)
- "shr" (relocatable objects)
Path Names
In order to fit the build matrix into the file system's tree structure,
some decisions had to be made.
Specifically, certain "indices" had to be made subsidiary to others.
Also, the source tree needed to be arranged differently
than the binary tree.
It's possible that other sites may make different decisions,
but here is how things are arrranged at SLAC:
/afs/slac.stanford.edu/g/glast/flight/
$project/source/$package/$version/
src/*.{c,cidc,cidh,h,ih,msg,...}
/afs/slac.stanford.edu/g/glast/flight/
$project/binary/$package/$version/
$tag/$constituent/*.{d,o,ro,so,...}
For more information, see
The FSW File Tree.