Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Replace Autotools build system with an equivalent CMake build system. #10

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rljacobson
Copy link

@rljacobson rljacobson commented May 28, 2023

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.

Created CMakeLists.txt files that closely approximate the original Autotools scripts.
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 is accidental.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant