[glibmm] Fix build as subproject without building documentation



commit 008ebaae588c885b83adda901177a2b1c8c03b9d
Author: Kjell Ahlstedt <kjellahlstedt gmail com>
Date:   Sat May 15 10:51:03 2021 +0200

    Fix build as subproject without building documentation
    
    * meson.build: If mm-common-get is not found in maintainer-mode
    with 'required: false', try with 'required: true'.
    Don't try to use tag_file, if documentation is not built.
    * docs/reference/meson.build: Don't use variables from modules
    that don't define doxytagfile. These are subprojects that don't build
    their documentation.

 docs/reference/meson.build | 34 ++++++++++++++++++----------------
 meson.build                | 34 +++++++++++++++++++---------------
 2 files changed, 37 insertions(+), 31 deletions(-)
---
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
index 8e866ec1..296f2909 100644
--- a/docs/reference/meson.build
+++ b/docs/reference/meson.build
@@ -5,7 +5,7 @@
 #        glibmm_extra_h_files, giomm_extra_h_files, glibmm_built_h_file_targets,
 #        giomm_built_h_file_targets, glibmm_h_m4_files, install_datadir,
 #        python3, doc_reference_py, can_add_dist_script
-# Output: install_docdir, install_devhelpdir, tag_file
+# Output: install_docdir, install_devhelpdir, if build_documentation: tag_file
 
 tag_file_modules = [
   'mm-common-libstdc++',
@@ -16,21 +16,23 @@ docinstall_flags = []
 foreach module : tag_file_modules
   depmod = dependency(module, required: false)
   if depmod.found()
-    doxytagfile = depmod.get_variable(pkgconfig: 'doxytagfile', internal: 'doxytagfile')
-    htmlrefpub = depmod.get_variable(pkgconfig: 'htmlrefpub', internal: 'htmlrefpub', default_value: '')
-    htmlrefdir = depmod.get_variable(pkgconfig: 'htmlrefdir', internal: 'htmlrefdir', default_value: '')
-    if htmlrefpub == ''
-      htmlrefpub = htmlrefdir
-    elif htmlrefdir == ''
-      htmlrefdir = htmlrefpub
-    endif
-    doxygen_tagfiles += ' "' + doxytagfile + '=' + htmlrefpub + '"'
-
-    # Doxygen <= 1.8.15
-    docinstall_flags += ['-l', doxytagfile.split('/')[-1] + '@' + htmlrefdir]
-    if htmlrefpub != htmlrefdir
-      # Doxygen >= 1.8.16
-      docinstall_flags += ['-l', 's@' + htmlrefpub + '@' + htmlrefdir]
+    doxytagfile = depmod.get_variable(pkgconfig: 'doxytagfile', internal: 'doxytagfile', default_value: '')
+    if doxytagfile != ''
+      htmlrefpub = depmod.get_variable(pkgconfig: 'htmlrefpub', internal: 'htmlrefpub', default_value: '')
+      htmlrefdir = depmod.get_variable(pkgconfig: 'htmlrefdir', internal: 'htmlrefdir', default_value: '')
+      if htmlrefpub == ''
+        htmlrefpub = htmlrefdir
+      elif htmlrefdir == ''
+        htmlrefdir = htmlrefpub
+      endif
+      doxygen_tagfiles += ' "' + doxytagfile + '=' + htmlrefpub + '"'
+
+      # Doxygen <= 1.8.15
+      docinstall_flags += ['-l', doxytagfile.split('/')[-1] + '@' + htmlrefdir]
+      if htmlrefpub != htmlrefdir
+        # Doxygen >= 1.8.16
+        docinstall_flags += ['-l', 's@' + htmlrefpub + '@' + htmlrefdir]
+      endif
     endif
   endif
 endforeach
diff --git a/meson.build b/meson.build
index df3bf517..0ca01cb6 100644
--- a/meson.build
+++ b/meson.build
@@ -132,7 +132,11 @@ giomm_requires = ' '.join(giomm_requires)
 # reference documentation shall be built.
 mm_common_get = find_program('mm-common-get', required: false)
 if maintainer_mode and not mm_common_get.found()
-  error('mm-common-get not found. mm-common >= 1.0.0 is required.')
+  message('Maintainer mode requires the \'mm-common-get\' command. If it is not found,\n' +
+          'install the \'mm-common\' package, version 1.0.0 or higher.')
+  # If meson --wrap-mode != forcefallback, Meson falls back to the mm-common
+  # subproject only if mm-common-get is required.
+  mm_common_get = find_program('mm-common-get', required: true)
 endif
 m4 = find_program('m4', required: maintainer_mode) # Used by gmmproc
 perl = find_program('perl', required: maintainer_mode or build_documentation)
@@ -299,22 +303,22 @@ if meson.is_subproject()
     pm_basefiles,
   )
 
-  glibmm_dep = declare_dependency(
-    dependencies: glibmm_own_dep,
-    variables: {
-      'gmmprocdir': gmmproc_subproj_dir,
-      'doxytagfile': tag_file.full_path(),
-      'htmlrefdir': install_prefix / install_docdir / 'reference' / 'html',
-      'htmlrefpub': 'http://library.gnome.org/devel/' + pkg_conf_data.get_unquoted('PACKAGE_TARNAME') + 
'/unstable/'
-    }
-  )
+  pkgconfig_vars = {
+    'htmlrefdir': install_prefix / install_docdir / 'reference' / 'html',
+    'htmlrefpub': 'http://library.gnome.org/devel/' + pkg_conf_data.get_unquoted('PACKAGE_TARNAME') + 
'/unstable/'
+  }
+  if build_documentation
+    pkgconfig_vars += {'doxytagfile': tag_file.full_path()}
+  endif
   giomm_dep = declare_dependency(
     dependencies: giomm_own_dep,
-    variables: {
-      'doxytagfile': tag_file.full_path(),
-      'htmlrefdir': install_prefix / install_docdir / 'reference' / 'html',
-      'htmlrefpub': 'http://library.gnome.org/devel/' + pkg_conf_data.get_unquoted('PACKAGE_TARNAME') + 
'/unstable/'
-    }
+    variables: pkgconfig_vars,
+  )
+
+  pkgconfig_vars += {'gmmprocdir': gmmproc_subproj_dir}
+  glibmm_dep = declare_dependency(
+    dependencies: glibmm_own_dep,
+    variables: pkgconfig_vars,
   )
 
   # A main project that looks for glibmm_pcname.pc and giomm_pcname.pc


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]