OLD | NEW |
| (Empty) |
1 /* | |
2 ****************************************************************************** | |
3 * | |
4 * Copyright (C) 1997-2007, International Business Machines | |
5 * Corporation and others. All Rights Reserved. | |
6 * | |
7 ****************************************************************************** | |
8 * | |
9 * FILE NAME : platform.h | |
10 * | |
11 * Date Name Description | |
12 * 05/13/98 nos Creation (content moved here from ptypes.h). | |
13 * 03/02/99 stephen Added AS400 support. | |
14 * 03/30/99 stephen Added Linux support. | |
15 * 04/13/99 stephen Reworked for autoconf. | |
16 ****************************************************************************** | |
17 */ | |
18 | |
19 /** | |
20 * \file | |
21 * \brief Basic types for the platform | |
22 */ | |
23 | |
24 /* Define the platform we're on. */ | |
25 #ifndef U_BSD | |
26 #define U_BSD | |
27 #endif | |
28 | |
29 /* Define whether inttypes.h is available */ | |
30 #ifndef U_HAVE_INTTYPES_H | |
31 #define U_HAVE_INTTYPES_H 1 | |
32 #endif | |
33 | |
34 /* | |
35 * Define what support for C++ streams is available. | |
36 * If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available | |
37 * (1997711 is the date the ISO/IEC C++ FDIS was published), and then | |
38 * one should qualify streams using the std namespace in ICU header | |
39 * files. | |
40 * If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is | |
41 * available instead (198506 is the date when Stroustrup published | |
42 * "An Extensible I/O Facility for C++" at the summer USENIX conference). | |
43 * If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and | |
44 * support for them will be silently suppressed in ICU. | |
45 * | |
46 */ | |
47 | |
48 #ifndef U_IOSTREAM_SOURCE | |
49 #define U_IOSTREAM_SOURCE 199711 | |
50 #endif | |
51 | |
52 /* Determines whether specific types are available */ | |
53 #ifndef U_HAVE_INT8_T | |
54 #define U_HAVE_INT8_T 1 | |
55 #endif | |
56 | |
57 #ifndef U_HAVE_UINT8_T | |
58 #define U_HAVE_UINT8_T 1 | |
59 #endif | |
60 | |
61 #ifndef U_HAVE_INT16_T | |
62 #define U_HAVE_INT16_T 1 | |
63 #endif | |
64 | |
65 #ifndef U_HAVE_UINT16_T | |
66 #define U_HAVE_UINT16_T 1 | |
67 #endif | |
68 | |
69 #ifndef U_HAVE_INT32_T | |
70 #define U_HAVE_INT32_T 1 | |
71 #endif | |
72 | |
73 #ifndef U_HAVE_UINT32_T | |
74 #define U_HAVE_UINT32_T 1 | |
75 #endif | |
76 | |
77 #ifndef U_HAVE_INT64_T | |
78 #define U_HAVE_INT64_T 1 | |
79 #endif | |
80 | |
81 #ifndef U_HAVE_UINT64_T | |
82 #define U_HAVE_UINT64_T 1 | |
83 #endif | |
84 | |
85 /*===========================================================================*/ | |
86 /* Generic data types */ | |
87 /*===========================================================================*/ | |
88 | |
89 #include <sys/types.h> | |
90 | |
91 /* If your platform does not have the <inttypes.h> header, you may | |
92 need to edit the typedefs below. */ | |
93 #if U_HAVE_INTTYPES_H | |
94 | |
95 /* autoconf 2.13 sometimes can't properly find the data types in <inttypes.h> */ | |
96 /* os/390 needs <inttypes.h>, but it doesn't have int8_t, and it sometimes */ | |
97 /* doesn't have uint8_t depending on the OS version. */ | |
98 /* So we have this work around. */ | |
99 #ifdef OS390 | |
100 /* The features header is needed to get (u)int64_t sometimes. */ | |
101 #include <features.h> | |
102 #if ! U_HAVE_INT8_T | |
103 typedef signed char int8_t; | |
104 #endif | |
105 #if !defined(__uint8_t) | |
106 #define __uint8_t 1 | |
107 typedef unsigned char uint8_t; | |
108 #endif | |
109 #endif /* OS390 */ | |
110 | |
111 #include <inttypes.h> | |
112 | |
113 #else /* U_HAVE_INTTYPES_H */ | |
114 | |
115 #if ! U_HAVE_INT8_T | |
116 typedef signed char int8_t; | |
117 #endif | |
118 | |
119 #if ! U_HAVE_UINT8_T | |
120 typedef unsigned char uint8_t; | |
121 #endif | |
122 | |
123 #if ! U_HAVE_INT16_T | |
124 typedef signed short int16_t; | |
125 #endif | |
126 | |
127 #if ! U_HAVE_UINT16_T | |
128 typedef unsigned short uint16_t; | |
129 #endif | |
130 | |
131 #if ! U_HAVE_INT32_T | |
132 typedef signed int int32_t; | |
133 #endif | |
134 | |
135 #if ! U_HAVE_UINT32_T | |
136 typedef unsigned int uint32_t; | |
137 #endif | |
138 | |
139 #if ! U_HAVE_INT64_T | |
140 typedef signed long long int64_t; | |
141 /* else we may not have a 64-bit type */ | |
142 #endif | |
143 | |
144 #if ! U_HAVE_UINT64_T | |
145 typedef unsigned long long uint64_t; | |
146 /* else we may not have a 64-bit type */ | |
147 #endif | |
148 | |
149 #endif | |
150 | |
151 /*===========================================================================*/ | |
152 /* Compiler and environment features */ | |
153 /*===========================================================================*/ | |
154 | |
155 /* Define whether namespace is supported */ | |
156 #ifndef U_HAVE_NAMESPACE | |
157 #define U_HAVE_NAMESPACE 1 | |
158 #endif | |
159 | |
160 /* Determines the endianness of the platform | |
161 It's done this way in case multiple architectures are being built at once. | |
162 For example, Darwin supports fat binaries, which can be both PPC and x86 base
d. */ | |
163 #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) | |
164 #define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN) | |
165 #else | |
166 #define U_IS_BIG_ENDIAN 0 | |
167 #endif | |
168 | |
169 /* 1 or 0 to enable or disable threads. If undefined, default is: enable thread
s. */ | |
170 #define ICU_USE_THREADS 1 | |
171 | |
172 /* On strong memory model CPUs (e.g. x86 CPUs), we use a safe & quick double che
ck lock. */ | |
173 #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) | |
174 #define UMTX_STRONG_MEMORY_MODEL 1 | |
175 #endif | |
176 | |
177 #ifndef U_DEBUG | |
178 #define U_DEBUG 0 | |
179 #endif | |
180 | |
181 #ifndef U_RELEASE | |
182 #define U_RELEASE 1 | |
183 #endif | |
184 | |
185 /* Determine whether to disable renaming or not. This overrides the | |
186 setting in umachine.h which is for all platforms. */ | |
187 #ifndef U_DISABLE_RENAMING | |
188 #define U_DISABLE_RENAMING 0 | |
189 #endif | |
190 | |
191 /* Determine whether to override new and delete. */ | |
192 #ifndef U_OVERRIDE_CXX_ALLOCATION | |
193 #define U_OVERRIDE_CXX_ALLOCATION 1 | |
194 #endif | |
195 /* Determine whether to override placement new and delete for STL. */ | |
196 #ifndef U_HAVE_PLACEMENT_NEW | |
197 #define U_HAVE_PLACEMENT_NEW 1 | |
198 #endif | |
199 | |
200 /* Determine whether to enable tracing. */ | |
201 #ifndef U_ENABLE_TRACING | |
202 #define U_ENABLE_TRACING 0 | |
203 #endif | |
204 | |
205 /* Do we allow ICU users to use the draft APIs by default? */ | |
206 #ifndef U_DEFAULT_SHOW_DRAFT | |
207 #define U_DEFAULT_SHOW_DRAFT 1 | |
208 #endif | |
209 | |
210 /* Define the library suffix in a C syntax. */ | |
211 #define U_HAVE_LIB_SUFFIX 0 | |
212 #define U_LIB_SUFFIX_C_NAME | |
213 #define U_LIB_SUFFIX_C_NAME_STRING "" | |
214 | |
215 /*===========================================================================*/ | |
216 /* Character data types */ | |
217 /*===========================================================================*/ | |
218 | |
219 #if ((defined(OS390) && (!defined(__CHARSET_LIB) || !__CHARSET_LIB))) || defined
(OS400) | |
220 # define U_CHARSET_FAMILY 1 | |
221 #endif | |
222 | |
223 /*===========================================================================*/ | |
224 /* Information about wchar support */ | |
225 /*===========================================================================*/ | |
226 | |
227 #define U_HAVE_WCHAR_H 1 | |
228 #define U_SIZEOF_WCHAR_T 4 | |
229 | |
230 #define U_HAVE_WCSCPY 1 | |
231 | |
232 /** | |
233 * \def U_DECLARE_UTF16 | |
234 * Do not use this macro. Use the UNICODE_STRING or U_STRING_DECL macros | |
235 * instead. | |
236 * @internal | |
237 */ | |
238 #if 1 || defined(U_CHECK_UTF16_STRING) | |
239 #if (defined(__xlC__) && defined(__IBM_UTF_LITERAL) && U_SIZEOF_WCHAR_T != 2) \ | |
240 || (defined(__HP_aCC) && __HP_aCC >= 035000) \ | |
241 || (defined(__HP_cc) && __HP_cc >= 111106) | |
242 #define U_DECLARE_UTF16(string) u ## string | |
243 #elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) | |
244 /* || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x580) */ | |
245 /* Sun's C compiler has issues with this notation, and it's unreliable. */ | |
246 #define U_DECLARE_UTF16(string) U ## string | |
247 #elif U_SIZEOF_WCHAR_T == 2 \ | |
248 && (U_CHARSET_FAMILY == 0 || ((defined(OS390) || defined(OS400)) && defined(
__UCS2__))) | |
249 #define U_DECLARE_UTF16(string) L ## string | |
250 #endif | |
251 #endif | |
252 | |
253 /*===========================================================================*/ | |
254 /* Information about POSIX support */ | |
255 /*===========================================================================*/ | |
256 | |
257 #define U_HAVE_NL_LANGINFO_CODESET 1 | |
258 #define U_NL_LANGINFO_CODESET CODESET | |
259 | |
260 #if 1 | |
261 #define U_TZSET tzset | |
262 #endif | |
263 #if 0 | |
264 #define U_TIMEZONE | |
265 #endif | |
266 #if 1 | |
267 #define U_TZNAME tzname | |
268 #endif | |
269 | |
270 #define U_HAVE_MMAP 1 | |
271 #define U_HAVE_POPEN 1 | |
272 | |
273 /*===========================================================================*/ | |
274 /* Symbol import-export control */ | |
275 /*===========================================================================*/ | |
276 | |
277 #if 1 | |
278 #define U_EXPORT __attribute__((visibility("default"))) | |
279 /*#elif defined(__HP_aCC) || defined(__HP_cc) | |
280 #define U_EXPORT __declspec(dllexport)*/ | |
281 #else | |
282 #define U_EXPORT | |
283 #endif | |
284 | |
285 /* U_CALLCONV is releated to U_EXPORT2 */ | |
286 #define U_EXPORT2 | |
287 | |
288 /* cygwin needs to export/import data */ | |
289 #ifdef U_CYGWIN | |
290 #define U_IMPORT __declspec(dllimport) | |
291 #else | |
292 #define U_IMPORT | |
293 #endif | |
294 | |
295 /*===========================================================================*/ | |
296 /* Code alignment and C function inlining */ | |
297 /*===========================================================================*/ | |
298 | |
299 #ifndef U_INLINE | |
300 # ifdef __cplusplus | |
301 # define U_INLINE inline | |
302 # else | |
303 # define U_INLINE inline | |
304 # endif | |
305 #endif | |
306 | |
307 #define U_ALIGN_CODE(n) | |
308 | |
309 /*===========================================================================*/ | |
310 /* Programs used by ICU code */ | |
311 /*===========================================================================*/ | |
312 | |
313 #define U_MAKE "/usr/local/bin/gmake" | |
OLD | NEW |