PIKApp/devel-docs/g-ir-docs/meson.build

136 lines
5.5 KiB
Meson
Raw Permalink Normal View History

2023-09-26 00:35:21 +02:00
foreach lang : [ 'python', 'gjs' ]
# XXX meson does not allow building into subdir:
# https://github.com/mesonbuild/meson/issues/2320
# Otherwise I could use '-o', '@OUTDIR@' into following commands if
# the `output` was subdir-able.
gir_docs_dir = custom_target('g-ir-docs-' + lang + '-dir',
depends: [ libpika_gir, libpikaui_gir ],
input: [ ],
output: [ 'gir-' + lang + '-dirs' ],
command: [
'mkdir', '-p',
'@OUTDIR@' + '/pages/' + lang + '/PikaUi-' + pika_api_version,
'@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version,
'@OUTDIR@' + '/html/' + lang + '/PikaUi-' + pika_api_version,
'@OUTDIR@' + '/html/' + lang + '/Pika-' + pika_api_version
],
build_by_default: true)
## Pika Module ##
# XXX `output` is bogus. g-ir-doc-tool produces a lot of output,
# basically one page per public symbol, which is more than 1000 so
# it's not usable. Since custom_target() requires an 'output', I could
# just set one output such as 'index.page` as a trick, but since we
# have another issue on subdir anyway (cf. above), I use some bogus
# file instead. The fact the bogus file is not even created does not
# even seem to be a problem for meson.
# Moreover I realized that the targets listed by ninja are only the
# output files (not the target name), so I basically ends up using
# this field to create understandable names).
gir_docs_pages = custom_target('g-ir-Pika-' + lang + '-pages',
depends: [ gir_docs_dir, libpika_gir ],
input: [ libpika_gir[0] ],
output: [ 'Pika-' + lang + '-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.project_build_root() / 'libpika',
'--language=' + lang,
'-o', '@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version,
meson.project_build_root() / '@INPUT@'
],
build_by_default: true)
# This step is completely an ugly workaround for 2 tool issues. The
# first issue is that g-ir-doc-tool generates invalid XML by not
# transforming less-than signs into entities. So I am special-casing
# the one API documentation where we need to write a less-than (it will
# need to be updated if this happens again).
# See PIKA issue #7685.
# The second issue is in meson itself which transforms backslash into
# slashes preventing to write most basic regexp in a 'command'. For
# this reason, I need to add the sed command as an external script.
# See meson issue #1564.
docs_pages_fix_sh = find_program('docs_pages_fix.sh')
gir_docs_pages_fix = custom_target('g-ir-Pika-' + lang + '-pages-fix',
input: [ gir_docs_pages ],
output: [ 'Pika-' + lang + '-pages-fix' ],
command: [
docs_pages_fix_sh,
'@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version + '/Pika.Procedure.add_menu_path.page',
'@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version + '/Pika.checks_get_colors.page',
],
build_by_default: true)
gir_docs_cache = custom_target('g-ir-Pika-' + lang + '-cache',
input: [ gir_docs_pages_fix ],
output: [ 'Pika-' + lang + '-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version + '/index.cache',
'@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version,
],
build_by_default: true)
gir_docs_html = custom_target('g-ir-Pika-' + lang + '-html',
input: [ gir_docs_cache ],
output: [ 'Pika-' + lang + '-html' ],
# TODO: `output` needs to be complete for installation to work. So
# we need to figure out how to install the generated files (listing
# all of them is a crazy idea, but maybe we can generate the
# expected list somehow? Maybe even using the .def file which is
# already an exhaustive listing would be a good idea?
# Also where should we install exactly?
#install_dir: prefix / pikadatadir / 'g-ir-docs/html/' + lang + '/Pika',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/' + lang + '/Pika-' + pika_api_version,
'@OUTDIR@' + '/pages/' + lang + '/Pika-' + pika_api_version,
],
build_by_default: true)
## PikaUi module ##
gir_ui_docs_pages = custom_target('g-ir-PikaUi-' + lang + '-pages',
depends: [ gir_docs_dir, libpikaui_gir ],
input: [ libpikaui_gir[0] ],
output: [ 'PikaUi-' + lang + '-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.project_build_root() / 'libpika',
'--language=' + lang,
'-o', '@OUTDIR@' + '/pages/' + lang + '/PikaUi-' + pika_api_version,
meson.project_build_root() / '@INPUT@'
],
build_by_default: true)
gir_ui_docs_cache = custom_target('g-ir-PikaUi-' + lang + '-cache',
input: [ gir_ui_docs_pages ],
output: [ 'PikaUi-' + lang + '-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/' + lang + '/PikaUi-' + pika_api_version + '/index.cache',
'@OUTDIR@' + '/pages/' + lang + '/PikaUi-' + pika_api_version,
],
build_by_default: true)
gir_ui_docs_html = custom_target('g-ir-PikaUi-' + lang + '-html',
input: [ gir_ui_docs_cache ],
output: [ 'PikaUi-' + lang + '-html' ],
#install_dir: prefix / pikadatadir / 'g-ir-docs/html/' + lang + '/PikaUi',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/' + lang + '/PikaUi-' + pika_api_version,
'@OUTDIR@' + '/pages/' + lang + '/PikaUi-' + pika_api_version,
],
build_by_default: true)
endforeach
## TODO: a unit test using yelp-check would be useful.