Showing the changes to python (1 of 1 file). Show all
Unified · Split
| @@ -74,6 +74,18 @@ def get_preprocessor(): · 73 unmodified lines | ||
| 74 | 74 | cpp_cmd = compiler.cc.split() |
| 75 | 75 | cpp_cmd += ['-E'] |
| 76 | 76 | |
| 77 | + # On win-amd64 (py3.x), the default compiler is cross-compiling, from x86 | |
| 78 | + # to amd64 with %WIN_SDK_ROOT%\x86_amd64\cl.exe, but using this binary as a | |
| 79 | + # pre-processor generates no output, so we use %WIN_SDK_ROOT%\cl.exe | |
| 80 | + # instead. | |
| 81 | + if len(cpp_cmd) > 1 and 'cl.exe' in cpp_cmd[-2]: | |
| 82 | + plat = os.path.basename(os.path.dirname(cpp_cmd[-2])) | |
| 83 | + if plat == 'x86_amd64': | |
| 84 | + print('workaround on win64 to avoid empty pre-processor output') | |
| 85 | + cpp_cmd[-2] = cpp_cmd[-2].replace('x86_amd64', '') | |
| 86 | + elif True in ['amd64' in f for f in cpp_cmd]: | |
| 87 | + print('warning: not using workaround for', cpp_cmd[0], plat) | |
| 88 | + | |
| 77 | 89 | if not cpp_cmd: |
| 78 | 90 | print("Warning: could not guess preprocessor, using env's CC") |
| 79 | 91 | cpp_cmd = os.environ.get('CC', 'cc').split() |