Skip to content

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

Open
rljacobson wants to merge 1 commit intomaude-lang:masterfrom
rljacobson:cmake_build
Open

WIP: Replace Autotools build system with an equivalent CMake build system.#10
rljacobson wants to merge 1 commit intomaude-lang:masterfrom
rljacobson:cmake_build

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.

1 participant