Skip to main content

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.

maintained license ruff pypeline

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_command that runs clanguru 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 sets CMAKE_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 link target exists only for the prod build kit (test kits build per-component GTest executables), so run objects-deps in 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

Copier

This package was created with Copier and the browniebroke/pypackage-template project template.

Metadata

Release files for object-deps-report 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for object-deps-report 0.0.1
File Size Uploaded
object_deps_report-0.0.1.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for object-deps-report 0.0.1
File Interpreter ABI Platform
object_deps_report-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 16.9 kB

Release files / object_deps_report-0.0.1.tar.gz

Download URL object_deps_report-0.0.1.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e97d349a385081503fd6254ed55c833e7f5677ecf923b5a53e0a69710a4c083e
BLAKE2b-256 checksum
How to use checksums
1fdecf9b2fc0a535aa3cacc3bd21bd5d93da96edd4f0211f34d201ad6236097d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 3, 2026.

Transparency log

Release files / object_deps_report-0.0.1-py3-none-any.whl

Download URL object_deps_report-0.0.1-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
45c559bd01432e54e8121c6eb227ab755e4b046af71e3ee8077ae3412f00bbe2
BLAKE2b-256 checksum
How to use checksums
a5c6fe5277fd033af3bd5d37c40a179703f440c0d33132aaf464fc5370d68c03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page