xref: /aosp_15_r20/external/libtraceevent/Documentation/meson.build (revision 436bf2bcd5202612ffffe471bbcc1f277cc8d28e)
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