This is a major change that I do not expect to be accepted anytime soon, if ever. Still, I wanted to share it with you in case you have any interest.
The Autotools-based build system has been completely removed and replaced with an approximately equivalent CMake-based build system. With CMake, it is possible to use a variety of backends, including make, Ninja, and XCode, among others. The original Autotools generated make-based build takes ~25s on my 10-core (8 performance + 2 efficiency) M1 MacBook with make -j8. The CMake generated Ninja build takes ~15s with the same settings, a 40% improvement.
There are code paths in the build system I have not exercised, and some that, as far as I know, I am unable to exercise. I have not yet ported the install target.
This PR includes the following changes.
Created CMakeLists.txt files that closely approximate the original Autotools scripts.
Removed all Autotools related files.
Added a .gitignore file.
Unconditionally enabled NO_ASSERT, as otherwise the code doesn't compile.
Unconditionally enabled LOCAL_INLINES until I understand why it should be disablable.
Any changes to the C++ code itself are accidental.
This is a work in progress. If you give it a try and find issues, let me know.
This is a major change that I do not expect to be accepted anytime soon, if ever. Still, I wanted to share it with you in case you have any interest.
The Autotools-based build system has been completely removed and replaced with an approximately equivalent CMake-based build system. With CMake, it is possible to use a variety of backends, including make, Ninja, and XCode, among others. The original Autotools generated make-based build takes ~25s on my 10-core (8 performance + 2 efficiency) M1 MacBook with
make -j8
. The CMake generated Ninja build takes ~15s with the same settings, a 40% improvement.There are code paths in the build system I have not exercised, and some that, as far as I know, I am unable to exercise. I have not yet ported the
install
target.This PR includes the following changes.
NO_ASSERT
, as otherwise the code doesn't compile.LOCAL_INLINES
until I understand why it should be disablable.This is a work in progress. If you give it a try and find issues, let me know.