Index: tools/win_as.py |
diff --git a/tools/win_as.py b/tools/win_as.py |
index efe00044459a7168a42e7ffc33de0fb77d2d2b27..a32baada7e44f4256aa3b3b6ec871fc253291223 100644 |
--- a/tools/win_as.py |
+++ b/tools/win_as.py |
@@ -57,20 +57,29 @@ def main(argv): |
# |
# Run the C compiler as a preprocessor and pipe the output into a string |
# |
- p = subprocess.Popen(['cl.exe', |
- '/nologo', |
- '/D__ASSEMBLER__', |
- '/DNACL_BUILD_ARCH=' + nacl_build_arch, |
- '/DNACL_BUILD_SUBARCH=' + str(nacl_build_subarch), |
- '/DNACL_WINDOWS=1', |
- '/TP', |
- '/E', |
- '/I' + nacl_path, |
- filename], |
+ cl_command = ['cl.exe', |
+ '/nologo', |
+ '/D__ASSEMBLER__', |
+ '/DNACL_BUILD_ARCH=' + nacl_build_arch, |
+ '/DNACL_BUILD_SUBARCH=' + str(nacl_build_subarch), |
+ '/DNACL_WINDOWS=1', |
+ '/TP', |
+ '/E', |
+ '/I' + nacl_path, |
+ filename] |
+ p = subprocess.Popen(cl_command, |
shell=True, |
stdout=subprocess.PIPE, |
- stderr=open(os.devnull, 'w')) |
- cl_output = p.communicate()[0] |
+ stderr=subprocess.PIPE) |
+ cl_results = p.communicate() |
+ cl_status = p.returncode |
+ cl_output = cl_results[0] |
+ cl_errors = cl_results[1] |
+ |
+ if cl_status != 0: |
+ print >>sys.stderr, 'FAILED: %s\n%s\n' % (' '.join(cl_command), |
+ cl_errors) |
+ return cl_status |
# |
# Uncomment this if you need to see exactly what the MSVC preprocessor |
@@ -88,30 +97,34 @@ def main(argv): |
foo = re.compile(r'^#line ', re.MULTILINE) |
cl_output = foo.sub(r'#', cl_output) |
- if p.wait() == 0: # success |
- # |
- # Pipe the preprocessor output into the assembler |
- # |
- p = subprocess.Popen([nacl_path + as_exe, |
- '-defsym','@feat.00=1', |
- '--' + str(nacl_build_subarch), |
- '-o', output_filename ], |
- stdin=subprocess.PIPE, |
- stderr=subprocess.PIPE) |
- as_output, as_error = p.communicate(cl_output) |
- |
- # |
- # massage the assembler stderr into a format that Visual Studio likes |
- # |
- as_error = re.sub(r'\{standard input\}', filename, as_error) |
- as_error = re.sub(r':([0-9]+):', r'(\1) :', as_error) |
- as_error = re.sub(r'Error', 'error', as_error) |
- as_error = re.sub(r'Warning', 'warning', as_error) |
- |
- if as_error: |
- print >>sys.stderr, as_error |
+ # |
+ # Pipe the preprocessor output into the assembler |
+ # |
+ as_command = [nacl_path + as_exe, |
+ '-defsym','@feat.00=1', |
+ '--' + str(nacl_build_subarch), |
+ '-o', output_filename] |
+ p = subprocess.Popen(as_command, |
+ stdin=subprocess.PIPE, |
+ stderr=subprocess.PIPE) |
+ as_output, as_error = p.communicate(cl_output) |
+ as_status = p.returncode |
+ |
+ # |
+ # massage the assembler stderr into a format that Visual Studio likes |
+ # |
+ as_error = re.sub(r'\{standard input\}', filename, as_error) |
+ as_error = re.sub(r':([0-9]+):', r'(\1) :', as_error) |
+ as_error = re.sub(r'Error', 'error', as_error) |
+ as_error = re.sub(r'Warning', 'warning', as_error) |
+ |
+ if as_error: |
+ print >>sys.stderr, as_error |
+ |
+ if as_status != 0: |
+ print >>sys.stderr, 'FAILED: %s\n' % ' '.join(as_command) |
+ return as_status |
- # endif |
# endfor |
except getopt.error, e: |