diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-08-03 17:30:40 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-08-04 12:55:24 +0300 |
commit | cad6bf32f121fc6584800e3a85fa341b8b7c1b04 (patch) | |
tree | a747881d4fd929418e93339f864aa21f5aa57834 | |
parent | d335a84b9e91bb03bb99a296a5ecf084b325e6ce (diff) | |
download | meson-cad6bf32f121fc6584800e3a85fa341b8b7c1b04.zip meson-cad6bf32f121fc6584800e3a85fa341b8b7c1b04.tar.gz meson-cad6bf32f121fc6584800e3a85fa341b8b7c1b04.tar.bz2 |
Can pass all target kwargs through to SIMD invocations. Closes #2151.
-rw-r--r-- | mesonbuild/modules/unstable_simd.py | 15 | ||||
-rw-r--r-- | test cases/common/155 simd/include/simdheader.h | 3 | ||||
-rw-r--r-- | test cases/common/155 simd/meson.build | 3 | ||||
-rw-r--r-- | test cases/common/155 simd/simd_avx.c | 6 |
4 files changed, 25 insertions, 2 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] diff --git a/test cases/common/155 simd/include/simdheader.h b/test cases/common/155 simd/include/simdheader.h new file mode 100644 index 0000000..6515e41 --- /dev/null +++ b/test cases/common/155 simd/include/simdheader.h @@ -0,0 +1,3 @@ +#pragma once + +#define I_CAN_HAZ_SIMD diff --git a/test cases/common/155 simd/meson.build b/test cases/common/155 simd/meson.build index 9da1651..2628a12 100644 --- a/test cases/common/155 simd/meson.build +++ b/test cases/common/155 simd/meson.build @@ -28,7 +28,8 @@ rval = simd.check('mysimds', avx : 'simd_avx.c', avx2 : 'simd_avx2.c', neon : 'simd_neon.c', - compiler : cc) + compiler : cc, + include_directories : include_directories('include')) simdlibs = rval[0] cdata.merge_from(rval[1]) diff --git a/test cases/common/155 simd/simd_avx.c b/test cases/common/155 simd/simd_avx.c index 989620b..1c84dae 100644 --- a/test cases/common/155 simd/simd_avx.c +++ b/test cases/common/155 simd/simd_avx.c @@ -1,3 +1,9 @@ +#include<simdheader.h> + +#ifndef I_CAN_HAZ_SIMD +#error The correct internal header was not used +#endif + #include<simdconfig.h> #include<simdfuncs.h> #include<stdint.h> |