Last Friday I published the first release of Comfignat. Comfignat is common, convenient, command-line-controlled compile-time configuration of software built with the GNAT tools on Unix-like operating systems. In my work on packaging Ada software in Fedora I have found that most Ada projects have rather inflexible build systems. Makefiles and project files usually have to be modified to meet Fedora’s policies. Files placement is often not configurable enough, and support for multiarch systems and installation to a staging directory is often missing. There is also a lack of naming conventions. In C projects Make variables such as CFLAGS and LDFLAGS are a well established de facto standard. Among Ada projects there is no consensus. The lack of conventions slows packaging down as it takes time to figure out each makefile. It’s quite understandable that Ada programmers don’t want to write a lot of Make code for every project but rather focus on their Ada programming, but the result is inflexible makefiles that don’t meet users’ and distributions’ needs. To make my own projects fully configurable, multiarch-capable and stageable while minimizing the amount of Make code that must be written for every new project, I have written Comfignat. It consists of a makefile foundation with generic Make code to be included by each project’s makefile, and an abstract GNAT project file to be imported by each project’s project files. Leveraging GNU Make and Gnatprep, Comfignat adds the flexibility that GNAT project files lack, so that programs and libraries can easily be configured for all sorts of use cases, such as installing locally from source, packaging in a distribution, building relocatable binary packages, or testing and debugging on a developer’s workstation. As all the code in Comfignat is generic it should be useful in any project that targets GNAT and Unix-like systems, and will greatly reduce the amount of Make code that needs to be written for each project. It works for mixed-language projects as well as pure Ada projects, and Gnatmake and GPRbuild are both supported. Read more: https://www.rombobjörn.se/Comfignat/ Download the tarball: https://www.rombobjörn.se/Comfignat/download/ Browse the code online: https://gitorious.org/comfignat/comfignat/trees/master See how my projects use Comfignat: https://gitorious.org/adamilter/adamilter/trees/master https://gitorious.org/adamilter/system_log/trees/master