summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjellahlstedt@gmail.com>2020-03-01 13:30:00 +0100
committerKjell Ahlstedt <kjellahlstedt@gmail.com>2020-03-01 13:30:00 +0100
commitd378578484718d267bf429ef2e6eded695446b46 (patch)
treee0a38dc5fc9848012df87e56a460f74401f0e487 /docs
parent1df52bb90b7ca3780043b16acf5bb5eb483876f8 (diff)
downloadglibmm-d378578484718d267bf429ef2e6eded695446b46.tar.gz
Add support for building glibmm with Meson
glibmm can be built with either Autotools or Meson. See MR !27
Diffstat (limited to 'docs')
-rw-r--r--docs/reference/meson.build170
1 files changed, 170 insertions, 0 deletions
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
new file mode 100644
index 00000000..029a61cf
--- /dev/null
+++ b/docs/reference/meson.build
@@ -0,0 +1,170 @@
+# docs/reference
+
+# Input: built_files_root, project_source_root, glibmm_pcname, giomm_pcname,
+# perl, glibmm_hg_ccg_basenames, giomm_hg_ccg_basenames,
+# glibmm_extra_h_files, giomm_extra_h_files, glibmm_built_h_file_targets,
+# giomm_built_h_file_targets, install_datadir,python3, doc_reference_py,
+# build_documentation
+# Output: install_docdir, install_devhelpdir
+
+tag_file_modules = [
+ 'mm-common-libstdc++',
+ 'sigc++-3.0',
+]
+doxygen_tagfiles = ''
+docinstall_flags = []
+foreach module : tag_file_modules
+ depmod = dependency(module, required: false)
+ if depmod.found()
+ doxytagfile = depmod.get_pkgconfig_variable('doxytagfile')
+ htmlrefpub = depmod.get_pkgconfig_variable('htmlrefpub', default: '')
+ htmlrefdir = depmod.get_pkgconfig_variable('htmlrefdir', default: '')
+ if htmlrefpub == ''
+ htmlrefpub = htmlrefdir
+ elif htmlrefdir == ''
+ htmlrefdir = htmlrefpub
+ endif
+ doxygen_tagfiles += ' "' + doxytagfile + '=' + htmlrefpub + '"'
+ if not htmlrefdir.endswith('/')
+ htmlrefdir += '/'
+ endif
+ docinstall_flags += ['-l', doxytagfile.split('/')[-1] + '@' + htmlrefdir]
+ endif
+endforeach
+
+book_name = glibmm_pcname
+book_title = meson.project_name() + ' Reference Manual'
+
+# Configuration data for Doxyfile.
+doc_conf_data = configuration_data()
+doc_conf_data.set('configure_input',
+ 'docs/reference/Doxyfile. Generated from Doxyfile.in by meson.configure_file().')
+doc_conf_data.set('PACKAGE_NAME', meson.project_name())
+doc_conf_data.set('PACKAGE_VERSION', meson.project_version())
+doc_conf_data.set('abs_top_builddir', built_files_root)
+doc_conf_data.set('abs_top_srcdir', project_source_root)
+doc_conf_data.set('GLIBMM_MODULE_NAME', book_name)
+doc_conf_data.set('DOXYGEN_TAGFILES', doxygen_tagfiles)
+doc_conf_data.set('PERL', perl.found() ? perl.path() : '')
+
+configure_file(
+ input: 'Doxyfile.in',
+ output: '@BASENAME@',
+ configuration: doc_conf_data,
+)
+
+# Installation directories relative to {prefix}.
+install_docdir = install_datadir / 'doc' / book_name
+install_reference_docdir = install_docdir / 'reference'
+install_image_docdir = install_docdir / 'images'
+install_devhelpdir = install_datadir / 'devhelp' / 'books' / book_name
+
+if not build_documentation
+ # Documentation shall not be built or installed.
+ # Return to the calling meson.build file.
+ subdir_done()
+endif
+
+# Built input .h files to Doxygen.
+built_h_files = []
+foreach file : glibmm_hg_ccg_basenames
+ built_h_files += built_files_root / 'glib' / 'glibmm' / file + '.h'
+endforeach
+foreach file : giomm_hg_ccg_basenames
+ built_h_files += built_files_root / 'gio' / 'giomm' / file + '.h'
+endforeach
+
+# Hand-coded input .h files to Doxygen.
+src_h_files = []
+foreach file : glibmm_extra_h_files
+ if file != 'wrap_init.h'
+ src_h_files += project_source_root / 'glib' / 'glibmm' / file
+ endif
+endforeach
+foreach file : giomm_extra_h_files
+ if file != 'wrap_init.h'
+ src_h_files += project_source_root / 'gio' / 'giomm' / file
+ endif
+endforeach
+src_h_files += project_source_root / 'glib' / 'glibmm.h'
+src_h_files += project_source_root / 'gio' / 'giomm.h'
+
+doctool_dir = project_source_root / 'untracked' / 'docs' # MMDOCTOOLDIR
+doctool_dist_dir = 'untracked' / 'docs' # Relative to MESON_DIST_ROOT
+
+doc_h_files = src_h_files
+if glibmm_built_h_file_targets.length() + giomm_built_h_file_targets.length() > 0
+ # .h files have been generated from .hg files (maintainer mode).
+ # Use built_h_file_targets instead of built_h_files here, or else Meson won't
+ # know that Doxygen must not be executed until the .h files have been built.
+ doc_h_files += glibmm_built_h_file_targets + giomm_built_h_file_targets
+else
+ # All .h files are stored in the source tree (not maintainer mode).
+ doc_h_files += built_h_files
+endif
+
+# Can't use @INPUT@ in the command. It requires absolute file paths.
+# Paths in built_h_file_targets are relative to project_build_root.
+tag_file = custom_target('html_and_tag',
+ input: doc_h_files,
+ output: book_name + '.tag',
+ command: [
+ python3, doc_reference_py, 'doxygen',
+ doctool_dir,
+ '@OUTPUT@',
+ src_h_files,
+ built_h_files,
+ ],
+ build_by_default: build_documentation,
+ install: true,
+ install_dir: install_reference_docdir,
+)
+
+devhelp_file = custom_target('devhelp',
+ input: tag_file,
+ output: book_name + '.devhelp2',
+ command: [
+ python3, doc_reference_py, 'devhelp',
+ doctool_dir,
+ '@INPUT@',
+ '@OUTPUT@',
+ book_name,
+ book_title,
+ ],
+ build_by_default: build_documentation,
+)
+
+# Install Devhelp file and html files.
+meson.add_install_script(
+ python3.path(), doc_reference_py, 'install_doc',
+ doctool_dir,
+ devhelp_file.full_path(),
+ install_devhelpdir,
+ install_reference_docdir / 'html',
+ docinstall_flags
+)
+
+# Install images.
+image_basefiles = [
+ 'gtkmm_logo.gif',
+ 'top.gif',
+]
+image_files = []
+foreach file : image_basefiles
+ image_files += '..' / 'images' / file
+endforeach
+
+install_data(image_files, install_dir: install_image_docdir)
+
+if not meson.is_subproject()
+ # Distribute built files and files copied by mm-common-get.
+ # (add_dist_script() is not allowed in a subproject)
+ meson.add_dist_script(
+ python3.path(), doc_reference_py, 'dist_doc',
+ doctool_dir,
+ doctool_dist_dir,
+ meson.current_build_dir(),
+ tag_file.full_path(),
+ devhelp_file.full_path(),
+ )
+endif