| OLD | NEW |
| 1 /* ftconfig.h. Generated from ftconfig.in by configure. */ | 1 /* ftconfig.h. Generated from ftconfig.in by configure. */ |
| 2 /***************************************************************************/ | 2 /***************************************************************************/ |
| 3 /* */ | 3 /* */ |
| 4 /* ftconfig.in */ | 4 /* ftconfig.in */ |
| 5 /* */ | 5 /* */ |
| 6 /* UNIX-specific configuration file (specification only). */ | 6 /* UNIX-specific configuration file (specification only). */ |
| 7 /* */ | 7 /* */ |
| 8 /* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */ | 8 /* Copyright 1996-2004, 2006-2009, 2011 by */ |
| 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | 9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
| 10 /* */ | 10 /* */ |
| 11 /* This file is part of the FreeType project, and may only be used, */ | 11 /* This file is part of the FreeType project, and may only be used, */ |
| 12 /* modified, and distributed under the terms of the FreeType project */ | 12 /* modified, and distributed under the terms of the FreeType project */ |
| 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | 13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
| 14 /* this file you indicate that you have read the license and */ | 14 /* this file you indicate that you have read the license and */ |
| 15 /* understand and accept it fully. */ | 15 /* understand and accept it fully. */ |
| 16 /* */ | 16 /* */ |
| 17 /***************************************************************************/ | 17 /***************************************************************************/ |
| 18 | 18 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 #define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) | 111 #define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) |
| 112 #elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL | 112 #elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL |
| 113 #define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) | 113 #define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) |
| 114 #else | 114 #else |
| 115 #error "Unsupported size of `long' type!" | 115 #error "Unsupported size of `long' type!" |
| 116 #endif | 116 #endif |
| 117 | 117 |
| 118 #endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ | 118 #endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ |
| 119 | 119 |
| 120 | 120 |
| 121 /* Preferred alignment of data */ | |
| 122 #define FT_ALIGNMENT 8 | |
| 123 | |
| 124 | |
| 125 /* FT_UNUSED is a macro used to indicate that a given parameter is not */ | 121 /* FT_UNUSED is a macro used to indicate that a given parameter is not */ |
| 126 /* used -- this is only used to get rid of unpleasant compiler warnings */ | 122 /* used -- this is only used to get rid of unpleasant compiler warnings */ |
| 127 #ifndef FT_UNUSED | 123 #ifndef FT_UNUSED |
| 128 #define FT_UNUSED( arg ) ( (arg) = (arg) ) | 124 #define FT_UNUSED( arg ) ( (arg) = (arg) ) |
| 129 #endif | 125 #endif |
| 130 | 126 |
| 131 | 127 |
| 132 /*************************************************************************/ | 128 /*************************************************************************/ |
| 133 /* */ | 129 /* */ |
| 134 /* AUTOMATIC CONFIGURATION MACROS */ | 130 /* AUTOMATIC CONFIGURATION MACROS */ |
| 135 /* */ | 131 /* */ |
| 136 /* These macros are computed from the ones defined above. Don't touch */ | 132 /* These macros are computed from the ones defined above. Don't touch */ |
| 137 /* their definition, unless you know precisely what you are doing. No */ | 133 /* their definition, unless you know precisely what you are doing. No */ |
| 138 /* porter should need to mess with them. */ | 134 /* porter should need to mess with them. */ |
| 139 /* */ | 135 /* */ |
| 140 /*************************************************************************/ | 136 /*************************************************************************/ |
| 141 | 137 |
| 142 | 138 |
| 143 /*************************************************************************/ | 139 /*************************************************************************/ |
| 144 /* */ | 140 /* */ |
| 145 /* Mac support */ | 141 /* Mac support */ |
| 146 /* */ | 142 /* */ |
| 147 /* This is the only necessary change, so it is defined here instead */ | 143 /* This is the only necessary change, so it is defined here instead */ |
| 148 /* providing a new configuration file. */ | 144 /* providing a new configuration file. */ |
| 149 /* */ | 145 /* */ |
| 150 #if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ | 146 #if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ |
| 151 ( defined( __MWERKS__ ) && defined( macintosh ) ) | 147 ( defined( __MWERKS__ ) && defined( macintosh ) ) |
| 152 /* no Carbon frameworks for 64bit 10.4.x */ | 148 /* no Carbon frameworks for 64bit 10.4.x */ |
| 149 /* AvailabilityMacros.h is available since Mac OS X 10.2, */ |
| 150 /* so guess the system version by maximum errno before inclusion */ |
| 151 #include <errno.h> |
| 152 #ifdef ECANCELED /* defined since 10.2 */ |
| 153 #include "AvailabilityMacros.h" | 153 #include "AvailabilityMacros.h" |
| 154 #endif |
| 154 #if defined( __LP64__ ) && \ | 155 #if defined( __LP64__ ) && \ |
| 155 ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) | 156 ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) |
| 156 #define DARWIN_NO_CARBON 1 | 157 #define DARWIN_NO_CARBON 1 |
| 157 #else | 158 #else |
| 158 #define FT_MACINTOSH 1 | 159 #define FT_MACINTOSH 1 |
| 159 #endif | 160 #endif |
| 160 | 161 |
| 161 #elif defined( __SC__ ) || defined( __MRC__ ) | 162 #elif defined( __SC__ ) || defined( __MRC__ ) |
| 162 /* Classic MacOS compilers */ | 163 /* Classic MacOS compilers */ |
| 163 #include "ConditionalMacros.h" | 164 #include "ConditionalMacros.h" |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 | 281 |
| 281 #define FT_BEGIN_STMNT do { | 282 #define FT_BEGIN_STMNT do { |
| 282 #define FT_END_STMNT } while ( 0 ) | 283 #define FT_END_STMNT } while ( 0 ) |
| 283 #define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT | 284 #define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT |
| 284 | 285 |
| 285 | 286 |
| 286 #ifndef FT_CONFIG_OPTION_NO_ASSEMBLER | 287 #ifndef FT_CONFIG_OPTION_NO_ASSEMBLER |
| 287 /* Provide assembler fragments for performance-critical functions. */ | 288 /* Provide assembler fragments for performance-critical functions. */ |
| 288 /* These must be defined `static __inline__' with GCC. */ | 289 /* These must be defined `static __inline__' with GCC. */ |
| 289 | 290 |
| 291 #if defined( __CC_ARM ) || defined( __ARMCC__ ) /* RVCT */ |
| 292 #define FT_MULFIX_ASSEMBLER FT_MulFix_arm |
| 293 |
| 294 /* documentation is in freetype.h */ |
| 295 |
| 296 static __inline FT_Int32 |
| 297 FT_MulFix_arm( FT_Int32 a, |
| 298 FT_Int32 b ) |
| 299 { |
| 300 register FT_Int32 t, t2; |
| 301 |
| 302 |
| 303 __asm |
| 304 { |
| 305 smull t2, t, b, a /* (lo=t2,hi=t) = a*b */ |
| 306 mov a, t, asr #31 /* a = (hi >> 31) */ |
| 307 add a, a, #0x8000 /* a += 0x8000 */ |
| 308 adds t2, t2, a /* t2 += a */ |
| 309 adc t, t, #0 /* t += carry */ |
| 310 mov a, t2, lsr #16 /* a = t2 >> 16 */ |
| 311 orr a, a, t, lsl #16 /* a |= t << 16 */ |
| 312 } |
| 313 return a; |
| 314 } |
| 315 |
| 316 #endif /* __CC_ARM || __ARMCC__ */ |
| 317 |
| 318 |
| 290 #ifdef __GNUC__ | 319 #ifdef __GNUC__ |
| 291 | 320 |
| 292 #if defined( __arm__ ) && !defined( __thumb__ ) | 321 #if defined( __arm__ ) && !defined( __thumb__ ) && \ |
| 322 !( defined( __CC_ARM ) || defined( __ARMCC__ ) ) |
| 293 #define FT_MULFIX_ASSEMBLER FT_MulFix_arm | 323 #define FT_MULFIX_ASSEMBLER FT_MulFix_arm |
| 294 | 324 |
| 325 /* documentation is in freetype.h */ |
| 326 |
| 295 static __inline__ FT_Int32 | 327 static __inline__ FT_Int32 |
| 296 FT_MulFix_arm( FT_Int32 a, | 328 FT_MulFix_arm( FT_Int32 a, |
| 297 FT_Int32 b ) | 329 FT_Int32 b ) |
| 298 { | 330 { |
| 299 register FT_Int32 t, t2; | 331 register FT_Int32 t, t2; |
| 300 | 332 |
| 301 | 333 |
| 302 __asm__ __volatile__ ( | 334 __asm__ __volatile__ ( |
| 303 "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ | 335 "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ |
| 304 "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ | 336 "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ |
| 305 "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ | 337 "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ |
| 306 "adds %1, %1, %0\n\t" /* %1 += %0 */ | 338 "adds %1, %1, %0\n\t" /* %1 += %0 */ |
| 307 "adc %2, %2, #0\n\t" /* %2 += carry */ | 339 "adc %2, %2, #0\n\t" /* %2 += carry */ |
| 308 "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ | 340 "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ |
| 309 "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ | 341 "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ |
| 310 : "=r"(a), "=&r"(t2), "=&r"(t) | 342 : "=r"(a), "=&r"(t2), "=&r"(t) |
| 311 : "r"(a), "r"(b) ); | 343 : "r"(a), "r"(b) ); |
| 312 return a; | 344 return a; |
| 313 } | 345 } |
| 314 | 346 |
| 315 #endif /* __arm__ && !__thumb__ */ | 347 #endif /* __arm__ && !__thumb__ && !( __CC_ARM || __ARMCC__ ) */ |
| 316 | 348 |
| 317 #if defined( i386 ) | 349 #if defined( __i386__ ) |
| 318 #define FT_MULFIX_ASSEMBLER FT_MulFix_i386 | 350 #define FT_MULFIX_ASSEMBLER FT_MulFix_i386 |
| 319 | 351 |
| 352 /* documentation is in freetype.h */ |
| 353 |
| 320 static __inline__ FT_Int32 | 354 static __inline__ FT_Int32 |
| 321 FT_MulFix_i386( FT_Int32 a, | 355 FT_MulFix_i386( FT_Int32 a, |
| 322 FT_Int32 b ) | 356 FT_Int32 b ) |
| 323 { | 357 { |
| 324 register FT_Int32 result; | 358 register FT_Int32 result; |
| 325 | 359 |
| 326 | 360 |
| 327 __asm__ __volatile__ ( | 361 __asm__ __volatile__ ( |
| 328 "imul %%edx\n" | 362 "imul %%edx\n" |
| 329 "movl %%edx, %%ecx\n" | 363 "movl %%edx, %%ecx\n" |
| 330 "sarl $31, %%ecx\n" | 364 "sarl $31, %%ecx\n" |
| 331 "addl $0x8000, %%ecx\n" | 365 "addl $0x8000, %%ecx\n" |
| 332 "addl %%ecx, %%eax\n" | 366 "addl %%ecx, %%eax\n" |
| 333 "adcl $0, %%edx\n" | 367 "adcl $0, %%edx\n" |
| 334 "shrl $16, %%eax\n" | 368 "shrl $16, %%eax\n" |
| 335 "shll $16, %%edx\n" | 369 "shll $16, %%edx\n" |
| 336 "addl %%edx, %%eax\n" | 370 "addl %%edx, %%eax\n" |
| 337 : "=a"(result), "+d"(b) | 371 : "=a"(result), "=d"(b) |
| 338 : "a"(a) | 372 : "a"(a), "d"(b) |
| 339 : "%ecx" ); | 373 : "%ecx", "cc" ); |
| 340 return result; | 374 return result; |
| 341 } | 375 } |
| 342 | 376 |
| 343 #endif /* i386 */ | 377 #endif /* i386 */ |
| 344 | 378 |
| 345 #endif /* __GNUC__ */ | 379 #endif /* __GNUC__ */ |
| 346 | 380 |
| 381 |
| 382 #ifdef _MSC_VER /* Visual C++ */ |
| 383 |
| 384 #ifdef _M_IX86 |
| 385 |
| 386 #define FT_MULFIX_ASSEMBLER FT_MulFix_i386 |
| 387 |
| 388 /* documentation is in freetype.h */ |
| 389 |
| 390 static __inline FT_Int32 |
| 391 FT_MulFix_i386( FT_Int32 a, |
| 392 FT_Int32 b ) |
| 393 { |
| 394 register FT_Int32 result; |
| 395 |
| 396 __asm |
| 397 { |
| 398 mov eax, a |
| 399 mov edx, b |
| 400 imul edx |
| 401 mov ecx, edx |
| 402 sar ecx, 31 |
| 403 add ecx, 8000h |
| 404 add eax, ecx |
| 405 adc edx, 0 |
| 406 shr eax, 16 |
| 407 shl edx, 16 |
| 408 add eax, edx |
| 409 mov result, eax |
| 410 } |
| 411 return result; |
| 412 } |
| 413 |
| 414 #endif /* _M_IX86 */ |
| 415 |
| 416 #endif /* _MSC_VER */ |
| 417 |
| 347 #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ | 418 #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ |
| 348 | 419 |
| 349 | 420 |
| 350 #ifdef FT_CONFIG_OPTION_INLINE_MULFIX | 421 #ifdef FT_CONFIG_OPTION_INLINE_MULFIX |
| 351 #ifdef FT_MULFIX_ASSEMBLER | 422 #ifdef FT_MULFIX_ASSEMBLER |
| 352 #define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER | 423 #define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER |
| 353 #endif | 424 #endif |
| 354 #endif | 425 #endif |
| 355 | 426 |
| 356 | 427 |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 #endif /* FT_CALLBACK_TABLE */ | 539 #endif /* FT_CALLBACK_TABLE */ |
| 469 | 540 |
| 470 | 541 |
| 471 FT_END_HEADER | 542 FT_END_HEADER |
| 472 | 543 |
| 473 | 544 |
| 474 #endif /* __FTCONFIG_H__ */ | 545 #endif /* __FTCONFIG_H__ */ |
| 475 | 546 |
| 476 | 547 |
| 477 /* END */ | 548 /* END */ |
| OLD | NEW |