# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
+from __future__ import print_function
import distutils.version
import os
source.write('#if !(%s)\n#error\n#endif\n' % expr)
source.close()
- pipe = SCons.Action._subproc(env, [env['CC'], cpp_opt, source.name],
+ # sys.stderr.write('%r %s %s\n' % (env['CC'], cpp_opt, source.name));
+
+ pipe = SCons.Action._subproc(env, env.Split(env['CC']) + [cpp_opt, source.name],
stdin = 'devnull',
stderr = 'devnull',
stdout = 'devnull')
env['suncc'] = env['platform'] == 'sunos' and os.path.basename(env['CC']) == 'cc'
env['icc'] = 'icc' == os.path.basename(env['CC'])
- if env['msvc'] and env['toolchain'] == 'default' and env['machine'] == 'x86_64':
- # MSVC x64 support is broken in earlier versions of scons
- env.EnsurePythonVersion(2, 0)
-
# shortcuts
machine = env['machine']
platform = env['platform']
if env['build'] == 'profile':
env['debug'] = False
env['profile'] = True
- if env['build'] in ('release', 'opt'):
+ if env['build'] == 'release':
env['debug'] = False
env['profile'] = False
if env.GetOption('num_jobs') <= 1:
env.SetOption('num_jobs', num_jobs())
- env.Decider('MD5-timestamp')
+ # Speed up dependency checking. See
+ # - https://github.com/SCons/scons/wiki/GoFastButton
+ # - https://bugs.freedesktop.org/show_bug.cgi?id=109443
+
+ # Scons version string has consistently been in this format:
+ # MajorVersion.MinorVersion.Patch[.alpha/beta.yyyymmdd]
+ # so this formula should cover all versions regardless of type
+ # stable, alpha or beta.
+ # For simplicity alpha and beta flags are removed.
+
+ scons_version = distutils.version.StrictVersion('.'.join(SCons.__version__.split('.')[:3]))
+ if scons_version < distutils.version.StrictVersion('3.0.2') or \
+ scons_version > distutils.version.StrictVersion('3.0.4'):
+ env.Decider('MD5-timestamp')
env.SetOption('max_drift', 60)
# C preprocessor options
'__STDC_CONSTANT_MACROS',
'__STDC_FORMAT_MACROS',
'__STDC_LIMIT_MACROS',
- 'HAVE_NO_AUTOCONF',
+ 'HAVE_SCONS',
]
if env['build'] in ('debug', 'checked'):
cppdefines += ['DEBUG']
cppdefines += ['NDEBUG']
if env['build'] == 'profile':
cppdefines += ['PROFILE']
- if env['build'] in ('opt', 'profile'):
- cppdefines += ['VMX86_STATS']
if env['platform'] in ('posix', 'linux', 'freebsd', 'darwin'):
cppdefines += [
'_POSIX_SOURCE',
if check_header(env, 'xlocale.h'):
cppdefines += ['HAVE_XLOCALE_H']
+ if check_header(env, 'endian.h'):
+ cppdefines += ['HAVE_ENDIAN_H']
+
if check_functions(env, ['strtod_l', 'strtof_l']):
cppdefines += ['HAVE_STRTOD_L']
+ if check_functions(env, ['timespec_get']):
+ cppdefines += ['HAVE_TIMESPEC_GET']
+
+ if check_header(env, 'sys/shm.h'):
+ cppdefines += ['HAVE_SYS_SHM_H']
+
if platform == 'windows':
cppdefines += [
'WIN32',
cppdefines += ['PIPE_SUBSYSTEM_WINDOWS_USER']
if env['embedded']:
cppdefines += ['PIPE_SUBSYSTEM_EMBEDDED']
- if env['texture_float']:
- print('warning: Floating-point textures enabled.')
- print('warning: Please consult docs/patents.txt with your lawyer before building Mesa.')
- cppdefines += ['TEXTURE_FLOAT_ENABLED']
env.Append(CPPDEFINES = cppdefines)
# C compiler options
ccflags += [
'/O2', # optimize for speed
]
- if env['build'] in ('release', 'opt'):
+ if env['build'] == 'release':
if not env['clang']:
ccflags += [
'/GL', # enable whole program optimization
shlinkflags += ['-Wl,--enable-stdcall-fixup']
#shlinkflags += ['-Wl,--kill-at']
if msvc:
- if env['build'] in ('release', 'opt') and not env['clang']:
+ if env['build'] == 'release' and not env['clang']:
# enable Link-time Code Generation
linkflags += ['/LTCG']
env.Append(ARFLAGS = ['/LTCG'])
env.PkgCheckModules('XF86VIDMODE', ['xxf86vm'])
env.PkgCheckModules('DRM', ['libdrm >= 2.4.75'])
+ if not os.path.exists("src/util/format_srgb.c"):
+ print("Checking for Python Mako module (>= 0.8.0)... ", end='')
+ try:
+ import mako
+ except ImportError:
+ print("no")
+ exit(1)
+ if distutils.version.StrictVersion(mako.__version__) < distutils.version.StrictVersion('0.8.0'):
+ print("no")
+ exit(1)
+ print("yes")
+
if env['x11']:
env.Append(CPPPATH = env['X11_CPPPATH'])