Conversation
Replace configure.ac, acinclude.m4, the three Makefile.am files, autogen.sh
and version.c.SH with a CMake build. Every configure switch keeps an
equivalent, the generated config.h is the same set of macros, and the six
unit tests now run under CTest.
Layout:
CMakeLists.txt project version, build type, config.h, summary
cmake/IrcuVersion.cmake BASE_VERSION/RELEASE/PATCHLEVEL from project()
cmake/ConfigureChecks.cmake headers, functions, type sizes, va_copy,
non-blocking sockets, signals, socklen_t
cmake/IrcuOptions.cmake the --enable/--with switches as IRCU_* cache
variables, plus event engine selection
cmake/IrcuTLS.cmake openssl/gnutls/libtls/none backend detection
cmake/IrcuPaths.cmake DPATH/CPATH/LPATH/SPATH with chroot rewriting
cmake/config.h.cmake.in config.h template
cmake/GenerateVersion.cmake the version.c.SH port
cmake/*InstallHooks.cmake.in the install-exec-hook port
ircd/CMakeLists.txt server, umkpasswd, convert-conf, table_gen
ircd/test/CMakeLists.txt unit tests registered with CTest
The build is out-of-tree only, exports compile_commands.json, and ships
CMakePresets.json with default/dev/asan/release/no-tls configurations.
CI now builds a matrix over the TLS backends and a debug configuration.
Behaviour differences worth calling out:
- Non-blocking sockets are detected by compiling the call instead of running
it, so POSIX fcntl(O_NONBLOCK) is now selected where it is supported. The
obsolete autoconf test depended on AC_TYPE_SIGNAL, which autoconf 2.71
removed, and had been silently falling back to ioctl(FIONBIO).
- version.c is generated with file(MD5) rather than by running umkpasswd, so
it no longer needs umkpasswd linked first, and is regenerated when a source
changes rather than on every invocation.
- The fallback include/patchlist.h is written into the build tree instead of
the source tree; one written by ircd-patch still takes precedence.
- -DNDEBUG is stripped from the Release build types so that assertions stay
governed solely by IRCU_ENABLE_ASSERTS, as they were under configure.
- Re-installing no longer risks clobbering the installed binary: a stale
symlink from a previous install is removed before the new binary lands.
INSTALL documents every option and carries a configure-to-cmake table.
Author
|
sorry, wrong repo xD |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.