Skip to content

Add Doxygen configuration for API documentation#492

Open
oneDiversifiedAnthony wants to merge 1 commit into
dmf-mxl:mainfrom
oneDiversifiedAnthony:feature/add-doxygen-config
Open

Add Doxygen configuration for API documentation#492
oneDiversifiedAnthony wants to merge 1 commit into
dmf-mxl:mainfrom
oneDiversifiedAnthony:feature/add-doxygen-config

Conversation

@oneDiversifiedAnthony
Copy link
Copy Markdown

@oneDiversifiedAnthony oneDiversifiedAnthony commented Apr 30, 2026

Summary

  • Add Doxyfile configured for the MXL project, covering public API headers, internal source, fabrics, tools, and utils
  • Add Doxygen/ output directory to .gitignore to keep generated docs out of the repository
  • Uses README.md as the main page, includes all docs/*.md markdown files

Usage

Run from the project root to generate documentation:

doxygen Doxyfile

Output is generated to Doxygen/html/index.html.

Test plan

  • Run doxygen Doxyfile and verify HTML output is generated in Doxygen/html/
  • Open Doxygen/html/index.html and verify navigation, source browsing, and search work
  • Verify Doxygen/ directory is excluded from git tracking

@vt-tv
Copy link
Copy Markdown
Contributor

vt-tv commented Apr 30, 2026

Why do we need this? we already have doxygen support. ninja docs will invoke it (or ninja doc, can't remember)

@oneDiversifiedAnthony
Copy link
Copy Markdown
Author

Thanks for the feedback! You're right that ninja doc already works via the existing Doxyfile.in. However, this PR adds a more comprehensive standalone Doxyfile with several enhancements over the current config:

Broader input coverage:

  • Existing Doxyfile.in only covers lib/
  • This adds tools/, utils/, and docs/ markdown files

Better preprocessing & navigation:

  • Configures INCLUDE_PATH for lib/include, lib/internal/include, lib/fabrics/include
  • Adds IMAGE_PATH for docs/, docs/assets/, docs/fabrics/img/
  • Enables SEARCHENGINE for full-text search
  • Enables REFERENCED_BY_RELATION and REFERENCES_RELATION for cross-referencing
  • Enables SOURCE_TOOLTIPS
  • Configures MACRO_EXPANSION and include search

Housekeeping:

  • Excludes build/, rust/, .claude/ from indexing
  • Adds Doxygen/ output directory to .gitignore
  • Logs warnings to Doxygen/doxygen_warnings.log

Happy to merge these improvements into the existing Doxyfile.in instead if that's preferred, or keep this as a standalone option for quick local doc generation without a CMake build.

@vt-tv
Copy link
Copy Markdown
Contributor

vt-tv commented Apr 30, 2026

Thanks for the feedback! You're right that ninja doc already works via the existing Doxyfile.in. However, this PR adds a more comprehensive standalone Doxyfile with several enhancements over the current config:

Broader input coverage:

  • Existing Doxyfile.in only covers lib/
  • This adds tools/, utils/, and docs/ markdown files

Better preprocessing & navigation:

  • Configures INCLUDE_PATH for lib/include, lib/internal/include, lib/fabrics/include
  • Adds IMAGE_PATH for docs/, docs/assets/, docs/fabrics/img/
  • Enables SEARCHENGINE for full-text search
  • Enables REFERENCED_BY_RELATION and REFERENCES_RELATION for cross-referencing
  • Enables SOURCE_TOOLTIPS
  • Configures MACRO_EXPANSION and include search

Housekeeping:

  • Excludes build/, rust/, .claude/ from indexing
  • Adds Doxygen/ output directory to .gitignore
  • Logs warnings to Doxygen/doxygen_warnings.log

Happy to merge these improvements into the existing Doxyfile.in instead if that's preferred, or keep this as a standalone option for quick local doc generation without a CMake build.

thanks for the clarification. yes, updating the current mecanism would avoid having duplication of doxyfiles.

@vt-tv
Copy link
Copy Markdown
Contributor

vt-tv commented Apr 30, 2026

you will need to amend your commits and sign them off (--signoff) and then force-push them on your branch. That's why the DCO fails.

Update Doxyfile.in with broader input coverage (tools/, utils/, docs/),
include paths, image paths, search engine, cross-references, source
tooltips, preprocessor macros, and warning log. Update CMakeLists.txt
to output to source-root Doxygen/ directory. Remove standalone Doxyfile.
Add Doxygen/ to .gitignore.

Signed-off-by: Anthony Kuzub <akuzub@onediversified.com>
@oneDiversifiedAnthony oneDiversifiedAnthony force-pushed the feature/add-doxygen-config branch from ea719f3 to 36ca2af Compare April 30, 2026 17:49
Copy link
Copy Markdown
Contributor

@vt-tv vt-tv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See comment about doxygen output folder.

Comment thread CMakeLists.txt
set(DOXYGEN_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Doxygen")
configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)

set(DOXYGEN_OUTPUT_DIR "${CMAKE_BINARY_DIR}/docs")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would it be possible to keep this path? it is also picked up when creating the rpm/deb files (ninja package)

Copy link
Copy Markdown
Collaborator

@KimonHoffmann KimonHoffmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for applying the changes to Doxygen.in.
Like @vt-tv suggested I would also like to keep the path as before. As a result the change to .gitignore would of course become unnecessary and should be reverted as well.

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.

3 participants