aboutsummaryrefslogtreecommitdiff
path: root/mesalib/scons
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2015-03-22 13:30:59 +0100
committermarha <marha@users.sourceforge.net>2015-03-22 13:30:59 +0100
commit82c8df11062f72a7d467e26cedbbd8b322ff7a70 (patch)
tree7e7a3e408d09d3e50ff0d2f9befeb5b7ab5617a5 /mesalib/scons
parent8574eba804031f6b19713f0b02952280730bf62e (diff)
downloadvcxsrv-82c8df11062f72a7d467e26cedbbd8b322ff7a70.tar.gz
vcxsrv-82c8df11062f72a7d467e26cedbbd8b322ff7a70.tar.bz2
vcxsrv-82c8df11062f72a7d467e26cedbbd8b322ff7a70.zip
randrproto fontconfig libX11 libXdmcp libxcb mesa xkbcomp xserver git update 22 Mar 2015
xserver commit 0a78b599b34cc8b5fe6fe82f90e90234e8ab7a56 libxcb commit a90be9955d2c5a635f791d44db1154633b9d3322 libX11 commit 5a499ca7b064bf7e6a4fcc169f22862dce0c60c5 libXdmcp commit 0c09444d276fbf46a0e8b427a4f6a325d0625742 xkbcomp commit fc3e6ddb2c8e922ea80f2dc5cbc1df2102e30d99 randrproto commit b1ba68df8a5fc113a387123ec2f312195e28e47f fontconfig commit 69ff6b6e260584e383c38b1b7034ddcbb23d214f mesa commit 397b491173f0d2df4deb44d21c170bf16840d507
Diffstat (limited to 'mesalib/scons')
-rw-r--r--mesalib/scons/gallium.py62
-rw-r--r--mesalib/scons/llvm.py5
2 files changed, 60 insertions, 7 deletions
diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py
index 7533f0651..efc65e718 100644
--- a/mesalib/scons/gallium.py
+++ b/mesalib/scons/gallium.py
@@ -35,7 +35,7 @@ import os
import os.path
import re
import subprocess
-import platform as _platform
+import platform as host_platform
import sys
import tempfile
@@ -147,6 +147,17 @@ def check_cc(env, cc, expr, cpp_opt = '-E'):
return result
+def check_prog(env, prog):
+ """Check whether this program exists."""
+
+ sys.stdout.write('Checking for %s ... ' % prog)
+
+ result = env.Detect(prog)
+
+ sys.stdout.write(' %s\n' % ['no', 'yes'][int(bool(result))])
+ return result
+
+
def generate(env):
"""Common environment generation code"""
@@ -186,7 +197,7 @@ def generate(env):
env['gcc'] = 0
env['clang'] = 0
env['msvc'] = 0
- if _platform.system() == 'Windows':
+ if host_platform.system() == 'Windows':
env['msvc'] = check_cc(env, 'MSVC', 'defined(_MSC_VER)', '/E')
if not env['msvc']:
env['gcc'] = check_cc(env, 'GCC', 'defined(__GNUC__) && !defined(__clang__)')
@@ -210,10 +221,10 @@ def generate(env):
# Determine whether we are cross compiling; in particular, whether we need
# to compile code generators with a different compiler as the target code.
- host_platform = _platform.system().lower()
- if host_platform.startswith('cygwin'):
- host_platform = 'cygwin'
- host_machine = os.environ.get('PROCESSOR_ARCHITEW6432', os.environ.get('PROCESSOR_ARCHITECTURE', _platform.machine()))
+ hosthost_platform = host_platform.system().lower()
+ if hosthost_platform.startswith('cygwin'):
+ hosthost_platform = 'cygwin'
+ host_machine = os.environ.get('PROCESSOR_ARCHITEW6432', os.environ.get('PROCESSOR_ARCHITECTURE', host_platform.machine()))
host_machine = {
'x86': 'x86',
'i386': 'x86',
@@ -224,7 +235,7 @@ def generate(env):
'AMD64': 'x86_64',
'x86_64': 'x86_64',
}.get(host_machine, 'generic')
- env['crosscompile'] = platform != host_platform
+ env['crosscompile'] = platform != hosthost_platform
if machine == 'x86_64' and host_machine != 'x86_64':
env['crosscompile'] = True
env['hostonly'] = False
@@ -351,6 +362,7 @@ def generate(env):
'_SCL_SECURE_NO_WARNINGS',
'_SCL_SECURE_NO_DEPRECATE',
'_ALLOW_KEYWORD_MACROS',
+ '_HAS_EXCEPTIONS=0', # Tell C++ STL to not use exceptions
]
if env['build'] in ('debug', 'checked'):
cppdefines += ['_DEBUG']
@@ -369,6 +381,7 @@ def generate(env):
'HAVE___BUILTIN_FFS',
'HAVE___BUILTIN_FFSLL',
'HAVE_FUNC_ATTRIBUTE_FLATTEN',
+ 'HAVE_FUNC_ATTRIBUTE_UNUSED',
# GCC 3.0
'HAVE_FUNC_ATTRIBUTE_FORMAT',
'HAVE_FUNC_ATTRIBUTE_PACKED',
@@ -493,8 +506,13 @@ def generate(env):
]
ccflags += [
'/W3', # warning level
+ '/wd4018', # signed/unsigned mismatch
+ '/wd4056', # overflow in floating-point constant arithmetic
'/wd4244', # conversion from 'type1' to 'type2', possible loss of data
+ '/wd4267', # 'var' : conversion from 'size_t' to 'type', possible loss of data
'/wd4305', # truncation from 'type1' to 'type2'
+ '/wd4351', # new behavior: elements of array 'array' will be default initialized
+ '/wd4756', # overflow in constant arithmetic
'/wd4800', # forcing value to bool 'true' or 'false' (performance warning)
'/wd4996', # disable deprecated POSIX name warnings
]
@@ -617,7 +635,37 @@ def generate(env):
# Load tools
env.Tool('lex')
+ if env['msvc']:
+ env.Append(LEXFLAGS = [
+ # Force flex to use const keyword in prototypes, as relies on
+ # __cplusplus or __STDC__ macro to determine whether it's safe to
+ # use const keyword, but MSVC never defines __STDC__ unless we
+ # disable all MSVC extensions.
+ '-DYY_USE_CONST=',
+ ])
+ # Flex relies on __STDC_VERSION__>=199901L to decide when to include
+ # C99 inttypes.h. We always have inttypes.h available with MSVC
+ # (either the one bundled with MSVC 2013, or the one we bundle
+ # ourselves), but we can't just define __STDC_VERSION__ without
+ # breaking stuff, as MSVC doesn't fully support C99. There's also no
+ # way to premptively include stdint.
+ env.Append(CCFLAGS = ['-FIinttypes.h'])
+ if host_platform.system() == 'Windows':
+ # Prefer winflexbison binaries, as not only they are easier to install
+ # (no additional dependencies), but also better Windows support.
+ if check_prog(env, 'win_flex'):
+ env["LEX"] = 'win_flex'
+ env.Append(LEXFLAGS = [
+ # windows compatibility (uses <io.h> instead of <unistd.h> and
+ # _isatty, _fileno functions)
+ '--wincompat'
+ ])
+
env.Tool('yacc')
+ if host_platform.system() == 'Windows':
+ if check_prog(env, 'win_bison'):
+ env["YACC"] = 'win_bison'
+
if env['llvm']:
env.Tool('llvm')
diff --git a/mesalib/scons/llvm.py b/mesalib/scons/llvm.py
index d145de8d8..be7df9fad 100644
--- a/mesalib/scons/llvm.py
+++ b/mesalib/scons/llvm.py
@@ -132,6 +132,11 @@ def generate(env):
# Some of the LLVM C headers use the inline keyword without
# defining it.
env.Append(CPPDEFINES = [('inline', '__inline')])
+ # Match some of the warning options from llvm/cmake/modules/HandleLLVMOptions.cmake
+ env.AppendUnique(CXXFLAGS = [
+ '/wd4355', # 'this' : used in base member initializer list
+ '/wd4624', # 'derived class' : destructor could not be generated because a base class destructor is inaccessible
+ ])
if env['build'] in ('debug', 'checked'):
# LLVM libraries are static, build with /MT, and they
# automatically link agains LIBCMT. When we're doing a