|
1 /* |
|
2 ********************************************************************** |
|
3 * Copyright (C) 2002-2013, International Business Machines |
|
4 * Corporation and others. All Rights Reserved. |
|
5 ********************************************************************** |
|
6 * file name: uconfig.h |
|
7 * encoding: US-ASCII |
|
8 * tab size: 8 (not used) |
|
9 * indentation:4 |
|
10 * |
|
11 * created on: 2002sep19 |
|
12 * created by: Markus W. Scherer |
|
13 */ |
|
14 |
|
15 #ifndef __UCONFIG_H__ |
|
16 #define __UCONFIG_H__ |
|
17 |
|
18 |
|
19 /*! |
|
20 * \file |
|
21 * \brief User-configurable settings |
|
22 * |
|
23 * Miscellaneous switches: |
|
24 * |
|
25 * A number of macros affect a variety of minor aspects of ICU. |
|
26 * Most of them used to be defined elsewhere (e.g., in utypes.h or platform.h) |
|
27 * and moved here to make them easier to find. |
|
28 * |
|
29 * Switches for excluding parts of ICU library code modules: |
|
30 * |
|
31 * Changing these macros allows building partial, smaller libraries for special purposes. |
|
32 * By default, all modules are built. |
|
33 * The switches are fairly coarse, controlling large modules. |
|
34 * Basic services cannot be turned off. |
|
35 * |
|
36 * Building with any of these options does not guarantee that the |
|
37 * ICU build process will completely work. It is recommended that |
|
38 * the ICU libraries and data be built using the normal build. |
|
39 * At that time you should remove the data used by those services. |
|
40 * After building the ICU data library, you should rebuild the ICU |
|
41 * libraries with these switches customized to your needs. |
|
42 * |
|
43 * @stable ICU 2.4 |
|
44 */ |
|
45 |
|
46 /** |
|
47 * If this switch is defined, ICU will attempt to load a header file named "uconfig_local.h" |
|
48 * prior to determining default settings for uconfig variables. |
|
49 * |
|
50 * @internal ICU 4.0 |
|
51 */ |
|
52 #if defined(UCONFIG_USE_LOCAL) |
|
53 #include "uconfig_local.h" |
|
54 #endif |
|
55 |
|
56 /** |
|
57 * \def U_DEBUG |
|
58 * Determines whether to include debugging code. |
|
59 * Automatically set on Windows, but most compilers do not have |
|
60 * related predefined macros. |
|
61 * @internal |
|
62 */ |
|
63 #ifdef U_DEBUG |
|
64 /* Use the predefined value. */ |
|
65 #elif defined(_DEBUG) |
|
66 /* |
|
67 * _DEBUG is defined by Visual Studio debug compilation. |
|
68 * Do *not* test for its NDEBUG macro: It is an orthogonal macro |
|
69 * which disables assert(). |
|
70 */ |
|
71 # define U_DEBUG 1 |
|
72 # else |
|
73 # define U_DEBUG 0 |
|
74 #endif |
|
75 |
|
76 /** |
|
77 * Determines wheter to enable auto cleanup of libraries. |
|
78 * @internal |
|
79 */ |
|
80 #ifndef UCLN_NO_AUTO_CLEANUP |
|
81 #define UCLN_NO_AUTO_CLEANUP 1 |
|
82 #endif |
|
83 |
|
84 /** |
|
85 * \def U_DISABLE_RENAMING |
|
86 * Determines whether to disable renaming or not. |
|
87 * @internal |
|
88 */ |
|
89 #ifndef U_DISABLE_RENAMING |
|
90 #define U_DISABLE_RENAMING 0 |
|
91 #endif |
|
92 |
|
93 /** |
|
94 * \def U_NO_DEFAULT_INCLUDE_UTF_HEADERS |
|
95 * Determines whether utypes.h includes utf.h, utf8.h, utf16.h and utf_old.h. |
|
96 * utypes.h includes those headers if this macro is defined to 0. |
|
97 * Otherwise, each those headers must be included explicitly when using one of their macros. |
|
98 * Defaults to 0 for backward compatibility, except inside ICU. |
|
99 * @stable ICU 49 |
|
100 */ |
|
101 #ifdef U_NO_DEFAULT_INCLUDE_UTF_HEADERS |
|
102 /* Use the predefined value. */ |
|
103 #elif defined(U_COMBINED_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || \ |
|
104 defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION) || \ |
|
105 defined(U_TOOLUTIL_IMPLEMENTATION) |
|
106 # define U_NO_DEFAULT_INCLUDE_UTF_HEADERS 1 |
|
107 #else |
|
108 # define U_NO_DEFAULT_INCLUDE_UTF_HEADERS 0 |
|
109 #endif |
|
110 |
|
111 /** |
|
112 * \def U_OVERRIDE_CXX_ALLOCATION |
|
113 * Determines whether to override new and delete. |
|
114 * ICU is normally built such that all of its C++ classes, via their UMemory base, |
|
115 * override operators new and delete to use its internal, customizable, |
|
116 * non-exception-throwing memory allocation functions. (Default value 1 for this macro.) |
|
117 * |
|
118 * This is especially important when the application and its libraries use multiple heaps. |
|
119 * For example, on Windows, this allows the ICU DLL to be used by |
|
120 * applications that statically link the C Runtime library. |
|
121 * |
|
122 * @stable ICU 2.2 |
|
123 */ |
|
124 #ifndef U_OVERRIDE_CXX_ALLOCATION |
|
125 #define U_OVERRIDE_CXX_ALLOCATION 1 |
|
126 #endif |
|
127 |
|
128 /** |
|
129 * \def U_ENABLE_TRACING |
|
130 * Determines whether to enable tracing. |
|
131 * @internal |
|
132 */ |
|
133 #ifndef U_ENABLE_TRACING |
|
134 #define U_ENABLE_TRACING 0 |
|
135 #endif |
|
136 |
|
137 /** |
|
138 * \def U_ENABLE_DYLOAD |
|
139 * Whether to enable Dynamic loading in ICU. |
|
140 * @internal |
|
141 */ |
|
142 #ifndef U_ENABLE_DYLOAD |
|
143 #define U_ENABLE_DYLOAD 1 |
|
144 #endif |
|
145 |
|
146 /** |
|
147 * \def U_CHECK_DYLOAD |
|
148 * Whether to test Dynamic loading as an OS capability. |
|
149 * @internal |
|
150 */ |
|
151 #ifndef U_CHECK_DYLOAD |
|
152 #define U_CHECK_DYLOAD 1 |
|
153 #endif |
|
154 |
|
155 |
|
156 /** |
|
157 * \def U_DEFAULT_SHOW_DRAFT |
|
158 * Do we allow ICU users to use the draft APIs by default? |
|
159 * @internal |
|
160 */ |
|
161 #ifndef U_DEFAULT_SHOW_DRAFT |
|
162 #define U_DEFAULT_SHOW_DRAFT 1 |
|
163 #endif |
|
164 |
|
165 /*===========================================================================*/ |
|
166 /* Custom icu entry point renaming */ |
|
167 /*===========================================================================*/ |
|
168 |
|
169 /** |
|
170 * \def U_HAVE_LIB_SUFFIX |
|
171 * 1 if a custom library suffix is set. |
|
172 * @internal |
|
173 */ |
|
174 #ifdef U_HAVE_LIB_SUFFIX |
|
175 /* Use the predefined value. */ |
|
176 #elif defined(U_LIB_SUFFIX_C_NAME) |
|
177 # define U_HAVE_LIB_SUFFIX 1 |
|
178 #endif |
|
179 |
|
180 /** |
|
181 * \def U_LIB_SUFFIX_C_NAME_STRING |
|
182 * Defines the library suffix as a string with C syntax. |
|
183 * @internal |
|
184 */ |
|
185 #ifdef U_LIB_SUFFIX_C_NAME_STRING |
|
186 /* Use the predefined value. */ |
|
187 #elif defined(U_LIB_SUFFIX_C_NAME) |
|
188 # define U_LIB_SUFFIX_C_NAME_STRING #U_LIB_SUFFIX_C_NAME |
|
189 #else |
|
190 # define U_LIB_SUFFIX_C_NAME_STRING "" |
|
191 #endif |
|
192 |
|
193 /* common/i18n library switches --------------------------------------------- */ |
|
194 |
|
195 /** |
|
196 * \def UCONFIG_ONLY_COLLATION |
|
197 * This switch turns off modules that are not needed for collation. |
|
198 * |
|
199 * It does not turn off legacy conversion because that is necessary |
|
200 * for ICU to work on EBCDIC platforms (for the default converter). |
|
201 * If you want "only collation" and do not build for EBCDIC, |
|
202 * then you can define UCONFIG_NO_LEGACY_CONVERSION 1 as well. |
|
203 * |
|
204 * @stable ICU 2.4 |
|
205 */ |
|
206 #ifndef UCONFIG_ONLY_COLLATION |
|
207 # define UCONFIG_ONLY_COLLATION 0 |
|
208 #endif |
|
209 |
|
210 #if UCONFIG_ONLY_COLLATION |
|
211 /* common library */ |
|
212 # define UCONFIG_NO_BREAK_ITERATION 1 |
|
213 # define UCONFIG_NO_IDNA 1 |
|
214 |
|
215 /* i18n library */ |
|
216 # if UCONFIG_NO_COLLATION |
|
217 # error Contradictory collation switches in uconfig.h. |
|
218 # endif |
|
219 # define UCONFIG_NO_FORMATTING 1 |
|
220 # define UCONFIG_NO_TRANSLITERATION 1 |
|
221 # define UCONFIG_NO_REGULAR_EXPRESSIONS 1 |
|
222 #endif |
|
223 |
|
224 /* common library switches -------------------------------------------------- */ |
|
225 |
|
226 /** |
|
227 * \def UCONFIG_NO_FILE_IO |
|
228 * This switch turns off all file access in the common library |
|
229 * where file access is only used for data loading. |
|
230 * ICU data must then be provided in the form of a data DLL (or with an |
|
231 * equivalent way to link to the data residing in an executable, |
|
232 * as in building a combined library with both the common library's code and |
|
233 * the data), or via udata_setCommonData(). |
|
234 * Application data must be provided via udata_setAppData() or by using |
|
235 * "open" functions that take pointers to data, for example ucol_openBinary(). |
|
236 * |
|
237 * File access is not used at all in the i18n library. |
|
238 * |
|
239 * File access cannot be turned off for the icuio library or for the ICU |
|
240 * test suites and ICU tools. |
|
241 * |
|
242 * @stable ICU 3.6 |
|
243 */ |
|
244 #ifndef UCONFIG_NO_FILE_IO |
|
245 # define UCONFIG_NO_FILE_IO 0 |
|
246 #endif |
|
247 |
|
248 /** |
|
249 * \def UCONFIG_NO_CONVERSION |
|
250 * ICU will not completely build with this switch turned on. |
|
251 * This switch turns off all converters. |
|
252 * |
|
253 * You may want to use this together with U_CHARSET_IS_UTF8 defined to 1 |
|
254 * in utypes.h if char* strings in your environment are always in UTF-8. |
|
255 * |
|
256 * @stable ICU 3.2 |
|
257 * @see U_CHARSET_IS_UTF8 |
|
258 */ |
|
259 #ifndef UCONFIG_NO_CONVERSION |
|
260 # define UCONFIG_NO_CONVERSION 0 |
|
261 #endif |
|
262 |
|
263 #if UCONFIG_NO_CONVERSION |
|
264 # define UCONFIG_NO_LEGACY_CONVERSION 1 |
|
265 #endif |
|
266 |
|
267 /** |
|
268 * \def UCONFIG_NO_LEGACY_CONVERSION |
|
269 * This switch turns off all converters except for |
|
270 * - Unicode charsets (UTF-7/8/16/32, CESU-8, SCSU, BOCU-1) |
|
271 * - US-ASCII |
|
272 * - ISO-8859-1 |
|
273 * |
|
274 * Turning off legacy conversion is not possible on EBCDIC platforms |
|
275 * because they need ibm-37 or ibm-1047 default converters. |
|
276 * |
|
277 * @stable ICU 2.4 |
|
278 */ |
|
279 #ifndef UCONFIG_NO_LEGACY_CONVERSION |
|
280 # define UCONFIG_NO_LEGACY_CONVERSION 0 |
|
281 #endif |
|
282 |
|
283 /** |
|
284 * \def UCONFIG_NO_NORMALIZATION |
|
285 * This switch turns off normalization. |
|
286 * It implies turning off several other services as well, for example |
|
287 * collation and IDNA. |
|
288 * |
|
289 * @stable ICU 2.6 |
|
290 */ |
|
291 #ifndef UCONFIG_NO_NORMALIZATION |
|
292 # define UCONFIG_NO_NORMALIZATION 0 |
|
293 #elif UCONFIG_NO_NORMALIZATION |
|
294 /* common library */ |
|
295 /* ICU 50 CJK dictionary BreakIterator uses normalization */ |
|
296 # define UCONFIG_NO_BREAK_ITERATION 1 |
|
297 /* IDNA (UTS #46) is implemented via normalization */ |
|
298 # define UCONFIG_NO_IDNA 1 |
|
299 |
|
300 /* i18n library */ |
|
301 # if UCONFIG_ONLY_COLLATION |
|
302 # error Contradictory collation switches in uconfig.h. |
|
303 # endif |
|
304 # define UCONFIG_NO_COLLATION 1 |
|
305 # define UCONFIG_NO_TRANSLITERATION 1 |
|
306 #endif |
|
307 |
|
308 /** |
|
309 * \def UCONFIG_NO_BREAK_ITERATION |
|
310 * This switch turns off break iteration. |
|
311 * |
|
312 * @stable ICU 2.4 |
|
313 */ |
|
314 #ifndef UCONFIG_NO_BREAK_ITERATION |
|
315 # define UCONFIG_NO_BREAK_ITERATION 0 |
|
316 #endif |
|
317 |
|
318 /** |
|
319 * \def UCONFIG_NO_IDNA |
|
320 * This switch turns off IDNA. |
|
321 * |
|
322 * @stable ICU 2.6 |
|
323 */ |
|
324 #ifndef UCONFIG_NO_IDNA |
|
325 # define UCONFIG_NO_IDNA 0 |
|
326 #endif |
|
327 |
|
328 /** |
|
329 * \def UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE |
|
330 * Determines the default UMessagePatternApostropheMode. |
|
331 * See the documentation for that enum. |
|
332 * |
|
333 * @stable ICU 4.8 |
|
334 */ |
|
335 #ifndef UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE |
|
336 # define UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE UMSGPAT_APOS_DOUBLE_OPTIONAL |
|
337 #endif |
|
338 |
|
339 /* i18n library switches ---------------------------------------------------- */ |
|
340 |
|
341 /** |
|
342 * \def UCONFIG_NO_COLLATION |
|
343 * This switch turns off collation and collation-based string search. |
|
344 * |
|
345 * @stable ICU 2.4 |
|
346 */ |
|
347 #ifndef UCONFIG_NO_COLLATION |
|
348 # define UCONFIG_NO_COLLATION 0 |
|
349 #endif |
|
350 |
|
351 /** |
|
352 * \def UCONFIG_NO_FORMATTING |
|
353 * This switch turns off formatting and calendar/timezone services. |
|
354 * |
|
355 * @stable ICU 2.4 |
|
356 */ |
|
357 #ifndef UCONFIG_NO_FORMATTING |
|
358 # define UCONFIG_NO_FORMATTING 0 |
|
359 #endif |
|
360 |
|
361 /** |
|
362 * \def UCONFIG_NO_TRANSLITERATION |
|
363 * This switch turns off transliteration. |
|
364 * |
|
365 * @stable ICU 2.4 |
|
366 */ |
|
367 #ifndef UCONFIG_NO_TRANSLITERATION |
|
368 # define UCONFIG_NO_TRANSLITERATION 0 |
|
369 #endif |
|
370 |
|
371 /** |
|
372 * \def UCONFIG_NO_REGULAR_EXPRESSIONS |
|
373 * This switch turns off regular expressions. |
|
374 * |
|
375 * @stable ICU 2.4 |
|
376 */ |
|
377 #ifndef UCONFIG_NO_REGULAR_EXPRESSIONS |
|
378 # define UCONFIG_NO_REGULAR_EXPRESSIONS 0 |
|
379 #endif |
|
380 |
|
381 /** |
|
382 * \def UCONFIG_NO_SERVICE |
|
383 * This switch turns off service registration. |
|
384 * |
|
385 * @stable ICU 3.2 |
|
386 */ |
|
387 #ifndef UCONFIG_NO_SERVICE |
|
388 # define UCONFIG_NO_SERVICE 0 |
|
389 #endif |
|
390 |
|
391 /** |
|
392 * \def UCONFIG_HAVE_PARSEALLINPUT |
|
393 * This switch turns on the "parse all input" attribute. Binary incompatible. |
|
394 * |
|
395 * @internal |
|
396 */ |
|
397 #ifndef UCONFIG_HAVE_PARSEALLINPUT |
|
398 # define UCONFIG_HAVE_PARSEALLINPUT 1 |
|
399 #endif |
|
400 |
|
401 |
|
402 /** |
|
403 * \def UCONFIG_FORMAT_FASTPATHS_49 |
|
404 * This switch turns on other formatting fastpaths. Binary incompatible in object DecimalFormat and DecimalFormatSymbols |
|
405 * |
|
406 * @internal |
|
407 */ |
|
408 #ifndef UCONFIG_FORMAT_FASTPATHS_49 |
|
409 # define UCONFIG_FORMAT_FASTPATHS_49 1 |
|
410 #endif |
|
411 |
|
412 #endif |