summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpal1000 <[email protected]>2019-03-01 12:30:15 +0200
committerDylan Baker <[email protected]>2019-09-30 09:09:00 -0700
commitdc0995669de6e177210d6526fc7eac9dcc47934c (patch)
tree34e9e7023697bfc336d38ffef63bfd63b512de85
parent434ab094c0e2667fac409dee24fe7b581997bcf5 (diff)
scons: Fix MSYS2 Mingw-w64 build.
Reviewed-by: Jose Fonseca <[email protected]> This patch is based on https://github.com/msys2/MINGW-packages/blob/28e3f85e09b6947ea80036c49f6c38f1394f93ca/mingw-w64-mesa/link-ole32.patch but with tweaks to avoid MSVC build break when applied. v2: Create Mingw platform alias pointing to windows host platform define to avoid spurious crosscompilation; v3: Fix obviously wrong compiler flags for swr driver; v4: Update original patch URL because it has been relocated; v5: Don't bother patching autools stuff as it's not used by MSYS2 Mingw-w64 build and it's days are numbered anyway; v6: After Mingw posix flag fix in 295851eb things are far simpler as we don't need more linking of uuid, ole32, version and shell32 than what is already in place. (cherry picked from commit ffb0d3a25c60dd7fc5cb1f2c33c2977b245b5fee)
-rwxr-xr-xscons/gallium.py3
-rw-r--r--scons/llvm.py7
-rw-r--r--src/gallium/drivers/swr/SConscript4
3 files changed, 12 insertions, 2 deletions
diff --git a/scons/gallium.py b/scons/gallium.py
index 21197c8d0d1..3bc0b8d7324 100755
--- a/scons/gallium.py
+++ b/scons/gallium.py
@@ -237,6 +237,9 @@ def generate(env):
hosthost_platform = host_platform.system().lower()
if hosthost_platform.startswith('cygwin'):
hosthost_platform = 'cygwin'
+ # Avoid spurious crosscompilation in MSYS2 environment.
+ if hosthost_platform.startswith('mingw'):
+ hosthost_platform = 'windows'
host_machine = os.environ.get('PROCESSOR_ARCHITEW6432', os.environ.get('PROCESSOR_ARCHITECTURE', host_platform.machine()))
host_machine = {
'x86': 'x86',
diff --git a/scons/llvm.py b/scons/llvm.py
index 0c15b279aba..1aade4b71d9 100644
--- a/scons/llvm.py
+++ b/scons/llvm.py
@@ -30,6 +30,7 @@ Tool-specific initialization for LLVM
import os
import os.path
import re
+import platform as host_platform
import sys
import distutils.version
@@ -217,6 +218,12 @@ def generate(env):
'uuid',
])
+ # Mingw-w64 zlib is required when building with LLVM support in MSYS2 environment
+ if host_platform.system().lower().startswith('mingw'):
+ env.Append(LIBS = [
+ 'z',
+ ])
+
if env['msvc']:
# Some of the LLVM C headers use the inline keyword without
# defining it.
diff --git a/src/gallium/drivers/swr/SConscript b/src/gallium/drivers/swr/SConscript
index 61432a0c342..1230cbb5b77 100644
--- a/src/gallium/drivers/swr/SConscript
+++ b/src/gallium/drivers/swr/SConscript
@@ -214,7 +214,7 @@ env.Prepend(CPPPATH = [
envavx = env.Clone()
envavx.Append(CPPDEFINES = ['KNOB_ARCH=KNOB_ARCH_AVX'])
-if env['platform'] == 'windows':
+if env['msvc']:
envavx.Append(CCFLAGS = ['/arch:AVX'])
else:
envavx.Append(CCFLAGS = ['-mavx'])
@@ -230,7 +230,7 @@ env.Alias('swrAVX', swrAVX)
envavx2 = env.Clone()
envavx2.Append(CPPDEFINES = ['KNOB_ARCH=KNOB_ARCH_AVX2'])
-if env['platform'] == 'windows':
+if env['msvc']:
envavx2.Append(CCFLAGS = ['/arch:AVX2'])
else:
envavx2.Append(CCFLAGS = ['-mavx2', '-mfma', '-mbmi2', '-mf16c'])