aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2024-11-28 09:58:22 -0500
committerDavid Robillard <d@drobilla.net>2024-12-19 19:55:39 -0500
commitb1c955b1e0e3ae6b4b0c74112ae68a2966a92d35 (patch)
treeadb35b8b9f9e310ea5de0437d791b26e2c574bb9
parent5af9d9a0bff772f232d8a232a138c903ca5ba100 (diff)
downloadjalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.tar.gz
jalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.tar.bz2
jalv-b1c955b1e0e3ae6b4b0c74112ae68a2966a92d35.zip
Rewrite man pages in mdocHEADmain
-rw-r--r--AUTHORS3
-rw-r--r--NEWS3
-rw-r--r--doc/jalv.1205
-rw-r--r--doc/jalv.gtk3.1150
-rw-r--r--doc/jalv.qt5.153
-rw-r--r--doc/jalv.qt6.129
-rw-r--r--doc/mandoc.css327
-rw-r--r--doc/meson.build60
-rw-r--r--meson_options.txt3
9 files changed, 667 insertions, 166 deletions
diff --git a/AUTHORS b/AUTHORS
index 421e241..2f3eaf8 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -15,3 +15,6 @@ Original Qt generic UI:
GTK plugin selector UI:
Alexandros Theodotou <alex@zrythm.org>
+
+Original man pages:
+ Jaromír Mikes <mira.mikes@seznam.cz>
diff --git a/NEWS b/NEWS
index 981d430..ae34b27 100644
--- a/NEWS
+++ b/NEWS
@@ -18,12 +18,13 @@ jalv (1.6.9) unstable; urgency=medium
* Remove limits on the size of messages sent from plugin to UI
* Remove transport position dumping from Jack process callback
* Replace use of deprecated Gtk interfaces
+ * Rewrite man pages in mdoc
* Switch to external zix dependency
* Use Gtk switches instead of checkboxes for toggle controls
* Use fewer platform-specific APIs
* Use portable zix filesystem API
- -- David Robillard <d@drobilla.net> Mon, 25 Nov 2024 01:29:18 +0000
+ -- David Robillard <d@drobilla.net> Fri, 20 Dec 2024 00:45:28 +0000
jalv (1.6.8) stable; urgency=medium
diff --git a/doc/jalv.1 b/doc/jalv.1
index 068596c..a0ec16c 100644
--- a/doc/jalv.1
+++ b/doc/jalv.1
@@ -1,84 +1,125 @@
-.TH JALV 1 "18 Feb 2017"
-
-.SH NAME
-.B jalv \- Run an LV2 plugin as a JACK application (console version).
-
-.SH SYNOPSIS
-.B jalv [OPTION]... PLUGIN_URI
-
-.SH OPTIONS
-
-.TP
-\fB\-b SIZE\fR
-Buffer size for plugin <=> UI communication.
-
-.TP
-\fB\-c SYM=VAL\fR
-Set control value (e.g. "vol=1.4").
-
-.TP
-\fB\-d\fR
-Dump plugin <=> UI communication.
-
-.TP
-\fB\-U URI\fR
-Load the UI with the given URI.
-
-.TP
-\fB\-h\fR
-Print the command line options.
-
-.TP
-\fB\-i\fR
-Ignore input on stdin (for background use).
-
-.TP
-\fB\-l DIR\fR
-Load state from state directory.
-
-.TP
-\fB\-n NAME\fR
-Jack client name
-
-.TP
-\fB\-p\fR
-Print control output changes to stdout.
-
-.TP
-\fB\-s\fR
+.\" # Copyright 2024 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd December 20, 2024
+.Dt JALV 1
+.Os
+.Sh NAME
+.Nm jalv
+.Nd run an LV2 plugin with a command-line interface
+.Sh SYNOPSIS
+.Nm jalv
+.Op Fl dhipstx
+.Op Fl b Ar size
+.Op Fl c Ar symbol=value
+.Op Fl U Ar ui_uri
+.Op Fl l Ar dir
+.Op Fl n Ar name
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+is a simple LV2 host that runs one plugin.
+It has several versions, this one has an interactive command-line interface.
+.Pp
+.Nm
+has one positional argument, the URI of an installed LV2 plugin.
+.Pp
+The options are as follows:
+.Bl -tag -width 3n
+.It Fl b Ar bytes
+Buffer size for communication between plugin and UI.
+The default value should be enough,
+but if there are overflows,
+this option can be used to allocate more space.
+.It Fl c Ar symbol=value
+Set control value, for example,
+.Fl c Ar vol=1.4
+where
+.Dq vol
+is the symbol of a control port on the plugin.
+.It Fl d
+Dump communication between plugin and UI to
+.Dv stdout .
+Note that this may print an extreme amount of text,
+piping the output to a pager or file is recommended.
+.It Fl h
+Print the command line options and exit.
+.It Fl i
+Ignore input on
+.Dv stdin
+and run non-interactively.
+.It Fl l Ar dir
+Load state from the given directory before running the plugin.
+.It Fl n Ar name
+Use the given JACK client name.
+Note that JACK may adjust the name if necessary unless
+.Fl x
+is also given.
+.It Fl p
+Print control output changes to
+.Dv stdout .
+.It Fl s
Show plugin UI if possible.
-
-This option only works when plugins provide a UI that is usable via the non-embeddable showHide interface. For other, embeddable UIs, use jalv.gtk3(1) or jalv.qt5(1).
-
-.TP
-\fB\-t\fR
-Print trace messages from plugin
-
-.TP
-\fB\-x\fR
-Use only exact Jack client name, and exit if it is taken
-
-.SH COMMANDS
-
+This option only works when plugins provide a UI that uses the non-embeddable
+.Li showHide
+interface.
+For embeddable UIs, use
+.Xr jalv.gtk3 1
+instead.
+.It Fl t
+Print trace messages from plugin.
+This enables the
+.Dq trace
+log defined by LV2, which is used by some plugins to print debugging output.
+.It Fl U Ar uri
+Load the UI with the given URI.
+Usually only one suitable UI is available on a given platform,
+which is used by default.
+If there are several, this option can be used to select which is loaded.
+.It Fl V
+Print version information and exit.
+.It Fl x
+Use only the exact JACK client name given by
+.Fl n
+or exit if it's unavailable.
+.El
+.Sh COMMANDS
The Jalv prompt supports several commands for interactive control:
-
- \fBhelp\fR Display help message
- \fBcontrols\fR Print settable control values
- \fBmonitors\fR Print output control values
- \fBpresets\fR Print available presets
- \fBpreset URI\fR Set preset
- \fBset INDEX VALUE\fR Set control value by port index
- \fBset SYMBOL VALUE\fR Set control value by symbol
- \fBSYMBOL = VALUE\fR Set control value by symbol
-
-.SH "SEE ALSO"
-.BR jalv.gtk3(1),
-.BR jalv.qt5(2),
-.BR lv2ls(1),
-.BR jackd(1)
-
-.SH AUTHOR
-jalv 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>
+.Pp
+.Bl -tag -width 16n -compact
+.It Ic help
+Display help message.
+.It Ic controls
+Print settable control values.
+.It Ic monitors
+Print output control values.
+.It Ic presets
+Print available presets.
+.It Ic preset Ar uri
+Set preset.
+.It Ic set index value
+Set control value by port index.
+.It Ic set Ar symbol Ar value
+Set control value by symbol.
+.It Ar symbol Cm = Ar value
+Set control value by symbol.
+.El
+.Sh ENVIRONMENT
+.Bl -tag -width LV2_PATH
+.It Ev LV2_PATH
+Search path for LV2 bundles, in
+.Ev PATH
+format.
+.El
+.Sh SEE ALSO
+.Xr jalv.gtk3 1 ,
+.Xr jalv.qt5 1 ,
+.Xr lv2ls 1
+.Sh AUTHORS
+.Nm
+was written by
+.An David Robillard
+.Aq Mt d@drobilla.net ,
+with contributions by
+Robin Gareus,
+Hanspeter Portner,
+and others.
diff --git a/doc/jalv.gtk3.1 b/doc/jalv.gtk3.1
index 1cb8dc1..953c5b0 100644
--- a/doc/jalv.gtk3.1
+++ b/doc/jalv.gtk3.1
@@ -1,57 +1,101 @@
-.TH JALV.GTK3 1 "27 May 2022"
-
-.SH NAME
-.B jalv.gtk \- Run an LV2 plugin as a JACK application (Gtk3 version).
-
-.SH SYNOPSIS
-.B jalv.gtk [OPTION]... PLUGIN_URI
-
-.SH OPTIONS
-
-.TP
-\fB\-b SIZE\fR
+.\" # Copyright 2024 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd December 20, 2024
+.Dt JALV.GTK3 1
+.Os
+.Sh NAME
+.Nm jalv.gtk3
+.Nd run an LV2 plugin with a GTK3 interface
+.Sh SYNOPSIS
+.Nm jalv.gtk3
+.Op Fl dghmpstx
+.Op Fl b , Fl Fl buffer-size Ns = Ns Ar size
+.Op Fl c , Fl Fl control Ns = Ns Ar setting
+.Op Fl l , Fl Fl load Ns = Ns Ar dir
+.Op Fl n , Fl Fl jack-name Ns = Ns Ar name
+.Op Fl P , Fl Fl preset Ns = Ns Ar uri
+.Op Fl r , Fl Fl update-frequency Ns = Ns Ar hz
+.Op Fl S , Fl Fl scale-factor Ns = Ns Ar scale
+.Op Fl U , Fl Fl ui-uri Ns = Ns Ar uri
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+is a simple LV2 host that runs a single plugin.
+This version has a GTK3 interface that shows either generic controls or a custom plugin GUI.
+.Pp
+The options are as follows:
+.Bl -tag -width 3n
+.It Fl b Ar size
Buffer size for plugin <=> UI communication.
-
-.TP
-\fB\-c SYM=VAL\fR
-Set control value (e.g. "vol=1.4").
-
-.TP
-\fB\-d\fR, \fB\-\-dump\fR
+.It Fl c Ar symbol=value
+Set control value, for example,
+.Fl c Ar vol=1.4
+where
+.Dq vol
+is the symbol of some control port on the plugin.
+.It Fl d
Dump plugin <=> UI communication.
-
-.TP
-\fB\-U URI\fR
-Load the UI with the given URI.
-
-.TP
-\fB\-g\fR, \fB\-\-generic\-ui\fR
-Use Jalv generic UI and not the plugin UI.
-
-.TP
-\fB\-h\fR, \fB\-\-help\fR
+.It Fl g
+Show generic UI instead of custom plugin GUI.
+.It Fl h
Print the command line options.
-
-.TP
-\fB\-l DIR\fR, \fB\-\-load DIR\fR
-Load state from state directory.
-
-.TP
-\fB\-p\fR, \fB\-\-print\-controls\fR
-Print control output changes to stdout.
-
-.TP
-\fB\-t\fR, \fB\-\-trace\fR
+.It Fl l Ar dir
+Load state from the given directory before running the plugin.
+.It Fl m
+Hide application menu, showing only the plugin interface.
+.It Fl n Ar name
+Use the given JACK client name.
+Note that JACK may adjust the name if necessary unless
+.Fl x
+is also given.
+.It Fl P uri
+Load the given preset before running plugin.
+.It Fl p
+Print control output changes to
+.Dv stdout .
+.It Fl r Ar hz
+Set the UI update frequency.
+By default the screen refresh rate is used, typically 30 or 60 Hz.
+.It Fl S Ar factor
+Override the UI scale factor.
+.It Fl s
+Show controls that are normally hidden.
+.It Fl t
Print trace messages from plugin.
-
-.SH "SEE ALSO"
-.BR jalv(1),
-.BR jalv.qt5(1),
-.BR lv2ls(1),
-.BR jackd(1)
-
-.SH AUTHOR
-jalv 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>
+.It Fl U
+URI Load the UI with the given URI.
+.It Fl x
+Use only the exact JACK client name given by
+.Fl n
+or exit if it's unavailable.
+.El
+.Sh COMMANDS
+The Jalv prompt supports several commands for interactive control:
+.Pp
+.Bl -tag -width 16n -compact
+.It Ic help
+Display help message.
+.It Ic controls
+Print settable control values.
+.It Ic monitors
+Print output control values.
+.It Ic presets
+Print available presets.
+.It Ic preset Ar uri
+Set preset.
+.It Ic set index value
+Set control value by port index.
+.It Ic set Ar symbol Ar value
+Set control value by symbol.
+.It Ar SYMBOL Cm = Ar VALUE
+Set control value by symbol.
+.El
+.Sh SEE ALSO
+.Xr jalv 1 ,
+.Xr jalv.qt5 1
+.Sh AUTHORS
+jalv was written by
+.An David Robillard
+.Aq Mt d@drobilla.net
+with contributions by others.
+Most of the GTK interface was added by Alexandros Theodotou and Nick Lanham.
diff --git a/doc/jalv.qt5.1 b/doc/jalv.qt5.1
index 14fa57f..578dab4 100644
--- a/doc/jalv.qt5.1
+++ b/doc/jalv.qt5.1
@@ -1,24 +1,29 @@
-.TH JALV.QT5 1 "19 Apr 2012"
-
-.SH NAME
-.B jalv.qt \- Run an LV2 plugin as a JACK application (Qt version).
-
-.SH SYNOPSIS
-.B jalv.qt PLUGIN_URI
-
-.SH DESCRIPTION
-
-This is a version of Jalv with a GUI implemented in Qt. It is mainly for
-developer testing purposes, for a production ready program use jalv.gtk.
-
-.SH "SEE ALSO"
-.BR jalv(1),
-.BR jalv.gtk3(1),
-.BR lv2ls(1),
-.BR jackd(1)
-
-.SH AUTHOR
-jalv 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 2024 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd December 20, 2024
+.Dt JALV.QT5 1
+.Os
+.Sh NAME
+.Nm jalv.qt5
+.Nd run an LV2 plugin with a Qt5 interface
+.Sh SYNOPSIS
+.Nm jalv.qt5
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+is a simple LV2 host that runs a single plugin.
+This version has a Qt5 interface that shows either generic controls or a custom plugin GUI.
+.Pp
+This version has no options and requires the plugin URI to be given on the command line.
+For a fully graphical version with a plugin selector, see
+.Xr jalv.gtk3 1 .
+.Sh SEE ALSO
+.Xr jalv 1 ,
+.Xr jalv.gtk3 1 ,
+.Xr lv2ls 1
+.Sh AUTHORS
+jalv was written by
+.An David Robillard
+.Aq Mt d@drobilla.net
+with contributions by others.
+Most of the Qt interface was added by Amadeus Folego and Timo Westkämper.
diff --git a/doc/jalv.qt6.1 b/doc/jalv.qt6.1
new file mode 100644
index 0000000..6b80b2c
--- /dev/null
+++ b/doc/jalv.qt6.1
@@ -0,0 +1,29 @@
+.\" # Copyright 2024 David Robillard <d@drobilla.net>
+.\" # SPDX-License-Identifier: ISC
+.Dd December 20, 2024
+.Dt JALV.QT6 1
+.Os
+.Sh NAME
+.Nm jalv.qt6
+.Nd run an LV2 plugin with a Qt6 interface
+.Sh SYNOPSIS
+.Nm jalv.qt6
+.Ar plugin_uri
+.Sh DESCRIPTION
+.Nm
+is a simple LV2 host that runs a single plugin.
+This version has a Qt6 interface that shows either generic controls or a custom plugin GUI.
+.Pp
+This version has no options and requires the plugin URI to be given on the command line.
+For a fully graphical version with a plugin selector, see
+.Xr jalv.gtk3 1 .
+.Sh SEE ALSO
+.Xr jalv 1 ,
+.Xr jalv.gtk3 1 ,
+.Xr lv2ls 1
+.Sh AUTHORS
+jalv was written by
+.An David Robillard
+.Aq Mt d@drobilla.net
+with contributions by others.
+Most of the Qt interface was added by Amadeus Folego and Timo Westkämper.
diff --git a/doc/mandoc.css b/doc/mandoc.css
new file mode 100644
index 0000000..aee69e5
--- /dev/null
+++ b/doc/mandoc.css
@@ -0,0 +1,327 @@
+/*
+ Copyright 2021-2022 David Robillard <d@drobilla.net>
+ SPDX-License-Identifier: ISC
+*/
+
+/* Generic page style */
+
+/*
+ Smaller sizes: 0.236em 0.271em 0.382em 0.438em 0.618em 0.708em
+ Larger sizes: 1.146em 1.618em 1.854em 2.618em 3em 4.236em
+*/
+
+html {
+ margin: 0 1.618em;
+ background: #fff;
+ color: #000;
+}
+
+body {
+ font-style: normal;
+ line-height: 1.618em;
+ margin: 0 auto auto;
+ padding: 0;
+ max-width: 60em;
+ font-family: "SF Pro Text", Verdana, "DejaVu Sans", sans-serif;
+ text-rendering: optimizelegibility;
+}
+
+h1 {
+ font-family: Helvetica, Arial, "DejaVu Sans Condensed", Verdana, sans-serif;
+ font-size: 1.854em;
+ font-weight: 600;
+ line-height: 114.6%;
+ margin: 1.146em 0;
+}
+
+a {
+ text-decoration: none;
+}
+
+h1 a,
+h2 a,
+h3 a,
+h4 a,
+h5 a,
+h6 a {
+ color: #222;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+h1 a:link,
+h2 a:link,
+h3 a:link,
+h4 a:link,
+h5 a:link,
+h6 a:link {
+ color: #222;
+}
+
+h1 a:visited,
+h2 a:visited,
+h3 a:visited,
+h4 a:visited,
+h5 a:visited,
+h6 a:visited {
+ color: #222;
+}
+
+pre,
+tt,
+code {
+ overflow: auto;
+ font-family: "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace, fixed;
+ hyphens: none;
+ white-space: nowrap;
+
+ /* stylelint-disable property-no-vendor-prefix */
+ -epub-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ /* stylelint-enable property-no-vendor-prefix */
+}
+
+ul,
+ol,
+dl {
+ margin: 0;
+ padding: 0;
+}
+
+ul {
+ padding: 0;
+ hyphens: auto;
+}
+
+dt {
+ font-weight: 600;
+ padding: 0.618em 0 0;
+}
+
+dd {
+ margin: 0 0 0 2.618em;
+ hyphens: auto;
+}
+
+dd > ul:only-child,
+dd > ol:only-child {
+ padding-left: 0;
+}
+
+li {
+ margin-left: 2.618em;
+}
+
+dt:empty {
+ margin: 0;
+ display: none;
+}
+
+dd:empty {
+ margin: 0;
+ display: none;
+}
+
+dt:blank {
+ margin: 0;
+ display: none;
+}
+
+dd:blank {
+ margin: 0;
+ display: none;
+}
+
+/* Media-specific style */
+
+/* Color links on screens */
+@media screen {
+ a {
+ color: #546e00;
+ }
+}
+
+@media print {
+ body {
+ color: #000;
+ }
+
+ a,
+ h1 a,
+ h2 a,
+ h3 a,
+ h4 a,
+ h5 a,
+ h6 a {
+ color: #000;
+ }
+
+ a:link {
+ color: #000;
+ }
+
+ a:visited {
+ color: #000;
+ }
+}
+
+/* Mandoc specific style */
+
+/* stylelint-disable selector-class-pattern */
+
+table.head {
+ font-size: 0.708em;
+ margin: 0.438em 0 1.854em;
+ width: 100%;
+}
+
+table.foot {
+ font-size: 0.708em;
+ margin: 2.618em 0 0.438em;
+ width: 100%;
+}
+
+td.head-rtitle,
+td.foot-os {
+ text-align: right;
+}
+
+td.head-vol {
+ text-align: center;
+}
+
+div.Pp {
+ margin: 1ex 0;
+}
+
+a.permalink {
+ color: #222;
+}
+
+div.Nd,
+div.Bf,
+div.Op {
+ display: inline;
+}
+
+span.Pa,
+span.Ad {
+ font-style: italic;
+}
+
+span.Ms {
+ font-weight: bold;
+}
+
+dl.Bl-diag > dt {
+ font-weight: bold;
+}
+
+table.Nm tbody tr {
+ vertical-align: baseline;
+}
+
+code.Nm,
+code.Fl,
+code.Cm,
+code.Ic,
+code.In,
+code.Fd,
+code.Fn,
+code.Cd {
+ font-weight: bold;
+ color: #444;
+}
+
+code.Ev {
+ font-weight: bold;
+ color: #444;
+}
+
+code.Li {
+ color: #333;
+}
+
+var.Ar {
+ font-style: italic;
+}
+
+/* stylelint-enable selector-class-pattern */
+
+/* Dark mode */
+@media (prefers-color-scheme: dark) {
+ html {
+ background: #222;
+ color: #ddd;
+ }
+
+ a {
+ color: #b4c342;
+ }
+
+ a.permalink {
+ color: #ddd;
+ }
+
+ h1 a,
+ h2 a,
+ h3 a,
+ h4 a,
+ h5 a,
+ h6 a {
+ color: #ddd;
+ }
+
+ h1 a:link,
+ h2 a:link,
+ h3 a:link,
+ h4 a:link,
+ h5 a:link,
+ h6 a:link {
+ color: #ddd;
+ }
+
+ h1 a:visited,
+ h2 a:visited,
+ h3 a:visited,
+ h4 a:visited,
+ h5 a:visited,
+ h6 a:visited {
+ color: #ddd;
+ }
+
+ /* stylelint-disable selector-class-pattern */
+
+ code.Nm,
+ code.Fl,
+ code.Cm,
+ code.Ic,
+ code.In,
+ code.Fd,
+ code.Fn,
+ code.Cd {
+ color: #aaa;
+ }
+
+ code.Ev {
+ color: #aaa;
+ }
+
+ code.Li {
+ color: #ccc;
+ }
+
+ /* stylelint-enable selector-class-pattern */
+}
+
+/* Hard black for dark mode on mobile (since it's likely to be an OLED screen) */
+@media only screen and (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) {
+ html {
+ background: #000;
+ color: #ccc;
+ }
+}
diff --git a/doc/meson.build b/doc/meson.build
index be25581..9a00094 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -1,12 +1,60 @@
-# Copyright 2022-2023 David Robillard <d@drobilla.net>
+# Copyright 2022-2024 David Robillard <d@drobilla.net>
# SPDX-License-Identifier: 0BSD OR ISC
-install_man(files('jalv.1'))
+docdir = get_option('datadir') / 'doc'
-if not get_option('gtk3').disabled()
- install_man(files('jalv.gtk3.1'))
+if not get_option('man').disabled()
+ install_man(files('jalv.1'))
+
+ if not get_option('gtk3').disabled()
+ install_man(files('jalv.gtk3.1'))
+ endif
+
+ if not get_option('qt5').disabled()
+ install_man(files('jalv.qt5.1'))
+ endif
+
+ if not get_option('qt6').disabled()
+ install_man(files('jalv.qt6.1'))
+ endif
endif
-if not get_option('qt5').disabled()
- install_man(files('jalv.qt5.1'))
+# Build/install HTML man pages if mandoc is present
+mandoc = find_program('mandoc', required: get_option('man_html'))
+if mandoc.found()
+ configure_file(
+ copy: true,
+ input: files('mandoc.css'),
+ output: 'mandoc.css',
+ install_dir: docdir / meson.project_name() / 'man',
+ )
+
+ mandoc_html_command = [
+ mandoc,
+ '-Kutf-8',
+ '-Ostyle=mandoc.css,man=%N.html',
+ '-Thtml',
+ '-Wwarning,stop', '@INPUT@',
+ ]
+
+ html_mandir = docdir / meson.project_name() / 'man'
+ foreach name : ['jalv', 'jalv.gtk3', 'jalv.qt5', 'jalv.qt6']
+ custom_target(
+ name + '.html',
+ capture: true,
+ command: mandoc_html_command,
+ input: files(name + '.1'),
+ install: true,
+ install_dir: html_mandir,
+ output: name + '.html',
+ )
+ endforeach
+
+ if not meson.is_subproject()
+ summary(
+ 'HTML man pages',
+ get_option('prefix') / html_mandir,
+ section: 'Directories',
+ )
+ endif
endif
diff --git a/meson_options.txt b/meson_options.txt
index abc5409..f0577ef 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -22,6 +22,9 @@ option('lint', type: 'boolean', value: false, yield: true,
option('man', type: 'feature', value: 'enabled', yield: true,
description: 'Install man pages')
+option('man_html', type: 'feature', yield: true,
+ description: 'Build HTML man pages')
+
option('posix', type: 'feature', yield: true,
description: 'Use POSIX system facilities')