aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers.py
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek.chauhan@gmail.com>2016-04-15 00:16:09 +0530
committerJussi Pakkanen <jpakkane@gmail.com>2016-04-14 21:46:09 +0300
commitb56f008f805803f917c62462af9776149e2b7e13 (patch)
tree39dc06a3cf1d403398ff5bce3f6555a7f05d1de4 /mesonbuild/compilers.py
parenta76693f338fa55a1d914c331fdb954e539e4561b (diff)
downloadmeson-b56f008f805803f917c62462af9776149e2b7e13.zip
meson-b56f008f805803f917c62462af9776149e2b7e13.tar.gz
meson-b56f008f805803f917c62462af9776149e2b7e13.tar.bz2
compilers: Fix cross_sizeof when the type doesn't exist (#514)
compilers: Fix cross_sizeof when the type doesn't exist
Diffstat (limited to 'mesonbuild/compilers.py')
-rw-r--r--mesonbuild/compilers.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/mesonbuild/compilers.py b/mesonbuild/compilers.py
index 0535653..8dee468 100644
--- a/mesonbuild/compilers.py
+++ b/mesonbuild/compilers.py
@@ -576,13 +576,23 @@ int main () {{ {1}; }}'''
return RunResult(True, pe.returncode, so, se)
def cross_sizeof(self, element, prefix, env, extra_args=[]):
- templ = '''%s
+ element_exists_templ = '''#include <stdio.h>
+{0}
+int main(int argc, char **argv) {{
+ {1};
+}}
+'''
+ templ = '''#include <stdio.h>
+%s
int temparray[%d-sizeof(%s)];
'''
try:
extra_args += env.cross_info.config['properties'][self.language + '_args']
except KeyError:
pass
+ extra_args += self.get_no_optimization_args()
+ if not self.compiles(element_exists_templ.format(prefix, element)):
+ return -1
for i in range(1, 1024):
code = templ % (prefix, i, element)
if self.compiles(code, extra_args):