Skip to content

refactor(build): finalize Doxygen input paths and install rules#541

Merged
kcenon merged 1 commit intodevelopfrom
refactor/issue-536-doxygen-install-cleanup
May 1, 2026
Merged

refactor(build): finalize Doxygen input paths and install rules#541
kcenon merged 1 commit intodevelopfrom
refactor/issue-536-doxygen-install-cleanup

Conversation

@kcenon
Copy link
Copy Markdown
Owner

@kcenon kcenon commented May 1, 2026

What

Summary

Final sub-issue of EPIC #531. Repoint Doxygen INPUT/INCLUDE_PATH and cmake/documentation.cmake DOXYGEN_INPUT to the canonical post-migration layout, and tighten cmake/install.cmake to reflect the actual install rules now in effect.

Change Type

  • Feature
  • Bugfix
  • Refactor (no functional changes)
  • Documentation
  • Test
  • Chore

Affected Components

  • Doxyfile -- INPUT, INCLUDE_PATH
  • cmake/documentation.cmake -- DOXYGEN_INPUT
  • cmake/install.cmake -- documentation block, deprecation marker
  • CHANGELOG.md, docs/CHANGELOG.md -- release notes

Why

Problem Solved

After the four prior sub-issues (#532 -- #535) consolidated headers under include/kcenon/container/, moved .cpp files into src/<subdir>/, deprecated the legacy include/container/ forwarders, and decomposed the top-level CMakeLists.txt into 11 cmake/ modules, three artifacts still carried drift-fix-only state from issue #533 / #535:

  1. Doxyfile INCLUDE_PATH still referenced removed roots (core/, values/, internal/, integration/).
  2. cmake/documentation.cmake DOXYGEN_INPUT listed ${CMAKE_CURRENT_SOURCE_DIR} as a catch-all (pulling in build artifacts and unrelated metadata) and pointed at a non-existent root mainpage.dox.
  3. cmake/install.cmake documentation block still enumerated removed root-level forwarding directories, and the deprecated include/container/ install rule had no recorded removal milestone.

Related Issues

Who

Reviewers

When

Urgency

  • Normal -- follow standard review process

Target Release

The cleanup itself is part of [Unreleased]. The TODO marker on the deprecated include/container/ install rule names v1.2.0 as the removal milestone, matching the deprecation cycle started in #534/PR #539.

Where

Files Changed

File Change
Doxyfile Repoint INCLUDE_PATH; drop temporary layout-disclaimer comment above INPUT
cmake/documentation.cmake Repoint DOXYGEN_INPUT; align comment with the standalone Doxyfile
cmake/install.cmake Tidy documentation block; add v1.2.0 TODO marker; drop dropped-rule breadcrumb
CHANGELOG.md Record under Unreleased > Changed
docs/CHANGELOG.md Mirror under Unreleased > Changed

API/Database Changes

None. Public C++ API unchanged. CMake export set, package config, target name, namespace, and install destinations are unchanged. The set of installed headers is identical to the pre-refactor state (canonical include/kcenon/container/ + deprecated include/container/).

How

Implementation Highlights

Doxyfile

INPUT was already canonical (set in #538). Only the temporary disclaimer comment was rewritten to describe current state instead of pointing at #533/#536.

INCLUDE_PATH previously listed core values internal integration -- those root directories were removed in #533/PR #538. Replaced with include, include/kcenon/container, and src so Doxygen's preprocessor can resolve #include directives in the new layout.

cmake/documentation.cmake

DOXYGEN_INPUT previously had two issues:

  • ${CMAKE_CURRENT_SOURCE_DIR} (source root catch-all) -- pulls in .git/, cmake/, top-level scripts, and the like; doxygen has to filter them via EXCLUDE patterns rather than not loading them in the first place.
  • ${CMAKE_CURRENT_SOURCE_DIR}/mainpage.dox -- the file lives at docs/mainpage.dox, not at the source root. The path resolved to a non-existent file and would have produced a Doxygen warning had the target been exercised.

Repointed to the same set of inputs as the standalone Doxyfile: include/kcenon/container/, src/, examples/, utilities/, README.md, and the explicit docs/*.dox pages.

cmake/install.cmake

The install rules themselves are unchanged. Only the comments were rewritten:

Verification

  • All 10 Doxyfile INPUT paths and all 4 INCLUDE_PATH entries exist on disk (verified with [ -e <path> ]).
  • All 13 ${CMAKE_CURRENT_SOURCE_DIR}/... paths in DOXYGEN_INPUT exist on disk (build/, build_test/, vcpkg/, vcpkg_installed/ are EXCLUDE entries and are expected to be absent until configure/build).
  • All install-time paths in cmake/install.cmake exist (container.h, include/kcenon, include/container, cmake/container_system-config.cmake.in).

Local cmake/g++/doxygen toolchains are unavailable in this sandbox; relying on CI for the cmake configure pass, the multi-platform build, ctest, and the Documentation Audit step (per ci-resilience.md).

Testing Done

  • Path-existence sanity check for every INPUT and INCLUDE_PATH entry
  • Path-existence sanity check for every DOXYGEN_INPUT and install(...) source entry
  • Local Doxygen run -- skipped (doxygen not installed in sandbox; CI covers this)
  • Local CMake configure + build + ctest -- skipped (cmake not installed in sandbox; CI covers this)
  • Local cmake --install build/ --prefix /tmp/inst -- skipped (same reason; install rules unchanged in substance)

Breaking Changes

None.

Rollback Plan

Plain revert of this PR. The five EPIC #531 sub-issue PRs land in order #537 -> #538 -> #539 -> #540 -> this one, so reverting in reverse order is safe.

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Path-existence verification performed (no cmake/doxygen available locally)
  • CHANGELOG.md and docs/CHANGELOG.md updated
  • No sensitive data exposed
  • Commit follows Conventional Commits
  • Issue linked with closing keyword (Closes #536) and EPIC reference (Part of #531)

Drop legacy layout references from Doxyfile, cmake/documentation.cmake,
and cmake/install.cmake now that the post-EPIC-#531 directory layout is
stable.

- Doxyfile INCLUDE_PATH: replace removed roots (core/, values/,
  internal/, integration/) with the canonical include/, include/kcenon/
  container/, and src/ paths.
- Doxyfile INPUT: keep the canonical roots and explicit docs/*.dox
  pages; drop the temporary layout-disclaimer comment.
- cmake/documentation.cmake DOXYGEN_INPUT: remove the source-root
  catch-all and the non-existent root mainpage.dox reference; add
  utilities/ and the explicit docs/*.dox pages so the CMake target and
  the standalone Doxyfile drive the same set of inputs.
- cmake/install.cmake: rewrite the documentation block to reflect the
  actual install layout (canonical include/kcenon/container/ plus
  deprecated include/container/), record the v1.2.0 removal milestone
  for the legacy forwarding tree as a TODO marker, and drop the dropped-
  install-rule comment that was kept as a breadcrumb during #538/#535.
- CHANGELOG.md and docs/CHANGELOG.md: record the cleanup under
  Unreleased > Changed.

All INPUT paths verified to exist on disk. Toolchain unavailable in
sandbox; relying on CI for cmake configure, build, and Doxygen target
runs.

Closes #536
Part of #531
@kcenon kcenon merged commit fa56dc5 into develop May 1, 2026
5 checks passed
@kcenon kcenon deleted the refactor/issue-536-doxygen-install-cleanup branch May 1, 2026 23:15
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.

1 participant