Skip to content

Commit 4f42a75

Browse files
derselbstCopilot
andauthored
Port API documentation to Zensical (#1792)
* feat: port API documentation to Zensical - Enable Doxygen XML output (GENERATE_XML=YES) in doc/Doxyfile.cmake - Add doc/zensical/ with full Zensical/MkDocs site configuration: - mkdocs.yml: Material theme, navigation, MD extensions - requirements.txt: zensical + pymdown-extensions - scripts/doxy2md.py: converts Doxygen XML → Markdown API reference - scripts/fluidsettings2md.py: converts fluidsettings.xml → Markdown - scripts/txt2md.py: converts Doxygen .txt usage docs → Markdown - Pre-converted usage guide pages (docs/usage/*.md) from doc/usage/*.txt - Pre-generated API reference pages (docs/api/*.md) from Doxygen groups - Pre-generated settings reference pages (docs/settings/*.md) - Static pages: index.md, changelog.md, ladspa.md, reverbators.md - doc/CMakeLists.txt: adds fluidsettings2md, doxy2md, and zensical targets - Zero Zensical build issues; no API comments in source modified Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/a877c118-8811-404f-97ab-6aa3eb6dc9ec Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: use cleaner regex replacement r'\[\1\]' for bracket escaping Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/a877c118-8811-404f-97ab-6aa3eb6dc9ec Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * feat: add XSLT stylesheets for XML-to-Markdown conversion Implements an XSLT-based alternative to the Python conversion scripts: - doc/zensical/xslt/fluidsettings2md.xsl: converts fluidsettings.xml to per-group Markdown pages using __FILE__ sentinels split by run-xslt.sh. Anchor IDs match the Python script output. - doc/zensical/xslt/doxy2md.xsl: converts a Doxygen group compound XML file to a Markdown API reference page. Handles functions, typedefs, enums, defines, parameter tables, notes/warnings, and cross-reference links resolved via a pipe-separated refmap string parameter. - doc/zensical/xslt/run-xslt.sh: shell wrapper that orchestrates xsltproc calls for both fluidsettings and doxy modes. For doxy mode: first pass builds the refid->filename#anchor refmap; second pass converts each group XML to Markdown; then writes api/index.md. - doc/CMakeLists.txt: adds fluidsettings2md_xslt, doxy2md_xslt, and zensical_xslt CMake targets when LibXSLT xsltproc is available. The existing Python scripts are kept unchanged for comparison. Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/9d764879-696d-47eb-a1f9-b808b9932617 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * Fix paths * chore: plan changes for comment 4346222785 Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/00c2ccdf-d314-409a-9846-510bb4f47066 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: remove generated docs from VCS, fix htmlonly, fix XSLT inline code blocks Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/00c2ccdf-d314-409a-9846-510bb4f47066 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: add COMMAND keywords in CMakeLists.txt, refactor XSLT code-lang template Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/00c2ccdf-d314-409a-9846-510bb4f47066 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * Changes before error encountered Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/4d595ff7-42af-4c63-ac7e-ebde94b40d35 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix minor formatting issues * Fix listings not rendering correct in MD * feat: integrate API docs into wiki site, update CI for all-branch artifact builds Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/625b2fe5-da88-414a-8d8d-9fd16907eb36 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * remove leftover python scripts * Migrate Reverb study to markdown * move reverb to user docs * move user changelog to users * feat: add deprecated/examples/recent-changes pages, fix anchor warnings, fix nav sidebar Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/41f12601-99de-4408-94a5-abe20823c592 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * chore: gitignore __pycache__ in scripts dir, remove stray .pyc Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/41f12601-99de-4408-94a5-abe20823c592 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: per-example pages, xrefsect admonition, page ref links, lowercase symbol autolink, dynamic API nav Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/efdcc65c-148a-4837-a429-662d73b77db2 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: address code review - regex, xrefsect multi-para indentation, nav pattern Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/efdcc65c-148a-4837-a429-662d73b77db2 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * add important and bug translations * revise changelog formatting and headlines * Split documentation tabs * Revise usermanual to reduce number of issues * mention 2.4 mods * fix more issues in changelog.md by \[([^\]]+)\](?!\() -> ($1) * Remove outdated future.md * minor fixes and restructureings * more restructuring * fix: docs_dir relative path, XSLT page pipeline, Dockerfile with py3+xsltproc+zensical Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/591a0808-4f5d-442c-a75f-825e405ea606 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: use mktemp without /tmp prefix, use pipx for zensical in Dockerfile Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/591a0808-4f5d-442c-a75f-825e405ea606 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: preserve hyperlinks in list items and section titles in XSLT pipeline - Fix listitem templates: use apply-templates mode="inline" instead of xsl:value-of select="normalize-space(.)" to preserve <ref> hyperlinks within list items. The old code stripped all element markup, producing plain text instead of Markdown links. - Fix title suppression: replace the broad <xsl:template match="title"/> with <xsl:template match="compounddef/title"/> to only suppress the compounddef title (already output via xsl:value-of). The old broad suppressor could hide refs inside section titles rendered in block mode. Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/ba9e0133-3076-4d15-a4ae-6f85fc3e00ba Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: add enum value and settings cross-refs to refmap; fix nested list rendering Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/93258efe-9ab8-496a-95eb-74e5cb939e19 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * chore: clarify empty page_id_filter arg in usage2md CMake target Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/93258efe-9ab8-496a-95eb-74e5cb939e19 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * fix: correct Doxygen refid format for settings sections and add page-level refs Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/e693e268-a733-4867-8ff1-19a676ed6dc4 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * refactor: deduplicate FLUIDSETTINGS_GROUPS_XSL into shared variable Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/e693e268-a733-4867-8ff1-19a676ed6dc4 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * missing link * Remove unneeded txt2md.py * fix pre-existing typos in reverbators.md and ladspa.md Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/57a5e3a6-e0e9-44cd-97ea-3af6d4e1cd84 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * Fix usage files not generating * fix desc rendering in settings * feat: replace gen-zensical-config.py with CMake configure_file approach - Add zensical.toml.in template with @API_NAV_ENTRIES@ placeholder - Add doc/zensical/scripts/gen-zensical-config.cmake that globs doc/wiki/api/*.md, sorts them, and uses configure_file to produce the runtime zensical_runtime.toml - Update doc/CMakeLists.txt to use cmake -P instead of Python3 - Remove find_package(Python3) and the if(Python3_FOUND) wrapper - Delete doc/zensical/scripts/gen-zensical-config.py Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/40d3084f-1a87-4bd7-b8e7-4e7f18a95821 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * feat: make examples a nav subsection with api/examples.md as index Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/230b50f3-1c3c-472b-bd7f-c88d55749d94 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * rework example section * restructure fluid settings * rename config file page * add note + attention to fluidsettings.xml * feat: handle &lt;note&gt; and &lt;attention&gt; tags in fluidsettings2md.xsl as Zensical admonitions Agent-Logs-Url: https://github.com/derselbst/fluidsynth/sessions/480b25f5-6bfb-477d-b667-09974ed8a313 Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com> * settings index.md adjustment * change attention title * strip _xslt * update doc/README * Remove documentation.md * fix workflow? * Add API shortcut * Fix security pipeline stuff * switch order * double [[]] braces as adviced --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: derselbst <8152480+derselbst@users.noreply.github.com>
1 parent 269788a commit 4f42a75

33 files changed

Lines changed: 2693 additions & 536 deletions

.github/workflows/api_doc_build.yml

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ name: API Doc & Wiki Build
22

33
on:
44
push:
5-
branches:
6-
- master
75
paths-ignore:
86
- '.azure/**'
97
- '.circleci/**'
@@ -14,8 +12,7 @@ on:
1412
- '.github/workflows/windows.yml'
1513
- '.cirrus.yml'
1614
- 'README.md'
17-
18-
workflow_dispatch:
15+
workflow_dispatch:
1916

2017
env:
2118
BUILD_TYPE: Release
@@ -37,54 +34,46 @@ jobs:
3734
run: sudo apt-get update
3835

3936
- name: Install Dependencies
40-
run: sudo apt-get install doxygen xsltproc
37+
run: sudo apt-get install doxygen xsltproc libxslt1-dev
4138

4239
- name: Create Build Environment
4340
run: cmake -E make_directory ${{runner.workspace}}/build
4441

42+
- name: Set up Python
43+
uses: actions/setup-python@v6
44+
with:
45+
python-version: "3.13"
46+
47+
- name: Install Python dependencies
48+
run: 'pip install --only-binary :all: --require-hashes -r doc/zensical/requirements.lock'
49+
4550
- name: Configure CMake
4651
shell: bash
4752
working-directory: ${{runner.workspace}}/build
4853
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
4954

50-
- name: Build
55+
- name: Build unified wiki and API documentation site
5156
shell: bash
5257
working-directory: ${{runner.workspace}}/build
53-
run: cmake --build . --config $BUILD_TYPE --target doxygen
58+
run: cmake --build . --config $BUILD_TYPE --target zensical
5459

55-
- name: Set up Python
56-
uses: actions/setup-python@v6
60+
- name: Upload documentation site as artifact
61+
uses: actions/upload-artifact@v4
5762
with:
58-
python-version: "3.13"
63+
name: fluidsynth-docs-${{ github.sha }}
64+
path: .zensical/wiki/
65+
retention-days: 7
5966

60-
- name: Install zensical
61-
run: pip install zensical
62-
63-
- name: Build
64-
run: zensical build --clean
65-
66-
- name: Publish Wiki to GH Pages Repo
67+
- name: Publish to GH Pages
68+
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
6769
uses: JamesIves/github-pages-deploy-action@v4
6870
with:
69-
folder: ${{runner.workspace}}/fluidsynth/.zensical/wiki/
71+
folder: .zensical/wiki/
7072
repository-name: FluidSynth/fluidsynth.github.io
7173
branch: main
7274
ssh-key: ${{ secrets.DEPLOY_API_TOKEN }}
7375
target-folder: wiki/
7476
clean: true
75-
commit-message: Updating wiki from fluidsynth master
77+
commit-message: Updating wiki and API docs from fluidsynth master
7678
git-config-name: Zensical Deploy
7779
git-config-email: fluid-wiki-deploy@fluidsynth.github.io
78-
79-
- name: Publish API Docs to GH Pages
80-
uses: JamesIves/github-pages-deploy-action@v4
81-
with:
82-
folder: ${{runner.workspace}}/build/doc/api/html/
83-
repository-name: FluidSynth/fluidsynth.github.io
84-
branch: main
85-
target-folder: api/
86-
ssh-key: ${{ secrets.DEPLOY_API_TOKEN }}
87-
clean: true
88-
commit-message: Updating API doc from fluidsynth master
89-
git-config-name: API Doc Deploy
90-
git-config-email: fluid-api-deploy@fluidsynth.github.io

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,12 @@ install_manifest.txt
4242
*.pro.user*
4343
*.user
4444
*.vscode
45+
latex/
4546
.idea/
4647

4748
# Built docs
4849
/.zensical/
4950
/.cache/
51+
/zensical_runtime.toml
5052
_codeql_build_dir/
5153
_codeql_detected_source_root

Dockerfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,12 @@ RUN zypper refresh && zypper install --no-recommends -y doxygen astyle gdb sox f
1616

1717
RUN zypper refresh && zypper install --no-recommends -y glib2-devel ninja
1818

19+
# Documentation build dependencies:
20+
# python3 + pipx -- for zensical
21+
# libxslt-tools -- provides xsltproc for the XSLT pipeline
22+
RUN zypper refresh && zypper install --no-recommends -y python3 python3-pipx libxslt-tools
23+
RUN pipx install zensical && pipx ensurepath
24+
25+
ENV PATH="/root/.local/bin:${PATH}"
26+
1927
ENTRYPOINT ["/bin/bash"]

doc/CMakeLists.txt

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,142 @@ if ( DOXYGEN_FOUND )
5050
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
5151
)
5252
add_dependencies(doxygen doxygen_settings)
53+
54+
# -- XSLT-based Zensical targets --
55+
set ( XSLT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zensical/xslt )
56+
57+
# Convert fluidsettings.xml to Markdown using XSLT
58+
# Output goes directly into the wiki docs_dir so zensical.toml picks it up
59+
add_custom_target ( fluidsettings2md
60+
COMMAND ${CMAKE_COMMAND} -E make_directory
61+
${CMAKE_CURRENT_SOURCE_DIR}/wiki/settings
62+
COMMAND bash ${XSLT_DIR}/run-xslt.sh
63+
fluidsettings
64+
${CMAKE_CURRENT_SOURCE_DIR}/fluidsettings.xml
65+
${CMAKE_CURRENT_SOURCE_DIR}/wiki/settings
66+
${XSLT_DIR}/fluidsettings2md.xsl
67+
COMMENT "Converting fluidsettings.xml to Markdown via XSLT"
68+
)
69+
70+
# Convert Doxygen XML output to API Markdown using XSLT
71+
# Output goes directly into the wiki docs_dir so zensical.toml picks it up
72+
add_custom_target ( doxy2md
73+
COMMAND ${CMAKE_COMMAND} -E make_directory
74+
${CMAKE_CURRENT_SOURCE_DIR}/wiki/api
75+
COMMAND bash ${XSLT_DIR}/run-xslt.sh
76+
doxy
77+
${CMAKE_CURRENT_BINARY_DIR}/api/xml
78+
${CMAKE_CURRENT_SOURCE_DIR}/wiki/api
79+
${XSLT_DIR}/doxy2md.xsl
80+
${CMAKE_CURRENT_SOURCE_DIR}/fluidsettings.xml
81+
DEPENDS doxygen
82+
COMMENT "Converting Doxygen XML to API reference Markdown via XSLT"
83+
)
84+
85+
endif ( LIBXSLT_XSLTPROC_EXECUTABLE )
86+
87+
# ---------------------------------------------------------------------------
88+
# Zensical documentation site
89+
#
90+
# The site requires Python 3 plus the packages listed in
91+
# doc/zensical/requirements.txt. Install them once with:
92+
# pip install -r doc/zensical/requirements.txt
93+
#
94+
# Build targets (XSLT pipeline):
95+
# fluidsettings2md -- convert fluidsettings.xml to settings Markdown (XSLT)
96+
# doxy2md -- convert Doxygen XML group output to API reference Markdown (XSLT)
97+
# usage2md -- convert Doxygen page XML to usage guide Markdown (XSLT)
98+
# recent_changes2md -- convert RecentChanges page XML to api/recent-changes.md (XSLT)
99+
# zensical -- run all of the above, then build the unified wiki+API site
100+
# ---------------------------------------------------------------------------
101+
find_program ( ZENSICAL_EXECUTABLE NAMES zensical )
102+
103+
set ( WIKI_DOCS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/wiki )
104+
set ( ZENSICAL_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/zensical/scripts )
105+
106+
if ( LIBXSLT_XSLTPROC_EXECUTABLE )
107+
108+
# -- Convert usage \page XML to usage guide Markdown (XSLT) ---------------
109+
# Processes all usage guide pages from Doxygen page XML (built by doxygen target).
110+
# Skips RecentChanges (handled by recent_changes2md below).
111+
# The api_prefix "../api/" is passed so that cross-references from usage/
112+
# pages to API symbols resolve to ../api/<group>.md#<symbol>.
113+
# NOTE: CMake strips empty-string arguments from COMMAND lists. Use the
114+
# sentinel "_nofilter_" (handled by run-xslt.sh) to mean "no filter".
115+
add_custom_target ( usage2md
116+
COMMAND ${CMAKE_COMMAND} -E make_directory ${WIKI_DOCS_DIR}/usage
117+
COMMAND bash ${XSLT_DIR}/run-xslt.sh
118+
pages
119+
${CMAKE_CURRENT_BINARY_DIR}/api/xml
120+
${WIKI_DOCS_DIR}/usage
121+
${XSLT_DIR}/doxy2md.xsl
122+
"../api/"
123+
"_nofilter_"
124+
${CMAKE_CURRENT_SOURCE_DIR}/fluidsettings.xml
125+
DEPENDS doxygen
126+
COMMENT "Converting Doxygen page XML to usage guide Markdown via XSLT"
127+
)
128+
129+
# -- Convert RecentChanges page XML to api/recent-changes.md (XSLT) -------
130+
# Uses the same pages mode but filters to only the RecentChanges page.
131+
# API prefix is "./" (already in the api/ directory).
132+
add_custom_target ( recent_changes2md
133+
COMMAND ${CMAKE_COMMAND} -E make_directory ${WIKI_DOCS_DIR}/api
134+
COMMAND bash ${XSLT_DIR}/run-xslt.sh
135+
pages
136+
${CMAKE_CURRENT_BINARY_DIR}/api/xml
137+
${WIKI_DOCS_DIR}/api
138+
${XSLT_DIR}/doxy2md.xsl
139+
"./"
140+
"RecentChanges"
141+
${CMAKE_CURRENT_SOURCE_DIR}/fluidsettings.xml
142+
DEPENDS doxygen
143+
COMMENT "Converting RecentChanges page XML to Markdown via XSLT"
144+
)
145+
146+
# -- Generate API examples page --------------------------------------------
147+
add_custom_target ( examples2md
148+
COMMAND bash ${XSLT_DIR}/run-xslt.sh
149+
examples
150+
${CMAKE_CURRENT_SOURCE_DIR}/examples
151+
${WIKI_DOCS_DIR}/api
152+
COMMENT "Generating API examples page"
153+
)
154+
53155
endif ( LIBXSLT_XSLTPROC_EXECUTABLE )
54156

157+
# -- Build the unified wiki + API documentation site (XSLT pipeline) ------
158+
# All content is generated into doc/wiki/ by the targets above.
159+
# A CMake script (gen-zensical-config.cmake) reads zensical.toml.in, fills in
160+
# @API_NAV_ENTRIES@ with the list of generated API pages (so the sidebar and
161+
# breadcrumbs work for every page), and writes a runtime config to the PROJECT
162+
# SOURCE ROOT (not the build dir).
163+
# Writing it there ensures that docs_dir = "doc/wiki" in the config resolves
164+
# correctly relative to the config file – zensical requires docs_dir to be
165+
# a relative path. The file is gitignored via the root .gitignore.
166+
if ( LIBXSLT_XSLTPROC_EXECUTABLE AND ZENSICAL_EXECUTABLE )
167+
set ( ZENSICAL_RUNTIME_CONFIG ${CMAKE_SOURCE_DIR}/zensical_runtime.toml )
168+
add_custom_target ( zensical
169+
COMMAND ${CMAKE_COMMAND}
170+
-D WIKI_DIR=${WIKI_DOCS_DIR}
171+
-D OUTPUT=${ZENSICAL_RUNTIME_CONFIG}
172+
-D TEMPLATE=${CMAKE_SOURCE_DIR}/zensical.toml.in
173+
-P ${ZENSICAL_SCRIPTS}/gen-zensical-config.cmake
174+
COMMAND ${ZENSICAL_EXECUTABLE} build --clean
175+
-f ${ZENSICAL_RUNTIME_CONFIG}
176+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
177+
DEPENDS fluidsettings2md doxy2md
178+
usage2md recent_changes2md examples2md
179+
COMMENT "Building unified wiki and API documentation site (XSLT pipeline)"
180+
)
181+
elseif ( NOT LIBXSLT_XSLTPROC_EXECUTABLE )
182+
message ( STATUS "xsltproc not found -- 'zensical' CMake target unavailable.\n"
183+
"Install it with: sudo apt-get install xsltproc" )
184+
else ()
185+
message ( STATUS "zensical executable not found -- 'zensical' CMake target unavailable.\n"
186+
"Install it with: pip install -r doc/zensical/requirements.txt" )
187+
endif ()
188+
55189
endif ( DOXYGEN_FOUND )
56190

57191

doc/Doxyfile.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ INPUT = \
8787
@CMAKE_SOURCE_DIR@/doc/fluidsynth-v20-devdoc.txt \
8888
@CMAKE_SOURCE_DIR@/doc/recent_changes.txt \
8989
@CMAKE_SOURCE_DIR@/doc/usage \
90-
@CMAKE_SOURCE_DIR@/doc/reverbators.md \
9190
@CMAKE_SOURCE_DIR@/include \
9291
@CMAKE_SOURCE_DIR@/src \
9392
@CMAKE_BINARY_DIR@/include/fluidsynth \
@@ -194,7 +193,7 @@ MAN_LINKS = NO
194193
#---------------------------------------------------------------------------
195194
# configuration options related to the XML output
196195
#---------------------------------------------------------------------------
197-
GENERATE_XML = NO
196+
GENERATE_XML = YES
198197
XML_OUTPUT = xml
199198
XML_PROGRAMLISTING = YES
200199
#---------------------------------------------------------------------------

doc/README

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
To build FluidSynth API reference documentation, make sure you have Doxygen
2-
installed.
1+
This directory contains most of FluidSynth's documentation. It's historically grown.
2+
3+
* The wiki/ folder is probably the most important one, as it contains the markdown files for fluidsynth's wiki page.
4+
* The usage/ folder contains doxygen text files that explain some aspects of fluidsynth's API
5+
* The zensical/ folder contains stuff needed for generating the Zensical based webpage
6+
7+
To build FluidSynth API reference documentation, make sure you have Zensical https://zensical.org/docs/get-started/
8+
installed. Alternatively, use their docker container found on DockerHub.
39

410
If you are using the cmake build system, change to the build directory and
5-
execute the following command in this doc/ directory:
11+
execute the following command:
12+
13+
$ make zensical
14+
15+
Then, cd to the repository root directory and run Zensical in a container to preview the webpage, e.g.:
616

7-
$ make doxygen
17+
$ docker run --user $(id -u):$(id -g) --rm -it -p 8000:8000 -v ${PWD}:/docs zensical/zensical serve -f zensical_runtime.toml --dev-addr=0.0.0.0:8000
818

919
The latest generated API HTML docs can also be found at:
1020
https://www.fluidsynth.org/api/
1121

1222
Even more documentation references are provided on our wiki page:
13-
https://www.fluidsynth.org/wiki/Documentation
23+
https://www.fluidsynth.org/wiki/

0 commit comments

Comments
 (0)