1 /* 2 ********************************************************************** 3 * Copyright (C) 2002-2011, 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 /** 180 * \def UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE 181 * Determines the default UMessagePatternApostropheMode. 182 * See the documentation for that enum. 183 * 184 * @draft ICU 4.8 185 */ 186 #ifndef UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE 187 # define UCONFIG_MSGPAT_DEFAULT_APOSTROPHE_MODE UMSGPAT_APOS_DOUBLE_OPTIONAL 188 #endif 189 190 /* i18n library switches ---------------------------------------------------- */ 191 192 /** 193 * \def UCONFIG_NO_COLLATION 194 * This switch turns off collation and collation-based string search. 195 * 196 * @stable ICU 2.4 197 */ 198 #ifndef UCONFIG_NO_COLLATION 199 # define UCONFIG_NO_COLLATION 0 200 #endif 201 202 /** 203 * \def UCONFIG_NO_FORMATTING 204 * This switch turns off formatting and calendar/timezone services. 205 * 206 * @stable ICU 2.4 207 */ 208 #ifndef UCONFIG_NO_FORMATTING 209 # define UCONFIG_NO_FORMATTING 0 210 #endif 211 212 /** 213 * \def UCONFIG_NO_TRANSLITERATION 214 * This switch turns off transliteration. 215 * 216 * @stable ICU 2.4 217 */ 218 #ifndef UCONFIG_NO_TRANSLITERATION 219 # define UCONFIG_NO_TRANSLITERATION 0 220 #endif 221 222 /** 223 * \def UCONFIG_NO_REGULAR_EXPRESSIONS 224 * This switch turns off regular expressions. 225 * 226 * @stable ICU 2.4 227 */ 228 #ifndef UCONFIG_NO_REGULAR_EXPRESSIONS 229 # define UCONFIG_NO_REGULAR_EXPRESSIONS 0 230 #endif 231 232 /** 233 * \def UCONFIG_NO_SERVICE 234 * This switch turns off service registration. 235 * 236 * @stable ICU 3.2 237 */ 238 #ifndef UCONFIG_NO_SERVICE 239 # define UCONFIG_NO_SERVICE 0 240 #endif 241 242 #endif 243