From aeb7eb7376bb6bbb149c0bd9c02ec187d3716ec2 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Sun, 23 Sep 2018 16:30:18 +0200 Subject: [PATCH] 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). (cherry picked from commit dcfddeef7a7af537f3d271e94d2170ad0d28e39f) --- docs/api/meson.build | 17 +++++++++++++++++ introspection/meson.build | 12 ++++++++++-- man/meson.build | 2 -- meson.build | 1 + 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/docs/api/meson.build b/docs/api/meson.build index d0cc3ac8cf..31b9776c88 100644 --- a/docs/api/meson.build +++ b/docs/api/meson.build @@ -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, diff --git a/introspection/meson.build b/introspection/meson.build index a554083684..35d8c87c42 100644 --- a/introspection/meson.build +++ b/introspection/meson.build @@ -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( diff --git a/man/meson.build b/man/meson.build index 41fbf583a6..929431668e 100644 --- a/man/meson.build +++ b/man/meson.build @@ -47,8 +47,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) diff --git a/meson.build b/meson.build index f3e3ba217b..09769909f6 100644 --- a/meson.build +++ b/meson.build @@ -867,6 +867,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