# This is lame, I know, but meson has no other include mechanism
subdir('rules')
-# TODO: add regeneration rule:
-# python3 tools/make-man-rules.py --meson man/*xml > man/rules/meson.build
-
want_man = get_option('man')
want_html = get_option('html')
xsltproc = find_program('xsltproc',
xsltproc_flags = [
'--nonet',
'--xinclude',
+ '--maxdepth', '9000',
'--stringparam', 'man.output.quietly', '1',
'--stringparam', 'funcsynopsis.style', 'ansi',
'--stringparam', 'man.authors.section.enabled', '0',
mandirn = join_paths(get_option('mandir'), 'man' + section)
- if condition == '' or conf.get(condition, 0) == 1
+ if condition == '' or conf.get(condition) == 1
p1 = custom_target(
man,
input : xml,
install_dir : mandirn)
man_pages += [p1]
- p2 = custom_target(
+ p2 = []
+ foreach htmlalias : htmlaliases
+ link = custom_target(
+ htmlalias,
+ input : p2,
+ output : htmlalias,
+ command : ['ln', '-fs', html, '@OUTPUT@'])
+ if want_html
+ dst = join_paths(docdir, 'html', htmlalias)
+ cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
+ meson.add_install_script('sh', '-c', cmd)
+ p2 += [link]
+ endif
+ html_pages += [link]
+ endforeach
+
+ p3 = custom_target(
html,
input : xml,
- output : [html] + htmlaliases,
+ output : html,
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
depend_files : custom_entities_ent,
+ depends : p2,
install : want_html,
install_dir : join_paths(docdir, 'html'))
- html_pages += [p2]
+ html_pages += [p3]
source_xml_files += files(tuple[0] + '.xml')
else
install_dir : mandirn)
man_pages += [p1]
- p2 = custom_target(
+ p2 = []
+ if html == 'systemd.index.html'
+ htmlalias = 'index.html'
+ link = custom_target(
+ htmlalias,
+ input : p2,
+ output : htmlalias,
+ command : ['ln', '-fs', html, '@OUTPUT@'])
+ if want_html
+ dst = join_paths(docdir, 'html', htmlalias)
+ cmd = 'ln -fs @0@ $DESTDIR@1@'.format(html, dst)
+ meson.add_install_script('sh', '-c', cmd)
+ p2 += [link]
+ endif
+ html_pages += [link]
+ endif
+
+ p3 = custom_target(
html,
input : xml,
output : html,
command : xslt_cmd + [custom_html_xsl, '@INPUT@'],
+ depend_files : custom_entities_ent,
+ depends : p2,
install : want_html and have_lxml,
install_dir : join_paths(docdir, 'html'))
- html_pages += [p2]
+ html_pages += [p3]
endforeach
-man = run_target(
+# cannot use run_target until https://github.com/mesonbuild/meson/issues/1644 is resolved
+man = custom_target(
'man',
+ output : 'man',
depends : man_pages,
command : ['echo'])
-html = run_target(
+html = custom_target(
'html',
- depends : html_pages,
output : 'html',
+ depends : html_pages,
command : ['echo'])
run_target(
'--omit-dir-times',
meson.current_build_dir(),
get_option('www-target')])
+
+############################################################
+
+if git.found()
+ custom_target(
+ 'update-man-rules',
+ output : 'update-man-rules',
+ # slightly strange syntax because of
+ # https://github.com/mesonbuild/meson/issues/1643
+ # and https://github.com/mesonbuild/meson/issues/1512
+ command : ['sh', '-c',
+ 'cd @0@ && '.format(meson.build_root()) +
+ 'python3 @0@/tools/make-man-rules.py `git ls-files ":/man/*.xml"` >t && '.format(meson.source_root()) +
+ 'mv t @0@/rules/meson.build'.format(meson.current_source_dir())],
+ depend_files : custom_entities_ent)
+endif