GBS Logo Generic Build Support (GBS) - User Manual HOME
Full Directory Structure
The following diagram gives an overview of the Full-GBS directory structure.
Reserved (fixed) directory names are specified in bold.

Full-GBS Complient Directory Overview

Directory creation

Please note that GBS maintains it's own directory structure, assuring consistency.
Never create GBS directories yourself. Let the GBS commands take care of that.

The System (Root) directory

GBS_ROOT_PATH
This is the root of the whole directory structure. It contains all that is necessary to build a multi-SubSystem system.
Nine directories are mandatory for GBS: res, dev, ext, sys, sysgen, sysaudit, systools, silo and tmp.
More directories may be added. E.g. doc for documentation, etc.

The 'res' directory

GBS_ROOT_PATH/res
The functionality of this directory is explained in Top Level Directory Structure → res.
It is used to control the exchange of deliverables between SubSystems.

The 'dev' directory

GBS_ROOT_PATH/dev
This directory contains all and only SubSystems.

The 'ext' directory

GBS_ROOT_PATH/ext
This directory contains the directories of all 3-rd party software that is to be used by all or most of the SubSystems.

The 'silo' directory

GBS_ROOT_PATH/silo
Here data is stored that is generated outside the Component structure and should be kept. E.g. doxygen output. Each Tool has its own directory.
The command gbssilo will display any content in HTML format in a browser

The 'sys' directory

GBS_ROOT_PATH/sys
This directory contains all common items (scripts, tables, etc) for sysgen, sysaudit and systools
e.g.: steps.gbs

The 'sysgen' directory

GBS_ROOT_PATH/sysgen
This directory contains all items (scripts, tables, etc) for Generation (building)
e.g.: gcc, mingw, etc

The 'sysaudit' directory

GBS_ROOT_PATH/sysaudit
This directory contains all items (scripts, tables, etc) for Auditing (SCA)
e.g.: qac, qac++, pclint, etc

The 'systools' directory

GBS_ROOT_PATH/systools
This directory contains all items (scripts, tables, etc) for additional Tooling (e.g. doxygen)

The 'tmp' directory

GBS_ROOT_PATH/tmp
Here GBS places its temporary files.
It is always safe to cleanup this directory when no generations are running.
There is an entry in gbsmaint that will do that.
When something goes wrong GBS will not delete its tmp files, so you should cleanup this directory on a regular basis.

The SubSystem directory

GBS_ROOT_PATH/dev/GBS_SUBSYS
This is the top of a basic generation-unit.
The SubSystem directory may have any number of Sub-Directories and files.
One directory export is mandatory.
The following names are reserved for Full-GBS SubSystems: import, comp, gen, gbs*.* and *.gbs.
Reserved directory names are: tools for SubSystems specific tools and scripts, doc for SubSystem documentation

The 'export' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/export
GBS_ROOT_PATH/dev/GBS_SUBSYS/export/GBS_TARGET

After the build of the SubSystem, this directory will contain the files and directories that are the end-deliverables of this SubSystem.
Items in the export directory are always generated/copied items, so they can be deleted at any time.

The 'import' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/import
This directory contains directories that hold deliverables from outside the System.
This is usually 3-rd party software only used by this SubSystem.
It is used rarely.

The 'comp' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp
This directory contains the Component directories. The name is reserved.
The only directories it contains are the Component directories that are to be recognised as under control of GBS.

The 'gen' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/gen
This directory contains information for the generation of the SubSystem.
For each TargetStream that this SubSystem generates a sub-directory of the Target-name is required. Else this SubSystem will not generate for that particular TargetStream.
These directories may contain a number of files that give information on SubSystem level:
All files and directories in these directories reside under the responsibility of the GBS Administrator in co-ordination with the architect(s) responsible for the SubSystem. They are the only ones allowed to modify these files.

The 'audit' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/audit
This directory contains information for the Auditing of the SubSystem.
For each Audit that this SubSystem generates a sub-directory of the Audit-name is required. Else this SubSystem will not audit for that particular Audit.
All files and directories in these directories reside under the responsibility of the GBS Administrator in co-ordination with the architect(s) responsible for the SubSystem. They are the only ones allowed to modify these files.

The 'tools' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/tools
This directory contains information for the Step-Command execution.
For each Step-Command Tool that this SubSystem runs a sub-directory of the Tool-name is required. Else that particular Step-Command Tool will not run for this SubSystem.
All files and directories in these directories reside under the responsibility of the GBS Administrator in co-ordination with the architect(s) responsible for the SubSystem. They are the only ones allowed to modify these files.

The Component directories

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT
These directories contain the Component-Subdirectories. No other directories than the Sub-Directories specified below are allowed here.
As far as GBS is concerned, Component names are free, except for ALL, EXPORT and RES.
The project however, will impose rules on names here.
You can have as many Components as you wish.
They also contain a number of files that give information on Component level:
Please bear in mind that a GBS Component is not necessarily an architectural Component.

The 'src' sub-directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/src
It contains all files that will lead to the generation of corresponding files in a 'bld' Target-directory.
Files in this directory form the basis of the generation process. This means that the presence of a file in the src directory indicates that a step of the build-process must be executed with that file as main input.
As a result of this all files that have to be compiled (or processed) must reside in this directory. If a file is not placed in this directory it will not be a part of the build process (compiled).
Note that header-files are not compiled. They are included.
Rules:

The 'inc' sub-directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/inc
It contains the files that are needed in the generation process but do not belong in the 'src' directory because their presence does not lead to the invocation of a processor (compiler, linker) in the build-process (and do not lead to a file with the same name in the 'bld' Sub-Directories).
Files in this directory will be accessible from other Components. (#include)
This means that all 'included' files like global header-files or API header-files must be placed in this directory.
Rules:

The 'loc' sub-directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/loc
It contains the files that are needed in the generation process but do not belong in the 'src' directory because their presence does not lead to the invocation of a processor (compiler, linker) in the build-process (and do not lead to a file with the same name in the 'bld' Sub-Directories).
Files in this directory will not be accessible from other Components
This means that all 'included' files like local header-files must be placed in this directory.
Rules:

The 'bld' sub-directory with Target-directories

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/bld
GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/bld/GBS_TARGET

The 'bld' directory acts a placeholder for the Target-directories.
It also contains the make-files generated by GBS.

The Target-directories contain the resulting files of generations triggered by files in the 'src' directory.
This means that these directories will contain object-files, libraries, executables, pre-compiled header-files, etc.
Like object-files, executables and libraries need a 'source'-file in the 'src' directory.
Rules for Target-directories:

The 'opt' sub-directory with optional Target-directories

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/opt
GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/opt/GBS_TARGET

This directory contains information for the generation of the Component.
For each TargetStream that this Component generates a sub-directory of the Target-name can be present to specify exceptions. These directories contain a number of files that give information on Component level:

The 'dat' sub-directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/dat
It contains all other (developer) files that do not fit in any of the Sub-directories mentioned before.
Examples are:

The 'sav' sub-directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/sav
Contains files that in no way perform a role in the build process, but still have to be kept (saved).
This is the place to keep obsolete files like test-files that are not maintained anymore.