• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **********************************************************************
3 *   Copyright (C) 2002-2009, 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 Switches for excluding parts of ICU library code modules.
22  *
23  * Allows to build partial, smaller libraries for special purposes.
24  * By default, all modules are built.
25  * The switches are fairly coarse, controlling large modules.
26  * Basic services cannot be turned off.
27  *
28  * Building with any of these options does not guarantee that the
29  * ICU build process will completely work. It is recommended that
30  * the ICU libraries and data be built using the normal build.
31  * At that time you should remove the data used by those services.
32  * After building the ICU data library, you should rebuild the ICU
33  * libraries with these switches customized to your needs.
34  *
35  * @stable ICU 2.4
36  */
37 
38 /**
39  * If this switch is defined, ICU will attempt to load a header file named "uconfig_local.h"
40  * prior to determining default settings for uconfig variables.
41  *
42  * @internal ICU 4.0
43  *
44  */
45 #if defined(UCONFIG_USE_LOCAL)
46 #include "uconfig_local.h"
47 #endif
48 
49 /**
50  * \def UCONFIG_ONLY_COLLATION
51  * This switch turns off modules that are not needed for collation.
52  *
53  * It does not turn off legacy conversion because that is necessary
54  * for ICU to work on EBCDIC platforms (for the default converter).
55  * If you want "only collation" and do not build for EBCDIC,
56  * then you can define UCONFIG_NO_LEGACY_CONVERSION 1 as well.
57  *
58  * @stable ICU 2.4
59  */
60 #ifndef UCONFIG_ONLY_COLLATION
61 #   define UCONFIG_ONLY_COLLATION 0
62 #endif
63 
64 #if UCONFIG_ONLY_COLLATION
65     /* common library */
66 #   define UCONFIG_NO_BREAK_ITERATION 1
67 #   define UCONFIG_NO_IDNA 1
68 
69     /* i18n library */
70 #   if UCONFIG_NO_COLLATION
71 #       error Contradictory collation switches in uconfig.h.
72 #   endif
73 #   define UCONFIG_NO_FORMATTING 1
74 #   define UCONFIG_NO_TRANSLITERATION 1
75 #   define UCONFIG_NO_REGULAR_EXPRESSIONS 1
76 #endif
77 
78 /* common library switches -------------------------------------------------- */
79 
80 /**
81  * \def UCONFIG_NO_FILE_IO
82  * This switch turns off all file access in the common library
83  * where file access is only used for data loading.
84  * ICU data must then be provided in the form of a data DLL (or with an
85  * equivalent way to link to the data residing in an executable,
86  * as in building a combined library with both the common library's code and
87  * the data), or via udata_setCommonData().
88  * Application data must be provided via udata_setAppData() or by using
89  * "open" functions that take pointers to data, for example ucol_openBinary().
90  *
91  * File access is not used at all in the i18n library.
92  *
93  * File access cannot be turned off for the icuio library or for the ICU
94  * test suites and ICU tools.
95  *
96  * @stable ICU 3.6
97  */
98 #ifndef UCONFIG_NO_FILE_IO
99 #   define UCONFIG_NO_FILE_IO 0
100 #endif
101 
102 /**
103  * \def UCONFIG_NO_CONVERSION
104  * ICU will not completely build with this switch turned on.
105  * This switch turns off all converters.
106  *
107  * You may want to use this together with U_CHARSET_IS_UTF8 defined to 1
108  * in utypes.h if char* strings in your environment are always in UTF-8.
109  *
110  * @stable ICU 3.2
111  * @see U_CHARSET_IS_UTF8
112  */
113 #ifndef UCONFIG_NO_CONVERSION
114 #   define UCONFIG_NO_CONVERSION 0
115 #endif
116 
117 #if UCONFIG_NO_CONVERSION
118 #   define UCONFIG_NO_LEGACY_CONVERSION 1
119 #endif
120 
121 /**
122  * \def UCONFIG_NO_LEGACY_CONVERSION
123  * This switch turns off all converters except for
124  * - Unicode charsets (UTF-7/8/16/32, CESU-8, SCSU, BOCU-1)
125  * - US-ASCII
126  * - ISO-8859-1
127  *
128  * Turning off legacy conversion is not possible on EBCDIC platforms
129  * because they need ibm-37 or ibm-1047 default converters.
130  *
131  * @stable ICU 2.4
132  */
133 #ifndef UCONFIG_NO_LEGACY_CONVERSION
134 #   define UCONFIG_NO_LEGACY_CONVERSION 0
135 #endif
136 
137 /**
138  * \def UCONFIG_NO_NORMALIZATION
139  * This switch turns off normalization.
140  * It implies turning off several other services as well, for example
141  * collation and IDNA.
142  *
143  * @stable ICU 2.6
144  */
145 #ifndef UCONFIG_NO_NORMALIZATION
146 #   define UCONFIG_NO_NORMALIZATION 0
147 #elif UCONFIG_NO_NORMALIZATION
148     /* common library */
149 #   define UCONFIG_NO_IDNA 1
150 
151     /* i18n library */
152 #   if UCONFIG_ONLY_COLLATION
153 #       error Contradictory collation switches in uconfig.h.
154 #   endif
155 #   define UCONFIG_NO_COLLATION 1
156 #   define UCONFIG_NO_TRANSLITERATION 1
157 #endif
158 
159 /**
160  * \def UCONFIG_NO_BREAK_ITERATION
161  * This switch turns off break iteration.
162  *
163  * @stable ICU 2.4
164  */
165 #ifndef UCONFIG_NO_BREAK_ITERATION
166 #   define UCONFIG_NO_BREAK_ITERATION 0
167 #endif
168 
169 /**
170  * \def UCONFIG_NO_IDNA
171  * This switch turns off IDNA.
172  *
173  * @stable ICU 2.6
174  */
175 #ifndef UCONFIG_NO_IDNA
176 #   define UCONFIG_NO_IDNA 0
177 #endif
178 
179 /* i18n library switches ---------------------------------------------------- */
180 
181 /**
182  * \def UCONFIG_NO_COLLATION
183  * This switch turns off collation and collation-based string search.
184  *
185  * @stable ICU 2.4
186  */
187 #ifndef UCONFIG_NO_COLLATION
188 #   define UCONFIG_NO_COLLATION 0
189 #endif
190 
191 /**
192  * \def UCONFIG_NO_FORMATTING
193  * This switch turns off formatting and calendar/timezone services.
194  *
195  * @stable ICU 2.4
196  */
197 #ifndef UCONFIG_NO_FORMATTING
198 #   define UCONFIG_NO_FORMATTING 0
199 #endif
200 
201 /**
202  * \def UCONFIG_NO_TRANSLITERATION
203  * This switch turns off transliteration.
204  *
205  * @stable ICU 2.4
206  */
207 #ifndef UCONFIG_NO_TRANSLITERATION
208 #   define UCONFIG_NO_TRANSLITERATION 0
209 #endif
210 
211 /**
212  * \def UCONFIG_NO_REGULAR_EXPRESSIONS
213  * This switch turns off regular expressions.
214  *
215  * @stable ICU 2.4
216  */
217 #ifndef UCONFIG_NO_REGULAR_EXPRESSIONS
218 #   define UCONFIG_NO_REGULAR_EXPRESSIONS 0
219 #endif
220 
221 /**
222  * \def UCONFIG_NO_SERVICE
223  * This switch turns off service registration.
224  *
225  * @stable ICU 3.2
226  */
227 #ifndef UCONFIG_NO_SERVICE
228 #   define UCONFIG_NO_SERVICE 0
229 #endif
230 
231 #endif
232