GBS Logo HOME Generic Build Support (GBS) - User Manual
Full Directory Structure Bottom Doc. Button

Description Bottom Doc. Button Top Document Button Down Section Button Blank

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 Bottom Doc. Button Top Document Button Down Section Button Blank Down Chapter Button Blank

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 Bottom Doc. Button Top Document Button Down Section Button Blank Down Chapter Button Up Chapter Button

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, sysbuild, 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 sysbuild, sysaudit and systools
e.g.: steps.gbs

The 'sysbuild' directory

GBS_ROOT_PATH/sysbuild
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 Bottom Doc. Button Top Document Button Down Section Button Blank Down Chapter Button Up Chapter Button

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.
The directories audit, export, build and tools are mandatory for all types of SubSystems.
The directory comp is mandatory for Full-GBS SubSystems.
The directory app is mandatory for Non-Full-GBS SubSystems.
The following names are reserved for all SubSystems: import, gbs*.* and *.gbs.

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 'build' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/build
GBS_ROOT_PATH/dev/GBS_SUBSYS/build/GBS_TARGET
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.
These include: 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
GBS_ROOT_PATH/dev/GBS_SUBSYS/audit/GBS_AUDIT/GBS_TARGET
This directory contains information for the Auditing of the SubSystem.
For each Audit & Target combination that this SubSystem generates a sub-directory of the Audit-name/Target-name is required. Else this SubSystem will not audit for that particular Audit & Target combination.
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 'comp' directory

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

The 'app' directory

GBS_ROOT_PATH/dev/GBS_SUBSYS/app
Non-Full GBS only.
This directory contains the top of the Non-GBS projects/applications directories. The name is reserved and is used only for Non-Full GBS SubSystems.

The Component directories (Full GBS only) Bottom Doc. Button Top Document Button Down Section Button Blank Down Chapter Button Up Chapter Button

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 'aud' sub-directory with Autit/Target-directories

GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/aud
GBS_ROOT_PATH/dev/GBS_SUBSYS/comp/GBS_COMPONENT/aud/GBS_AUDIT/GBS_TARGET

The 'aud' directory acts a placeholder for the Audit-directories.

The Audit/Target-directories contain the resulting files of Audits triggered by files in the 'src' directory.
This means that these directories will contain any derived files.
Rules for Audit/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.