提交 5e04f452 authored 作者: Pascal Lamblin's avatar Pascal Lamblin

Fix command that did not return on windows with recent mingw

上级 347d0de9
...@@ -1560,26 +1560,33 @@ class GCC_compiler(object): ...@@ -1560,26 +1560,33 @@ class GCC_compiler(object):
p = call_subprocess_Popen(cmd, p = call_subprocess_Popen(cmd,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
shell=True) shell=True)
p.wait() # For mingw64 with GCC >= 4.7, passing os.devnull
# as stdin (which is the default) results in the process
# waiting forever without returning. For that reason,
# we use a pipe, and use the empty string as input.
(stdout, stderr) = p.communicate(input='')
if p.returncode != 0: if p.returncode != 0:
return None return None
stdout = decode_iter(p.stdout.readlines()) lines = StringIO.StringIO(stdout + stderr).readlines()
stderr = decode_iter(p.stderr.readlines()) lines = decode_iter(lines)
lines = []
if parse: if parse:
for line in itertools.chain(stdout, stderr): selected_lines = []
if "COLLECT_GCC_OPTIONS=" in line: for line in lines:
if ("COLLECT_GCC_OPTIONS=" in line or
"CFLAGS=" in line or
"CXXFLAGS=" in line or
"-march=native" in line):
continue continue
elif "-march=" in line and "-march=native" not in line: elif "-march=" in line:
lines.append(line.strip()) selected_lines.append(line.strip())
elif "-mtune=" in line and "-march=native" not in line: elif "-mtune=" in line:
lines.append(line.strip()) selected_lines.append(line.strip())
lines = list(set(lines)) # to remove duplicate lines = list(set(selected_lines)) # to remove duplicate
else:
lines = itertools.chain(stdout, stderr) return lines
return list(lines)
# The '-' at the end is needed. Otherwise, g++ do not output # The '-' at the end is needed. Otherwise, g++ do not output
# enough information. # enough information.
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论