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.
- Use Ninja as main backend — therefore generates a good Ninja description file.
-
It might be a way to escape the current test hell.
(readtest/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.