-
Notifications
You must be signed in to change notification settings - Fork 25
Common practices
The CMake configure step performs the following actions:
- 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.
- .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.
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.
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).
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.
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.