diff --git a/.gitignore b/.gitignore index ebc03dad..8dbbc1ab 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,6 @@ cmake-build-*/ /artifacts/ /docs/controller-research/ -# doxyconfig -docs/doxyconfig* +# Dockle +/.dockle/ +/_site/ diff --git a/.gitmodules b/.gitmodules index 67e53761..65b8df97 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ -[submodule "third-party/doxyconfig"] - path = third-party/doxyconfig - url = https://github.com/LizardByte/doxyconfig.git +[submodule "third-party/dockle"] + path = third-party/dockle + url = https://github.com/LizardByte/dockle.git branch = master [submodule "third-party/lizardbyte-common"] path = third-party/lizardbyte-common diff --git a/.readthedocs.yaml b/.readthedocs.yaml index ee2f3bb2..5011c067 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -8,22 +8,23 @@ version: 2 build: os: ubuntu-24.04 tools: + nodejs: "24" python: "miniconda-latest" - commands: - - | - if [ -f readthedocs_build.sh ]; then - doxyconfig_dir="." - else - doxyconfig_dir="./third-party/doxyconfig" - fi - chmod +x "${doxyconfig_dir}/readthedocs_build.sh" - export DOXYCONFIG_DIR="${doxyconfig_dir}" - "${doxyconfig_dir}/readthedocs_build.sh" + jobs: + build: + html: + - | + if [ -f readthedocs_build.sh ]; then + dockle_dir="." + else + dockle_dir="./third-party/dockle" + fi + chmod +x "${dockle_dir}/readthedocs_build.sh" + export DOCKLE_DIR="${dockle_dir}" + "${dockle_dir}/readthedocs_build.sh" -# using conda, we can get newer doxygen and graphviz than ubuntu provide -# https://github.com/readthedocs/readthedocs.org/issues/8151#issuecomment-890359661 conda: - environment: third-party/doxyconfig/environment.yml + environment: third-party/dockle/environment.yml submodules: include: all diff --git a/CMakeLists.txt b/CMakeLists.txt index 8103c50d..bad58376 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,7 +137,8 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) endif() if(BUILD_DOCS) - add_subdirectory(third-party/doxyconfig docs) + include(third-party/dockle/cmake/Dockle.cmake) + dockle_add_docs(docs TARGETS api) endif() if(BUILD_EXAMPLES) diff --git a/LICENSES/license-map.md b/LICENSES/license-map.md index 55ddae2b..2e1d3e4c 100644 --- a/LICENSES/license-map.md +++ b/LICENSES/license-map.md @@ -20,11 +20,3 @@ Every installed library distribution includes the MIT notice under `share/licenses/libvirtualhid`. The Windows driver MSI may include MIT-licensed helper components from this repository; packaged installs include both license texts for that reason. - -
- -| Previous | Next | -|:--------------------------------------|-------------------------------------------------------------:| -| [Development](../docs/development.md) | [Source Code](../third-party/doxyconfig/docs/source_code.md) | - -
diff --git a/README.md b/README.md index 531a5cc8..5328f7d0 100644 --- a/README.md +++ b/README.md @@ -197,11 +197,3 @@ licensed under the points to both complete license texts; see the [license map](https://github.com/LizardByte/libvirtualhid/blob/master/LICENSES/license-map.md) for the authoritative repository path and artifact assignments. - -
- -| Previous | Next | -|:---------|---------------------------------------------------------:| -| | [End-User Gamepad Guide](docs/end-user-gamepad-guide.md) | - -
diff --git a/dockle.toml b/dockle.toml new file mode 100644 index 00000000..f43fd5e9 --- /dev/null +++ b/dockle.toml @@ -0,0 +1,43 @@ +[project] +name = "libvirtualhid" +version = "0.0.0" +description = "Cross-platform C++ library for virtual HID devices." +repository = "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/LizardByte/libvirtualhid" +logo = "libvirtualhid.svg" +favicon = "libvirtualhid.ico" + +[build] +output = "_site" +work = ".dockle" +strict = true +clean = true + +[[targets]] +name = "api" +title = "libvirtualhid documentation" +framework = "doxygen" +source = "." +home = true + +[targets.doxygen] +inputs = [ + "README.md", + "docs/end-user-gamepad-guide.md", + "docs/usage.md", + "docs/platform-support.md", + "docs/windows-driver.md", + "docs/todo.md", + "docs/streaming-host-integration.md", + "docs/development.md", + "LICENSES/license-map.md", + "examples", + "src/include", +] +extra_stylesheets = [ + "https://cdn.jsdelivr.net/npm/@lizardbyte/shared-web@2026.920.12131/dist/crowdin-dockle-css.css", +] +extra_javascript = [ + "https://cdn.jsdelivr.net/npm/@lizardbyte/shared-web@2026.920.12131/dist/crowdin.js", + "docs/crowdin.js", +] +main_page = "README.md" diff --git a/docs/Doxyfile b/docs/Doxyfile deleted file mode 100644 index fdf482a4..00000000 --- a/docs/Doxyfile +++ /dev/null @@ -1,50 +0,0 @@ -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). -# -# Note: -# -# Use doxygen to compare the used configuration file with the template -# configuration file: -# doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template -# configuration file without replacing the environment variables or CMake type -# replacement variables: -# doxygen -x_noenv [configFile] - -# project metadata -DOCSET_BUNDLE_ID = dev.lizardbyte.libvirtualhid -DOCSET_PUBLISHER_ID = dev.lizardbyte.libvirtualhid.documentation -PROJECT_BRIEF = "Cross-platform C++ library for virtual HID devices." -PROJECT_ICON = ../libvirtualhid.svg -PROJECT_LOGO = ../libvirtualhid.svg -PROJECT_NAME = libvirtualhid - -# project specific settings -DOT_GRAPH_MAX_NODES = 50 -INCLUDE_PATH = -WARN_IF_UNDOCUMENTED = YES - -# files and directories to process -USE_MDFILE_AS_MAINPAGE = ../README.md -INPUT = ../README.md \ - end-user-gamepad-guide.md \ - usage.md \ - platform-support.md \ - windows-driver.md \ - todo.md \ - streaming-host-integration.md \ - development.md \ - ../LICENSES/license-map.md \ - ../examples \ - ../third-party/doxyconfig/docs/source_code.md \ - ../src/include diff --git a/docs/crowdin.js b/docs/crowdin.js new file mode 100644 index 00000000..8160fd18 --- /dev/null +++ b/docs/crowdin.js @@ -0,0 +1 @@ +globalThis.initCrowdIn('LizardByte-docs', 'dockle') diff --git a/docs/development.md b/docs/development.md index c183d0e3..aa0ca400 100644 --- a/docs/development.md +++ b/docs/development.md @@ -15,8 +15,8 @@ src/platform/macos/ macOS CoreGraphics keyboard and mouse backend examples/ Minimal consumers and platform smoke tests tests/ Unit and integration tests cmake/ Package config and helper modules -docs/ Project documentation and Doxygen settings -third-party/doxyconfig/ LizardByte Doxygen configuration submodule +docs/ Project documentation +third-party/dockle/ LizardByte documentation toolchain submodule third-party/googletest/ GoogleTest submodule ``` @@ -62,9 +62,9 @@ cmake-build-debug/tests/test_libvirtualhid ## Documentation -Documentation is generated by the LizardByte `doxyconfig` submodule. The project -Doxygen input is defined in `docs/Doxyfile`. The docs target combines that -file with the shared `doxyconfig` settings at build time. +Documentation is generated by Dockle. The authored inputs and project-specific +Doxygen settings are declared in `dockle.toml`; Dockle owns the generated +Doxyfile used by the CMake `docs` target. ```bash cmake --build cmake-build-debug-mingw-ucrt64-ninja --target docs @@ -96,11 +96,3 @@ code and tests provide a better source of truth. - Evaluate an optional FreeBSD CUSE-backed `uhid(4)`-compatible device for direct HID consumers. This would supplement uinput; it is not equivalent to registering a virtual device with FreeBSD's kernel HID bus. - -
- -| Previous | Next | -|:------------------------------------------------------------|------------------------------------------:| -| [Streaming-Host Integration](streaming-host-integration.md) | [License Map](../LICENSES/license-map.md) | - -
diff --git a/docs/end-user-gamepad-guide.md b/docs/end-user-gamepad-guide.md index 5d82294d..a37148b2 100644 --- a/docs/end-user-gamepad-guide.md +++ b/docs/end-user-gamepad-guide.md @@ -290,11 +290,3 @@ reaching the library but the virtual device reports it incorrectly. The [Moonlight setup guide](https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide) links the official clients and their support resources. - -
- -| Previous | Next | -|:-------------------------|--------------------------:| -| [Overview](../README.md) | [Usage and API](usage.md) | - -
diff --git a/docs/platform-support.md b/docs/platform-support.md index b15d8693..37b23585 100644 --- a/docs/platform-support.md +++ b/docs/platform-support.md @@ -461,11 +461,3 @@ Native macOS virtual-HID gamepad support is planned. A future backend may use `IOHIDUserDevice`, DriverKit/HIDDriverKit, or a combination that preserves the same public API while documenting any signing, entitlement, and installer requirements. - -
- -| Previous | Next | -|:--------------------------|--------------------------------------------:| -| [Usage and API](usage.md) | [Windows Driver Package](windows-driver.md) | - -
diff --git a/docs/streaming-host-integration.md b/docs/streaming-host-integration.md index bccaa8a9..22deb5c1 100644 --- a/docs/streaming-host-integration.md +++ b/docs/streaming-host-integration.md @@ -68,11 +68,3 @@ The core API and adapter shape cover the major streaming-host requirements: - FreeBSD uinput gamepads and pointer devices, with basic PlayStation input and rumble but without Linux UHID-only PlayStation features. - Windows UMDF/VHF gamepad creation through an installed driver package. - -
- -| Previous | Next | -|:----------------|------------------------------:| -| [TODO](todo.md) | [Development](development.md) | - -
diff --git a/docs/todo.md b/docs/todo.md index b85bfc5c..e8d1460c 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -34,11 +34,3 @@ Proposed solution: 6. Treat generated capture files as local debugging artifacts by default. Only commit a generated capture later if it is reproducible, sanitized, and used by tests or documentation in a way that justifies keeping it. - -
- -| Previous | Next | -|:--------------------------------------------|------------------------------------------------------------:| -| [Windows Driver Package](windows-driver.md) | [Streaming-Host Integration](streaming-host-integration.md) | - -
diff --git a/docs/usage.md b/docs/usage.md index 9ee760ae..d8a9ff43 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -248,11 +248,3 @@ for every profile. The `misc1` button represents Share/Capture/Mic Mute-style controls and is available on the generic, Xbox Series, DualSense, and Switch Pro profiles; Xbox 360 and Xbox One do not advertise that extra button. - -
- -| Previous | Next | -|:----------------------------------------------------|----------------------------------------:| -| [End-User Gamepad Guide](end-user-gamepad-guide.md) | [Platform Support](platform-support.md) | - -
diff --git a/docs/windows-driver.md b/docs/windows-driver.md index 510dd7ba..98ce3a05 100644 --- a/docs/windows-driver.md +++ b/docs/windows-driver.md @@ -572,11 +572,3 @@ licensed under the LizardByte Source-Available License 1.0 (LB-SAL 1.0). See the [license map](../LICENSES/license-map.md) for the full repository license split. The MSI may also include MIT-licensed helper components from this repository, so packaged installs include both license texts. - -
- -| Previous | Next | -|:----------------------------------------|----------------:| -| [Platform Support](platform-support.md) | [TODO](todo.md) | - -
diff --git a/third-party/dockle b/third-party/dockle new file mode 160000 index 00000000..c1bca827 --- /dev/null +++ b/third-party/dockle @@ -0,0 +1 @@ +Subproject commit c1bca827d905e3e64cc6663488f5f741e17e681a diff --git a/third-party/doxyconfig b/third-party/doxyconfig deleted file mode 160000 index 419127ba..00000000 --- a/third-party/doxyconfig +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 419127bad87f49b2d45fa957ea7302abbb49c01f