Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • batsim batsim
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 38
    • Issues 38
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar

Attention une mise à jour du service Gitlab va être effectuée le mardi 07 février entre 13h30 et 14h00. Cette mise à jour va générer une interruption du service dont nous ne maîtrisons pas complètement la durée mais qui ne devrait pas excéder quelques minutes (habituellement de l'ordre de trois minutes).

  • batsim
  • batsimbatsim
  • Issues
  • #92
Closed
Open
Issue created Nov 07, 2018 by Millian Poquet@mpoquetOwner

CMake -> Meson?

Meson is gaining popularity and we may think about using it for building and testing Batsim.
Many big projects are now using it as their main build system, so I do not think we will be blocked by missing features.

IMHO the main benefit would be an improved maintainability.

Pros

  • Concise description.
  • Well designed, consistent, default options are the ones desired (e.g., parallel build/test, enable warnings).
  • Does not reimplement the wheel.
    • Use Ninja as main backend — therefore generates a good Ninja description file.
      Ninja is blazing fast. Dependencies between objects are finer grain than CMake ones.
      Incremental build is both saner and faster.
      (NB: CMake can use Ninja but not as well as Meson).
    • Uses external tool for dependency management (e.g., pkg-config). I believe this choice is good.
      Letting each project determining how it should be used (e.g., by providing a .pc file) is probably the best choice.
  • It might be a way to escape the current test hell.
    (read test/robin if you do not know what I mean, or just ask @cmommess how easy it is to simply remove tests...)
    • Meson's syntax provides usable loops and data types, such as arrays and dictionaries!
    • Meson's testing system seems well designed (e.g., wrapping simple tests with valgrind or gdb is trivial)

Cons

  • Less mature. Documentation is not perfect but seems to be enough for our use.
    (NB: CMake documentation is not great, but a lot of help can be found on stakoverflow-like sites).
  • Having an up-to-date Meson may be hard on some systems such as NixOS.
  • Some work is required to change our CMake stuff into something else.
Edited Nov 14, 2018 by Millian Poquet
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking