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 | |