TomTom NavPU Build System

I am the architect and developer of the TomTom Navigation Products build system, and I have been the lead maintainer for almost 2 years.
- The initial idea was a simple build system within a project for teams in the TomTom Navigation PU.
- It simplifies drastically the complex management of a heterogeneous development environment.
- It allows writing code, having a single entry point for compiling, testing and releasing the same C++ source code base on every target platform.
- It introduces a flexible and elegant model for C++ software entities to standardise the process of enterprise software development.
- It is extremely easy to extend to:
- Custom target platforms with ease, by simply adding a few toolchain configuration files
- Custom tool integration in the release pipeline with linear or parallel modular management.
- Custom test category definition in the test pipeline with linear or parallel modular management.
- It is CI-aware: it is able to dynamically generate a Jenkins matrix build configuration according to the target OS/architecture/configuration and the git/p4 branch, where the code is hosted.
- It manages dependencies of binary pre-compiled components via a dedicated Gradle Plugin.
To date, it gives the possibility to work on code for the following target platforms:
- Linux (several variations of arm, x86, x86_64)
- Android (all target architectures)
- OSX
- iOS (emulator and all ARM)
- WinNT
- WinCE (different arm)
- QNX (proprietary arm and not)
- ASM.js
And to make use of the following:
- Tests:
- Unit tests (on all platforms)
- Integration / Regression Tests (on host or middleware)
- Visual Tests (OpenGL software)
- Test and code coverage (gcov/lcov or CTC++)
- Other tools