From 4818b27894c828a50befc94f1bc9062e89a544ea Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 29 Dec 2018 18:23:36 +0200 Subject: [PATCH] Handle strings in cross file args. Closes #4671. Upstream-Status: Backport [6c76ac80173bdc40d35e2d6b802f7950646781dc] Signed-off-by: Peter Kjellerstedt --- Note that the change to ninjabackend.py does not come from commit 6c76ac80, as it was not corrected until commit 2b22576f. However, since that commit is huge and changes a lot of unrelated stuff, it was easier to include the relevant part here. cross/ubuntu-armhf.txt | 2 +- mesonbuild/backend/ninjabackend.py | 2 +- mesonbuild/compilers/compilers.py | 4 ++-- test cases/common/137 get define/meson.build | 12 +++--------- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/cross/ubuntu-armhf.txt b/cross/ubuntu-armhf.txt index fec8ce7..a6e1f15 100644 --- a/cross/ubuntu-armhf.txt +++ b/cross/ubuntu-armhf.txt @@ -12,7 +12,7 @@ pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config' root = '/usr/arm-linux-gnueabihf' # Used in unit test '140 get define' c_args = ['-DMESON_TEST_ISSUE_1665=1'] -cpp_args = ['-DMESON_TEST_ISSUE_1665=1'] +cpp_args = '-DMESON_TEST_ISSUE_1665=1' has_function_printf = true has_function_hfkerhisadf = false diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 3739c0a..2cebeef 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1400,7 +1400,7 @@ int dummy; if is_cross: crstr = '_CROSS' try: - cross_args = self.environment.cross_info.config['properties'][langname + '_link_args'] + cross_args = mesonlib.stringlistify(self.environment.cross_info.config['properties'][langname + '_link_args']) except KeyError: pass rule = 'rule %s%s_LINKER\n' % (langname, crstr) diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index e27ae2b..a5b9e91 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -1048,10 +1048,10 @@ class Compiler: if 'properties' in environment.cross_info.config: props = environment.cross_info.config['properties'] lang_args_key = self.language + '_args' - extra_flags += props.get(lang_args_key, []) + extra_flags += mesonlib.stringlistify(props.get(lang_args_key, [])) lang_link_args_key = self.language + '_link_args' if link: - extra_flags += props.get(lang_link_args_key, []) + extra_flags += mesonlib.stringlistify(props.get(lang_link_args_key, [])) return extra_flags def _get_compile_output(self, dirname, mode): diff --git a/test cases/common/137 get define/meson.build b/test cases/common/137 get define/meson.build index 109f628..1647e22 100644 --- a/test cases/common/137 get define/meson.build +++ b/test cases/common/137 get define/meson.build @@ -67,15 +67,9 @@ foreach lang : ['c', 'cpp'] run_1665_test = false if meson.is_cross_build() - # Can't use an empty array as a fallback here because of - # https://github.com/mesonbuild/meson/issues/1481 - lang_args = meson.get_cross_property(lang + '_args', []) - if lang_args.length() != 0 - foreach lang_arg : lang_args - if lang_arg.contains('MESON_TEST_ISSUE_1665') - run_1665_test = true - endif - endforeach + lang_arg = meson.get_cross_property(lang + '_args', '') + if lang_arg == '-DMESON_TEST_ISSUE_1665=1' + run_1665_test = true endif endif