Merge branch 'fix/pyextwarnings'
authorPaul Brossier <piem@piem.org>
Wed, 21 Nov 2018 00:53:41 +0000 (01:53 +0100)
committerPaul Brossier <piem@piem.org>
Wed, 21 Nov 2018 00:53:41 +0000 (01:53 +0100)
.appveyor.yml
python/lib/gen_external.py

index 9da9024..d7c51f2 100644 (file)
@@ -3,9 +3,6 @@
 
 environment:
 
-  global:
-      CUSTOM64PATH: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
-
   matrix:
 
     # pre-installed python version, see:
@@ -43,14 +40,11 @@ environment:
       PYTHON_ARCH: 64
 
 install:
-
   - ECHO "Installed SDKs:"
   - ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
 
   - "SET PATH=%PYTHONDIR%;%PYTHONDIR%\\Scripts;%PATH%"
 
-  - if [%PYTHON_ARCH%]==[64] SET PATH=%CUSTOM64PATH%;%PATH%
-
   # Check that we have the expected version and architecture for Python
   - "python --version"
   - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
@@ -71,8 +65,6 @@ build_script:
   - python waf configure build install --verbose --msvc_version="msvc 14.0"
   # clean before building python package
   - python waf distclean
-  # build python module without using libaubio
-  - pip wheel -v -v -v --wheel-dir=dist .
   # build, upload and install wheel (inspired by numpy's appveyor)
   - ps: |
       pip wheel -v -v -v --wheel-dir=dist .
index e9a93c6..1425c9b 100644 (file)
@@ -74,6 +74,18 @@ def get_preprocessor():
         cpp_cmd = compiler.cc.split()
         cpp_cmd += ['-E']
 
+    # On win-amd64 (py3.x), the default compiler is cross-compiling, from x86
+    # to amd64 with %WIN_SDK_ROOT%\x86_amd64\cl.exe, but using this binary as a
+    # pre-processor generates no output, so we use %WIN_SDK_ROOT%\cl.exe
+    # instead.
+    if len(cpp_cmd) > 1 and 'cl.exe' in cpp_cmd[-2]:
+        plat = os.path.basename(os.path.dirname(cpp_cmd[-2]))
+        if plat == 'x86_amd64':
+            print('workaround on win64 to avoid empty pre-processor output')
+            cpp_cmd[-2] = cpp_cmd[-2].replace('x86_amd64', '')
+        elif True in ['amd64' in f for f in cpp_cmd]:
+            print('warning: not using workaround for', cpp_cmd[0], plat)
+
     if not cpp_cmd:
         print("Warning: could not guess preprocessor, using env's CC")
         cpp_cmd = os.environ.get('CC', 'cc').split()