Skip to content
Raphael Dumusc edited this page Apr 28, 2015 · 13 revisions

Overview of the current build system

How the git subproject works

The CMake configure step performs the following actions:

  1. It clones CMake/common from https://github.com/Eyescale/CMake.git. This is defined in the .gitexternals file in the project root, which is processed by GitExternals.cmake in the CMake directory. These files are present inside each of the BBP projects. The reason for this step is to have a set of common CMake files with the same base functionnalities for all projects. This step is not optional.
  2. .gitsubprojects is parsed by SubProject.cmake, which comes from the newly cloned CMake/common. For each entry in this file, it first tries to locate the package in system locations. If the package can't be found, it clones the project using the specified url and SHA1. The whole subproject functionality can be disabled by passing:
 -DDISABLE_SUBPROJECTS=1

to cmake. All subprojects need to be compatible with the CMake functionality (see https://github.com/Eyescale/CMake/blob/master/SubProject.cmake). 3. Then the project is configured using standard CMake procedure; all the dependencies are searched using FindPackages.cmake in the CMake folder. Any required dependency which is not found should print an error message and exit with an error. Optional dependencies which are not found will just generate a message, but the build will continue.

About "system dependencies"

Libraries like boost and zmq are available as system packages on many Linux distributions and through Macports on OSX. They are used without modification and are not listed as subprojects. It is the responsibility of the developer to install these through the appropriate package management system - optionally, using:

cmake -DINSTALL_PACKAGES=1

will do it automatically on Debian and OSX.

Note: flatbuffers is forked from google/flatbuffers and contains HBP changes and is subproject compatible.

Notes about Buildyard files

For user convenience, building with Buildyard is still supported.

Deprecated artefacts from Buildayard in the CMake directory:

  • depends.txt
  • FindRequired.cmake
  • zeq.cmake (might still be used to install system dependencies?)

Also deprecated: .travis.yml (free, open source continuous integration service - no longer used).

Commit procedure at BBP

Code review and CI

All git commits must go through a pull request and must be code reviewed + validated by the Jenkins CI system to be merged. The build must also pass the cppcheck run (static code analyser tool) and all unit tests must succeed.

Supported platforms

At the time of writing, Jenkins builds on RHEL 6.6 and Ubuntu 14.04. Windows and OS X support might be added at a later time.

Clone this wiki locally