aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2015-10-20 18:18:17 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2015-10-20 18:18:17 +0300
commit5f2b00233db26b9f35391271152e29fafbce23f7 (patch)
tree4b99639d81ce59763b326e63fc41d65ca08edf2f
parent3103409f6e9792abc6ff4d33596e8d7449d764b7 (diff)
parentbbbe102cc29a19c726095dbd5118c515996e64f0 (diff)
downloadmeson-5f2b00233db26b9f35391271152e29fafbce23f7.zip
meson-5f2b00233db26b9f35391271152e29fafbce23f7.tar.gz
meson-5f2b00233db26b9f35391271152e29fafbce23f7.tar.bz2
Merge pull request #288 from mesonbuild/gdocflags
Can specify extra flags to gtkdoc-scan invocations
-rwxr-xr-xgtkdochelper.py56
-rw-r--r--modules/gnome.py28
2 files changed, 62 insertions, 22 deletions
diff --git a/gtkdochelper.py b/gtkdochelper.py
index 4709012..c063bb6 100755
--- a/gtkdochelper.py
+++ b/gtkdochelper.py
@@ -16,15 +16,29 @@
import sys, os
import subprocess
import shutil
+import argparse
-def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_file, module):
+parser = argparse.ArgumentParser()
+
+parser.add_argument('--sourcedir', dest='sourcedir')
+parser.add_argument('--builddir', dest='builddir')
+parser.add_argument('--subdir', dest='subdir')
+parser.add_argument('--headerdir', dest='headerdir')
+parser.add_argument('--mainfile', dest='mainfile')
+parser.add_argument('--modulename', dest='modulename')
+parser.add_argument('--htmlargs', dest='htmlargs', default='')
+parser.add_argument('--scanargs', dest='scanargs', default='')
+
+def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir,
+ main_file, module, html_args, scan_args):
abs_src = os.path.join(source_root, src_subdir)
abs_out = os.path.join(build_root, doc_subdir)
htmldir = os.path.join(abs_out, 'html')
subprocess.check_call(['gtkdoc-scan',
'--module=' + module,
'--source-dir=' + abs_src,
- '--output-dir=.'], cwd=abs_out)
+ '--output-dir=.'] + scan_args,
+ cwd=abs_out)
if main_file.endswith('sgml'):
modeflag = '--sgml-mode'
else:
@@ -35,7 +49,7 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_file, mod
modeflag,
'--source-dir=' + abs_src]
main_abs = os.path.join(source_root, doc_subdir, main_file)
- if len(main_sgml) > 0:
+ if len(main_file) > 0:
# Yes, this is the flag even if the file is in xml.
mkdb_cmd.append('--main-sgml-file=' + main_abs)
subprocess.check_call(mkdb_cmd, cwd=abs_out)
@@ -44,7 +58,7 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_file, mod
os.mkdir(htmldir)
except Exception:
pass
- mkhtml_cmd = ['gtkdoc-mkhtml', module]
+ mkhtml_cmd = ['gtkdoc-mkhtml', module] + html_args
if len(main_file) > 0:
# Workaround for
# https://bugzilla.gnome.org/show_bug.cgi?id=753145
@@ -65,21 +79,31 @@ def install_gtkdoc(build_root, doc_subdir, install_prefix, datadir, module):
shutil.copytree(source, final_destination)
if __name__ == '__main__':
-# source_root = '/home/jpakkane/workspace/meson/test cases/frameworks/10 gtk-doc'
-# build_root = '/home/jpakkane/workspace/meson/work area'
-# doc_subdir = 'doc'
-# src_subdir = 'include'
-# module = 'foobar'
- if len(sys.argv) != 7:
- print(sys.argv)
- print("Bad arguments.")
- sys.exit(1)
- (source_root, build_root, doc_subdir, src_subdir, main_sgml, module) = sys.argv[1:]
- build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_sgml, module)
+ options = parser.parse_args(sys.argv[1:])
+ if len(options.htmlargs) > 0:
+ htmlargs = options.htmlargs.split('@@')
+ else:
+ htmlargs = []
+ if len(options.scanargs) > 0:
+ scanargs = options.scanargs.split('@@')
+ else:
+ scanargs = []
+ build_gtkdoc(options.sourcedir,
+ options.builddir,
+ options.subdir,
+ options.headerdir,
+ options.mainfile,
+ options.modulename,
+ htmlargs,
+ scanargs)
if 'MESON_INSTALL_PREFIX' in os.environ:
if 'DESTDIR' in os.environ:
installdir = os.environ['DESTDIR'] + os.environ['MESON_INSTALL_PREFIX']
else:
installdir = os.environ['MESON_INSTALL_PREFIX']
- install_gtkdoc(build_root, doc_subdir, installdir, 'share/gtk-doc/html', module)
+ install_gtkdoc(options.builddir,
+ options.subdir,
+ installdir,
+ 'share/gtk-doc/html',
+ options.modulename)
diff --git a/modules/gnome.py b/modules/gnome.py
index 231cbd4..f126bcf 100644
--- a/modules/gnome.py
+++ b/modules/gnome.py
@@ -227,17 +227,33 @@ class GnomeModule:
header_dir = os.path.join(state.environment.get_source_dir(), src_dir.get_curdir(), incdirs[0])
else:
header_dir = os.path.normpath(os.path.join(state.subdir, src_dir))
- args = [state.environment.get_source_dir(),
- state.environment.get_build_dir(),
- state.subdir,
- header_dir,
- main_file,
- modulename]
+ args = ['--sourcedir=' + state.environment.get_source_dir(),
+ '--builddir=' + state.environment.get_build_dir(),
+ '--subdir=' + state.subdir,
+ '--headerdir=' + header_dir,
+ '--mainfile=' + main_file,
+ '--modulename=' + modulename]
+ args += self.unpack_args('--htmlargs=', 'html_args', kwargs)
+ args += self.unpack_args('--scanargs=', 'scan_args', kwargs)
res = [build.RunTarget(targetname, command, args, state.subdir)]
if kwargs.get('install', True):
res.append(build.InstallScript([command] + args))
return res
+ def unpack_args(self, arg, kwarg_name, kwargs):
+ try:
+ new_args = kwargs[kwarg_name]
+ if not isinstance(new_args, list):
+ new_args = [new_args]
+ for i in new_args:
+ if not isinstance(i, str):
+ raise MesonException('html_args values must be strings.')
+ except KeyError:
+ return[]
+ if len(html_args) > 0:
+ return ['--htmlargs=' + '@@'.join(new_args)]
+ return []
+
def gdbus_codegen(self, state, args, kwargs):
if len(args) != 2:
raise MesonException('Gdbus_codegen takes two arguments, name and xml file.')