Summary
As part of the '2026 Enterprise Ready' roadmap, Spine should transition its build system from legacy Autotools (configure.ac, Makefile.am) to CMake.
Work
Why Migrate?
- Modern Tooling: CMake trivially generates
compile_commands.json, which is required for modern IDEs (clangd), advanced static analysis (CodeQL, clang-tidy), and secure build tooling.
- Speed: CMake, especially when paired with the Ninja backend, evaluates the build graph and parallelizes compilation significantly faster than standard
make.
- Developer Experience: Autotools (m4 macros) represents significant technical debt and a high barrier to entry for new contributors. CMake is the undisputed industry standard for C/C++ projects.
- Testing Integration: CTest provides a structured, modern framework for running tests (including Valgrind) directly from the build system, simplifying our CI pipelines.
Implementation Plan
- Write a
CMakeLists.txt that mirrors the exact feature detection logic currently in configure.ac (finding libmysqlclient, libnetsnmp, libssl, checking for cap_t, etc.).
- Implement install rules and CTest targets for existing tests.
- Update GitHub Actions workflows to exclusively use the CMake path (removing the fallback logic).
- Run CMake side-by-side with Autotools for a deprecation period, then remove
bootstrap, configure.ac, and Makefile.am.
Acceptance Criteria
Summary
As part of the '2026 Enterprise Ready' roadmap, Spine should transition its build system from legacy Autotools (
configure.ac,Makefile.am) to CMake.Work
Why Migrate?
compile_commands.json, which is required for modern IDEs (clangd), advanced static analysis (CodeQL, clang-tidy), and secure build tooling.make.Implementation Plan
CMakeLists.txtthat mirrors the exact feature detection logic currently inconfigure.ac(findinglibmysqlclient,libnetsnmp,libssl, checking forcap_t, etc.).bootstrap,configure.ac, andMakefile.am.Acceptance Criteria