Skip to content

Pull infra#201

Merged
steve-downey merged 237 commits intobemanproject:mainfrom
steve-downey:pull-infra
Apr 13, 2026
Merged

Pull infra#201
steve-downey merged 237 commits intobemanproject:mainfrom
steve-downey:pull-infra

Conversation

@steve-downey
Copy link
Copy Markdown
Member

No description provided.

ptsouchlos and others added 27 commits January 27, 2026 12:12
This statement affects a project-wide setting, so it doesn't belong here. Instead we should ensure that all the individual libraries use correct cmake_minimum_required versions.

See beman/exemplar commit f296dd51ba592a25c6453f19284208c2147599ce, which bumps the minimum CMake version to 3.30.
These variables were commented out and never set, but still referenced
in both install(TARGETS) blocks. Without VERSION_SUFFIX, they expanded
to empty strings, silently falling through to CMake defaults. Remove the
dead definitions and the dangling references so the code matches its
actual behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous logic used option() to create a per-package cache variable
defaulting to ON, then checked it in an if/elseif chain before the
allow-list. Since option() always defined the variable, the allow-list
branch was unreachable — BEMAN_INSTALL_CONFIG_FILE_PACKAGES was silently
ignored.

Restore the original precedence:
  1. Per-package var (if user explicitly set it, wins in either direction)
  2. Allow-list (if defined, packages not in it are excluded)
  3. Default: ON

Also removes the option() call and dead "if(NOT DEFINED)" block that
obscured the logic. Users who need the per-package override can pass it
directly via -D on the command line.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Versioned install destinations (e.g. include/beman-0.1.0/) are a package
manager concern, not something the build system should attempt. Supporting
it here creates a combinatorial explosion of configurations without
solving the underlying problem.

Removes the VERSION_SUFFIX option, its keyword parsing, the conditional
_version_suffix/_include_install_dir logic, and all references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This is superseded by beman-install-library.cmake.
Previously, when the library was brought in via FetchContent, users
would need to add this line:

list(APPEND CMAKE_MODULE_PATH ${Catch2_SOURCE_DIR}/extras)

This commit isolates the workaround to use-fetch-content.cmake, as
it's not needed when Catch2 is installed on the system or brought in
via another, non-FetchContent-based method.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Name option variables after module.
Install based on package name rather than project name.
I have no real opinion about cmake formatting at this point other than wishing it was automated everywhere.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Commit 752a065 renamed the BEMAN prefix to BEMAN_INSTALL in
beman-install-library.cmake but did not apply the rename to
Config.cmake.in, causing @BEMAN_FIND_DEPENDENCIES@ to expand to
an empty string and silently dropping all dependency declarations.

Fixes #43

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add tools for configuring and using the cmake_instrumentation available as an
experimental feature in CMake 4.2.

https://cmake.org/cmake/help/latest/command/cmake_instrumentation.html

This module sets the CMAKE_EXPERIMENTAL_INSTRUMENTATION gate with the GUID for
CMake 4.2.

It sets a single callback script and processes all current HOOKs copying the
Google Trace format json files to a known location for further processing.
lint

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
lint

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
reformat

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Improve the diagnostic messages for different versions of CMake.  Remove the
min required call.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Previously, if a user was running a build on a version of CMake less
than 4.3, they would get this message:

-- Configuring Build Telemetry
CMake Warning at infra/cmake/BuildTelemetryConfig.cmake:11 (message):
  CMake version is less than 4.3, configuring cmake_instrumentation is
  unavailable.
Call Stack (most recent call first):
  CMakeLists.txt:47 (configure_build_telemetry)

Furthermore, if they were running with CMake 4.3, they would get this
message:

-- Configuring Build Telemetry
CMake Warning at infra/cmake/BuildTelemetryConfig.cmake:27 (message):
  using callback script
  /home/eddie/sync/cpp/bemanproject/exemplar/infra/cmake/telemetry.sh
Call Stack (most recent call first):
  CMakeLists.txt:47 (configure_build_telemetry)

Both of these are warnings, which is the wrong mode here because in
neither case is there any real sense in which the user has done
something wrong.

This commit adjusts these messages so that "Configuring Build
Telemetry" only prints if the version is at least 4.3, the
"configuring cmake_instrumentation is unavailable" message is a STATUS
message rather than a WARNING, and the "using callback script" message
is a DEBUG message.
Adjust CMake messages for build telemetry
git-subtree-dir: infra
git-subtree-mainline: 0096243
git-subtree-split: 0fc99c9
@steve-downey steve-downey merged commit 77e2c21 into bemanproject:main Apr 13, 2026
87 checks passed
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.