summaryrefslogtreecommitdiffstats
path: root/scons
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2014-09-21 17:25:49 -0700
committerMatt Turner <[email protected]>2014-09-25 13:52:55 -0700
commit4a96df73e770bcca6396d3c8ffe3fd1693c73e50 (patch)
tree6f0d990309a36c1b62b091fd17c0dd93645c186d /scons
parent3e0082261959762460dde18553ce0615df5c7a0a (diff)
mesa: Replace a priori knowledge of gcc builtins with configure tests.
Presumbly this will let clang and other compilers use the built-ins as well. Notice two changes specifically: - in _mesa_next_pow_two_64(), always use __builtin_clzll and add a static assertion that this is safe. - in macros.h, remove the clang-specific definition since it should be able to detect __builtin_unreachable in configure. Reviewed-by: Jason Ekstrand <[email protected]> [C bits] Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'scons')
-rwxr-xr-xscons/gallium.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/scons/gallium.py b/scons/gallium.py
index 1dcfa6b243c..ef6df1ae1a9 100755
--- a/scons/gallium.py
+++ b/scons/gallium.py
@@ -583,6 +583,24 @@ def generate(env):
env.Append(CCFLAGS = ['-fopenmp'])
env.Append(LIBS = ['gomp'])
+ if gcc_compat:
+ ccversion = env['CCVERSION']
+ cppdefines += [
+ 'HAVE___BUILTIN_EXPECT',
+ 'HAVE___BUILTIN_FFS',
+ 'HAVE___BUILTIN_FFSLL',
+ ]
+ if distutils.version.LooseVersion(ccversion) >= distutils.version.LooseVersion('3.4'):
+ cppdefines += [
+ 'HAVE___BUILTIN_CTZ',
+ 'HAVE___BUILTIN_POPCOUNT',
+ 'HAVE___BUILTIN_POPCOUNTLL',
+ 'HAVE___BUILTIN_CLZ',
+ 'HAVE___BUILTIN_CLZLL',
+ ]
+ if distutils.version.LooseVersion(ccversion) >= distutils.version.LooseVersion('4.5'):
+ cppdefines += ['HAVE___BUILTIN_UNREACHABLE']
+
# Load tools
env.Tool('lex')
env.Tool('yacc')