| Index: third_party/freetype2/include/ftconfig.h
|
| diff --git a/third_party/freetype2/include/ftconfig.h b/third_party/freetype2/include/ftconfig.h
|
| index 16f8854e27efb947eb65950c22abaca687160261..f05e60845569995915be5d6b0a440bd634574138 100644
|
| --- a/third_party/freetype2/include/ftconfig.h
|
| +++ b/third_party/freetype2/include/ftconfig.h
|
| @@ -5,7 +5,7 @@
|
| /* */
|
| /* UNIX-specific configuration file (specification only). */
|
| /* */
|
| -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */
|
| +/* Copyright 1996-2004, 2006-2009, 2011 by */
|
| /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
| /* */
|
| /* This file is part of the FreeType project, and may only be used, */
|
| @@ -118,10 +118,6 @@ FT_BEGIN_HEADER
|
| #endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
|
|
|
|
| - /* Preferred alignment of data */
|
| -#define FT_ALIGNMENT 8
|
| -
|
| -
|
| /* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
| /* used -- this is only used to get rid of unpleasant compiler warnings */
|
| #ifndef FT_UNUSED
|
| @@ -150,7 +146,12 @@ FT_BEGIN_HEADER
|
| #if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \
|
| ( defined( __MWERKS__ ) && defined( macintosh ) )
|
| /* no Carbon frameworks for 64bit 10.4.x */
|
| + /* AvailabilityMacros.h is available since Mac OS X 10.2, */
|
| + /* so guess the system version by maximum errno before inclusion */
|
| +#include <errno.h>
|
| +#ifdef ECANCELED /* defined since 10.2 */
|
| #include "AvailabilityMacros.h"
|
| +#endif
|
| #if defined( __LP64__ ) && \
|
| ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
|
| #define DARWIN_NO_CARBON 1
|
| @@ -287,11 +288,42 @@ FT_BEGIN_HEADER
|
| /* Provide assembler fragments for performance-critical functions. */
|
| /* These must be defined `static __inline__' with GCC. */
|
|
|
| +#if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */
|
| +#define FT_MULFIX_ASSEMBLER FT_MulFix_arm
|
| +
|
| + /* documentation is in freetype.h */
|
| +
|
| + static __inline FT_Int32
|
| + FT_MulFix_arm( FT_Int32 a,
|
| + FT_Int32 b )
|
| + {
|
| + register FT_Int32 t, t2;
|
| +
|
| +
|
| + __asm
|
| + {
|
| + smull t2, t, b, a /* (lo=t2,hi=t) = a*b */
|
| + mov a, t, asr #31 /* a = (hi >> 31) */
|
| + add a, a, #0x8000 /* a += 0x8000 */
|
| + adds t2, t2, a /* t2 += a */
|
| + adc t, t, #0 /* t += carry */
|
| + mov a, t2, lsr #16 /* a = t2 >> 16 */
|
| + orr a, a, t, lsl #16 /* a |= t << 16 */
|
| + }
|
| + return a;
|
| + }
|
| +
|
| +#endif /* __CC_ARM || __ARMCC__ */
|
| +
|
| +
|
| #ifdef __GNUC__
|
|
|
| -#if defined( __arm__ ) && !defined( __thumb__ )
|
| +#if defined( __arm__ ) && !defined( __thumb__ ) && \
|
| + !( defined( __CC_ARM ) || defined( __ARMCC__ ) )
|
| #define FT_MULFIX_ASSEMBLER FT_MulFix_arm
|
|
|
| + /* documentation is in freetype.h */
|
| +
|
| static __inline__ FT_Int32
|
| FT_MulFix_arm( FT_Int32 a,
|
| FT_Int32 b )
|
| @@ -312,11 +344,13 @@ FT_BEGIN_HEADER
|
| return a;
|
| }
|
|
|
| -#endif /* __arm__ && !__thumb__ */
|
| +#endif /* __arm__ && !__thumb__ && !( __CC_ARM || __ARMCC__ ) */
|
|
|
| -#if defined( i386 )
|
| +#if defined( __i386__ )
|
| #define FT_MULFIX_ASSEMBLER FT_MulFix_i386
|
|
|
| + /* documentation is in freetype.h */
|
| +
|
| static __inline__ FT_Int32
|
| FT_MulFix_i386( FT_Int32 a,
|
| FT_Int32 b )
|
| @@ -334,9 +368,9 @@ FT_BEGIN_HEADER
|
| "shrl $16, %%eax\n"
|
| "shll $16, %%edx\n"
|
| "addl %%edx, %%eax\n"
|
| - : "=a"(result), "+d"(b)
|
| - : "a"(a)
|
| - : "%ecx" );
|
| + : "=a"(result), "=d"(b)
|
| + : "a"(a), "d"(b)
|
| + : "%ecx", "cc" );
|
| return result;
|
| }
|
|
|
| @@ -344,6 +378,43 @@ FT_BEGIN_HEADER
|
|
|
| #endif /* __GNUC__ */
|
|
|
| +
|
| +#ifdef _MSC_VER /* Visual C++ */
|
| +
|
| +#ifdef _M_IX86
|
| +
|
| +#define FT_MULFIX_ASSEMBLER FT_MulFix_i386
|
| +
|
| + /* documentation is in freetype.h */
|
| +
|
| + static __inline FT_Int32
|
| + FT_MulFix_i386( FT_Int32 a,
|
| + FT_Int32 b )
|
| + {
|
| + register FT_Int32 result;
|
| +
|
| + __asm
|
| + {
|
| + mov eax, a
|
| + mov edx, b
|
| + imul edx
|
| + mov ecx, edx
|
| + sar ecx, 31
|
| + add ecx, 8000h
|
| + add eax, ecx
|
| + adc edx, 0
|
| + shr eax, 16
|
| + shl edx, 16
|
| + add eax, edx
|
| + mov result, eax
|
| + }
|
| + return result;
|
| + }
|
| +
|
| +#endif /* _M_IX86 */
|
| +
|
| +#endif /* _MSC_VER */
|
| +
|
| #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
|
|
|
|
|
|