1*436bf2bcSAndroid Build Coastguard Worker# SPDX-License-Identifier: LGPL-2.1 2*436bf2bcSAndroid Build Coastguard Worker# 3*436bf2bcSAndroid Build Coastguard Worker# Copyright (c) 2023 Daniel Wagner, SUSE LLC 4*436bf2bcSAndroid Build Coastguard Worker 5*436bf2bcSAndroid Build Coastguard Worker# input text file: man page section 6*436bf2bcSAndroid Build Coastguard Workersources = { 7*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent.txt': '3', 8*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-func_apis.txt': '3', 9*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-commands.txt': '3', 10*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-cpus.txt': '3', 11*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-debug.txt': '3', 12*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-endian_read.txt': '3', 13*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-event_find.txt': '3', 14*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-event_get.txt': '3', 15*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-event_list.txt': '3', 16*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-event_print.txt': '3', 17*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-field_find.txt': '3', 18*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-field_get_val.txt': '3', 19*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-field_print.txt': '3', 20*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-field_read.txt': '3', 21*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-fields.txt': '3', 22*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-file_endian.txt': '3', 23*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-filter.txt': '3', 24*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-func_find.txt': '3', 25*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-handle.txt': '3', 26*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-header_page.txt': '3', 27*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-host_endian.txt': '3', 28*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-kbuffer-create.txt': '3', 29*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-kbuffer-read.txt': '3', 30*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-kbuffer-timestamp.txt': '3', 31*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-kvm-plugin.txt': '3', 32*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-log.txt': '3', 33*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-long_size.txt': '3', 34*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-page_size.txt': '3', 35*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-parse_event.txt': '3', 36*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-parse-files.txt': '3', 37*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-parse_head.txt': '3', 38*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-plugins.txt': '3', 39*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-record_parse.txt': '3', 40*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-reg_event_handler.txt': '3', 41*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-reg_print_func.txt': '3', 42*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-set_flag.txt': '3', 43*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-strerror.txt': '3', 44*436bf2bcSAndroid Build Coastguard Worker 'libtraceevent-tseq.txt': '3', 45*436bf2bcSAndroid Build Coastguard Worker} 46*436bf2bcSAndroid Build Coastguard Worker 47*436bf2bcSAndroid Build Coastguard Workerconf_dir = meson.current_source_dir() + '/' 48*436bf2bcSAndroid Build Coastguard Workertop_source_dir = meson.current_source_dir() + '/../' 49*436bf2bcSAndroid Build Coastguard Worker 50*436bf2bcSAndroid Build Coastguard Worker# 51*436bf2bcSAndroid Build Coastguard Worker# For asciidoc ... 52*436bf2bcSAndroid Build Coastguard Worker# -7.1.2, no extra settings are needed. 53*436bf2bcSAndroid Build Coastguard Worker# 8.0-, set ASCIIDOC8. 54*436bf2bcSAndroid Build Coastguard Worker# 55*436bf2bcSAndroid Build Coastguard Worker 56*436bf2bcSAndroid Build Coastguard Worker# 57*436bf2bcSAndroid Build Coastguard Worker# For docbook-xsl ... 58*436bf2bcSAndroid Build Coastguard Worker# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0) 59*436bf2bcSAndroid Build Coastguard Worker# 1.69.0, no extra settings are needed? 60*436bf2bcSAndroid Build Coastguard Worker# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? 61*436bf2bcSAndroid Build Coastguard Worker# 1.71.1, no extra settings are needed? 62*436bf2bcSAndroid Build Coastguard Worker# 1.72.0, set DOCBOOK_XSL_172. 63*436bf2bcSAndroid Build Coastguard Worker# 1.73.0-, set ASCIIDOC_NO_ROFF 64*436bf2bcSAndroid Build Coastguard Worker# 65*436bf2bcSAndroid Build Coastguard Worker 66*436bf2bcSAndroid Build Coastguard Worker# 67*436bf2bcSAndroid Build Coastguard Worker# If you had been using DOCBOOK_XSL_172 in an attempt to get rid 68*436bf2bcSAndroid Build Coastguard Worker# of 'the ".ft C" problem' in your generated manpages, and you 69*436bf2bcSAndroid Build Coastguard Worker# instead ended up with weird characters around callouts, try 70*436bf2bcSAndroid Build Coastguard Worker# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8). 71*436bf2bcSAndroid Build Coastguard Worker# 72*436bf2bcSAndroid Build Coastguard Worker 73*436bf2bcSAndroid Build Coastguard Workerif get_option('asciidoctor') 74*436bf2bcSAndroid Build Coastguard Worker asciidoc = find_program('asciidoctor') 75*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra = ['-a', 'compat-mode'] 76*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-I.'] 77*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-r', 'asciidoctor-extensions'] 78*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-a', 'mansource=libtraceevent'] 79*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-a', 'manmanual="libtraceevent Manual"'] 80*436bf2bcSAndroid Build Coastguard Worker asciidoc_html = 'xhtml5' 81*436bf2bcSAndroid Build Coastguard Workerelse 82*436bf2bcSAndroid Build Coastguard Worker asciidoc = find_program('asciidoc') 83*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra = ['--unsafe'] 84*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-f', conf_dir + 'asciidoc.conf'] 85*436bf2bcSAndroid Build Coastguard Worker asciidoc_html = 'xhtml11' 86*436bf2bcSAndroid Build Coastguard Worker 87*436bf2bcSAndroid Build Coastguard Worker r = run_command(asciidoc, '--version', check: true) 88*436bf2bcSAndroid Build Coastguard Worker v = r.stdout().strip() 89*436bf2bcSAndroid Build Coastguard Worker if v.version_compare('>=8.0') 90*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-a', 'asciidoc7compatible'] 91*436bf2bcSAndroid Build Coastguard Worker endif 92*436bf2bcSAndroid Build Coastguard Workerendif 93*436bf2bcSAndroid Build Coastguard Worker 94*436bf2bcSAndroid Build Coastguard Workermanpage_xsl = conf_dir + 'manpage-normal.xsl' 95*436bf2bcSAndroid Build Coastguard Worker 96*436bf2bcSAndroid Build Coastguard Workerif get_option('docbook-xls-172') 97*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] 98*436bf2bcSAndroid Build Coastguard Worker manpage_xsl = conf_dir + 'manpage-1.72.xsl' 99*436bf2bcSAndroid Build Coastguard Workerelif get_option('asciidoc-no-roff') 100*436bf2bcSAndroid Build Coastguard Worker # docbook-xsl after 1.72 needs the regular XSL, but will not 101*436bf2bcSAndroid Build Coastguard Worker # pass-thru raw roff codes from asciidoc.conf, so turn them off. 102*436bf2bcSAndroid Build Coastguard Worker asciidoc_extra += ['-a', 'libtraceevent-asciidoc-no-roff'] 103*436bf2bcSAndroid Build Coastguard Workerendif 104*436bf2bcSAndroid Build Coastguard Worker 105*436bf2bcSAndroid Build Coastguard Workerxmlto = find_program('xmlto') 106*436bf2bcSAndroid Build Coastguard Workerxmlto_extra = [] 107*436bf2bcSAndroid Build Coastguard Worker 108*436bf2bcSAndroid Build Coastguard Workerif get_option('man-bold-literal') 109*436bf2bcSAndroid Build Coastguard Worker xmlto_extra += ['-m ', conf_dir + 'manpage-bold-literal.xsl'] 110*436bf2bcSAndroid Build Coastguard Workerendif 111*436bf2bcSAndroid Build Coastguard Worker 112*436bf2bcSAndroid Build Coastguard Workerif get_option('docbook-suppress-sp') 113*436bf2bcSAndroid Build Coastguard Worker xmlto_extra += ['-m ', conf_dir + 'manpage-suppress-sp.xsl'] 114*436bf2bcSAndroid Build Coastguard Workerendif 115*436bf2bcSAndroid Build Coastguard Worker 116*436bf2bcSAndroid Build Coastguard Workercheck_doc = custom_target( 117*436bf2bcSAndroid Build Coastguard Worker 'check-doc', 118*436bf2bcSAndroid Build Coastguard Worker output: 'dummy', 119*436bf2bcSAndroid Build Coastguard Worker command : [ 120*436bf2bcSAndroid Build Coastguard Worker top_source_dir + 'check-manpages.sh', 121*436bf2bcSAndroid Build Coastguard Worker meson.current_source_dir()]) 122*436bf2bcSAndroid Build Coastguard Worker 123*436bf2bcSAndroid Build Coastguard Workergen = generator( 124*436bf2bcSAndroid Build Coastguard Worker asciidoc, 125*436bf2bcSAndroid Build Coastguard Worker output: '@[email protected]', 126*436bf2bcSAndroid Build Coastguard Worker arguments: [ 127*436bf2bcSAndroid Build Coastguard Worker '-b', 'docbook', 128*436bf2bcSAndroid Build Coastguard Worker '-d', 'manpage', 129*436bf2bcSAndroid Build Coastguard Worker '-a', 'libtraceevent_version=' + meson.project_version(), 130*436bf2bcSAndroid Build Coastguard Worker '-o', '@OUTPUT@'] 131*436bf2bcSAndroid Build Coastguard Worker + asciidoc_extra 132*436bf2bcSAndroid Build Coastguard Worker + ['@INPUT@']) 133*436bf2bcSAndroid Build Coastguard Worker 134*436bf2bcSAndroid Build Coastguard Workerman = [] 135*436bf2bcSAndroid Build Coastguard Workerhtml = [] 136*436bf2bcSAndroid Build Coastguard Workerforeach txt, section : sources 137*436bf2bcSAndroid Build Coastguard Worker # build man page(s) 138*436bf2bcSAndroid Build Coastguard Worker xml = gen.process(txt) 139*436bf2bcSAndroid Build Coastguard Worker man += custom_target( 140*436bf2bcSAndroid Build Coastguard Worker txt.underscorify() + '_man', 141*436bf2bcSAndroid Build Coastguard Worker input: xml, 142*436bf2bcSAndroid Build Coastguard Worker output: '@BASENAME@.' + section, 143*436bf2bcSAndroid Build Coastguard Worker depends: check_doc, 144*436bf2bcSAndroid Build Coastguard Worker command: [ 145*436bf2bcSAndroid Build Coastguard Worker xmlto, 146*436bf2bcSAndroid Build Coastguard Worker '-m', manpage_xsl, 147*436bf2bcSAndroid Build Coastguard Worker 'man', 148*436bf2bcSAndroid Build Coastguard Worker '-o', '@OUTPUT@'] 149*436bf2bcSAndroid Build Coastguard Worker + xmlto_extra 150*436bf2bcSAndroid Build Coastguard Worker + ['@INPUT@']) 151*436bf2bcSAndroid Build Coastguard Worker 152*436bf2bcSAndroid Build Coastguard Worker # build html pages 153*436bf2bcSAndroid Build Coastguard Worker html += custom_target( 154*436bf2bcSAndroid Build Coastguard Worker txt.underscorify() + '_html', 155*436bf2bcSAndroid Build Coastguard Worker input: txt, 156*436bf2bcSAndroid Build Coastguard Worker output: '@[email protected]', 157*436bf2bcSAndroid Build Coastguard Worker depends: check_doc, 158*436bf2bcSAndroid Build Coastguard Worker command: [ 159*436bf2bcSAndroid Build Coastguard Worker asciidoc, 160*436bf2bcSAndroid Build Coastguard Worker '-b', asciidoc_html, 161*436bf2bcSAndroid Build Coastguard Worker '-d', 'manpage', 162*436bf2bcSAndroid Build Coastguard Worker '-a', 'libtraceevent_version=' + meson.project_version(), 163*436bf2bcSAndroid Build Coastguard Worker '-o', '@OUTPUT@'] 164*436bf2bcSAndroid Build Coastguard Worker + asciidoc_extra 165*436bf2bcSAndroid Build Coastguard Worker + ['@INPUT@']) 166*436bf2bcSAndroid Build Coastguard Workerendforeach 167*436bf2bcSAndroid Build Coastguard Worker 168*436bf2bcSAndroid Build Coastguard Worker# Install path workaround because: 169*436bf2bcSAndroid Build Coastguard Worker# 170*436bf2bcSAndroid Build Coastguard Worker# - xmlto might generate more than one file and we would to tell meson 171*436bf2bcSAndroid Build Coastguard Worker# about those output files. We could figure out which files are generated 172*436bf2bcSAndroid Build Coastguard Worker# (see sed match in check-manpages.sh). 173*436bf2bcSAndroid Build Coastguard Worker# 174*436bf2bcSAndroid Build Coastguard Worker# - The man page generation puts all the generated files under sub dirs 175*436bf2bcSAndroid Build Coastguard Worker# and it's not obvious how to tell Meson it should not do this without 176*436bf2bcSAndroid Build Coastguard Worker# causing the install step to fail (confusion where the generated files 177*436bf2bcSAndroid Build Coastguard Worker# are stored) 178*436bf2bcSAndroid Build Coastguard Worker# 179*436bf2bcSAndroid Build Coastguard Worker# - The documentation build is not part of the 'build' target. The user 180*436bf2bcSAndroid Build Coastguard Worker# has explicitly to trigger the doc build. Hence the documentation is 181*436bf2bcSAndroid Build Coastguard Worker# not added to the 'install' target. 182*436bf2bcSAndroid Build Coastguard Worker# 183*436bf2bcSAndroid Build Coastguard Worker# Thus just use a plain old shell script to move the generated files to the 184*436bf2bcSAndroid Build Coastguard Worker# right location. 185*436bf2bcSAndroid Build Coastguard Worker 186*436bf2bcSAndroid Build Coastguard Workerconf = configuration_data() 187*436bf2bcSAndroid Build Coastguard Workerconf.set('SRCDIR', meson.current_build_dir()) 188*436bf2bcSAndroid Build Coastguard Workerconf.set('MANDIR', mandir) 189*436bf2bcSAndroid Build Coastguard Workerconf.set('HTMLDIR', htmldir) 190*436bf2bcSAndroid Build Coastguard Workerconfigure_file( 191*436bf2bcSAndroid Build Coastguard Worker input: 'install-docs.sh.in', 192*436bf2bcSAndroid Build Coastguard Worker output: 'install-docs.sh', 193*436bf2bcSAndroid Build Coastguard Worker configuration: conf) 194*436bf2bcSAndroid Build Coastguard Worker 195*436bf2bcSAndroid Build Coastguard Workermeson.add_install_script( 196*436bf2bcSAndroid Build Coastguard Worker join_paths(meson.current_build_dir(), 'install-docs.sh')) 197