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.py61
1 files changed, 18 insertions, 43 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index fcdd193..972c8f0 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -98,17 +98,12 @@ class GnomeModule(ExtensionModule):
cmd = ['glib-compile-resources', '@INPUT@']
- source_dirs = kwargs.pop('source_dir', [])
- if not isinstance(source_dirs, list):
- source_dirs = [source_dirs]
+ source_dirs, dependencies = mesonlib.extract_as_list(kwargs, 'source_dir', 'dependencies', pop=True)
if len(args) < 2:
raise MesonException('Not enough arguments; the name of the resource '
'and the path to the XML file are required')
- dependencies = kwargs.pop('dependencies', [])
- if not isinstance(dependencies, list):
- dependencies = [dependencies]
# Validate dependencies
for (ii, dep) in enumerate(dependencies):
if hasattr(dep, 'held_object'):
@@ -328,8 +323,7 @@ class GnomeModule(ExtensionModule):
cflags = OrderedSet()
ldflags = OrderedSet()
gi_includes = OrderedSet()
- if not isinstance(deps, list):
- deps = [deps]
+ deps = mesonlib.listify(deps)
for dep in deps:
if hasattr(dep, 'held_object'):
@@ -464,17 +458,14 @@ class GnomeModule(ExtensionModule):
scan_command += ['--filelist=' + gir_filelist_filename]
if 'link_with' in kwargs:
- link_with = kwargs.pop('link_with')
- if not isinstance(link_with, list):
- link_with = [link_with]
+ link_with = mesonlib.extract_as_list(kwargs, 'link_with', pop = True)
+
for link in link_with:
scan_command += self._get_link_args(state, link.held_object, depends,
use_gir_args=True)
if 'includes' in kwargs:
- includes = kwargs.pop('includes')
- if not isinstance(includes, list):
- includes = [includes]
+ includes = mesonlib.extract_as_list(kwargs, 'includes', pop = True)
for inc in includes:
if hasattr(inc, 'held_object'):
inc = inc.held_object
@@ -515,17 +506,17 @@ class GnomeModule(ExtensionModule):
# FIXME: Linking directly to libasan is not recommended but g-ir-scanner
# does not understand -f LDFLAGS. https://bugzilla.gnome.org/show_bug.cgi?id=783892
# ldflags += compilers.sanitizer_link_args(sanitize)
- if kwargs.get('symbol_prefix'):
+ if 'symbol_prefix' in kwargs:
sym_prefix = kwargs.pop('symbol_prefix')
if not isinstance(sym_prefix, str):
raise MesonException('Gir symbol prefix must be str')
scan_command += ['--symbol-prefix=%s' % sym_prefix]
- if kwargs.get('identifier_prefix'):
+ if 'identifier_prefix' in kwargs:
identifier_prefix = kwargs.pop('identifier_prefix')
if not isinstance(identifier_prefix, str):
raise MesonException('Gir identifier prefix must be str')
scan_command += ['--identifier-prefix=%s' % identifier_prefix]
- if kwargs.get('export_packages'):
+ if 'export_packages' in kwargs:
pkgs = kwargs.pop('export_packages')
if isinstance(pkgs, str):
scan_command += ['--pkg-export=%s' % pkgs]
@@ -534,9 +525,7 @@ class GnomeModule(ExtensionModule):
else:
raise MesonException('Gir export packages must be str or list')
- deps = kwargs.pop('dependencies', [])
- if not isinstance(deps, list):
- deps = [deps]
+ deps = mesonlib.extract_as_list(kwargs, 'dependencies', pop = True)
deps = (girtarget.get_all_link_deps() + girtarget.get_external_deps() +
deps)
# Need to recursively add deps on GirTarget sources from our
@@ -593,9 +582,7 @@ class GnomeModule(ExtensionModule):
for i in gi_includes:
scan_command += ['--add-include-path=%s' % i]
- inc_dirs = kwargs.pop('include_directories', [])
- if not isinstance(inc_dirs, list):
- inc_dirs = [inc_dirs]
+ inc_dirs = mesonlib.extract_as_list(kwargs, 'include_directories', pop = True)
for incd in inc_dirs:
if not isinstance(incd.held_object, (str, build.IncludeDirs)):
raise MesonException(
@@ -618,7 +605,7 @@ class GnomeModule(ExtensionModule):
scankwargs = {'output': girfile,
'command': scan_command,
'depends': depends}
- if kwargs.get('install'):
+ if 'install' in kwargs:
scankwargs['install'] = kwargs['install']
scankwargs['install_dir'] = kwargs.get('install_dir_gir',
os.path.join(state.environment.get_datadir(), 'gir-1.0'))
@@ -636,7 +623,7 @@ class GnomeModule(ExtensionModule):
'output': typelib_output,
'command': typelib_cmd,
}
- if kwargs.get('install'):
+ if 'install' in kwargs:
typelib_kwargs['install'] = kwargs['install']
typelib_kwargs['install_dir'] = kwargs.get('install_dir_typelib',
os.path.join(state.environment.get_libdir(), 'girepository-1.0'))
@@ -759,9 +746,7 @@ This will become a hard error in the future.''')
if mode not in VALID_MODES:
raise MesonException('gtkdoc: Mode {} is not a valid mode: {}'.format(mode, VALID_MODES))
- src_dirs = kwargs['src_dir']
- if not isinstance(src_dirs, list):
- src_dirs = [src_dirs]
+ src_dirs = mesonlib.extract_as_list(kwargs, 'src_dir')
header_dirs = []
for src_dir in src_dirs:
if hasattr(src_dir, 'held_object'):
@@ -806,9 +791,7 @@ This will become a hard error in the future.''')
def _get_build_args(self, kwargs, state):
args = []
cflags, ldflags, gi_includes = self._get_dependencies_flags(kwargs.get('dependencies', []), state, include_rpath=True)
- inc_dirs = kwargs.get('include_directories', [])
- if not isinstance(inc_dirs, list):
- inc_dirs = [inc_dirs]
+ inc_dirs = mesonlib.extract_as_list(kwargs, 'include_directories')
for incd in inc_dirs:
if not isinstance(incd.held_object, (str, build.IncludeDirs)):
raise MesonException(
@@ -839,9 +822,7 @@ This will become a hard error in the future.''')
if kwarg_name not in kwargs:
return []
- new_args = kwargs[kwarg_name]
- if not isinstance(new_args, list):
- new_args = [new_args]
+ new_args = mesonlib.extract_as_list(kwargs, kwarg_name)
args = []
for i in new_args:
if expend_file_state and isinstance(i, mesonlib.File):
@@ -1200,12 +1181,8 @@ G_END_DECLS'''
@staticmethod
def _vapi_args_to_command(prefix, variable, kwargs, accept_vapi=False):
- arg_list = kwargs.get(variable)
- if not arg_list:
- return []
+ arg_list = mesonlib.extract_as_list(kwargs, variable)
ret = []
- if not isinstance(arg_list, list):
- arg_list = [arg_list]
for arg in arg_list:
if not isinstance(arg, str):
types = 'strings' + ' or InternalDependencys' if accept_vapi else ''
@@ -1300,12 +1277,10 @@ G_END_DECLS'''
cmd += pkg_cmd
cmd += ['--metadatadir=' + source_dir]
- inputs = kwargs.get('sources')
- if not inputs:
+ if 'sources' not in kwargs:
raise MesonException('sources are required to generate the vapi file')
- if not isinstance(inputs, list):
- inputs = [inputs]
+ inputs = mesonlib.extract_as_list(kwargs, 'sources')
link_with = []
for i in inputs: