meson.build revision a4e54154
1doc_targets = []
2
3docbook2man = find_program('docbook2man', required: get_option('doc-man'))
4docbook2txt = find_program('docbook2txt', required: get_option('doc-txt'))
5docbook2pdf = find_program('docbook2pdf', required: get_option('doc-pdf'))
6docbook2html = find_program('docbook2html', required: get_option('doc-html'))
7
8# docbook is very spammy
9run_quiet = find_program('run-quiet.py')
10
11# .fncs files
12doc_funcs_fncs = [
13  'fcatomic',
14  'fcblanks',
15  'fccache',
16  'fccharset',
17  'fcconfig',
18  'fcconstant',
19  'fcdircache',
20  'fcfile',
21  'fcfontset',
22  'fcformat',
23  'fcfreetype',
24  'fcinit',
25  'fclangset',
26  'fcmatrix',
27  'fcobjectset',
28  'fcobjecttype',
29  'fcpattern',
30  'fcrange',
31  'fcstring',
32  'fcstrset',
33  'fcvalue',
34  'fcweight',
35]
36
37fncs_files = []
38foreach f : doc_funcs_fncs
39  fncs_files += files('@0@.fncs'.format(f))
40endforeach
41
42man_pages = []
43
44extract_man_list = find_program('extract-man-list.py')
45man_list = run_command(extract_man_list, fncs_files, check: true).stdout().split()
46
47foreach m : man_list
48  man_pages += ['@0@.3'.format(m)]
49endforeach
50
51# Generate sgml pages for funcs
52edit_sgml = find_program('edit-sgml.py')
53
54# copy into build directory, it includes generated files from build directory
55fontconfig_devel_sgml = configure_file(output: 'fontconfig-devel.sgml',
56  input: 'fontconfig-devel.sgml',
57  copy: true)
58
59fontconfig_user_sgml = configure_file(output: 'fontconfig-user.sgml',
60  input: 'fontconfig-user.sgml',
61  copy: true)
62
63version_conf = configuration_data()
64version_conf.set('VERSION', meson.project_version())
65
66configure_file(output: 'version.sgml',
67  input: 'version.sgml.in',
68  configuration: version_conf)
69
70confdir_conf = configuration_data()
71confdir_conf.set('BASECONFIGDIR', fc_configdir)
72
73confdir_sgml = configure_file(output: 'confdir.sgml',
74  input: 'confdir.sgml.in',
75  configuration: confdir_conf)
76
77funcs_sgml = []
78
79foreach f : doc_funcs_fncs
80  funcs_sgml += [custom_target('@0@.sgml'.format(f),
81    input: [files('func.sgml'), files('@0@.fncs'.format(f))],
82    output: '@0@.sgml'.format(f),
83    command: [edit_sgml, '@INPUT0@', '@INPUT1@', '@OUTPUT@'],
84    install: false)]
85endforeach
86
87if docbook2man.found()
88  doc_targets += ['man']
89
90  custom_target('devel-man',
91    input: [fontconfig_devel_sgml, funcs_sgml],
92    output: man_pages,
93    command: [run_quiet, docbook2man, '@INPUT0@', '--output', '@OUTDIR@'],
94    build_by_default: true,
95    install_dir: get_option('mandir') / 'man3',
96    install: true)
97
98  # fonts.conf(5)
99  custom_target('fonts-conf-5-man-page',
100    input: [fontconfig_user_sgml],
101    output: 'fonts-conf.5',
102    command: [run_quiet, docbook2man, '@INPUT0@', '--output', '@OUTDIR@'],
103    install_dir: get_option('mandir') / 'man5',
104    build_by_default: true,
105    install: true)
106
107  # Generate man pages for tools
108  foreach t : tools_man_pages
109    # docbook2man doesn't seem to have a --quiet option unfortunately
110    custom_target('@0@-man-page'.format(t),
111      input: '../@0@/@0@.sgml'.format(t),
112      output: '@0@.1'.format(t),
113      command: [run_quiet, docbook2man, '@INPUT@', '--output', '@OUTDIR@'],
114      install_dir: get_option('mandir') / 'man1',
115      install: true)
116  endforeach
117endif
118
119if docbook2pdf.found()
120  doc_targets += ['PDF']
121
122  custom_target('devel-pdf',
123    input: [fontconfig_devel_sgml, funcs_sgml],
124    output: 'fontconfig-devel.pdf',
125    command: [run_quiet, docbook2pdf, '@INPUT0@', '--output', '@OUTDIR@'],
126    build_by_default: true,
127    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
128    install: true)
129
130  custom_target('user-pdf',
131    input: [fontconfig_user_sgml, funcs_sgml],
132    output: 'fontconfig-user.pdf',
133    command: [run_quiet, docbook2pdf, '@INPUT0@', '--output', '@OUTDIR@'],
134    build_by_default: true,
135    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
136    install: true)
137endif
138
139if docbook2txt.found()
140  doc_targets += ['Text']
141
142  custom_target('devel-txt',
143    input: [fontconfig_devel_sgml, funcs_sgml],
144    output: 'fontconfig-devel.txt',
145    command: [run_quiet, docbook2txt, '@INPUT0@', '--output', '@OUTDIR@'],
146    build_by_default: true,
147    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
148    install: true)
149
150  custom_target('user-txt',
151    input: [fontconfig_user_sgml, funcs_sgml],
152    output: 'fontconfig-user.txt',
153    command: [run_quiet, docbook2txt, '@INPUT0@', '--output', '@OUTDIR@'],
154    build_by_default: true,
155    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
156    install: true)
157endif
158
159if docbook2html.found()
160  doc_targets += ['HTML']
161
162  custom_target('devel-html',
163    input: [fontconfig_devel_sgml, funcs_sgml],
164    output: 'fontconfig-devel.html',
165    command: [run_quiet, docbook2html, '--nochunks', '@INPUT0@', '--output', '@OUTDIR@'],
166    build_by_default: true,
167    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
168    install: true)
169
170  custom_target('user-html',
171    input: [fontconfig_user_sgml, funcs_sgml],
172    output: 'fontconfig-user.html',
173    command: [run_quiet, docbook2html, '--nochunks', '@INPUT0@', '--output', '@OUTDIR@'],
174    build_by_default: true,
175    install_dir: get_option('datadir') / 'doc' / 'fontconfig',
176    install: true)
177endif
178