aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/gnome.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/modules/gnome.py')
-rw-r--r--mesonbuild/modules/gnome.py81
1 files changed, 77 insertions, 4 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 6764133..9f955ae 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -137,6 +137,8 @@ if T.TYPE_CHECKING:
install_header: bool
install_dir: T.Optional[str]
docbook: T.Optional[str]
+ rst: T.Optional[str]
+ markdown: T.Optional[str]
autocleanup: Literal['all', 'none', 'objects', 'default']
class GenMarshal(TypedDict):
@@ -957,8 +959,8 @@ class GnomeModule(ExtensionModule):
return gir_filelist_filename
- @staticmethod
def _make_gir_target(
+ self,
state: 'ModuleState',
girfile: str,
scan_command: T.Sequence[T.Union['FileOrString', Executable, ExternalProgram, OverrideProgram]],
@@ -988,6 +990,11 @@ class GnomeModule(ExtensionModule):
run_env.set('CFLAGS', [quote_arg(x) for x in env_flags], ' ')
run_env.merge(kwargs['env'])
+ gir_dep, _, _ = self._get_gir_dep(state)
+
+ # response file supported?
+ rspable = mesonlib.version_compare(gir_dep.get_version(), '>= 1.85.0')
+
return GirTarget(
girfile,
state.subdir,
@@ -1002,6 +1009,7 @@ class GnomeModule(ExtensionModule):
install_dir=[install_dir],
install_tag=['devel'],
env=run_env,
+ rspable=rspable,
)
@staticmethod
@@ -1168,13 +1176,13 @@ class GnomeModule(ExtensionModule):
scan_cflags += list(self._get_scanner_cflags(self._get_external_args_for_langs(state, [lc[0] for lc in langs_compilers])))
scan_internal_ldflags = []
scan_external_ldflags = []
- scan_env_ldflags = []
+ scan_env_ldflags = state.environment.coredata.get_external_link_args(MachineChoice.HOST, 'c')
for cli_flags, env_flags in (self._get_scanner_ldflags(internal_ldflags), self._get_scanner_ldflags(dep_internal_ldflags)):
scan_internal_ldflags += cli_flags
- scan_env_ldflags = env_flags
+ scan_env_ldflags += env_flags
for cli_flags, env_flags in (self._get_scanner_ldflags(external_ldflags), self._get_scanner_ldflags(dep_external_ldflags)):
scan_external_ldflags += cli_flags
- scan_env_ldflags = env_flags
+ scan_env_ldflags += env_flags
girtargets_inc_dirs = self._get_gir_targets_inc_dirs(girtargets)
inc_dirs = kwargs['include_directories']
@@ -1619,6 +1627,8 @@ class GnomeModule(ExtensionModule):
),
KwargInfo('install_header', bool, default=False, since='0.46.0'),
KwargInfo('docbook', (str, NoneType)),
+ KwargInfo('rst', (str, NoneType), since='1.9.0'),
+ KwargInfo('markdown', (str, NoneType), since='1.9.0'),
KwargInfo(
'autocleanup', str, default='default', since='0.47.0',
validator=in_set_validator({'all', 'none', 'objects'})),
@@ -1675,6 +1685,26 @@ class GnomeModule(ExtensionModule):
cmd += ['--generate-docbook', docbook]
+ if kwargs['rst'] is not None:
+ if not mesonlib.version_compare(glib_version, '>= 2.71.1'):
+ mlog.error(f'Glib version ({glib_version}) is too old to '
+ 'support the \'rst\' kwarg, need 2.71.1 or '
+ 'newer')
+
+ rst = kwargs['rst']
+
+ cmd += ['--generate-rst', rst]
+
+ if kwargs['markdown'] is not None:
+ if not mesonlib.version_compare(glib_version, '>= 2.75.2'):
+ mlog.error(f'Glib version ({glib_version}) is too old to '
+ 'support the \'markdown\' kwarg, need 2.75.2 '
+ 'or newer')
+
+ markdown = kwargs['markdown']
+
+ cmd += ['--generate-md', markdown]
+
# https://git.gnome.org/browse/glib/commit/?id=ee09bb704fe9ccb24d92dd86696a0e6bb8f0dc1a
if mesonlib.version_compare(glib_version, '>= 2.51.3'):
cmd += ['--output-directory', '@OUTDIR@', '--generate-c-code', namebase, '@INPUT@']
@@ -1750,6 +1780,48 @@ class GnomeModule(ExtensionModule):
)
targets.append(docbook_custom_target)
+ if kwargs['rst'] is not None:
+ rst = kwargs['rst']
+ # The rst output is always ${rst}-${name_of_xml_file}
+ output = namebase + '-rst'
+ outputs = []
+ for f in xml_files:
+ outputs.append('{}-{}'.format(rst, os.path.basename(str(f))))
+
+ rst_custom_target = CustomTarget(
+ output,
+ state.subdir,
+ state.subproject,
+ state.environment,
+ cmd + ['--output-directory', '@OUTDIR@', '--generate-rst', rst, '@INPUT@'],
+ xml_files,
+ outputs,
+ build_by_default=build_by_default,
+ description='Generating gdbus reStructuredText {}',
+ )
+ targets.append(rst_custom_target)
+
+ if kwargs['markdown'] is not None:
+ markdown = kwargs['markdown']
+ # The markdown output is always ${markdown}-${name_of_xml_file}
+ output = namebase + '-markdown'
+ outputs = []
+ for f in xml_files:
+ outputs.append('{}-{}'.format(markdown, os.path.basename(str(f))))
+
+ markdown_custom_target = CustomTarget(
+ output,
+ state.subdir,
+ state.subproject,
+ state.environment,
+ cmd + ['--output-directory', '@OUTDIR@', '--generate-md', markdown, '@INPUT@'],
+ xml_files,
+ outputs,
+ build_by_default=build_by_default,
+ description='Generating gdbus markdown {}',
+ )
+ targets.append(markdown_custom_target)
+
return ModuleReturnValue(targets, targets)
@typed_pos_args('gnome.mkenums', str)
@@ -1991,6 +2063,7 @@ class GnomeModule(ExtensionModule):
extra_depends=depends,
# https://github.com/mesonbuild/meson/issues/973
absolute_paths=True,
+ rspable=mesonlib.is_windows() or mesonlib.is_cygwin(),
description='Generating GObject enum file {}',
)