CMake Evaluation

From reSIProcate
Jump to navigation Jump to search

Update[edit]

Work has been started in this branch b-cmake-experiment.

This includes support for:

  • resip-ares
  • rutil
  • resip/stack
  • resip/dum
  • reTurn
  • reFlow

To try it under Linux:

  • mkdir cmake-build
  • cd cmake-build
  • cmake ..
  • make

To run the tests (they don't all work yet):

  • cd cmake-build
  • ctest # Add -V for verbose mode

Objectives[edit]

  • keep Windows builds in sync with UNIX builds without requiring developers to build on both platforms
  • use of a standardized build mechanism (autotools is also fairly standard, but we should not migrate to something bespoke simply to solve the sync issue)
  • direct build from the repository (eliminating the "bootstrap" step required with autotools)
    • this also means repository snapshots can be used as release tarballs, without running make dist or any other bootstrapping commands, simplifying the release and packaging processes

Alternatives[edit]

  • Some WebRTC projects are built with the Google build tool, gyp - it appears to have similar aims and benefits as CMake

Quick evaluation[edit]

Full project details[edit]

  • Evaluate all build variables and settings from existing and past build systems
    • see BuildSystem.txt for a summary of build variables completed in 2012
    • that document needs to be updated with anything new from configure.ac
  • investigate and test suitability of CMake for more obscure builds, for example, the build of libraries for use with Android and JNI and also OpenWRT
  • update rutil, make sure it builds and test cases run
    • must work on the following platforms:
      • Linux
      • Windows
      • Android
  • proceed to resip/stack and resip/dum, make sure they build and test cases run
  • then do reTurn
  • finally do the remaining stuff: recon, tfm, all the stuff under apps
  • may skip some of the incomplete stuff: presSvr, p2p