[Mesa-dev] [PATCH 4/4] autoconf, scons: Move fallback HAVE_* definitions to headers.
Jose Fonseca
jfonseca at vmware.com
Thu Apr 2 07:32:56 PDT 2015
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
More information about the mesa-dev
mailing list