Home | History | Annotate | Download | only in unicode
      1 /*
      2 **********************************************************************
      3 *   Copyright (C) 2002-2004, 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  * \file
     20  * \brief Switches for excluding parts of ICU library code modules.
     21  *
     22  * Allows to build partial, smaller libraries for special purposes.
     23  * By default, all modules are built.
     24  * The switches are fairly coarse, controlling large modules.
     25  * Basic services cannot be turned off.
     26  *
     27  * @stable ICU 2.4
     28  */
     29 
     30 /**
     31  * \def UCONFIG_ONLY_COLLATION
     32  * This switch turns off modules that are not needed for collation.
     33  *
     34  * It does not turn off legacy conversion because that is necessary
     35  * for ICU to work on EBCDIC platforms (for the default converter).
     36  * If you want "only collation" and do not build for EBCDIC,
     37  * then you can #define UCONFIG_NO_LEGACY_CONVERSION 1 as well.
     38  *
     39  * @stable ICU 2.4
     40  */
     41 #ifndef UCONFIG_ONLY_COLLATION
     42 #   define UCONFIG_ONLY_COLLATION 0
     43 #endif
     44 
     45 #if UCONFIG_ONLY_COLLATION
     46     /* common library */
     47 #   define UCONFIG_NO_BREAK_ITERATION 1
     48 #   define UCONFIG_NO_IDNA 1
     49 
     50     /* i18n library */
     51 #   if UCONFIG_NO_COLLATION
     52 #       error Contradictory collation switches in uconfig.h.
     53 #   endif
     54 #   define UCONFIG_NO_FORMATTING 1
     55 #   define UCONFIG_NO_TRANSLITERATION 1
     56 #   define UCONFIG_NO_REGULAR_EXPRESSIONS 1
     57 #endif
     58 
     59 /* common library switches -------------------------------------------------- */
     60 
     61 /**
     62  * \def UCONFIG_NO_CONVERSION
     63  * ICU will not completely build with this switch turned on.
     64  * This switch turns off all converters.
     65  *
     66  * @draft ICU 3.2
     67  */
     68 #ifndef UCONFIG_NO_CONVERSION
     69 #   define UCONFIG_NO_CONVERSION 0
     70 #endif
     71 
     72 #if UCONFIG_NO_CONVERSION
     73 #   define UCONFIG_NO_LEGACY_CONVERSION 1
     74 #endif
     75 
     76 /**
     77  * \def UCONFIG_NO_LEGACY_CONVERSION
     78  * This switch turns off all converters except for
     79  * - Unicode charsets (UTF-7/8/16/32, CESU-8, SCSU, BOCU-1)
     80  * - US-ASCII
     81  * - ISO-8859-1
     82  *
     83  * Turning off legacy conversion is not possible on EBCDIC platforms
     84  * because they need ibm-37 or ibm-1047 default converters.
     85  *
     86  * @stable ICU 2.4
     87  */
     88 #ifndef UCONFIG_NO_LEGACY_CONVERSION
     89 #   define UCONFIG_NO_LEGACY_CONVERSION 0
     90 #endif
     91 
     92 /**
     93  * \def UCONFIG_NO_NORMALIZATION
     94  * This switch turns off normalization.
     95  * It implies turning off several other services as well, for example
     96  * collation and IDNA.
     97  *
     98  * @stable ICU 2.6
     99  */
    100 #ifndef UCONFIG_NO_NORMALIZATION
    101 #   define UCONFIG_NO_NORMALIZATION 0
    102 #elif UCONFIG_NO_NORMALIZATION
    103     /* common library */
    104 #   define UCONFIG_NO_IDNA 1
    105 
    106     /* i18n library */
    107 #   if UCONFIG_ONLY_COLLATION
    108 #       error Contradictory collation switches in uconfig.h.
    109 #   endif
    110 #   define UCONFIG_NO_COLLATION 1
    111 #   define UCONFIG_NO_TRANSLITERATION 1
    112 #endif
    113 
    114 /**
    115  * \def UCONFIG_NO_BREAK_ITERATION
    116  * This switch turns off break iteration.
    117  *
    118  * @stable ICU 2.4
    119  */
    120 #ifndef UCONFIG_NO_BREAK_ITERATION
    121 #   define UCONFIG_NO_BREAK_ITERATION 0
    122 #endif
    123 
    124 /**
    125  * \def UCONFIG_NO_IDNA
    126  * This switch turns off IDNA.
    127  *
    128  * @stable ICU 2.6
    129  */
    130 #ifndef UCONFIG_NO_IDNA
    131 #   define UCONFIG_NO_IDNA 0
    132 #endif
    133 
    134 /* i18n library switches ---------------------------------------------------- */
    135 
    136 /**
    137  * \def UCONFIG_NO_COLLATION
    138  * This switch turns off collation and collation-based string search.
    139  *
    140  * @stable ICU 2.4
    141  */
    142 #ifndef UCONFIG_NO_COLLATION
    143 #   define UCONFIG_NO_COLLATION 0
    144 #endif
    145 
    146 /**
    147  * \def UCONFIG_NO_FORMATTING
    148  * This switch turns off formatting and calendar/timezone services.
    149  *
    150  * @stable ICU 2.4
    151  */
    152 #ifndef UCONFIG_NO_FORMATTING
    153 #   define UCONFIG_NO_FORMATTING 0
    154 #endif
    155 
    156 /**
    157  * \def UCONFIG_NO_TRANSLITERATION
    158  * This switch turns off transliteration.
    159  *
    160  * @stable ICU 2.4
    161  */
    162 #ifndef UCONFIG_NO_TRANSLITERATION
    163 #   define UCONFIG_NO_TRANSLITERATION 0
    164 #endif
    165 
    166 /**
    167  * \def UCONFIG_NO_REGULAR_EXPRESSIONS
    168  * This switch turns off regular expressions.
    169  *
    170  * @stable ICU 2.4
    171  */
    172 #ifndef UCONFIG_NO_REGULAR_EXPRESSIONS
    173 #   define UCONFIG_NO_REGULAR_EXPRESSIONS 0
    174 #endif
    175 
    176 /**
    177  * \def UCONFIG_NO_SERVICE
    178  * This switch turns off service registration.
    179  *
    180  * @draft ICU 3.2
    181  */
    182 #ifndef UCONFIG_NO_SERVICE
    183 #   define UCONFIG_NO_SERVICE 0
    184 #endif
    185 
    186 #endif
    187