1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
From 4818b27894c828a50befc94f1bc9062e89a544ea Mon Sep 17 00:00:00 2001
From: Jussi Pakkanen <jpakkane@gmail.com>
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 <peter.kjellerstedt@axis.com>
---
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
|