mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-27 09:31:03 +00:00
scons: Move fallback HAVE_* definitions to headers.
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. - checking compiler version via command line doesn't really work due to Clang essentially being like a cameleon which can fake either GCC or MSVC There's no change for autoconf. Reviewed-by: Roland Scheidegger <sroland@vmware.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
940da2ce0e
commit
c068610a7d
@ -135,4 +135,48 @@ test_c99_compat_h(const void * restrict a,
|
||||
#endif
|
||||
|
||||
|
||||
/* Fallback definitions, for build systems other than autoconfig which don't
|
||||
* auto-detect these things. */
|
||||
#ifdef HAVE_NO_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_ */
|
||||
|
@ -171,16 +171,6 @@ def generate(env):
|
||||
# Allow override compiler and specify additional flags from environment
|
||||
if os.environ.has_key('CC'):
|
||||
env['CC'] = os.environ['CC']
|
||||
# Update CCVERSION to match
|
||||
pipe = SCons.Action._subproc(env, [env['CC'], '--version'],
|
||||
stdin = 'devnull',
|
||||
stderr = 'devnull',
|
||||
stdout = subprocess.PIPE)
|
||||
if pipe.wait() == 0:
|
||||
line = pipe.stdout.readline()
|
||||
match = re.search(r'[0-9]+(\.[0-9]+)+', line)
|
||||
if match:
|
||||
env['CCVERSION'] = match.group(0)
|
||||
if os.environ.has_key('CFLAGS'):
|
||||
env['CCFLAGS'] += SCons.Util.CLVar(os.environ['CFLAGS'])
|
||||
if os.environ.has_key('CXX'):
|
||||
@ -299,7 +289,11 @@ def generate(env):
|
||||
|
||||
# C preprocessor options
|
||||
cppdefines = []
|
||||
cppdefines += ['__STDC_LIMIT_MACROS', '__STDC_CONSTANT_MACROS']
|
||||
cppdefines += [
|
||||
'__STDC_LIMIT_MACROS',
|
||||
'__STDC_CONSTANT_MACROS',
|
||||
'HAVE_NO_AUTOCONF',
|
||||
]
|
||||
if env['build'] in ('debug', 'checked'):
|
||||
cppdefines += ['DEBUG']
|
||||
else:
|
||||
@ -314,8 +308,6 @@ def generate(env):
|
||||
'_BSD_SOURCE',
|
||||
'_GNU_SOURCE',
|
||||
'_DEFAULT_SOURCE',
|
||||
'HAVE_PTHREAD',
|
||||
'HAVE_POSIX_MEMALIGN',
|
||||
]
|
||||
if env['platform'] == 'darwin':
|
||||
cppdefines += [
|
||||
@ -336,11 +328,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 +361,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
|
||||
@ -401,13 +368,8 @@ def generate(env):
|
||||
cxxflags = [] # C++
|
||||
ccflags = [] # C & C++
|
||||
if gcc_compat:
|
||||
ccversion = env['CCVERSION']
|
||||
if env['build'] == 'debug':
|
||||
ccflags += ['-O0']
|
||||
elif env['gcc'] and ccversion.startswith('4.2.'):
|
||||
# gcc 4.2.x optimizer is broken
|
||||
print "warning: gcc 4.2.x optimizer is broken -- disabling optimizations"
|
||||
ccflags += ['-O0']
|
||||
else:
|
||||
ccflags += ['-O3']
|
||||
if env['gcc']:
|
||||
|
@ -26,6 +26,8 @@
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "c99_compat.h"
|
||||
|
||||
/* Compute the size of an array */
|
||||
#ifndef ARRAY_SIZE
|
||||
# define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
|
||||
|
Loading…
Reference in New Issue
Block a user