Files
ConformalLabpp/Doxyfile
Tarik Moussa ba5c9303a3 docs: clean Doxygen warning log (0 warnings) + flag honest gaps to reviewer
Doxygen now builds with **0 warnings** (was 27).

Root cause: `[label](doc/api/tests.md)`-style relative markdown links in
README.md and CLAUDE.md were being interpreted by Doxygen as \ref
commands and failed to resolve (Doxygen indexes .md files by basename,
not by repo-relative path).

Fix: add a per-file `FILTER_PATTERNS` to Doxyfile that rewrites
`[label](path/to/file.md)` into `<a href="path/to/file.md">label</a>`
just for Doxygen.  HTML anchors bypass \ref resolution entirely; the
generated Doxygen HTML still hyperlinks correctly.  The on-disk
markdown is untouched, so GitHub rendering is unaffected.

New file: scripts/doxygen-md-filter.sh (24 lines, documented).

Also: append a "Known limitations (state at the time of the reviewer
meeting)" table to doc/architecture/locked-vs-flexible.md so the
external reviewer sees the 7 deliberate gaps (output_uv_map covers
3 of 5 entries; pipe-only chaining; Phase 9b-analytic derived but not
implemented; Doxygen WARN_IF_UNDOCUMENTED policy; CI test-count gate;
research-track utilities) with effort estimates next to each.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 23:19:37 +02:00

133 lines
5.8 KiB
Plaintext

# Doxyfile for conformallab++
#
# Phase 7.5 — minimal CGAL-style Doxygen configuration.
# Only non-default values are set; Doxygen ≥ 1.9.5 supplies the rest.
#
# Usage:
# doxygen Doxyfile # generates HTML into doc/doxygen/html/
# open doc/doxygen/html/index.html
#
# Or via CMake:
# cmake --build build --target doc
# ── Project identity ─────────────────────────────────────────────────────────
PROJECT_NAME = "conformallab++"
PROJECT_NUMBER = 0.7.0
PROJECT_BRIEF = "Discrete conformal maps on triangle meshes — C++17 reimplementation of ConformalLab (TU Berlin)"
PROJECT_LOGO =
OUTPUT_DIRECTORY = doc/doxygen
USE_MDFILE_AS_MAINPAGE = README.md
# ── Input ────────────────────────────────────────────────────────────────────
INPUT = README.md \
CLAUDE.md \
code/include \
doc/api \
doc/architecture \
doc/math
FILE_PATTERNS = *.hpp *.h *.cpp *.md
RECURSIVE = YES
EXCLUDE_PATTERNS = */build*/* \
*/deps/* \
*/.git/* \
*/test-reports/* \
*/* 2.hpp
EXCLUDE_SYMBOLS = Eigen::* boost::* std::*
# Markdown filter: rewrites repo-relative links like [x](doc/api/tests.md)
# into basename-only links [x](tests.md) so Doxygen's basename-indexed
# \ref resolver can find them. On-disk files are untouched (GitHub keeps
# rendering them correctly). See scripts/doxygen-md-filter.sh.
FILTER_PATTERNS = *.md=scripts/doxygen-md-filter.sh
# ── Source browsing ──────────────────────────────────────────────────────────
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
REFERENCES_LINK_SOURCE = YES
# ── Build options ────────────────────────────────────────────────────────────
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO
MARKDOWN_SUPPORT = YES
AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = YES
DISTRIBUTE_GROUP_DOC = YES
GROUP_NESTED_COMPOUNDS = YES
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
EXTENSION_MAPPING = h=C++ hpp=C++
# ── Warnings ─────────────────────────────────────────────────────────────────
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = doc/doxygen/doxygen-warnings.log
# ── HTML output ──────────────────────────────────────────────────────────────
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_COLORSTYLE = LIGHT
HTML_COLORSTYLE_HUE = 220
HTML_COLORSTYLE_SAT = 100
HTML_COLORSTYLE_GAMMA = 80
HTML_TIMESTAMP = NO
HTML_DYNAMIC_SECTIONS = YES
GENERATE_TREEVIEW = YES
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 1
TREEVIEW_WIDTH = 280
EXT_LINKS_IN_WINDOW = NO
SEARCHENGINE = YES
SERVER_BASED_SEARCH = NO
# ── Disabled outputs (we only want HTML) ─────────────────────────────────────
GENERATE_LATEX = NO
GENERATE_RTF = NO
GENERATE_MAN = NO
GENERATE_XML = NO
GENERATE_DOCBOOK = NO
GENERATE_AUTOGEN_DEF = NO
GENERATE_PERLMOD = NO
# ── Preprocessor ─────────────────────────────────────────────────────────────
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH = code/include
PREDEFINED = CGAL_DISABLE_GMP \
CGAL_DISABLE_MPFR \
DOXYGEN_RUNNING
# ── Diagrams ─────────────────────────────────────────────────────────────────
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
GROUP_GRAPHS = YES
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
CALL_GRAPH = NO
CALLER_GRAPH = NO
# ── Aliases (CGAL-style) ─────────────────────────────────────────────────────
ALIASES += "concept{1}=\xrefitem concept \"Concept\" \"Concepts\" \1"
ALIASES += "models{1}=\xrefitem models \"Models\" \"Models\" \1"
ALIASES += "cgalRequires{1}=\par Requirements: \n\1"
ALIASES += "cgalParam{2}=\param \1 \2"