diff --git a/gtkdochelper.py b/gtkdochelper.py index f27b2b5ee..47090125b 100755 --- a/gtkdochelper.py +++ b/gtkdochelper.py @@ -17,7 +17,7 @@ import sys, os import subprocess import shutil -def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_sgml, module): +def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_file, module): 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') @@ -25,14 +25,19 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_sgml, mod '--module=' + module, '--source-dir=' + abs_src, '--output-dir=.'], cwd=abs_out) + if main_file.endswith('sgml'): + modeflag = '--sgml-mode' + else: + modeflag = '--xml-mode' mkdb_cmd = ['gtkdoc-mkdb', '--module=' + module, '--output-format=xml', - '--sgml-mode', + modeflag, '--source-dir=' + abs_src] - sgml_abs = os.path.join(source_root, doc_subdir, main_sgml) + main_abs = os.path.join(source_root, doc_subdir, main_file) if len(main_sgml) > 0: - mkdb_cmd.append('--main-sgml-file=' + sgml_abs) + # 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) shutil.rmtree(htmldir, ignore_errors=True) try: @@ -40,11 +45,11 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdir, main_sgml, mod except Exception: pass mkhtml_cmd = ['gtkdoc-mkhtml', module] - if len(main_sgml) > 0: + if len(main_file) > 0: # Workaround for # https://bugzilla.gnome.org/show_bug.cgi?id=753145 - plainfile = os.path.split(sgml_abs)[1] - shutil.copy(sgml_abs, os.path.join(abs_out, plainfile)) + plainfile = os.path.split(main_abs)[1] + shutil.copy(main_abs, os.path.join(abs_out, plainfile)) mkhtml_cmd.append('../' + plainfile) else: mkhtml_cmd.append('../%s-docs.xml' % module) diff --git a/modules/gnome.py b/modules/gnome.py index 43c053766..0295b03d5 100644 --- a/modules/gnome.py +++ b/modules/gnome.py @@ -184,9 +184,16 @@ class GnomeModule: raise MesonException('Gtkdoc arg must be string.') if not 'src_dir' in kwargs: raise MesonException('Keyword argument src_dir missing.') - main_sgml = kwargs.get('main_sgml', '') - if not isinstance(main_sgml, str): + main_file = kwargs.get('main_sgml', '') + if not isinstance(main_file, str): raise MesonException('Main sgml keyword argument must be a string.') + main_xml = kwargs.get('main_xml', '') + if not isinstance(main_xml, str): + raise MesonException('Main xml keyword argument must be a string.') + if main_xml != '': + if main_file != '': + raise MesonException('You can only specify main_xml or main_sgml, not both.') + main_file = main_xml src_dir = kwargs['src_dir'] targetname = modulename + '-doc' command = os.path.normpath(os.path.join(os.path.split(__file__)[0], "../gtkdochelper.py")) @@ -194,7 +201,7 @@ class GnomeModule: state.environment.get_build_dir(), state.subdir, os.path.normpath(os.path.join(state.subdir, src_dir)), - main_sgml, + main_file, modulename] res = [build.RunTarget(targetname, command, args, state.subdir)] if kwargs.get('install', True):