These were being defined in SCons, but it's not practical -- we actually need to include Gallium headers from external source trees, with completely disjoint build infrastructure, and it's unsustainable to replicate the HAVE_xxx checks or even hard-coded defines across everywhere.
No actual change in behavior for autoconf. --- configure.ac | 2 +- include/c99_compat.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ scons/gallium.py | 27 --------------------------- src/util/macros.h | 2 ++ 4 files changed, 48 insertions(+), 28 deletions(-) diff --git a/configure.ac b/configure.ac index 520cc22..1485bba 100644 --- a/configure.ac +++ b/configure.ac @@ -230,7 +230,7 @@ _SAVE_LDFLAGS="$LDFLAGS" _SAVE_CPPFLAGS="$CPPFLAGS" dnl Compiler macros -DEFINES="" +DEFINES="-DHAVE_AUTOCONF" AC_SUBST([DEFINES]) case "$host_os" in linux*|*-gnu*|gnu*) diff --git a/include/c99_compat.h b/include/c99_compat.h index 4fc91bc..62ccd46 100644 --- a/include/c99_compat.h +++ b/include/c99_compat.h @@ -141,4 +141,49 @@ test_c99_compat_h(const void * restrict a, #endif + +/* Fallback definitions, for when these headers are used by build systems which + * don't auto-detect these things.*/ +#ifndef HAVE_AUTOCONF + +#ifndef _WIN32 +# define HAVE_PTHREAD +# define HAVE_POSIX_MEMALIGN +#endif + +#ifdef __GNUC__ +# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2) +# error "GCC version 4.2 or higher required" +# endif + +/* https://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Other-Builtins.html */ +# define HAVE___BUILTIN_CLZ 1 +# define HAVE___BUILTIN_CLZLL 1 +# define HAVE___BUILTIN_CTZ 1 +# define HAVE___BUILTIN_EXPECT 1 +# define HAVE___BUILTIN_FFS 1 +# define HAVE___BUILTIN_FFSLL 1 +# define HAVE___BUILTIN_POPCOUNT 1 +# define HAVE___BUILTIN_POPCOUNTLL 1 +/* https://gcc.gnu.org/onlinedocs/gcc-4.2.4/gcc/Function-Attributes.html */ +# define HAVE_FUNC_ATTRIBUTE_FLATTEN 1 +# define HAVE_FUNC_ATTRIBUTE_UNUSED 1 +# define HAVE_FUNC_ATTRIBUTE_FORMAT 1 +# define HAVE_FUNC_ATTRIBUTE_PACKED 1 + +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) +/* https://gcc.gnu.org/onlinedocs/gcc-4.3.6/gcc/Other-Builtins.html */ +# define HAVE___BUILTIN_BSWAP32 1 +# define HAVE___BUILTIN_BSWAP64 1 +# endif + +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) +# define HAVE___BUILTIN_UNREACHABLE 1 +# endif + +#endif /* __GNUC__ */ + +#endif /* !HAVE_AUTOCONF */ + + #endif /* _C99_COMPAT_H_ */ diff --git a/scons/gallium.py b/scons/gallium.py index 51b84d7..b44b7c9 100755 --- a/scons/gallium.py +++ b/scons/gallium.py @@ -314,8 +314,6 @@ def generate(env): '_BSD_SOURCE', '_GNU_SOURCE', '_DEFAULT_SOURCE', - 'HAVE_PTHREAD', - 'HAVE_POSIX_MEMALIGN', ] if env['platform'] == 'darwin': cppdefines += [ @@ -336,11 +334,6 @@ def generate(env): if env['platform'] in ('linux', 'darwin'): cppdefines += ['HAVE_XLOCALE_H'] - if env['platform'] == 'haiku': - cppdefines += [ - 'HAVE_PTHREAD', - 'HAVE_POSIX_MEMALIGN' - ] if platform == 'windows': cppdefines += [ 'WIN32', @@ -374,26 +367,6 @@ def generate(env): print 'warning: Floating-point textures enabled.' print 'warning: Please consult docs/patents.txt with your lawyer before building Mesa.' cppdefines += ['TEXTURE_FLOAT_ENABLED'] - if gcc_compat: - ccversion = env['CCVERSION'] - cppdefines += [ - 'HAVE___BUILTIN_EXPECT', - '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', - # GCC 3.4 - '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'] env.Append(CPPDEFINES = cppdefines) # C compiler options diff --git a/src/util/macros.h b/src/util/macros.h index 6c7bda7..a2ff57a 100644 --- a/src/util/macros.h +++ b/src/util/macros.h @@ -24,6 +24,8 @@ #ifndef UTIL_MACROS_H #define UTIL_MACROS_H +#include "c99_compat.h" + /* Compute the size of an array */ #ifndef ARRAY_SIZE # define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev