Skip to content

Commit

Permalink
meson: add support for building the manpages
Browse files Browse the repository at this point in the history
Not as brief as the pipeline and pattern matching that (auto)make can
do, although it's fully functional ;-)

v2:
 - move man/meson.build
 - move script under scripts/

Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
  • Loading branch information
evelikov committed Aug 31, 2024
1 parent 8bf13e4 commit d25161f
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@ export GCC_COLORS

# meson bigs
EXTRA_DIST += \
man/meson.build \
meson.build \
meson_options.txt \
testsuite/meson.build \
scripts/build-scdoc.sh \
scripts/kmod-symlink.sh

AM_CPPFLAGS = \
Expand Down
56 changes: 56 additions & 0 deletions man/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
scdoc = find_program('scdoc')

_man_pages = [
[ '5', 'depmod.d' ],
[ '5', 'modprobe.d' ],
[ '5', 'modules.dep' ],
[ '8', 'depmod' ],
[ '8', 'insmod' ],
[ '8', 'kmod' ],
[ '8', 'lsmod' ],
[ '8', 'modinfo' ],
[ '8', 'modprobe' ],
[ '8', 'rmmod' ],
]
foreach tuple : _man_pages
section = tuple[0]
man = tuple[1]

custom_target(
'man_@0@_@1@'.format(section, man),
command : [
build_scdoc,
scdoc,
'@INPUT@',
's|@SYSCONFDIR@|@0@|g;'.format(sysconfdir) +
's|@DISTCONFDIR@|@0@|g;'.format(distconfdir) +
's|@MODULE_DIRECTORY@|@0@|g;'.format(moduledir),
],
input : '@0@.@1@.scd'.format(man, section),
output : '@0@.@1@'.format(man, section),
capture : true,
build_by_default : get_option('manpages'),
install : true,
install_dir : join_paths(get_option('mandir'), 'man@0@'.format(section))
)
endforeach

_man_aliases = [
['5', 'modules.dep.bin', 'modules.dep.5' ],
]

foreach tuple : _man_aliases
section = tuple[0]
man = tuple[1]
dest = tuple[2]

custom_target(
'man_@0@_@1@'.format(section, man),
command : ['echo', '.so @0@'.format(dest)],
output : '@0@.@1@'.format(man, section),
capture : true,
build_by_default : get_option('manpages'),
install : true,
install_dir : join_paths(get_option('mandir'), 'man@0@'.format(section))
)
endforeach
10 changes: 10 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -408,6 +408,15 @@ if get_option('build-tests')
subdir('testsuite')
endif

# ------------------------------------------------------------------
# documentation
# ------------------------------------------------------------------

if get_option('manpages')
build_scdoc = find_program('scripts/build-scdoc.sh')
subdir('man')
endif

summary({
'moduledir' : moduledir,
'prefix' : get_option('prefix'),
Expand All @@ -423,6 +432,7 @@ summary({
'logging' : get_option('logging'),
'debug' : get_option('debug-messages'),
'build-tests' : get_option('build-tests'),
'man' : get_option('manpages'),
}, section : 'Options')

summary({
Expand Down
7 changes: 7 additions & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,10 @@ option(
value : false,
description : 'Always build the test suite. Default: false',
)

option(
'manpages',
type : 'boolean',
value : true,
description : 'Build the manpages. Default: true',
)
9 changes: 9 additions & 0 deletions scripts/build-scdoc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

set -euo pipefail

SCDOC=$1
INPUT=$2
SED_PATTERN=$3

cat $INPUT | sed -e $SED_PATTERN | $SCDOC

0 comments on commit d25161f

Please sign in to comment.