646d14d2d3
Corruption has again been reported on Intel hardware running Xorg with the modesetting driver (which uses OpenGL based acceleration instead of SNA acceleration the intel driver defaults to). Reported in various forms on Sandy Bridge (X220), Ivy Bridge (X230) and Haswell (X240). Confirmed to not occur with the intel driver but the xserver was changed to default to the modesetting driver on >= gen4 hardware (except Ironlake). One means of triggering this is to open a large pdf with xpdf on an idle machine and highlight a section of the document. There have been reports of gpu hangs on gen4 intel hardware (T500 with GM45, X61 with 965GM) when starting Xorg as well.
115 lines
3.8 KiB
Python
115 lines
3.8 KiB
Python
#######################################################################
|
|
# Common SCons code
|
|
|
|
import os
|
|
import os.path
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
import platform as _platform
|
|
|
|
import SCons.Script.SConscript
|
|
|
|
|
|
#######################################################################
|
|
# Defaults
|
|
|
|
host_platform = _platform.system().lower()
|
|
if host_platform.startswith('cygwin'):
|
|
host_platform = 'cygwin'
|
|
|
|
# Search sys.argv[] for a "platform=foo" argument since we don't have
|
|
# an 'env' variable at this point.
|
|
if 'platform' in SCons.Script.ARGUMENTS:
|
|
target_platform = SCons.Script.ARGUMENTS['platform']
|
|
else:
|
|
target_platform = host_platform
|
|
|
|
_machine_map = {
|
|
'x86': 'x86',
|
|
'i386': 'x86',
|
|
'i486': 'x86',
|
|
'i586': 'x86',
|
|
'i686': 'x86',
|
|
'BePC': 'x86',
|
|
'Intel': 'x86',
|
|
'ppc': 'ppc',
|
|
'BeBox': 'ppc',
|
|
'BeMac': 'ppc',
|
|
'AMD64': 'x86_64',
|
|
'x86_64': 'x86_64',
|
|
'sparc': 'sparc',
|
|
'sun4u': 'sparc',
|
|
}
|
|
|
|
|
|
# find host_machine value
|
|
if 'PROCESSOR_ARCHITECTURE' in os.environ:
|
|
host_machine = os.environ['PROCESSOR_ARCHITECTURE']
|
|
else:
|
|
host_machine = _platform.machine()
|
|
host_machine = _machine_map.get(host_machine, 'generic')
|
|
|
|
default_machine = host_machine
|
|
default_toolchain = 'default'
|
|
|
|
if target_platform == 'windows' and host_platform != 'windows':
|
|
default_machine = 'x86'
|
|
default_toolchain = 'crossmingw'
|
|
|
|
|
|
# find default_llvm value
|
|
if 'LLVM' in os.environ:
|
|
default_llvm = 'yes'
|
|
else:
|
|
default_llvm = 'no'
|
|
try:
|
|
if target_platform != 'windows' and \
|
|
subprocess.call(['llvm-config', '--version'],
|
|
stdout=subprocess.PIPE) == 0:
|
|
default_llvm = 'yes'
|
|
except:
|
|
pass
|
|
|
|
|
|
#######################################################################
|
|
# Common options
|
|
|
|
def AddOptions(opts):
|
|
try:
|
|
from SCons.Variables.BoolVariable import BoolVariable as BoolOption
|
|
except ImportError:
|
|
from SCons.Options.BoolOption import BoolOption
|
|
try:
|
|
from SCons.Variables.EnumVariable import EnumVariable as EnumOption
|
|
except ImportError:
|
|
from SCons.Options.EnumOption import EnumOption
|
|
opts.Add(EnumOption('build', 'build type', 'debug',
|
|
allowed_values=('debug', 'checked', 'profile',
|
|
'release', 'opt')))
|
|
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
|
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
|
default_machine,
|
|
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
|
|
opts.Add(EnumOption('platform', 'target platform', host_platform,
|
|
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku',
|
|
'linux', 'sunos', 'windows')))
|
|
opts.Add(BoolOption('embedded', 'embedded build', 'no'))
|
|
opts.Add(BoolOption('analyze',
|
|
'enable static code analysis where available', 'no'))
|
|
opts.Add(BoolOption('asan', 'enable Address Sanitizer', 'no'))
|
|
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
|
|
opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support',
|
|
'no'))
|
|
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
|
|
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
|
|
'no'))
|
|
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
|
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
|
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
|
opts.Add(BoolOption('texture_float',
|
|
'enable floating-point textures and renderbuffers',
|
|
'no'))
|
|
if host_platform == 'windows':
|
|
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
|