Right now the project is built with make. However, the current build setup has several unfortunate properties, including:
It uses ambient toolchains,
It hard-codes various GCC-specific compiler flags, some of which drift by version,
It doesn't readily support cross-compilation and cross-testing.
Some of these things could be fixed by rewriting (and modernizing) the Makefile, but I actually think Make is the wrong tool. On the other hand, I also believe it's important for the library to be easily pulled out and hacked up into a new build environment, without deep connections to the environment I use to develop it. On that basis, I will probably not consider using Bazel.
One option is to build everything in Docker (see commit 899e202e for a nod in that general direction). That would let us keep the Make-based build but use containerization to ensure a stable build environment. Another option is djb redo, which has a recent decent reimplementation here.
Right now the project is built with
make
. However, the current build setup has several unfortunate properties, including:Some of these things could be fixed by rewriting (and modernizing) the Makefile, but I actually think Make is the wrong tool. On the other hand, I also believe it's important for the library to be easily pulled out and hacked up into a new build environment, without deep connections to the environment I use to develop it. On that basis, I will probably not consider using Bazel.
One option is to build everything in Docker (see commit 899e202e for a nod in that general direction). That would let us keep the Make-based build but use containerization to ensure a stable build environment. Another option is djb redo, which has a recent decent reimplementation here.