diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-27 16:06:39 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-07-27 16:06:39 +0300 |
commit | bdd1485987ac39eacbc8c04376467a8bcc1c3b73 (patch) | |
tree | 54c94752aad916dce28649e86646f74d645f32e0 /environment.py | |
parent | 427cfbf569113aeab6b98b96c8e9c3cf2532e8ae (diff) | |
download | meson-bdd1485987ac39eacbc8c04376467a8bcc1c3b73.zip meson-bdd1485987ac39eacbc8c04376467a8bcc1c3b73.tar.gz meson-bdd1485987ac39eacbc8c04376467a8bcc1c3b73.tar.bz2 |
Run build tests properly.
Diffstat (limited to 'environment.py')
-rw-r--r-- | environment.py | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/environment.py b/environment.py index 309a1e3..03fa21b 100644 --- a/environment.py +++ b/environment.py @@ -152,22 +152,13 @@ class CCompiler(): pass return p.returncode == 0 - def sizeof(self, element, prefix): - templ = '''#include<stdio.h> -%s - -int main(int argc, char **argv) { - printf("%%ld\\n", (long)(sizeof(%s))); - return 0; -}; -''' + def run(self, code): (fd, srcname) = tempfile.mkstemp(suffix='.'+self.default_suffix) - exename = srcname + '.exe' # Is guaranteed to be executable on every platform. os.close(fd) ofile = open(srcname, 'w') - code = templ % (prefix, element) ofile.write(code) ofile.close() + exename = srcname + '.exe' # Is guaranteed to be executable on every platform. commands = self.get_exelist() commands.append(srcname) commands += self.get_output_flags(exename) @@ -175,13 +166,27 @@ int main(int argc, char **argv) { p.communicate() os.remove(srcname) if p.returncode != 0: - raise EnvironmentException('Could not compile sizeof test.') + return RunResult(False) pe = subprocess.Popen(exename, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - so = pe.communicate()[0] + (so, se) = pe.communicate() os.remove(exename) - if pe.returncode != 0: + return RunResult(True, pe.returncode, so.decode(), se.decode()) + + def sizeof(self, element, prefix): + templ = '''#include<stdio.h> +%s + +int main(int argc, char **argv) { + printf("%%ld\\n", (long)(sizeof(%s))); + return 0; +}; +''' + res = self.run(templ % (prefix, element)) + if not res.compiled: + raise EnvironmentException('Could not compile sizeof test.') + if res.returncode != 0: raise EnvironmentException('Could not run sizeof test binary.') - return int(so.decode()) + return int(res.stdout) class CPPCompiler(CCompiler): def __init__(self, exelist): |