diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/modules/unstable_simd.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/mesonbuild/modules/unstable_simd.py b/mesonbuild/modules/unstable_simd.py index 4aebc02..828afec 100644 --- a/mesonbuild/modules/unstable_simd.py +++ b/mesonbuild/modules/unstable_simd.py @@ -43,6 +43,12 @@ class SimdModule(ExtensionModule): raise mesonlib.MesonException('Argument must be a string.') if 'compiler' not in kwargs: raise mesonlib.MesonException('Must specify compiler keyword') + if 'sources' in kwargs: + raise mesonlib.MesonException('SIMD module does not support the "sources" keyword') + basic_kwargs = {} + for key, value in kwargs.items(): + if key not in self.isets and key != 'compiler': + basic_kwargs[key] = value compiler = kwargs['compiler'].compiler if not isinstance(compiler, compilers.compilers.Compiler): raise mesonlib.MesonException('Compiler argument must be a compiler object.') @@ -64,7 +70,14 @@ class SimdModule(ExtensionModule): conf.values['HAVE_' + iset.upper()] = ('1', 'Compiler supports %s.' % iset) libname = prefix + '_' + iset lib_kwargs = {'sources': iset_fname, - compiler.get_language() + '_args': args} + } + lib_kwargs.update(basic_kwargs) + langarg_key = compiler.get_language() + '_args' + old_lang_args = lib_kwargs.get(langarg_key, []) + if not isinstance(old_lang_args, list): + old_lang_args = [old_lang_args] + all_lang_args = old_lang_args + args + lib_kwargs[langarg_key] = all_lang_args result.append(interpreter.func_static_lib(None, [libname], lib_kwargs)) return [result, cdata] |