Build system improvements
At the 2015 Hackfest, some options for improving our build systems were discussed.
Present situation
At the moment, we provide both Autotools (autoconf, automake etc) and CMake, but our main focus has been on Autotools. This is causing a significant maintenance challenge for the following reasons:
- The syntax of the Autotools configuration files is rather complex and uses a mixture of the M4 Macro processing language, and bash scripting which is hard to understand/edit/debug
- Numerous configuration files are needed to support both build systems. This adds a significant maintenance burden whenever e.g., files are added/removed or package version numbers change
- The Autotools configuration is pretty slow, and parallelisation overheads are quite high
- The CMake builds tend to be fairly neglected, and are not very actively maintained.
Proposal
We would like to focus on a single build system. CMake is more widely understood than Autotools and it should be easier for more people to manage our conditional build configuration.
As a first step, we could focus on improving the CMake build and recommending this as our default option for the next Inkscape release (0.92). We could then remove our Autotools build system entirely from Inkscape 0.93 onwards.
Another potential option for future releases is the Waf system, which offers very good wildcard handling and potentially even simpler build configuration. However, it would make sense to stabilise our existing CMake build before we start moving to anything new.
Portability
We need to determine whether the CMake builds work well on OS X and Windows systems.