Fix PCRE build under non-__GNUC__ compilers

PCRE's JIT has several paths that end in a #error under compilers that
don't #define __GNUC__.

This is because either
- those platforms were unavailable to PCRE devs so they were not tested;
- the #ifdef guards inline assembly fragments in GCC (AT&T) syntax;
- the #ifdef guards functions present f.i. in ARM's EABI and unavailable
  f.i. under WinCE.

This commit disables PCRE's JIT under ARM and MIPS unless __GCC__ is
defined. The MIPS #define from MSVC (_M_MRX000) is also dropped.

Change-Id: I59f959c321413845ffbdf1ac32740b400422e0ee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
This commit is contained in:
Giuseppe D'Angelo 2012-06-21 21:14:33 +02:00 committed by Qt by Nokia
parent 92455dad4d
commit 0db3d6a247

View File

@ -16,17 +16,19 @@
/*
man 3 pcrejit for a list of supported platforms;
as PCRE 8.30, stable JIT support is available for:
- ARM v5, v7, and Thumb2
- ARM v5, v7, and Thumb2 (__GNUC__ compilers only)
- x86/x86-64
- MIPS 32bit
- MIPS 32bit (__GNUC__ compilers only)
*/
#if \
/* ARM */ \
defined(__arm__) || defined(__TARGET_ARCH_ARM) \
(defined(__GNUC__) && (defined(__arm__) || defined(__TARGET_ARCH_ARM))) \
/* x86 32/64 */ \
|| defined(__i386) || defined(__i386__) || defined(_M_IX86) \
|| defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64) \
/* MIPS32 */ \
|| defined(__mips) || defined(__mips__) || defined(_M_MRX000) && !(defined(_MIPS_ARCH_MIPS64) || defined(__mips64))
|| (defined(__GNUC__) \
&& (defined(__mips) || defined(__mips__)) \
&& !(defined(_MIPS_ARCH_MIPS64) || defined(__mips64)))
# define SUPPORT_JIT
#endif