summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Doxyfile.in (renamed from doc/c/Doxyfile)9
-rw-r--r--doc/api/meson.build9
-rw-r--r--doc/c/index.rst10
-rw-r--r--doc/c/wscript43
-rw-r--r--doc/conf.py.in124
-rw-r--r--doc/html/meson.build39
-rw-r--r--doc/index.rst (renamed from doc/summary.rst)14
-rw-r--r--doc/lv2apply.1100
-rw-r--r--doc/lv2bench.155
-rw-r--r--doc/lv2info.198
-rw-r--r--doc/lv2ls.189
-rw-r--r--doc/meson.build71
-rw-r--r--doc/overview.rst (renamed from doc/c/overview.rst)4
-rw-r--r--doc/plugins.rst (renamed from doc/c/plugins.rst)4
-rw-r--r--doc/singlehtml/meson.build33
-rw-r--r--doc/uis.rst (renamed from doc/c/uis.rst)4
-rw-r--r--doc/world.rst (renamed from doc/c/world.rst)4
-rw-r--r--doc/xml/meson.build36
18 files changed, 556 insertions, 190 deletions
diff --git a/doc/c/Doxyfile b/doc/Doxyfile.in
index ce10524..2ca5694 100644
--- a/doc/c/Doxyfile
+++ b/doc/Doxyfile.in
@@ -1,3 +1,6 @@
+# Copyright 2021-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
PROJECT_NAME = Lilv
PROJECT_BRIEF = "A library for simple use of LV2 plugins"
@@ -21,6 +24,8 @@ SHOW_FILES = NO
MACRO_EXPANSION = YES
PREDEFINED = LILV_API LILV_DEPRECATED
-INPUT = ../../include/lilv/lilv.h
+RECURSIVE = YES
+STRIP_FROM_PATH = @LILV_SRCDIR@
+INPUT = @LILV_SRCDIR@/include/lilv/lilv.h
-OUTPUT_DIRECTORY = .
+OUTPUT_DIRECTORY = @DOX_OUTPUT@
diff --git a/doc/api/meson.build b/doc/api/meson.build
new file mode 100644
index 0000000..a470564
--- /dev/null
+++ b/doc/api/meson.build
@@ -0,0 +1,9 @@
+# Copyright 2021-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+api_lilv_rst = custom_target(
+ 'lilv.rst',
+ command: [sphinxygen, '-f', '@INPUT0@', '@OUTDIR@'],
+ input: doxygen_xml,
+ output: 'lilv.rst',
+)
diff --git a/doc/c/index.rst b/doc/c/index.rst
deleted file mode 100644
index 6968981..0000000
--- a/doc/c/index.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-####
-Lilv
-####
-
-.. include:: summary.rst
-
-.. toctree::
-
- overview
- api/lilv
diff --git a/doc/c/wscript b/doc/c/wscript
deleted file mode 100644
index d515ddf..0000000
--- a/doc/c/wscript
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python
-
-def build(bld):
- dox_to_sphinx = bld.path.find_node("../../scripts/dox_to_sphinx.py")
- index_xml = bld.path.get_bld().make_node("xml/index.xml")
-
- files = [
- ("../summary.rst", "sphinx/summary.rst"),
- ("index.rst", "sphinx/index.rst"),
- ("overview.rst", "sphinx/overview.rst"),
- ("plugins.rst", "sphinx/plugins.rst"),
- ("uis.rst", "sphinx/uis.rst"),
- ("world.rst", "sphinx/world.rst"),
- ]
-
- # Run Doxygen to generate XML documentation
- bld(features="doxygen", doxyfile="Doxyfile")
-
- # Substitute variables to make Sphinx configuration file
- bld(features="subst",
- source="../conf.py.in",
- target="sphinx/conf.py",
- LILV_VERSION=bld.env.LILV_VERSION)
-
- # Copy static documentation files to Sphinx build directory
- for f in files:
- bld(features="subst", is_copy=True, source=f[0], target=f[1])
-
- # Generate Sphinx markup from Doxygen XML
- bld.add_group()
- bld(rule="${PYTHON} " + dox_to_sphinx.abspath() + " -f ${SRC} ${TGT}",
- source=index_xml,
- target="sphinx/api/")
-
- doc_dir = bld.env.DOCDIR + "/lilv-%s/" % bld.env.LILV_MAJOR_VERSION
-
- # Run Sphinx to generate HTML documentation
- for builder in ["html", "singlehtml"]:
- bld(features="sphinx",
- sphinx_source=bld.path.get_bld().make_node("sphinx"),
- sphinx_output_format=builder,
- sphinx_options=["-E", "-q", "-t", builder],
- install_path=doc_dir + "c/%s/" % builder)
diff --git a/doc/conf.py.in b/doc/conf.py.in
index e62eaff..1831ded 100644
--- a/doc/conf.py.in
+++ b/doc/conf.py.in
@@ -1,9 +1,14 @@
+# Copyright 2020-2025 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: ISC
+
# Project information
-project = "Lilv"
-copyright = "2020, David Robillard"
+project = "@LILV_TITLE@"
+copyright = "2020-2025, David Robillard"
author = "David Robillard"
release = "@LILV_VERSION@"
+version = "@LILV_VERSION@"
+desc = "A library for loading LV2 plugins"
# General configuration
@@ -12,6 +17,13 @@ language = "en"
nitpicky = True
pygments_style = "friendly"
+try:
+ import sphinx_lv2_theme
+
+ have_lv2_theme = True
+except ModuleNotFoundError:
+ have_lv2_theme = False
+
# Ignore everything opaque or external for nitpicky mode
_opaque = [
"FILE",
@@ -38,42 +50,78 @@ nitpick_ignore = list(map(lambda x: ("c:identifier", x), _opaque))
# HTML output
-html_theme = "sphinx_lv2_theme"
html_copy_source = False
-html_short_title = "Lilv"
-
-if tags.has('singlehtml'):
- html_sidebars = {
- "**": [
- "globaltoc.html",
- ]
- }
-
- html_theme_options = {
- "body_max_width": "65em",
- "body_min_width": "50em",
- "description": "A library for loading LV2 plugins",
- "show_footer_version": True,
- "show_logo_version": False,
- "logo_name": True,
- "nosidebar": False,
- "page_width": "80em",
- "sidebar_width": "11em",
- "globaltoc_maxdepth": 3,
- "globaltoc_collapse": False,
- }
+html_secnumber_suffix = " "
+html_short_title = "@LILV_TITLE@"
+
+html_theme_options = {
+ "description": desc,
+ "logo_name": True,
+ "logo_width": "8em",
+}
+
+if tags.has("singlehtml"):
+ html_sidebars = {"**": ["globaltoc.html"]}
+ html_theme_options.update(
+ {
+ "globaltoc_collapse": False,
+ "globaltoc_maxdepth": 3,
+ "nosidebar": False,
+ "page_width": "80em",
+ }
+ )
+else:
+ html_theme_options.update(
+ {
+ "globaltoc_collapse": True,
+ "globaltoc_maxdepth": 1,
+ "nosidebar": True,
+ "page_width": "60em",
+ }
+ )
+
+if have_lv2_theme:
+ html_theme = "sphinx_lv2_theme"
+
+ html_theme_options.update(
+ {
+ "show_footer_version": True,
+ "show_logo_version": True,
+ }
+ )
+
+ if tags.has("singlehtml"):
+ html_theme_options.update(
+ {
+ "body_max_width": "64em",
+ "body_min_width": "64em",
+ "nosidebar": False,
+ "sidebar_width": "12em",
+ }
+ )
+
+ else:
+ html_theme_options.update(
+ {
+ "body_max_width": "60em",
+ "body_min_width": "40em",
+ }
+ )
else:
- html_theme_options = {
- "body_max_width": "60em",
- "body_min_width": "40em",
- "description": "A library for loading LV2 plugins",
- "show_footer_version": True,
- "show_logo_version": False,
- "logo_name": True,
- "nosidebar": True,
- "page_width": "60em",
- "sidebar_width": "14em",
- "globaltoc_maxdepth": 1,
- "globaltoc_collapse": True,
- }
+ html_theme = "alabaster"
+
+ if tags.has("singlehtml"):
+ html_theme_options = {
+ "body_max_width": "58em",
+ "body_min_width": "40em",
+ "sidebar_width": "16em",
+ }
+
+ else:
+ html_theme_options = {
+ "body_max_width": "60em",
+ "body_min_width": "40em",
+ "nosidebar": True,
+ "show_relbars": True,
+ }
diff --git a/doc/html/meson.build b/doc/html/meson.build
new file mode 100644
index 0000000..59da474
--- /dev/null
+++ b/doc/html/meson.build
@@ -0,0 +1,39 @@
+# Copyright 2021-2023 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+html_dir = docdir / versioned_name / 'html'
+
+# TODO: Add install_tag: 'doc' after requiring meson 0.60.0
+
+custom_target(
+ 'html',
+ build_by_default: true,
+ command: sphinx_build_command + [
+ '-b', 'html',
+ '-t', 'html',
+ sphinx_in_dir,
+ '@OUTDIR@',
+ ],
+ input: [api_lilv_rst, conf_py, sphinx_input],
+ install: true,
+ install_dir: html_dir,
+ output: [
+ 'index.html',
+
+ '_static',
+ 'api',
+ 'genindex.html',
+ 'overview.html',
+ 'plugins.html',
+ 'uis.html',
+ 'world.html',
+ ],
+)
+
+if not meson.is_subproject()
+ summary(
+ 'HTML',
+ get_option('prefix') / html_dir,
+ section: 'Directories',
+ )
+endif
diff --git a/doc/summary.rst b/doc/index.rst
index 313ffa8..46a9026 100644
--- a/doc/summary.rst
+++ b/doc/index.rst
@@ -1,3 +1,11 @@
+..
+ Copyright 2020-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+
+####
+Lilv
+####
+
Lilv is a library for working with LV2_ plugins.
It provides several types and functions that can be used to discover plugins,
investigate their data, load and run them, and save and restore their state.
@@ -6,4 +14,10 @@ Lilv is the standard implementation used by nearly all LV2 hosts.
It implements the details of the LV2 specification on POSIX, MacOS, and Windows,
and provides a simpler portable API for applications.
+.. toctree::
+
+ overview
+ api/lilv
+
.. _LV2: http://lv2plug.in/
+
diff --git a/doc/lv2apply.1 b/doc/lv2apply.1
index 4877aba..e34a6c6 100644
--- a/doc/lv2apply.1
+++ b/doc/lv2apply.1
@@ -1,34 +1,66 @@
-.TH LV2APPLY 1 "05 Sep 2016"
-
-.SH NAME
-.B lv2apply \- apply an LV2 plugin to an audio file
-.SH SYNOPSIS
-.B lv2apply [OPTION]... PLUGIN_URI
-
-.SH OPTIONS
-.TP
-\fB\-i IN_FILE\fR
-Input file
-
-.TP
-\fB\-o OUT_FILE\fR
-Output file
-
-.TP
-\fB\-c SYM VAL\fR
-Set control port SYM to VAL
-
-.TP
-\fB\-\-help\fR
-Display help and exit
-
-.TP
-\fB\-\-version\fR
-Display version information and exit
-
-.SH "SEE ALSO"
-.BR lv2ls(1)
-.BR lv2info(1)
-
-.SH AUTHOR
-lv2apply was written by David Robillard <d@drobilla.net>
+.\" # Copyright 2010-2025 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd January 20, 2025
+.Dt LV2APPLY 1
+.Os
+.Sh NAME
+.Nm lv2apply
+.Nd apply an LV2 plugin to an audio file
+.Sh SYNOPSIS
+.Nm lv2apply
+.Op Fl Vh
+.Op Fl c Ar symbol value
+.Op Fl i Ar in_file
+.Op Fl o Ar out_file
+.Op Fl Fl help
+.Op Fl Fl version
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+runs an LV2 plugin on an audio file and writes the processed output to another.
+.Pp
+The options are as follows:
+.Pp
+.Bl -tag -compact -width 3n
+.It Fl V , Fl Fl version
+Display version information and exit.
+.Pp
+.It Fl c Ar symbol value
+Set control port
+.Ar symbol
+to
+.Ar value.
+.Pp
+.It Fl h , Fl Fl help
+Print the command line options.
+.Pp
+.It Fl i Ar in_file
+Input file path.
+.Pp
+.It Fl o Ar out_file
+Output file path.
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width LV2_PATH -compact
+.It Ev LV2_PATH
+List of directories to search for LV2 plugin bundles,
+in the style of
+.Ev PATH .
+.El
+.Sh EXIT STATUS
+.Nm
+exits with a status of 0, or non-zero if an error occurred.
+.Sh SEE ALSO
+.Bl -item -compact
+.It
+.Xr lv2bench 1
+.It
+.Xr lv2info 1
+.It
+.Xr lv2ls 1
+.El
+.Sh AUTHORS
+.Nm
+is a part of lilv, by
+.An David Robillard
+.Aq Mt d@drobilla.net .
diff --git a/doc/lv2bench.1 b/doc/lv2bench.1
new file mode 100644
index 0000000..78e1340
--- /dev/null
+++ b/doc/lv2bench.1
@@ -0,0 +1,55 @@
+.\" # Copyright 2024-2025 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd January 20, 2025
+.Dt LV2BENCH 1
+.Os
+.Sh NAME
+.Nm lv2bench
+.Nd benchmark all installed and supported LV2 plugins
+.Sh SYNOPSIS
+.Nm lv2bench
+.Op Fl fhV
+.Op Fl b Ar block_size
+.Op Fl n Ar frames
+.Op Fl Fl full
+.Op Fl Fl help
+.Op Fl Fl version
+.Sh DESCRIPTION
+.Nm
+is a simple utility for running basic benchmarks of installed LV2 plugins.
+.Pp
+The options are as follows:
+.Pp
+.Bl -tag -compact -width 3n
+.It Fl V , Fl Fl version
+Display version information and exit.
+.Pp
+.It Fl b Ar block_size
+Block size, in audio frames.
+.Pp
+.It Fl f , Fl Fl full
+Emit full plottable output with values for every block.
+.Pp
+.It Fl h , Fl Fl help
+Print the command line options.
+.Pp
+.It Fl n Ar frames
+Total number of audio frames to process.
+.El
+.Sh EXIT STATUS
+.Nm
+exits with a status of 0, or non-zero if an error occurred.
+.Sh SEE ALSO
+.Bl -item -compact
+.It
+.Xr lv2apply 1
+.It
+.Xr lv2info 1
+.It
+.Xr lv2ls 1
+.El
+.Sh AUTHORS
+.Nm
+is a part of lilv, by
+.An David Robillard
+.Aq Mt d@drobilla.net .
diff --git a/doc/lv2info.1 b/doc/lv2info.1
index 32a3bec..8f82f8f 100644
--- a/doc/lv2info.1
+++ b/doc/lv2info.1
@@ -1,33 +1,65 @@
-.TH LV2INFO 1 "05 Sep 2016"
-
-.SH NAME
-.B lv2info \- print information about an installed LV2 plugin
-.SH SYNOPSIS
-.B lv2info PLUGIN_URI
-
-.SH OPTIONS
-.TP
-\fB\-p FILE\fR
-Write Turtle description of plugin to FILE
-
-.TP
-\fB\-m FILE\fR
-Add record of plugin to manifest FILE
-
-.TP
-\fB\-\-help\fR
-Display help and exit
-
-.TP
-\fB\-\-version\fR
-Display version information and exit
-
-.SH "SEE ALSO"
-.BR lilv(3),
-.BR lv2ls(1)
-
-.SH AUTHOR
-lv2info was written by David Robillard <d@drobilla.net>
-.PP
-This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz>
-and David Robillard <d@drobilla.net>
+.\" # Copyright 2009-2025 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd January 20, 2025
+.Dt LV2INFO 1
+.Os
+.Sh NAME
+.Nm lv2info
+.Nd print information about an installed LV2 plugin
+.Sh SYNOPSIS
+.Nm lv2info
+.Op Fl hV
+.Op Fl m Ar file
+.Op Fl p Ar file
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+prints a human-readable summary of information about an LV2 plugin.
+.Pp
+The plugin must be installed;
+.Nm
+will search for one with the given
+.Ar plugin_uri
+in the LV2 path.
+.Pp
+The options are as follows:
+.Pp
+.Bl -tag -compact -width 3n
+.It Fl V , Fl Fl version
+Display version information and exit.
+.Pp
+.It Fl h , Fl Fl help
+Print the command line options.
+.Pp
+.It Fl m Ar file
+Add record of plugin to Turtle manifest
+.Ar file .
+.Pp
+.It Fl p Ar file
+Write description of plugin to Turtle
+.Ar file .
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width LV2_PATH -compact
+.It Ev LV2_PATH
+List of directories to search for LV2 plugin bundles,
+in the style of
+.Ev PATH .
+.El
+.Sh EXIT STATUS
+.Nm
+exits with a status of 0, or non-zero if an error occurred.
+.Sh SEE ALSO
+.Bl -item -compact
+.It
+.Xr lv2apply 1
+.It
+.Xr lv2bench 1
+.It
+.Xr lv2ls 1
+.El
+.Sh AUTHORS
+.Nm
+is a part of lilv, by
+.An David Robillard
+.Aq Mt d@drobilla.net .
diff --git a/doc/lv2ls.1 b/doc/lv2ls.1
index 320b71c..7cefb06 100644
--- a/doc/lv2ls.1
+++ b/doc/lv2ls.1
@@ -1,30 +1,59 @@
-.TH LV2LS 1 "26 Aug 2016"
-
-.SH NAME
-.B lv2ls \- list all installed LV2 plugins
-
-.SH SYNOPSIS
-.B lv2ls [OPTION]...
-
-.SH OPTIONS
-.TP
-\fB\-n\fR, \fB\-\-names\fR
-Show names instead of URIs
-
-.TP
-\fB\-\-help\fR
-Display help and exit
-
-.TP
-\fB\-\-version\fR
-Display version information and exit
-
-.SH "SEE ALSO"
-.BR lilv(3),
-.BR lv2info(1)
-
-.SH AUTHOR
-lv2ls was written by David Robillard <d@drobilla.net>
-.PP
-This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz>
-and David Robillard <d@drobilla.net>
+.\" # Copyright 2010-2025 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd January 20, 2025
+.Dt LV2LS 1
+.Os
+.Sh NAME
+.Nm lv2ls
+.Nd list all installed LV2 plugins
+.Sh SYNOPSIS
+.Nm lv2ls
+.Op Fl Vhn
+.Op Fl Fl help
+.Op Fl Fl names
+.Op Fl Fl version
+.Sh DESCRIPTION
+.Nm
+prints the URI of every installed LV2 plugin to stdout.
+.Pp
+Plugins are discovered with the same mechanism used by most hosts.
+The default path can be overridden by setting the
+.Ev LV2_PATH
+environment variable.
+.Pp
+The options are as follows:
+.Pp
+.Bl -tag -compact -width 3n
+.It Fl V , Fl Fl version
+Display version information and exit.
+.Pp
+.It Fl h , Fl Fl help
+Print the command line options.
+.Pp
+.It Fl n , Fl Fl names
+Show names instead of URIs.
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width LV2_PATH -compact
+.It Ev LV2_PATH
+List of directories to search for LV2 plugin bundles,
+in the style of
+.Ev PATH .
+.El
+.Sh EXIT STATUS
+.Nm
+exits with a status of 0, or non-zero if an error occurred.
+.Sh SEE ALSO
+.Bl -item -compact
+.It
+.Xr lv2apply 1
+.It
+.Xr lv2bench 1
+.It
+.Xr lv2info 1
+.El
+.Sh AUTHORS
+.Nm
+is a part of lilv, by
+.An David Robillard
+.Aq Mt d@drobilla.net .
diff --git a/doc/meson.build b/doc/meson.build
new file mode 100644
index 0000000..32a885b
--- /dev/null
+++ b/doc/meson.build
@@ -0,0 +1,71 @@
+# Copyright 2021-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+docdir = get_option('datadir') / 'doc'
+
+# Find required programs
+doxygen = find_program('doxygen', required: get_option('docs'))
+sphinx_build = find_program('sphinx-build', required: get_option('docs'))
+
+# Find sphinxygen or fall back to subproject
+sphinxygen = disabler()
+if doxygen.found() and sphinx_build.found()
+ sphinxygen = find_program('sphinxygen', required: false)
+ if not sphinxygen.found()
+ subproject('sphinxygen')
+ sphinxygen = find_program('sphinxygen', required: get_option('docs'))
+ endif
+endif
+
+# Build documentation if all required tools are found
+build_docs = doxygen.found() and sphinxygen.found() and sphinx_build.found()
+if build_docs
+ # Configure conf.py for Sphinx
+ conf_config = configuration_data()
+ conf_config.set('LILV_SRCDIR', lilv_src_root)
+ conf_config.set('LILV_TITLE', get_option('title'))
+ conf_config.set('LILV_VERSION', meson.project_version())
+ conf_py = configure_file(
+ configuration: conf_config,
+ input: files('conf.py.in'),
+ output: 'conf.py',
+ )
+
+ # Copy hand-written documentation files
+ rst_sources = files(
+ 'index.rst',
+ 'overview.rst',
+ 'plugins.rst',
+ 'uis.rst',
+ 'world.rst',
+ )
+ sphinx_input = []
+ foreach f : rst_sources
+ sphinx_input += [
+ configure_file(copy: true, input: f, output: '@PLAINNAME@'),
+ ]
+ endforeach
+
+ # Generate reference documentation input with Doxygen and Sphinxygen
+ subdir('xml')
+ subdir('api')
+
+ # Build strict Sphinx flags, with termination on warnings if werror=true
+ sphinx_in_dir = meson.current_build_dir()
+ sphinx_flags = ['-E', '-a', '-q']
+ if get_option('werror')
+ sphinx_flags += ['-W']
+ endif
+
+ # Run Sphinx to generate final documentation for each format
+ sphinx_build_command = [sphinx_build] + sphinx_flags
+ foreach format : ['html', 'singlehtml']
+ if not get_option(format).disabled()
+ subdir(format)
+ endif
+ endforeach
+endif
+
+if not meson.is_subproject()
+ summary('Documentation', build_docs, bool_yn: true, section: 'Components')
+endif
diff --git a/doc/c/overview.rst b/doc/overview.rst
index 6abc123..17ebec9 100644
--- a/doc/c/overview.rst
+++ b/doc/overview.rst
@@ -1,3 +1,7 @@
+..
+ Copyright 2020-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+
.. default-domain:: c
.. highlight:: c
diff --git a/doc/c/plugins.rst b/doc/plugins.rst
index c86431e..c7ad547 100644
--- a/doc/c/plugins.rst
+++ b/doc/plugins.rst
@@ -1,3 +1,7 @@
+..
+ Copyright 2020-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+
.. default-domain:: c
.. highlight:: c
diff --git a/doc/singlehtml/meson.build b/doc/singlehtml/meson.build
new file mode 100644
index 0000000..ed4bb71
--- /dev/null
+++ b/doc/singlehtml/meson.build
@@ -0,0 +1,33 @@
+# Copyright 2021-2023 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+singlehtml_dir = docdir / versioned_name / 'singlehtml'
+
+# TODO: Add install_tag: 'doc' after requiring meson 0.60.0
+
+custom_target(
+ 'singlehtml',
+ build_by_default: true,
+ command: sphinx_build_command + [
+ '-b', 'singlehtml',
+ '-t', 'singlehtml',
+ sphinx_in_dir,
+ '@OUTDIR@',
+ ],
+ input: [api_lilv_rst, conf_py, sphinx_input],
+ install: true,
+ install_dir: singlehtml_dir,
+ output: [
+ 'index.html',
+
+ '_static',
+ ],
+)
+
+if not meson.is_subproject()
+ summary(
+ 'Single HTML',
+ get_option('prefix') / singlehtml_dir,
+ section: 'Directories',
+ )
+endif
diff --git a/doc/c/uis.rst b/doc/uis.rst
index 5abaa2c..1169060 100644
--- a/doc/c/uis.rst
+++ b/doc/uis.rst
@@ -1,3 +1,7 @@
+..
+ Copyright 2020-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+
.. default-domain:: c
.. highlight:: c
diff --git a/doc/c/world.rst b/doc/world.rst
index 4128f77..8b71165 100644
--- a/doc/c/world.rst
+++ b/doc/world.rst
@@ -1,3 +1,7 @@
+..
+ Copyright 2020-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+
.. default-domain:: c
.. highlight:: c
diff --git a/doc/xml/meson.build b/doc/xml/meson.build
new file mode 100644
index 0000000..eb66325
--- /dev/null
+++ b/doc/xml/meson.build
@@ -0,0 +1,36 @@
+# Copyright 2021-2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+doxygen = find_program('doxygen')
+
+config = configuration_data()
+config.set('LILV_SRCDIR', lilv_src_root)
+config.set('DOX_OUTPUT', meson.current_build_dir() / '..')
+
+doxyfile = configure_file(
+ configuration: config,
+ input: files('../Doxyfile.in'),
+ output: 'Doxyfile',
+)
+
+doxygen_xml = custom_target(
+ 'index.xml',
+ command: [doxygen, '@INPUT0@'],
+ input: [doxyfile] + c_headers,
+ output: [
+ 'index.xml',
+
+ 'group__lilv.xml',
+ 'group__lilv__class.xml',
+ 'group__lilv__collections.xml',
+ 'group__lilv__instance.xml',
+ 'group__lilv__node.xml',
+ 'group__lilv__plugin.xml',
+ 'group__lilv__port.xml',
+ 'group__lilv__scalepoint.xml',
+ 'group__lilv__state.xml',
+ 'group__lilv__ui.xml',
+ 'group__lilv__world.xml',
+ 'lilv_8h.xml',
+ ],
+)