1 /***************************************************************************/
5 /* ANSI-specific configuration file (specification only). */
7 /* Copyright 1996-2000 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
16 /***************************************************************************/
19 /*************************************************************************/
21 /* This header file contains a number of macro definitions that are used */
22 /* by the rest of the engine. Most of the macros here are automatically */
23 /* determined at compile time, and you should not need to change it to */
24 /* port FreeType, except to compile the library with a non-ANSI */
27 /* Note however that if some specific modifications are needed, we */
28 /* advise you to place a modified copy in your build directory. */
30 /* The build directory is usually `freetype/builds/<system>', and */
31 /* contains system-specific files that are always included first when */
32 /* building the library. */
34 /* This ANSI version should stay in `include/freetype/config'. */
36 /*************************************************************************/
43 /* Include the header file containing all developer build options */
44 #include <freetype/config/ftoption.h>
47 /*************************************************************************/
49 /* PLATFORM-SPECIFIC CONFIGURATION MACROS */
51 /* These macros can be toggled to suit a specific system. The current */
52 /* ones are defaults used to compile FreeType in an ANSI C environment */
53 /* (16bit compilers are also supported). Copy this file to your own */
54 /* `freetype/builds/<system>' directory, and edit it to port the engine. */
56 /*************************************************************************/
59 /* We use <limits.h> values to know the sizes of the types. */
62 /* The number of bytes in an `int' type. */
63 #if UINT_MAX == 0xFFFFFFFF
64 #define FT_SIZEOF_INT 4
65 #elif UINT_MAX == 0xFFFF
66 #define FT_SIZEOF_INT 2
67 #elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
68 #define FT_SIZEOF_INT 8
70 #error "Unsupported number of bytes in `int' type!"
73 /* The number of bytes in a `long' type. */
74 #if ULONG_MAX == 0xFFFFFFFF
75 #define FT_SIZEOF_LONG 4
76 #elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
77 #define FT_SIZEOF_LONG 8
79 #error "Unsupported number of bytes in `long' type!"
83 /* Preferred alignment of data */
84 #define FT_ALIGNMENT 8
87 /* UNUSED is a macro used to indicate that a given parameter is not used */
88 /* -- this is only used to get rid of unpleasant compiler warnings */
90 #define FT_UNUSED( arg ) ( (arg) = (arg) )
94 /*************************************************************************/
96 /* AUTOMATIC CONFIGURATION MACROS */
98 /* These macros are computed from the ones defined above. Don't touch */
99 /* their definition, unless you know precisely what you are doing. No */
100 /* porter should need to mess with them. */
102 /*************************************************************************/
105 /*************************************************************************/
109 /* Used to guarantee the size of some specific integers. */
111 typedef signed short FT_Int16;
112 typedef unsigned short FT_UInt16;
114 #if FT_SIZEOF_INT == 4
116 typedef signed int FT_Int32;
117 typedef unsigned int FT_UInt32;
119 #elif FT_SIZEOF_LONG == 4
121 typedef signed long FT_Int32;
122 typedef unsigned long FT_UInt32;
125 #error "no 32bit type found -- please check your configuration files"
128 #if FT_SIZEOF_LONG == 8
130 /* FT_LONG64 must be defined if a 64-bit type is available */
132 #define FT_INT64 long
137 /*************************************************************************/
139 /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */
140 /* activate it by defining the FTCALC_USE_LONG_LONG macro in */
143 /* Note that this will produce many -ansi warnings during library */
144 /* compilation, and that in many cases, the generated code will be */
145 /* neither smaller nor faster! */
147 #ifdef FTCALC_USE_LONG_LONG
150 #define FT_INT64 long long
152 #endif /* FTCALC_USE_LONG_LONG */
153 #endif /* FT_SIZEOF_LONG == 8 */
156 #ifdef FT_MAKE_OPTION_SINGLE_OBJECT
157 #define LOCAL_DEF static
158 #define LOCAL_FUNC static
160 #define LOCAL_DEF extern
161 #define LOCAL_FUNC /* nothing */
164 #ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
165 #define BASE_DEF( x ) static x
166 #define BASE_FUNC( x ) static x
168 #define BASE_DEF( x ) extern x
169 #define BASE_FUNC( x ) extern x
172 #ifndef FT_EXPORT_DEF
173 #define FT_EXPORT_DEF( x ) extern x
176 #ifndef FT_EXPORT_FUNC
177 #define FT_EXPORT_FUNC( x ) extern x
180 #ifndef FT_EXPORT_VAR
181 #define FT_EXPORT_VAR( x ) extern x
184 #endif /* FTCONFIG_H */