build: meson: fix generation of api docs

We need to copy all introspection files to the same directory when
building the documentation.

Note that we only require Meson 0.44, but for the documentation at
least 0.46 is needed because of a new functionality of
gnome.gdbus_codegen(). In this way we can still build on Travis CI
(without documentation).
This commit is contained in:
Beniamino Galvani
2018-09-23 16:30:18 +02:00
parent 929298333e
commit dcfddeef7a
4 changed files with 28 additions and 4 deletions

View File

@@ -21,6 +21,23 @@ configure_file(
)
content_files += join_paths(meson.source_root(), 'COPYING')
filecopier = find_program('cp')
foreach intro : introspection_files
path = intro.full_path().split('/')[-1]
custom_target(path,
input: intro,
output: path,
command : [filecopier, '@INPUT@', '@OUTPUT@'],
build_by_default: true,
)
endforeach
custom_target('common.ent',
input: common_ent_file,
output: 'common.ent',
command: [filecopier, '@INPUT@', '@OUTPUT@'],
build_by_default: true,
)
gnome.gtkdoc(
doc_module,

View File

@@ -53,6 +53,7 @@ ifaces = [
ifaces_xmls = []
sources = []
introspection_files = []
# FIXME?: DBUS_INTERFACE_DOCS/docbook files are generated in
# "meson.current_build_dir()" instead of "meson.source_root()/docs/api"
@@ -60,7 +61,7 @@ foreach iface: ifaces
iface_xml = iface + '.xml'
ifaces_xmls += files(iface_xml)
sources += gnome.gdbus_codegen(
res = gnome.gdbus_codegen(
iface,
iface_xml,
interface_prefix: 'org.freedesktop.NetworkManager',
@@ -68,8 +69,15 @@ foreach iface: ifaces
docbook: 'dbus'
)
# FIXME: gnome.gdbus_codegen should return the docbook as a target result
sources += res
content_files += join_paths(meson.current_build_dir(), 'dbus-' + iface_xml)
# res is an array only since 0.46. Documentation won't work with
# older versions
if meson.version().version_compare('>= 0.46.0')
introspection_files += res[2]
endif
endforeach
install_data(

View File

@@ -48,8 +48,6 @@ if enable_ovs
mans += [['nm-openvswitch', '7']]
endif
content_files += join_paths(meson.current_build_dir(), 'common.ent')
foreach man: mans
input = man[0] + '.xml'
content_files += join_paths(meson.current_source_dir(), input)

View File

@@ -879,6 +879,7 @@ enable_docs = get_option('docs')
if enable_docs
assert(enable_introspection, '-Ddocs=true requires -Dintrospection=true')
assert(meson.version().version_compare('>= 0.46.0'), '-Ddocs requires meson >= 0.46')
subdir('man')
subdir('docs')
endif