X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=scons%2Fgallium.py;h=61bbeb2399fbf1cd4694b12938455587b764ef6e;hb=90cc0de1021c668991cb7c236c9008bbfc402e75;hp=e394bf8eabf0ab92cb8ac10fb8d958504009b236;hpb=7d48219b3ac78895315ea6cef3ced3e55d3d92f0;p=mesa.git diff --git a/scons/gallium.py b/scons/gallium.py index e394bf8eabf..61bbeb2399f 100755 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -29,6 +29,7 @@ Frontend-tool for Gallium3D architecture. # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # +from __future__ import print_function import distutils.version import os @@ -134,7 +135,9 @@ def check_cc(env, cc, expr, cpp_opt = '-E'): 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') @@ -193,15 +196,15 @@ def generate(env): env.Tool(env['toolchain']) # Allow override compiler and specify additional flags from environment - if os.environ.has_key('CC'): + if 'CC' in os.environ: env['CC'] = os.environ['CC'] - if os.environ.has_key('CFLAGS'): + if 'CFLAGS' in os.environ: env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS']) - if os.environ.has_key('CXX'): + if 'CXX' in os.environ: env['CXX'] = os.environ['CXX'] - if os.environ.has_key('CXXFLAGS'): + if 'CXXFLAGS' in os.environ: env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS']) - if os.environ.has_key('LDFLAGS'): + if 'LDFLAGS' in os.environ: env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS']) # Detect gcc/clang not by executable name, but through pre-defined macros @@ -219,10 +222,6 @@ def generate(env): 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'] @@ -280,7 +279,7 @@ def generate(env): 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 @@ -309,7 +308,20 @@ def generate(env): 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 @@ -326,8 +338,6 @@ def generate(env): 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', @@ -352,9 +362,15 @@ def generate(env): 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 platform == 'windows': cppdefines += [ 'WIN32', @@ -384,10 +400,6 @@ def generate(env): 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 @@ -476,7 +488,7 @@ def generate(env): 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 @@ -587,7 +599,7 @@ def generate(env): 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']) @@ -677,6 +689,18 @@ def generate(env): 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'])