GBS Logo HELP HOME Generic Build Support (GBS) - User Manual
Introduction Bottom Doc. Button
Release RMC-06.02
(2024-04-29)


- Home
Getting Started
- Quick Start
- Release Notes
- Install Notes
- Create a GBS-WA/System
- FAQ
- Terms and Conditions (The Fine Print)
Basics
- Definitions & Acronyms
- Introduction
- Top Level Directory Structure
- Full Directory Structure
- Handling SubSystems & Steps
- Procedures
- Software Configuration Management Support

Manual Pages
- The Command-Line Interface
- All Commands
- The gbssys... Commands
- Generating Code (Building)
- Libraries & Executables and Testing
- Exporting Deliverables
- Auditing
- Customisations (Session)
- Customisations (User)
- Customisations (Admin)
- Integration with other Tools
- Plugins (Admin)
- Environment Variables (EnvVars)
User Files
- The GLKBT (glk/glb/glt) Files
Internal (.gbs) Files
- GBS Files - General
- audit.gbs
- broadcast.gbs
- build.gbs
- export.gbs
- flags_*.gbs
- subsys.gbs (.bat/.sh)
- incs_*.gbs
- owners.gbs
- sca_*.gbs
- scope.gbs
- site.gbs (.bat/.sh)
- steps.gbs
- switch.gbs (.bat/.sh)
- system.gbs
- tool.gbs
Various
- Development
- About
- Metrics Help

Full Documentation
- All Docs - Printable


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

GBS uses a strict directory structure to facilitate automatic generation (build) and interchange ability between Systems and SubSystems.
Sometimes separate parts of a system may not be able to use GBS (dedicated environment like Visual Studio, old code, etc.), they can however benefit from parts of the concept of Generic Build Support, like the export mechanism which will be described later.

One of the advantages of Generic Build Support is that developers need not worry on how to build the system. Fixed sets of scripts, which work on all parts of the system, take care of this. Because of this, all scripts work in the same way for each component and for each file. This reduces the chance of mistakes considerably. Additionally, because everything is defined, accidental misuse is avoided. GBS gives flexibility where it is really needed. Everything else is fixed.

GBS provides the functionality to generate the directory-structure or parts of the directory-structure, automatically making sure all directories are properly named.
Users should never create directories manually.

Some basic definitions Bottom Doc. Button Top Document Button Down Section Button Blank Down Chapter Button Blank

SubSystem

The basic build unit of GBS is a SubSystem.
SubSystems build autonomously. I.e.: There are never direct references from one SubSystem to another.
At the end of the SubSystem build a SubSystem will have generated one or more deliverables.
These can be executables, header-files, object-libraries, etc.
In GBS you want to minimise the number of SubSystems.
Most systems will require only one SubSystem and that is good!

System

SubSystems are grouped into a System

Component

To be able to handle large amount of files in a SubSystem, files are distributed in containers called Components. Typical population of a Component will be somewhere between 10 to 40 source-files. It is often a good idea to map architectural components on GBS Components.
A GBS Component however, may very well contain more than one architectural component.

An executable usually has the following basic Component-structure:

Simple Component Scope Components COMP1 and COMP2 contain basic functionality.

Component BASE contains common functions and common header-files. (Or at least one header-file containing types common to COMP1 and COMP2 like 'bool', TRUE and FALSE, NULL, etc.)

The TOP Component contains the main.c file and the make-file for the executable.

References are 'downwards' only. There MAY be references between COMP1 and COMP2.

No matter how big an executable may become, it will always contain a 'TOP' Component with references 'down-ward', containing the main.c and the make-file for the executable.
It will also always contain a 'BASE' Component. This is the Component all other Components refer to. (e.g.: dbg-modules, general header-file, etc). It does not refer to other Components.

referring-to in this context means: including header-files, directly calling functions, directly accessing global variables and including of object-files/libraries during linking.

Build / BuildStream

A build-sequence leading to a specific variant of a deliverable is called a BuildStream.
The generic name of the variant is the Build.
In GBS the directory-structure is set up in such a way that multiple BuildStreams generations can run in parallel for a SubSystem.

introduction.html