X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senfscons%2FCompileCheck.py;h=95358a112897d3f0ed85c33fad1931e5bc8a9a5f;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=81f38d368e2c12d6f99d39e665901a3afa0f19fc;hpb=8e708e9784c76461252c3bdf646d291c593a49be;p=senf.git diff --git a/senfscons/CompileCheck.py b/senfscons/CompileCheck.py index 81f38d3..95358a1 100644 --- a/senfscons/CompileCheck.py +++ b/senfscons/CompileCheck.py @@ -1,4 +1,5 @@ import os, os.path, sys +import tempfile from SCons.Script import * import SCons.Scanner.C @@ -14,13 +15,19 @@ def scanTests(f): elif line.startswith('}') and name and start: tests[name] = (start, linenr) return tests - + def CompileCheck(target, source, env): tests = scanTests(file(source[0].abspath)) - errf = os.popen(env.subst('$CXXCOM -DCOMPILE_CHECK 2>&1', source=source, target=target)) + cenv = env.Clone() + cenv.Append( CPPDEFINES = { 'COMPILE_CHECK': '' } ) + out = tempfile.TemporaryFile() + cenv['SPAWN'] = lambda sh, escape, cmd, args, env, pspawn=cenv['PSPAWN'], out=out: \ + pspawn(sh, escape, cmd, args, env, out, out) + Action('$CXXCOM').execute(target, source, cenv) passedTests = {} delay_name = None - for error in errf: + out.seek(0) + for error in out.read().splitlines(): elts = error.split(':',2) if len(elts) != 3 : continue filename, line, message = elts @@ -64,7 +71,7 @@ def generate(env): builder = env.Builder( action = CompileCheck, - suffix = '.tsto', + suffix = '.checked', src_suffix = '.cc', source_scanner = SCons.Scanner.C.CScanner(), single_source=1