devel-docs: generate both gjs (Javascript) and Python API docs.

Apparently g-ir-doc-tool does not support other language than C, Python
and gjs right now (in particular neither Lua nor Vala bindings).
This commit is contained in:
Jehan 2021-01-29 18:04:20 +01:00
parent eae3d47e32
commit 72af40b427
2 changed files with 126 additions and 123 deletions

View File

@ -1,34 +1,33 @@
if ENABLE_G_IR_DOC
Gimp-pythondocs: $(top_builddir)/libgimp/Gimp-@GIMP_API_VERSION@.gir
Gimp-%-docs: $(top_builddir)/libgimp/Gimp-@GIMP_API_VERSION@.gir
$(GIR_DOC_TOOL) -I "$(prefix)/share/gir-1.0/" \
-I "$(top_builddir)/libgimp" --language=Python \
-o "$(builddir)/pages/Python/Gimp-$(GIMP_API_VERSION)" \
$^
-I "$(top_builddir)/libgimp" --language=$* \
-o "$(builddir)/pages/$*/Gimp-$(GIMP_API_VERSION)" \
$<
$(YELP_BUILD) cache \
-o "$(builddir)/pages/Python/Gimp-$(GIMP_API_VERSION)/index.cache" \
"$(builddir)/pages/Python/Gimp-$(GIMP_API_VERSION)/"
mkdir -p "$(builddir)/html/Python/Gimp-$(GIMP_API_VERSION)"
-o "$(builddir)/pages/$*/Gimp-$(GIMP_API_VERSION)/index.cache" \
"$(builddir)/pages/$*/Gimp-$(GIMP_API_VERSION)/"
mkdir -p "$(builddir)/html/$*/Gimp-$(GIMP_API_VERSION)"
$(YELP_BUILD) html \
-o "$(builddir)/html/Python/Gimp-$(GIMP_API_VERSION)" \
"$(builddir)/pages/Python/Gimp-$(GIMP_API_VERSION)/"
echo "Python Gimp module documentation: $(builddir)/html/Python/Gimp-$(GIMP_API_VERSION)"
-o "$(builddir)/html/$*/Gimp-$(GIMP_API_VERSION)" \
"$(builddir)/pages/$*/Gimp-$(GIMP_API_VERSION)/"
echo "$* Gimp module documentation: $(builddir)/html/Python/Gimp-$(GIMP_API_VERSION)"
GimpUi-pythondocs: $(top_builddir)/libgimp/GimpUi-@GIMP_API_VERSION@.gir
$(GIR_DOC_TOOL) -I "$(prefix)/share/gir-1.0/" \
-I "$(top_builddir)/libgimp" --language=Python \
-o "$(builddir)/pages/Python/GimpUi-$(GIMP_API_VERSION)" \
$^
GimpUi-%-docs: $(top_builddir)/libgimp/GimpUi-@GIMP_API_VERSION@.gir Gimp-%-docs
$(GIR_DOC_TOOL) -I "$(prefix)/share/gir-1.0/" \
-I "$(top_builddir)/libgimp" --language=$* \
-o "$(builddir)/pages/$*/GimpUi-$(GIMP_API_VERSION)" \
$<
$(YELP_BUILD) cache \
-o "$(builddir)/pages/Python/GimpUi-$(GIMP_API_VERSION)/index.cache" \
"$(builddir)/pages/Python/GimpUi-$(GIMP_API_VERSION)/"
mkdir -p "$(builddir)/html/Python/GimpUi-$(GIMP_API_VERSION)"
-o "$(builddir)/pages/$*/GimpUi-$(GIMP_API_VERSION)/index.cache" \
"$(builddir)/pages/$*/GimpUi-$(GIMP_API_VERSION)/"
mkdir -p "$(builddir)/html/$*/GimpUi-$(GIMP_API_VERSION)"
$(YELP_BUILD) html \
-o "$(builddir)/html/Python/GimpUi-$(GIMP_API_VERSION)" \
"$(builddir)/pages/Python/GimpUi-$(GIMP_API_VERSION)/"
echo "Python GimpUi module documentation: $(builddir)/html/Python/Gimp-$(GIMP_API_VERSION)"
-o "$(builddir)/html/$*/GimpUi-$(GIMP_API_VERSION)" \
"$(builddir)/pages/$*/GimpUi-$(GIMP_API_VERSION)/"
echo "$* GimpUi module documentation: $(builddir)/html/Python/GimpUi-$(GIMP_API_VERSION)"
.PHONY: Gimp-pythondocs GimpUi-pythondocs
all-local: Gimp-pythondocs GimpUi-pythondocs
all-local: GimpUi-gjs-docs GimpUi-python-docs
endif

View File

@ -1,110 +1,114 @@
# 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-dir',
depends: [ libgimp_gir, libgimpui_gir ],
input: [ ],
output: [ 'html-dirs' ],
command: [
'mkdir', '-p',
'@OUTDIR@' + '/pages/Python/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/pages/Python/Gimp-' + gimp_api_version,
'@OUTDIR@' + '/html/Python/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/html/Python/Gimp-' + gimp_api_version
],
build_by_default: true)
foreach lang : [ 'python', 'gjs' ]
# 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_python = custom_target('g-ir-Gimp-python-pages',
depends: [ gir_docs_dir, libgimp_gir ],
input: [ libgimp_gir[0] ],
output: [ 'Gimp-python-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.build_root() / 'libgimp',
'--language=Python',
'-o', '@OUTDIR@' + '/pages/Python/Gimp-' + gimp_api_version,
'@INPUT@'
],
build_by_default: true)
# 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: [ libgimp_gir, libgimpui_gir ],
input: [ ],
output: [ 'gir-' + lang + '-dirs' ],
command: [
'mkdir', '-p',
'@OUTDIR@' + '/pages/' + lang + '/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/pages/' + lang + '/Gimp-' + gimp_api_version,
'@OUTDIR@' + '/html/' + lang + '/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/html/' + lang + '/Gimp-' + gimp_api_version
],
build_by_default: true)
## Gimp 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-Gimp-' + lang + '-pages',
depends: [ gir_docs_dir, libgimp_gir ],
input: [ libgimp_gir[0] ],
output: [ 'Gimp-' + lang + '-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.build_root() / 'libgimp',
'--language=' + lang,
'-o', '@OUTDIR@' + '/pages/' + lang + '/Gimp-' + gimp_api_version,
'@INPUT@'
],
build_by_default: true)
gir_cache_python = custom_target('g-ir-Gimp-python-cache',
input: [ gir_docs_python ],
output: [ 'Gimp-python-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/Python/Gimp-' + gimp_api_version + '/index.cache',
'@OUTDIR@' + '/pages/Python/Gimp-' + gimp_api_version,
],
build_by_default: true)
## Gimp Module ##
gir_html_python = custom_target('g-ir-Gimp-python-html',
input: [ gir_cache_python ],
output: [ 'Gimp-python-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 / gimpdatadir / 'g-ir-docs/html/Python/Gimp',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/Python/Gimp-' + gimp_api_version,
'@OUTDIR@' + '/pages/Python/Gimp-' + gimp_api_version,
],
build_by_default: true)
gir_docs_cache = custom_target('g-ir-Gimp-' + lang + '-cache',
input: [ gir_docs_pages ],
output: [ 'Gimp-' + lang + '-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/' + lang + '/Gimp-' + gimp_api_version + '/index.cache',
'@OUTDIR@' + '/pages/' + lang + '/Gimp-' + gimp_api_version,
],
build_by_default: true)
## GimpUi module ##
gir_docs_html = custom_target('g-ir-Gimp-' + lang + '-html',
input: [ gir_docs_cache ],
output: [ 'Gimp-' + 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 / gimpdatadir / 'g-ir-docs/html/' + lang + '/Gimp',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/' + lang + '/Gimp-' + gimp_api_version,
'@OUTDIR@' + '/pages/' + lang + '/Gimp-' + gimp_api_version,
],
build_by_default: true)
gir_docs_python = custom_target('g-ir-GimpUi-python-pages',
depends: [ gir_docs_dir, libgimpui_gir ],
input: [ libgimpui_gir[0] ],
output: [ 'GimpUi-python-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.build_root() / 'libgimp',
'--language=Python',
'-o', '@OUTDIR@' + '/pages/Python/GimpUi-' + gimp_api_version,
'@INPUT@'
],
build_by_default: true)
## GimpUi module ##
gir_cache_python = custom_target('g-ir-GimpUi-python-cache',
input: [ gir_docs_python ],
output: [ 'GimpUi-python-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/Python/GimpUi-' + gimp_api_version + '/index.cache',
'@OUTDIR@' + '/pages/Python/GimpUi-' + gimp_api_version,
],
build_by_default: true)
gir_ui_docs_pages = custom_target('g-ir-GimpUi-' + lang + '-pages',
depends: [ gir_docs_dir, libgimpui_gir ],
input: [ libgimpui_gir[0] ],
output: [ 'GimpUi-' + lang + '-pages' ],
command: [
gir_doc_tool,
'-I', prefix / 'share/gir-1.0/',
'-I', meson.build_root() / 'libgimp',
'--language=' + lang,
'-o', '@OUTDIR@' + '/pages/' + lang + '/GimpUi-' + gimp_api_version,
'@INPUT@'
],
build_by_default: true)
gir_html_python = custom_target('g-ir-GimpUi-python-html',
input: [ gir_cache_python ],
output: [ 'GimpUi-python-html' ],
#install_dir: prefix / gimpdatadir / 'g-ir-docs/html/Python/GimpUi',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/Python/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/pages/Python/GimpUi-' + gimp_api_version,
],
build_by_default: true)
gir_ui_docs_cache = custom_target('g-ir-GimpUi-' + lang + '-cache',
input: [ gir_ui_docs_pages ],
output: [ 'GimpUi-' + lang + '-cache' ],
command: [
yelp_build, 'cache',
'-o', '@OUTDIR@' + '/pages/' + lang + '/GimpUi-' + gimp_api_version + '/index.cache',
'@OUTDIR@' + '/pages/' + lang + '/GimpUi-' + gimp_api_version,
],
build_by_default: true)
gir_ui_docs_html = custom_target('g-ir-GimpUi-' + lang + '-html',
input: [ gir_ui_docs_cache ],
output: [ 'GimpUi-' + lang + '-html' ],
#install_dir: prefix / gimpdatadir / 'g-ir-docs/html/' + lang + '/GimpUi',
#install: true,
command: [
'yelp-build', 'html',
'-o', '@OUTDIR@' + '/html/' + lang + '/GimpUi-' + gimp_api_version,
'@OUTDIR@' + '/pages/' + lang + '/GimpUi-' + gimp_api_version,
],
build_by_default: true)
endforeach
## TODO: a unit test using yelp-check would be useful.