An spl-core build extension that generates the object-file dependency graph report using clanguru
Project description
object-deps-report
An spl-core build extension that generates the object-file dependency graph report for a variant using clanguru.
The extension wires a CMake custom target objects-deps into the variant build.
Because the report is built from the object files listed in
compile_commands.json, the target depends on the linked executable (so every
object is guaranteed to exist) and on compile_commands.json. Running the target
invokes clanguru analyze to produce an interactive HTML dependency graph.
Installation
Install this via pip (or your favorite package manager):
pip install object_deps_report
Then, in the consuming spl-core project's CMakeLists.txt, after spl.cmake and
the variant parts are included:
include(".venv/Lib/site-packages/object_deps_report/index.cmake")
Usage
Build the project first (so the executable and all objects exist), then build the report target:
cmake --build build/<variant>/<build_kit> --target objects-deps
The report is written to
build/<variant>/<build_kit>/reports/object_dependencies.html.
How it works
The extension needs no configuration file and reads no KConfig/autoconf state.
Its index.cmake (included from your CMakeLists.txt) defers a hook to the end of
CMake configure that runs object_deps_report generate ...; that writes
object_deps_report.cmake into the build directory and include()s it. The
generated file contains:
- an
add_custom_commandthat runsclanguru analyze --compilation-database ${CMAKE_BINARY_DIR}/compile_commands.json --output-file <report>; DEPENDS $<TARGET_FILE:${LINK_TARGET_NAME}> ${CMAKE_BINARY_DIR}/compile_commands.json— spl-core's linked executable target (so every object is built first, and the report regenerates when the binary changes) plus the compilation database (spl-core setsCMAKE_EXPORT_COMPILE_COMMANDS ON, so it always exists);add_custom_target(objects-deps DEPENDS <report>)— not part of the default (ALL) build, so the report is produced on demand.
The
linktarget exists only for theprodbuild kit (test kits build per-component GTest executables), so runobjects-depsin a prod build.
Start developing
The project is managed with uv and orchestrated by pypeline. Bootstrap the environment and run the full pipeline (venv, pre-commit, tests) with:
pypeline run
Committing changes
This repository uses commitlint for checking if the commit message meets the conventional commit format. Commit messages drive the automated release.
Continuous integration & release
CI runs on GitHub Actions (.github/workflows/ci.yml): lint (pre-commit),
commitlint, a test matrix (Python 3.10/3.13 × Ubuntu/Windows), and a release job.
Releases are automated with python-semantic-release:
merging to main bumps the version from the conventional-commit history and
publishes to PyPI (trusted publishing) and GitHub Releases.
Credits
This package was created with Copier and the browniebroke/pypackage-template project template.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file object_deps_report-0.0.0.tar.gz.
File metadata
- Download URL: object_deps_report-0.0.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6deaf67099e679f4fc42cb646eb6d192bc9405c63cad93dc58e3b6208f810970
|
|
| MD5 |
34d685a07e21f0a9305fe69bfdfce2d0
|
|
| BLAKE2b-256 |
a9004d25d0cea29ed220339a29d99758aaffd6c4fd1188abb0788061db4b2bc1
|
Provenance
The following attestation bundles were made for object_deps_report-0.0.0.tar.gz:
Publisher:
ci.yml on avengineers/object-deps-report
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
object_deps_report-0.0.0.tar.gz -
Subject digest:
6deaf67099e679f4fc42cb646eb6d192bc9405c63cad93dc58e3b6208f810970 - Sigstore transparency entry: 2056149848
- Sigstore integration time:
-
Permalink:
avengineers/object-deps-report@12dfd547e3dfeaaeae8820cc90e78908074516e3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/avengineers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@12dfd547e3dfeaaeae8820cc90e78908074516e3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file object_deps_report-0.0.0-py3-none-any.whl.
File metadata
- Download URL: object_deps_report-0.0.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7515188e4d1312dd9b2209382044e128c920270c5dd8e5c8b949a4e01537059
|
|
| MD5 |
0d00d33169e9d86676787a6427d35c7a
|
|
| BLAKE2b-256 |
fc5ebd802df026928b9ed8b97dd27db5218d81f0136a8c5ed3637cf6cf9d2452
|
Provenance
The following attestation bundles were made for object_deps_report-0.0.0-py3-none-any.whl:
Publisher:
ci.yml on avengineers/object-deps-report
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
object_deps_report-0.0.0-py3-none-any.whl -
Subject digest:
b7515188e4d1312dd9b2209382044e128c920270c5dd8e5c8b949a4e01537059 - Sigstore transparency entry: 2056150473
- Sigstore integration time:
-
Permalink:
avengineers/object-deps-report@12dfd547e3dfeaaeae8820cc90e78908074516e3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/avengineers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@12dfd547e3dfeaaeae8820cc90e78908074516e3 -
Trigger Event:
push
-
Statement type: