Repository navigation
Modernize CMake packaging, benchmark dependencies, and CI - #6
Merged
Merged
Conversation
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.
HashMap currently builds all executables in standalone builds and infers optional benchmark dependencies from header availability. This can include Abseil headers without linking its libraries. The repository also tracks an unused Google Benchmark gitlink without a
.gitmodulesentry.Add independent options for tests, examples, benchmarks, installation, and warnings as errors. Standalone defaults retain the current executables; embedded builds default to the header-only
HashMap::HashMaptarget. Keep warnings and benchmark dependencies private to executables, honorBUILD_TESTING, and select optional Abseil/sparsehash comparisons through CMake detection and explicit definitions. Windows continues to omit the POSIX benchmark.Generate separate package configuration, targets, and architecture-independent version files. Respect custom installation directories and support build-tree and relocated installed consumers. Document configuration and consumption. Remove the unused Google Benchmark gitlink; the benchmark continues to use
steady_clockwithout downloading dependencies.Replace the push-only legacy CI with pull-request and master-push coverage for Linux GCC/Clang, macOS Clang, and Windows MSVC. Keep sanitizer checks on Linux/macOS and test the C++14 library requirement. Pin checkout v7.0.1, use read-only permissions, cancel superseded runs, set timeouts, and separate configure/build/test steps. Each job runs the reusable embedded, build-tree, installed, and relocated CMake consumer checks.
Validation:
add_subdirectory, the build-tree package, a default installation, and a relocated installation with custom include/library directories. Verified embedded defaults create no executables and propagate no warning options.BUILD_TESTING=OFFpassed.git diff --checkpassed.actionlintpassed. The new CMake consumer check script passed locally with GCC and Clang; the workflow's C++14 Clang sanitizer build and CTest passed.