| 1 | #ifndef NU_BUILD_CONFIG_H |
| 2 | #define NU_BUILD_CONFIG_H |
| 3 | |
| 4 | // Hardcoded defines for vendored copy |
| 5 | #define NU_WITH_UTF8 |
| 6 | #define NU_WITH_TOUPPER |
| 7 | #define NU_WITH_TOLOWER |
| 8 | #define NU_WITH_UNACCENT |
| 9 | #define NU_WITH_Z_COLLATION |
| 10 | |
| 11 | /** @file config.h |
| 12 | * |
| 13 | * This file list available build options and provide some shortcuts, |
| 14 | * like NU_WITH_UTF16 will enable NU_WITH_UTF16LE + NU_WITH_UTF16BE. |
| 15 | * |
| 16 | * At build time you might set either particular option or shortcut. Either |
| 17 | * way you don't have to and shouldn't modify this file, just set build flags |
| 18 | * at the environment. |
| 19 | * |
| 20 | * This file will also enable several dependencies for you: case-mapping |
| 21 | * depends on NU_WITH_UDB, NU_UTF8_READER and so. |
| 22 | */ |
| 23 | |
| 24 | /* Definitions not covered in this file which should be defined |
| 25 | * externally. |
| 26 | * |
| 27 | * NU_BUILD_STATIC: will change functions visibility to "hidden" (GCC). |
| 28 | * @see defines.h |
| 29 | * |
| 30 | * NU_DISABLE_CONTRACTIONS: disables forward-reading during collation, |
| 31 | * only weights of a single codepoints will be compared (enabled in release build) |
| 32 | */ |
| 33 | |
| 34 | /* Enable everything, see below for details on a specific option */ |
| 35 | #ifdef NU_WITH_EVERYTHING |
| 36 | # define NU_WITH_UTF8 |
| 37 | # define NU_WITH_CESU8 |
| 38 | # define NU_WITH_UTF16 |
| 39 | # define NU_WITH_UTF16HE |
| 40 | # define NU_WITH_UTF32 |
| 41 | # define NU_WITH_UTF32HE |
| 42 | # define NU_WITH_STRINGS |
| 43 | # define NU_WITH_EXTRA |
| 44 | # define NU_WITH_REVERSE_READ |
| 45 | # define NU_WITH_VALIDATION |
| 46 | # define NU_WITH_COLLATION |
| 47 | # define NU_WITH_CASEMAP |
| 48 | # define NU_WITH_UNACCENT |
| 49 | #endif /* NU_WITH_EVERYTHING */ |
| 50 | |
| 51 | /* Enable UTF-8 decoding and encoding */ |
| 52 | #ifdef NU_WITH_UTF8 |
| 53 | # define NU_WITH_UTF8_READER /* UTF-8 decoding functions */ |
| 54 | # define NU_WITH_UTF8_WRITER /* UTF-8 encoding functions */ |
| 55 | #endif /* NU_WITH_UTF8 */ |
| 56 | |
| 57 | /* Enable CESU-8 decoding and encoding */ |
| 58 | #ifdef NU_WITH_CESU8 |
| 59 | # define NU_WITH_CESU8_READER |
| 60 | # define NU_WITH_CESU8_WRITER |
| 61 | #endif /* NU_WITH_CESU8 */ |
| 62 | |
| 63 | /* Enable UTF-16LE decoding and encoding */ |
| 64 | #ifdef NU_WITH_UTF16LE |
| 65 | # define NU_WITH_UTF16LE_READER |
| 66 | # define NU_WITH_UTF16LE_WRITER |
| 67 | #endif /* NU_WITH_UTF16LE */ |
| 68 | |
| 69 | /* Enable UTF-16BE decoding and encoding */ |
| 70 | #ifdef NU_WITH_UTF16BE |
| 71 | # define NU_WITH_UTF16BE_READER |
| 72 | # define NU_WITH_UTF16BE_WRITER |
| 73 | #endif /* NU_WITH_UTF16BE */ |
| 74 | |
| 75 | /* Enable UTF-16HE decoding and encoding */ |
| 76 | #ifdef NU_WITH_UTF16HE |
| 77 | # define NU_WITH_UTF16HE_READER |
| 78 | # define NU_WITH_UTF16HE_WRITER |
| 79 | #endif /* NU_WITH_UTF16HE */ |
| 80 | |
| 81 | /* Enable all UTF-16 options */ |
| 82 | #ifdef NU_WITH_UTF16 |
| 83 | # define NU_WITH_UTF16_READER |
| 84 | # define NU_WITH_UTF16_WRITER |
| 85 | #endif /* NU_WITH_UTF16 */ |
| 86 | |
| 87 | /* Enable UTF-16LE and BE decoders of UTF-16 decoder is requested */ |
| 88 | #ifdef NU_WITH_UTF16_READER |
| 89 | # define NU_WITH_UTF16LE_READER |
| 90 | # define NU_WITH_UTF16BE_READER |
| 91 | #endif /* NU_WITH_UTF16_READER */ |
| 92 | |
| 93 | /* Enable UTF-16LE and BE encoders of UTF-16 encoder is requested */ |
| 94 | #ifdef NU_WITH_UTF16_WRITER |
| 95 | # define NU_WITH_UTF16LE_WRITER |
| 96 | # define NU_WITH_UTF16BE_WRITER |
| 97 | #endif /* NU_WITH_UTF16_WRITER */ |
| 98 | |
| 99 | /* Enable UTF-32LE decoding and encoding */ |
| 100 | #ifdef NU_WITH_UTF32LE |
| 101 | # define NU_WITH_UTF32LE_READER |
| 102 | # define NU_WITH_UTF32LE_WRITER |
| 103 | #endif /* NU_WITH_UTF32LE */ |
| 104 | |
| 105 | /* Enable UTF-32BE decoding and encoding */ |
| 106 | #ifdef NU_WITH_UTF32BE |
| 107 | # define NU_WITH_UTF32BE_READER |
| 108 | # define NU_WITH_UTF32BE_WRITER |
| 109 | #endif /* NU_WITH_UTF32BE */ |
| 110 | |
| 111 | /* Enable UTF-32HE decoding and encoding */ |
| 112 | #ifdef NU_WITH_UTF32HE |
| 113 | # define NU_WITH_UTF32HE_READER |
| 114 | # define NU_WITH_UTF32HE_WRITER |
| 115 | #endif /* NU_WITH_UTF32HE */ |
| 116 | |
| 117 | /* Enable all UTF-32 options */ |
| 118 | #ifdef NU_WITH_UTF32 |
| 119 | # define NU_WITH_UTF32_READER |
| 120 | # define NU_WITH_UTF32_WRITER |
| 121 | #endif /* NU_WITH_UTF32 */ |
| 122 | |
| 123 | /* Enable UTF-32LE and BE decoders of UTF-32 decoder is requested */ |
| 124 | #ifdef NU_WITH_UTF32_READER |
| 125 | # define NU_WITH_UTF32LE_READER |
| 126 | # define NU_WITH_UTF32BE_READER |
| 127 | #endif /* NU_WITH_UTF32_READER */ |
| 128 | |
| 129 | /* Enable UTF-32LE and BE encoders of UTF-32 encoder is requested */ |
| 130 | #ifdef NU_WITH_UTF32_WRITER |
| 131 | # define NU_WITH_UTF32LE_WRITER |
| 132 | # define NU_WITH_UTF32BE_WRITER |
| 133 | #endif /* NU_WITH_UTF32_WRITER */ |
| 134 | |
| 135 | /* Shortcut for all string functions */ |
| 136 | #ifdef NU_WITH_STRINGS |
| 137 | # define NU_WITH_Z_STRINGS /* 0-terminated string functions */ |
| 138 | # define NU_WITH_N_STRINGS /* unterminated string functions */ |
| 139 | #endif /* NU_WITH_STRINGS */ |
| 140 | |
| 141 | /* Shortcut for extra string functions */ |
| 142 | #ifdef NU_WITH_EXTRA |
| 143 | # define NU_WITH_Z_EXTRA /* extra functions for 0-terminated strings */ |
| 144 | # define NU_WITH_N_EXTRA /* extra functions for unterminated strings */ |
| 145 | #endif /* NU_WITH_STRINGS */ |
| 146 | |
| 147 | /* Enable collation functions */ |
| 148 | #ifdef NU_WITH_COLLATION |
| 149 | # define NU_WITH_Z_COLLATION /* collation functions for 0-terminated strings */ |
| 150 | # define NU_WITH_N_COLLATION /* collation functions for unterminated strings */ |
| 151 | #endif /* NU_WITH_COLLATION */ |
| 152 | |
| 153 | /* Requirements for collation functions on 0-terminated strings */ |
| 154 | #ifdef NU_WITH_Z_COLLATION |
| 155 | # define NU_WITH_Z_STRINGS |
| 156 | # define NU_WITH_TOUPPER /* nu_toupper() */ |
| 157 | #endif |
| 158 | |
| 159 | /* Requirements for collation functions |
| 160 | * on unterminated strings */ |
| 161 | #ifdef NU_WITH_N_COLLATION |
| 162 | # define NU_WITH_N_STRINGS |
| 163 | # define NU_WITH_TOUPPER |
| 164 | #endif |
| 165 | |
| 166 | /* Requirements for casemap functions */ |
| 167 | #ifdef NU_WITH_CASEMAP |
| 168 | # define NU_WITH_TOLOWER /* nu_tolower() */ |
| 169 | # define NU_WITH_TOUPPER |
| 170 | # define NU_WITH_TOFOLD |
| 171 | #endif /* NU_WITH_CASEMAP */ |
| 172 | |
| 173 | /* More requirements for collation functions all collation functions depends |
| 174 | * on NU_WITH_DUCET */ |
| 175 | #if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION) |
| 176 | # ifndef NU_WITH_DUCET |
| 177 | # define NU_WITH_DUCET |
| 178 | # endif |
| 179 | #endif |
| 180 | |
| 181 | /* All collation and casemapping functions depends on NU_WITH_UDB */ |
| 182 | #if (defined NU_WITH_Z_COLLATION) || (defined NU_WITH_N_COLLATION) \ |
| 183 | || (defined NU_WITH_TOLOWER) || (defined NU_WITH_TOUPPER) || (defined NU_WITH_TOFOLD) \ |
| 184 | || (defined NU_WITH_UNACCENT) |
| 185 | # ifndef NU_WITH_UDB |
| 186 | # define NU_WITH_UDB /* nu_udb_* functions, pretty much internal stuff */ |
| 187 | # endif /* NU_WITH_UDB */ |
| 188 | #endif |
| 189 | |
| 190 | /* DUCET implementation depends on NU_WITH_UDB */ |
| 191 | #ifdef NU_WITH_DUCET |
| 192 | # define NU_WITH_UDB |
| 193 | #endif /* NU_WITH_DUCET */ |
| 194 | |
| 195 | /* NU_WITH_UDB depends on NU_WITH_UTF8_READER because internal encoding |
| 196 | * of UDB is UTF-8 */ |
| 197 | #ifdef NU_WITH_UDB |
| 198 | # define NU_WITH_UTF8_READER |
| 199 | #endif /* NU_WITH_UDB */ |
| 200 | |
| 201 | #endif /* NU_BUILD_CONFIG_H */ |
| 202 | |