]>
Commit | Line | Data |
---|---|---|
6737908f EA |
1 | # |
2 | # For a description of the syntax of this configuration file, | |
d3181d18 | 3 | # see extra/config/Kconfig-language.txt |
6737908f | 4 | # |
eb33ef8a | 5 | |
d8e6976a | 6 | mainmenu "uClibc-ng $VERSION C Library Configuration" |
3a5c27d1 | 7 | |
554b79bf BRF |
8 | config DESIRED_TARGET_ARCH |
9 | string | |
10 | option env="ARCH" | |
11 | ||
e286a674 BRF |
12 | config VERSION |
13 | string | |
14 | option env="VERSION" | |
15 | ||
3a5c27d1 BRF |
16 | choice |
17 | prompt "Target Architecture" | |
dba942c8 | 18 | default TARGET_aarch64 if DESIRED_TARGET_ARCH = "aarch64" |
554b79bf | 19 | default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha" |
917b9eeb | 20 | default TARGET_arc if DESIRED_TARGET_ARCH = "arc" |
554b79bf BRF |
21 | default TARGET_arm if DESIRED_TARGET_ARCH = "arm" |
22 | default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32" | |
23 | default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin" | |
24 | default TARGET_cris if DESIRED_TARGET_ARCH = "cris" | |
2fcffe26 | 25 | default TARGET_csky if DESIRED_TARGET_ARCH = "csky" |
554b79bf BRF |
26 | default TARGET_frv if DESIRED_TARGET_ARCH = "frv" |
27 | default TARGET_h8300 if DESIRED_TARGET_ARCH = "h8300" | |
28 | default TARGET_hppa if DESIRED_TARGET_ARCH = "hppa" | |
29 | default TARGET_i386 if DESIRED_TARGET_ARCH = "i386" | |
554b79bf | 30 | default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64" |
672a3038 | 31 | default TARGET_kvx if DESIRED_TARGET_ARCH = "kvx" |
312f482d | 32 | default TARGET_lm32 if DESIRED_TARGET_ARCH = "lm32" |
554b79bf | 33 | default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k" |
22686a13 | 34 | default TARGET_metag if DESIRED_TARGET_ARCH = "metag" |
554b79bf BRF |
35 | default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze" |
36 | default TARGET_mips if DESIRED_TARGET_ARCH = "mips" | |
ee92c0fe | 37 | default TARGET_nds32 if DESIRED_TARGET_ARCH = "nds32" |
554b79bf | 38 | default TARGET_nios2 if DESIRED_TARGET_ARCH = "nios2" |
4d8e5484 | 39 | default TARGET_or1k if DESIRED_TARGET_ARCH = "or1k" |
554b79bf | 40 | default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc" |
9595fb8c | 41 | default TARGET_riscv64 if DESIRED_TARGET_ARCH = "riscv64" |
0a5466d8 | 42 | default TARGET_riscv32 if DESIRED_TARGET_ARCH = "riscv32" |
554b79bf | 43 | default TARGET_sh if DESIRED_TARGET_ARCH = "sh" |
554b79bf | 44 | default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc" |
041cdc27 | 45 | default TARGET_sparc64 if DESIRED_TARGET_ARCH = "sparc64" |
490e84f5 | 46 | default TARGET_tile if DESIRED_TARGET_ARCH = "tile" |
554b79bf BRF |
47 | default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64" |
48 | default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa" | |
3a5c27d1 BRF |
49 | help |
50 | The architecture of your target. | |
51 | ||
dba942c8 WB |
52 | config TARGET_aarch64 |
53 | bool "aarch64" | |
54 | ||
3b02a1d5 WB |
55 | config TARGET_alpha |
56 | bool "alpha" | |
3a5c27d1 | 57 | |
917b9eeb VG |
58 | config TARGET_arc |
59 | bool "arc" | |
60 | ||
3a5c27d1 BRF |
61 | config TARGET_arm |
62 | bool "arm" | |
63 | ||
64 | config TARGET_avr32 | |
65 | bool "avr32" | |
66 | ||
67 | config TARGET_bfin | |
68 | bool "bfin" | |
69 | ||
0ba51975 WB |
70 | # someone could sync this tree: |
71 | # http://linux-c6x.org/git/?p=uClibc.git;a=summary | |
5e0ada6a WB |
72 | config TARGET_c6x |
73 | bool "c6x" | |
1d57dcdd | 74 | |
3a5c27d1 BRF |
75 | config TARGET_cris |
76 | bool "cris" | |
77 | ||
2fcffe26 GR |
78 | config TARGET_csky |
79 | bool "csky" | |
80 | ||
adedda21 WB |
81 | config TARGET_frv |
82 | bool "frv" | |
3a5c27d1 | 83 | |
8df92aac YS |
84 | config TARGET_h8300 |
85 | bool "h8300" | |
3a5c27d1 | 86 | |
acffbf7d WB |
87 | config TARGET_hppa |
88 | bool "hppa" | |
3a5c27d1 BRF |
89 | |
90 | config TARGET_i386 | |
91 | bool "i386" | |
92 | ||
9747e322 WB |
93 | config TARGET_ia64 |
94 | bool "ia64" | |
3a5c27d1 | 95 | |
672a3038 YS |
96 | config TARGET_kvx |
97 | bool "kvx" | |
98 | ||
312f482d WB |
99 | config TARGET_lm32 |
100 | bool "lm32" | |
101 | ||
3a5c27d1 BRF |
102 | config TARGET_m68k |
103 | bool "m68k" | |
104 | ||
2de0dec4 WB |
105 | config TARGET_metag |
106 | bool "metag" | |
22686a13 | 107 | |
6252572a WB |
108 | config TARGET_microblaze |
109 | bool "microblaze" | |
3a5c27d1 BRF |
110 | |
111 | config TARGET_mips | |
112 | bool "mips" | |
113 | ||
ee92c0fe WB |
114 | config TARGET_nds32 |
115 | bool "nds32" | |
116 | ||
f972c226 WB |
117 | config TARGET_nios2 |
118 | bool "nios2" | |
3a5c27d1 | 119 | |
4d8e5484 WB |
120 | config TARGET_or1k |
121 | bool "or1k" | |
122 | ||
3a5c27d1 BRF |
123 | config TARGET_powerpc |
124 | bool "powerpc" | |
125 | ||
9595fb8c WB |
126 | config TARGET_riscv64 |
127 | bool "riscv64" | |
128 | ||
0a5466d8 | 129 | config TARGET_riscv32 |
130 | bool "riscv32" | |
131 | ||
3a5c27d1 BRF |
132 | config TARGET_sh |
133 | bool "superh" | |
134 | ||
3a5c27d1 BRF |
135 | config TARGET_sparc |
136 | bool "sparc" | |
137 | ||
041cdc27 WB |
138 | config TARGET_sparc64 |
139 | bool "sparc64" | |
140 | ||
490e84f5 WB |
141 | config TARGET_tile |
142 | bool "tile" | |
143 | ||
3a5c27d1 BRF |
144 | config TARGET_x86_64 |
145 | bool "x86_64" | |
146 | ||
147 | config TARGET_xtensa | |
148 | bool "xtensa" | |
149 | ||
150 | endchoice | |
151 | ||
b1638b69 WB |
152 | config TARGET_LDSO_NAME |
153 | string | |
154 | default "ld64-uClibc" if TARGET_ia64 | |
155 | default "ld64-uClibc" if TARGET_powerpc64 | |
156 | default "ld64-uClibc" if TARGET_sparc64 | |
157 | default "ld64-uClibc" if TARGET_x86_64 | |
158 | default "ld64-uClibc" if TARGET_kvx | |
159 | default "ld64-uClibc" if CONFIG_MIPS_N64_ABI | |
160 | default "ld-uClibc" | |
161 | ||
162 | config TARGET_ARCH_BITS | |
163 | int | |
164 | default 64 if TARGET_aarch64 | |
165 | default 64 if TARGET_ia64 | |
166 | default 64 if TARGET_powerpc64 | |
167 | default 64 if TARGET_sparc64 | |
168 | default 64 if TARGET_x86_64 | |
169 | default 64 if TARGET_kvx | |
170 | default 64 if CONFIG_MIPS_N64_ABI | |
171 | default 32 | |
3a5c27d1 BRF |
172 | |
173 | menu "Target Architecture Features and Options" | |
174 | ||
dba942c8 WB |
175 | if TARGET_aarch64 |
176 | source "extra/Configs/Config.aarch64" | |
177 | endif | |
178 | ||
3a5c27d1 BRF |
179 | if TARGET_alpha |
180 | source "extra/Configs/Config.alpha" | |
181 | endif | |
182 | ||
183 | if TARGET_arm | |
184 | source "extra/Configs/Config.arm" | |
185 | endif | |
186 | ||
187 | if TARGET_avr32 | |
188 | source "extra/Configs/Config.avr32" | |
189 | endif | |
190 | ||
191 | if TARGET_bfin | |
192 | source "extra/Configs/Config.bfin" | |
193 | endif | |
194 | ||
195 | if TARGET_cris | |
196 | source "extra/Configs/Config.cris" | |
197 | endif | |
198 | ||
2fcffe26 GR |
199 | if TARGET_csky |
200 | source "extra/Configs/Config.csky" | |
201 | endif | |
202 | ||
3a5c27d1 BRF |
203 | if TARGET_frv |
204 | source "extra/Configs/Config.frv" | |
205 | endif | |
206 | ||
207 | if TARGET_h8300 | |
208 | source "extra/Configs/Config.h8300" | |
209 | endif | |
210 | ||
211 | if TARGET_hppa | |
212 | source "extra/Configs/Config.hppa" | |
213 | endif | |
214 | ||
215 | if TARGET_i386 | |
216 | source "extra/Configs/Config.i386" | |
217 | endif | |
218 | ||
3a5c27d1 BRF |
219 | if TARGET_ia64 |
220 | source "extra/Configs/Config.ia64" | |
221 | endif | |
222 | ||
672a3038 YS |
223 | if TARGET_kvx |
224 | source "extra/Configs/Config.kvx" | |
225 | endif | |
226 | ||
312f482d WB |
227 | if TARGET_lm32 |
228 | source "extra/Configs/Config.lm32" | |
229 | endif | |
230 | ||
3a5c27d1 BRF |
231 | if TARGET_m68k |
232 | source "extra/Configs/Config.m68k" | |
233 | endif | |
234 | ||
22686a13 MC |
235 | if TARGET_metag |
236 | source "extra/Configs/Config.metag" | |
237 | endif | |
238 | ||
ee92c0fe WB |
239 | if TARGET_nds32 |
240 | source "extra/Configs/Config.nds32" | |
241 | endif | |
242 | ||
3a5c27d1 BRF |
243 | if TARGET_nios2 |
244 | source "extra/Configs/Config.nios2" | |
245 | endif | |
246 | ||
247 | if TARGET_microblaze | |
248 | source "extra/Configs/Config.microblaze" | |
249 | endif | |
250 | ||
251 | if TARGET_mips | |
252 | source "extra/Configs/Config.mips" | |
253 | endif | |
254 | ||
4d8e5484 WB |
255 | if TARGET_or1k |
256 | source "extra/Configs/Config.or1k" | |
257 | endif | |
258 | ||
3a5c27d1 BRF |
259 | if TARGET_powerpc |
260 | source "extra/Configs/Config.powerpc" | |
261 | endif | |
262 | ||
9595fb8c WB |
263 | if TARGET_riscv64 |
264 | source "extra/Configs/Config.riscv64" | |
265 | endif | |
266 | ||
0a5466d8 | 267 | if TARGET_riscv32 |
268 | source "extra/Configs/Config.riscv32" | |
269 | endif | |
270 | ||
3a5c27d1 BRF |
271 | if TARGET_sh |
272 | source "extra/Configs/Config.sh" | |
273 | endif | |
274 | ||
3a5c27d1 BRF |
275 | if TARGET_sparc |
276 | source "extra/Configs/Config.sparc" | |
277 | endif | |
278 | ||
041cdc27 WB |
279 | if TARGET_sparc64 |
280 | source "extra/Configs/Config.sparc64" | |
281 | endif | |
282 | ||
490e84f5 WB |
283 | if TARGET_tile |
284 | source "extra/Configs/Config.tile" | |
285 | endif | |
286 | ||
3a5c27d1 BRF |
287 | if TARGET_x86_64 |
288 | source "extra/Configs/Config.x86_64" | |
289 | endif | |
290 | ||
291 | if TARGET_xtensa | |
292 | source "extra/Configs/Config.xtensa" | |
293 | endif | |
294 | ||
46d6a248 AJ |
295 | if TARGET_c6x |
296 | source "extra/Configs/Config.c6x" | |
297 | endif | |
298 | ||
917b9eeb VG |
299 | if TARGET_arc |
300 | source "extra/Configs/Config.arc" | |
301 | endif | |
302 | ||
3a5c27d1 BRF |
303 | config TARGET_SUBARCH |
304 | string | |
305 | default "e500" if CONFIG_E500 | |
306 | default "classic" if CONFIG_CLASSIC | |
307 | default "sh4" if CONFIG_SH4 | |
c797b990 | 308 | default "sh4" if CONFIG_SH4A |
54a97c4d | 309 | default "" if CONFIG_386 |
3acd3c64 | 310 | default "i486" if CONFIG_486 |
54a97c4d MF |
311 | default "i586" if CONFIG_586 |
312 | default "i686" if CONFIG_686 | |
3a5c27d1 BRF |
313 | default "" |
314 | ||
315 | source "extra/Configs/Config.in.arch" | |
316 | ||
317 | endmenu | |
318 | ||
6737908f EA |
319 | menu "General Library Settings" |
320 | ||
f8a3fa02 EA |
321 | config HAVE_NO_PIC |
322 | bool | |
f8a3fa02 | 323 | |
a356ea25 | 324 | config DOPIC |
8daa0e4e | 325 | bool "Generate only Position Independent Code (PIC)" |
6737908f | 326 | default y |
3afa0348 | 327 | depends on !HAVE_NO_PIC |
6737908f | 328 | help |
8daa0e4e MF |
329 | If you wish to build all of uClibc as PIC objects, then answer Y here. |
330 | If you are unsure, then you should answer N. | |
6737908f | 331 | |
2c58afdb | 332 | config STATIC_PIE |
333 | bool "Add support for Static Position Independent Executables (PIE)" | |
334 | default n | |
0c979fac MF |
335 | depends on DOPIC && !UCLIBC_FORMAT_FDPIC_ELF && \ |
336 | (TARGET_arm || TARGET_i386 || TARGET_x86_64 || TARGET_aarch64 || \ | |
9e854172 | 337 | TARGET_mips || TARGET_xtensa || TARGET_powerpc) |
2c58afdb | 338 | |
a1c0be1a | 339 | config ARCH_HAS_NO_SHARED |
1e4f229f | 340 | bool |
1e4f229f | 341 | |
f89321f2 MF |
342 | config ARCH_HAS_NO_LDSO |
343 | bool | |
a1c0be1a | 344 | select ARCH_HAS_NO_SHARED |
f89321f2 | 345 | |
a8dc90ea FF |
346 | config ARCH_HAS_UCONTEXT |
347 | bool | |
348 | ||
6737908f | 349 | config HAVE_SHARED |
4efe92d7 | 350 | bool "Enable shared libraries" |
a1c0be1a | 351 | depends on !ARCH_HAS_NO_SHARED |
6737908f EA |
352 | default y |
353 | help | |
354 | If you wish to build uClibc with support for shared libraries then | |
355 | answer Y here. If you only want to build uClibc as a static library, | |
356 | then answer N. | |
357 | ||
d35b5008 EA |
358 | config FORCE_SHAREABLE_TEXT_SEGMENTS |
359 | bool "Only load shared libraries which can share their text segment" | |
f674b612 | 360 | depends on HAVE_SHARED |
558b2828 | 361 | select DOPIC |
d35b5008 EA |
362 | help |
363 | If you answer Y here, the uClibc native shared library loader will | |
bd370199 BRF |
364 | only load shared libraries, which do not need to modify any |
365 | non-writable segments. These libraries haven't set the DT_TEXTREL | |
366 | tag in the dynamic section (==> objdump). | |
367 | All your libraries must be compiled with -fPIC or -fpic, and all | |
368 | assembler function must be written as position independent code (PIC). | |
6a98e3e5 | 369 | Enabling this option will make uClibc's shared library loader a |
bd370199 BRF |
370 | little bit smaller and guarantee that no memory will be wasted by |
371 | badly coded shared libraries. | |
d35b5008 | 372 | |
449caad5 | 373 | config LDSO_LDD_SUPPORT |
c6bb7041 | 374 | bool "Native 'ldd' support" |
f674b612 | 375 | depends on HAVE_SHARED |
449caad5 EA |
376 | default y |
377 | help | |
62447c11 | 378 | Enable all the code needed to support traditional ldd, |
bc24202b | 379 | which executes the shared library loader to resolve all dependencies |
449caad5 | 380 | and then provide a list of shared libraries that are required for an |
4efe92d7 | 381 | application to function. Disabling this option will make uClibc's |
bd370199 BRF |
382 | shared library loader a little bit smaller. |
383 | Most people will answer Y. | |
449caad5 | 384 | |
3b8039fd | 385 | config LDSO_CACHE_SUPPORT |
c6bb7041 | 386 | bool "Enable library loader cache (ld.so.conf)" |
f674b612 | 387 | depends on HAVE_SHARED |
3b8039fd EA |
388 | default y |
389 | help | |
390 | Enable this to make use of /etc/ld.so.conf, the shared library loader | |
391 | cache configuration file to support for non-standard library paths. | |
392 | After updating this file, it is necessary to run 'ldconfig' to update | |
393 | the /etc/ld.so.cache shared library loader cache file. | |
394 | ||
4f729fd9 CA |
395 | config LDSO_PRELOAD_ENV_SUPPORT |
396 | bool "Enable library loader LD_PRELOAD environment" | |
397 | depends on HAVE_SHARED | |
398 | default y | |
399 | help | |
400 | Enable this to make use of LD_PRELOAD environment variable. | |
401 | A whitespace-separated list of additional, user-specified, ELF shared | |
402 | libraries to be loaded before all others. This can be used to | |
403 | selectively override functions in other shared libraries. For | |
404 | set-user-ID/set-group-ID ELF binaries, only libraries in the standard | |
405 | search directories that are also set-user-ID will be loaded. | |
406 | ||
162e21b2 | 407 | config LDSO_PRELOAD_FILE_SUPPORT |
c6bb7041 | 408 | bool "Enable library loader preload file (ld.so.preload)" |
f674b612 | 409 | depends on HAVE_SHARED |
162e21b2 JT |
410 | help |
411 | Enable this to make use of /etc/ld.so.preload. This file contains a | |
9f9ab492 JT |
412 | whitespace separated list of shared libraries to be loaded before |
413 | the program. | |
162e21b2 | 414 | |
3b8039fd | 415 | config LDSO_BASE_FILENAME |
162e21b2 | 416 | string "Shared library loader naming prefix" |
f674b612 | 417 | depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT) |
3b8039fd EA |
418 | default "ld.so" |
419 | help | |
420 | If you wish to support both uClibc and glibc on the same system, it | |
421 | is necessary to set this to something other than "ld.so" to avoid | |
422 | conflicts with glibc, which also uses "ld.so". This prevents both | |
162e21b2 | 423 | libraries from using the same /etc/ld.so.* files. If you wish to |
3b8039fd EA |
424 | support both uClibc and glibc on the same system then you should set |
425 | this to "ld-uClibc.so". | |
426 | ||
427 | Most people will leave this set to the default of "ld.so". | |
428 | ||
9f9ab492 JT |
429 | WARNING: Changing the default prefix could cause problems with |
430 | binutils' ld ! | |
431 | ||
637e2b24 FA |
432 | config LDSO_STANDALONE_SUPPORT |
433 | bool "Dynamic linker stand-alone mode support" | |
434 | depends on HAVE_SHARED | |
637e2b24 FA |
435 | help |
436 | The dynamic linker can be run either indirectly through running some | |
437 | dynamically linked program or library (in which case no command line | |
438 | options to the dynamic linker can be passed and, in the ELF case, the | |
439 | dynamic linker which is stored in the .interp section of the program | |
440 | is executed) or directly by running: | |
441 | ||
442 | /lib/ld-uClibc.so.* [OPTIONS] [PROGRAM [ARGUMENTS]] | |
443 | ||
444 | Stand-alone execution is a prerequisite for adding prelink | |
445 | capabilities to uClibc dynamic linker, as well useful for testing an | |
446 | updated version of the dynamic linker without breaking the system. | |
447 | ||
a3379604 FA |
448 | config LDSO_PRELINK_SUPPORT |
449 | bool "Dynamic linker prelink support" | |
450 | depends on HAVE_SHARED | |
a3379604 FA |
451 | select LDSO_STANDALONE_SUPPORT |
452 | help | |
453 | The dynamic linker can be used in stand-alone mode by the prelink tool | |
454 | for prelinking ELF shared libraries and binaries to speed up startup | |
455 | time. It also is able to load and handle prelinked libraries and | |
456 | binaries at runtime. | |
457 | ||
c6bb7041 MF |
458 | config UCLIBC_STATIC_LDCONFIG |
459 | bool "Link ldconfig statically" | |
460 | depends on HAVE_SHARED | |
461 | default y | |
462 | help | |
463 | Enable this option to statically link the ldconfig binary. | |
464 | ||
465 | Making ldconfig static can be beneficial if you have a library | |
62447c11 | 466 | problem and need to use ldconfig to recover. Sometimes it is |
c6bb7041 MF |
467 | preferable to instead keep the size of the system down, in which |
468 | case you should disable this option. | |
469 | ||
f7437324 MF |
470 | config LDSO_RUNPATH |
471 | bool "Enable ELF RUNPATH tag support" | |
f674b612 | 472 | depends on HAVE_SHARED |
62447c11 | 473 | default y if LDSO_CACHE_SUPPORT |
f7437324 | 474 | help |
a22ecf80 HCE |
475 | ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths |
476 | which extend the library search paths. They are really only useful | |
477 | if a package installs libraries in non standard locations and | |
f7437324 MF |
478 | ld.so.conf support is disabled. |
479 | ||
a22ecf80 | 480 | Usage of RUNPATH tags is not too common, so disabling this feature |
f7437324 MF |
481 | should be safe for most people. |
482 | ||
9728de19 | 483 | config LDSO_RUNPATH_OF_EXECUTABLE |
409f14d9 | 484 | bool "Use executables RUNPATH/RPATH when searching for libraries." |
9728de19 WB |
485 | depends on LDSO_RUNPATH |
486 | default n | |
487 | help | |
409f14d9 | 488 | Use the executables RUNPATH/RPATH to find to find libraries even |
9728de19 WB |
489 | though this behavour is not standard. Setting this option causes |
490 | the uclibc dynamic linker behavour to match the glibc dynamic linker. | |
491 | ||
26284b40 PM |
492 | config LDSO_SAFE_RUNPATH |
493 | bool "Allow only RUNPATH beginning with /" | |
494 | depends on LDSO_RUNPATH | |
495 | default y | |
496 | help | |
497 | Allow only absolute path in RPATH/RUNPATH. | |
498 | ||
b65c7b2c MF |
499 | config LDSO_SEARCH_INTERP_PATH |
500 | bool "Add ldso path to lib search path" | |
501 | depends on HAVE_SHARED | |
502 | default y | |
503 | help | |
504 | The ldso is told where it is being executed from and can use that | |
505 | path to find related core libraries. This is useful by default, | |
506 | but can be annoying in a mixed development environment. | |
507 | ||
508 | i.e. if the ldso is run from /foo/boo/ldso.so, it will start its | |
509 | library search with /foo/boo/ | |
510 | ||
511 | If unsure, simply say Y here. | |
512 | ||
e4aa966c CA |
513 | config LDSO_LD_LIBRARY_PATH |
514 | bool "Add LD_LIBRARY_PATH to lib search path" | |
515 | depends on HAVE_SHARED | |
516 | default y | |
517 | help | |
518 | On hardened system it could be useful to disable the use of | |
519 | LD_LIBRARY_PATH environment variable (a colon-separated list of | |
520 | directories in which to search for ELF libraries at execution-time). | |
521 | ||
522 | If unsure, simply say Y here. | |
523 | ||
ae35d725 | 524 | config UCLIBC_CTOR_DTOR |
4d8e5484 | 525 | bool |
60eae0de | 526 | default y if !TARGET_riscv64 |
ae35d725 EA |
527 | help |
528 | If you wish to build uClibc with support for global constructor | |
529 | (ctor) and global destructor (dtor) support, then answer Y here. | |
530 | When ctor/dtor support is enabled, binaries linked with uClibc must | |
531 | also be linked with crtbegin.o and crtend.o which are provided by gcc | |
532 | (the "*startfile:" and "*endfile:" settings in your gcc specs file | |
533 | may need to be adjusted to include these files). This support will | |
534 | also add a small amount of additional size to each binary compiled vs | |
535 | uClibc. If you will be using uClibc with C++, or if you need the gcc | |
536 | __attribute__((constructor)) and __attribute__((destructor)) to work, | |
bc24202b | 537 | then you definitely want to answer Y here. If you don't need ctors |
ae35d725 EA |
538 | or dtors and want your binaries to be as small as possible, then |
539 | answer N. | |
433ccbdd | 540 | |
6630516b CA |
541 | config LDSO_GNU_HASH_SUPPORT |
542 | bool "Enable GNU hash style support" | |
c08a447c | 543 | depends on HAVE_SHARED && !TARGET_mips |
6630516b CA |
544 | help |
545 | Newest binutils support a new hash style named GNU-hash. The dynamic | |
a22ecf80 HCE |
546 | linker will use the new GNU-hash section (.gnu.hash) for symbol lookup |
547 | if present into the ELF binaries, otherwise it will use the old SysV | |
bd370199 BRF |
548 | hash style (.hash). This ensures that it is completely backward |
549 | compatible. | |
6630516b CA |
550 | Further, being the hash table implementation self-contained into each |
551 | executable and shared libraries, objects with mixed hash style can | |
552 | peacefully coexist in the same process. | |
a22ecf80 HCE |
553 | |
554 | If you want to use this new feature, answer Y | |
6630516b | 555 | |
7345b706 BRF |
556 | choice |
557 | prompt "Thread support" | |
7345b706 | 558 | default HAS_NO_THREADS |
6737908f | 559 | help |
b8728981 | 560 | If you want to compile uClibc with pthread support, then answer Y. |
6737908f EA |
561 | This will increase the size of uClibc by adding a bunch of locking |
562 | to critical data structures, and adding extra code to ensure that | |
563 | functions are properly reentrant. | |
564 | ||
7345b706 BRF |
565 | config HAS_NO_THREADS |
566 | bool "none" | |
27b9ce8b | 567 | help |
7345b706 | 568 | Disable thread support. |
27b9ce8b | 569 | |
6a8ccc95 WB |
570 | config UCLIBC_HAS_LINUXTHREADS |
571 | bool "Linuxthreads" | |
572 | # linuxthreads need nanosleep() | |
7345b706 | 573 | select UCLIBC_HAS_REALTIME |
dba942c8 | 574 | depends on !TARGET_aarch64 && \ |
d0bc0d2b | 575 | !TARGET_riscv64 && \ |
0a5466d8 | 576 | !TARGET_riscv32 && \ |
dba942c8 | 577 | !TARGET_metag |
a9f5aa1c | 578 | help |
6a8ccc95 | 579 | If you want to compile uClibc with Linuxthreads support, then answer Y. |
a9f5aa1c | 580 | |
4737dfdd AF |
581 | config UCLIBC_HAS_THREADS_NATIVE |
582 | bool "Native POSIX Threading (NPTL)" | |
583 | select UCLIBC_HAS_TLS | |
c3af2604 | 584 | select UCLIBC_HAS_STDIO_FUTEXES |
8396ab5e | 585 | select UCLIBC_HAS_REALTIME |
157400bf | 586 | # i386 has no lowlevellock support (yet) as opposed to i486 onward |
9fc117ac WB |
587 | depends on !CONFIG_386 && \ |
588 | !TARGET_alpha && \ | |
589 | !TARGET_avr32 && \ | |
590 | !TARGET_bfin && \ | |
591 | !TARGET_c6x && \ | |
592 | !TARGET_cris && \ | |
adedda21 | 593 | !TARGET_frv && \ |
1bfc0e93 | 594 | !TARGET_h8300 && \ |
9fc117ac WB |
595 | !TARGET_hppa && \ |
596 | !TARGET_ia64 && \ | |
f81c9921 | 597 | (ARCH_USE_MMU || TARGET_arm) |
4737dfdd AF |
598 | help |
599 | If you want to compile uClibc with NPTL support, then answer Y. | |
600 | ||
7345b706 BRF |
601 | endchoice |
602 | ||
603 | config UCLIBC_HAS_THREADS | |
604 | def_bool y if !HAS_NO_THREADS | |
605 | ||
4737dfdd AF |
606 | config UCLIBC_HAS_TLS |
607 | bool "Thread-Local Storage" | |
608 | depends on UCLIBC_HAS_THREADS_NATIVE | |
4737dfdd AF |
609 | help |
610 | If you want to enable TLS support then answer Y. | |
611 | This is fast an efficient way to store per-thread local data | |
612 | which is not on stack. It needs __thread support enabled in | |
613 | gcc. | |
614 | ||
7345b706 BRF |
615 | config PTHREADS_DEBUG_SUPPORT |
616 | bool "Build pthreads debugging support" | |
7345b706 BRF |
617 | depends on UCLIBC_HAS_THREADS |
618 | help | |
619 | Say Y here if you wish to be able to debug applications that use | |
620 | uClibc's pthreads library. By enabling this option, a library | |
621 | named libthread_db will be built. This library will be dlopen()'d | |
622 | by gdb and will allow gdb to debug the threads in your application. | |
623 | ||
624 | IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library, | |
625 | you must compile gdb with uClibc in order for pthread debugging to | |
626 | work properly. | |
627 | ||
628 | If you are doing development and want to debug applications using | |
629 | uClibc's pthread library, answer Y. Otherwise, answer N. | |
630 | ||
e1e46622 | 631 | |
4cc4b304 BRF |
632 | config UCLIBC_HAS_SYSLOG |
633 | bool "Syslog support" | |
634 | default y | |
635 | depends on UCLIBC_HAS_NETWORK_SUPPORT | |
636 | select UCLIBC_HAS_SOCKET | |
637 | help | |
638 | Support sending messages to the system logger. | |
639 | This requires socket-support. | |
640 | ||
43ee648e AN |
641 | config UCLIBC_HAS_LFS |
642 | def_bool y | |
643 | help | |
644 | Large file support (always enabled; config symbol retained for | |
645 | feature test to be compatible with uClibc). | |
6737908f EA |
646 | choice |
647 | prompt "Malloc Implementation" | |
701f87d8 MF |
648 | default MALLOC if ! ARCH_USE_MMU |
649 | default MALLOC_STANDARD if ARCH_USE_MMU | |
5d7ab365 BRF |
650 | |
651 | config MALLOC | |
652 | bool "malloc" | |
6737908f | 653 | help |
bd370199 BRF |
654 | "malloc" use mmap for all allocations and so works very well on |
655 | MMU-less systems that do not support the brk() system call. It is | |
656 | pretty smart about reusing already allocated memory, and minimizing | |
657 | memory wastage. | |
8d532c51 | 658 | This is the default for uClinux MMU-less systems. |
6737908f | 659 | |
5d7ab365 BRF |
660 | config MALLOC_SIMPLE |
661 | bool "malloc-simple" | |
662 | help | |
e4d1b496 RL |
663 | "malloc-simple" is trivially simple and slow as molasses. It |
664 | was written from scratch for uClibc, and is the simplest possible | |
665 | (and therefore smallest) malloc implementation. | |
666 | ||
667 | This uses only the mmap() system call to allocate and free memory, | |
668 | and does not use the brk() system call at all, making it a fine | |
669 | choice for MMU-less systems with very limited memory. It's 100% | |
670 | standards compliant, thread safe, very small, and releases freed | |
671 | memory back to the OS immediately rather than keeping it in the | |
672 | process's heap for reallocation. It is also VERY SLOW. | |
6737908f | 673 | |
5d7ab365 BRF |
674 | config MALLOC_STANDARD |
675 | bool "malloc-standard" | |
676 | depends on ARCH_USE_MMU | |
677 | help | |
8d532c51 EA |
678 | "malloc-standard" is derived from the public domain dlmalloc |
679 | implementation by Doug Lea. It is quite fast, and is pretty smart | |
680 | about reusing already allocated memory, and minimizing memory | |
681 | wastage. This uses brk() for small allocations, while using mmap() | |
682 | for larger allocations. This is the default malloc implementation | |
683 | for uClibc. | |
684 | ||
685 | If unsure, answer "malloc-standard". | |
6737908f | 686 | |
6737908f EA |
687 | endchoice |
688 | ||
336849ea EA |
689 | config UCLIBC_DYNAMIC_ATEXIT |
690 | bool "Dynamic atexit() Support" | |
691 | default y | |
692 | help | |
336849ea EA |
693 | When this option is enabled, uClibc will support an infinite number, |
694 | of atexit() and on_exit() functions, limited only by your available | |
695 | memory. This can be important when uClibc is used with C++, since | |
696 | global destructors are implemented via atexit(), and it is quite | |
36ea1d44 | 697 | possible to exceed the default number when this option is disabled. |
336849ea | 698 | Enabling this option adds a few bytes, and more significantly makes |
b8728981 | 699 | atexit and on_exit depend on malloc, which can be bad when compiling |
336849ea EA |
700 | static executables. |
701 | ||
702 | Unless you use uClibc with C++, you should probably answer N. | |
703 | ||
4da43e9f | 704 | config UCLIBC_HAS_UTMPX |
6ff9c31a BRF |
705 | bool "utmpx based support for tracking login/logouts to/from the system" |
706 | help | |
707 | Answer y to enable support for accessing user accounting database. | |
708 | It can be used to track all login/logout to the system. | |
4da43e9f BRF |
709 | |
710 | config UCLIBC_HAS_UTMP | |
6ff9c31a | 711 | bool "utmp support (XPG2 compat, SVr4 compat)" |
cf80a7fc | 712 | depends on UCLIBC_HAS_UTMPX |
6ff9c31a BRF |
713 | help |
714 | Answer y to enable legacy SVID support for accessing | |
715 | user accounting database: | |
4da43e9f BRF |
716 | getutent(), getutid(), getutline(), pututline(), |
717 | setutent(), endutent(), utmpname() in utmp.h | |
6ff9c31a | 718 | It can be used to track all login/logout to the system. |
4da43e9f | 719 | |
6ff9c31a BRF |
720 | If unsure, answer N and use corresponding POSIX functions |
721 | from utmpx.h | |
4da43e9f | 722 | |
e8065705 BRF |
723 | config UCLIBC_SUSV2_LEGACY |
724 | bool "Enable SuSv2 LEGACY functions" | |
725 | help | |
726 | Enable this option if you want to have SuSv2 LEGACY functions | |
727 | Currently applies to: | |
728 | ||
729 | valloc | |
730 | ||
731 | WARNING! ABI incompatibility. | |
732 | ||
a26ac41c PM |
733 | config UCLIBC_SUSV3_LEGACY |
734 | bool "Enable SuSv3 LEGACY functions" | |
3a40407c BRF |
735 | #vfork, |
736 | # h_errno | |
737 | # gethostbyaddr | |
738 | # gethostbyname | |
a26ac41c PM |
739 | help |
740 | Enable this option if you want to have SuSv3 LEGACY functions | |
741 | in the library, else they are replaced by SuSv3 proposed macros. | |
3a40407c BRF |
742 | Currently applies to: |
743 | ||
744 | bcmp, bcopy, bzero, index, rindex, ftime, | |
745 | bsd_signal, (ecvt), (fcvt), gcvt, (getcontext), | |
746 | (getwd), (makecontext), | |
747 | mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr), | |
748 | scalb, (setcontext), (swapcontext), ualarm, usleep, | |
749 | wcswcs. | |
750 | ||
a26ac41c PM |
751 | WARNING! ABI incompatibility. |
752 | ||
a8dc90ea FF |
753 | config UCLIBC_HAS_CONTEXT_FUNCS |
754 | bool "Use obsolescent context control functions" | |
755 | depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT | |
756 | help | |
757 | Add into library the SuSv3 obsolescent functions used for context | |
758 | control. The setcontext family allows the implementation in C of | |
759 | advanced control flow patterns such as iterators, fibers, and | |
760 | coroutines. They may be viewed as an advanced version of | |
761 | setjmp/longjmp; whereas the latter allows only a single non-local jump | |
762 | up the stack, setcontext allows the creation of multiple cooperative | |
763 | threads of control, each with its own stack. | |
764 | These functions are: setcontext, getcontext, makecontext, swapcontext. | |
765 | ||
589c9895 BRF |
766 | config UCLIBC_SUSV3_LEGACY_MACROS |
767 | bool "Enable SuSv3 LEGACY macros" | |
589c9895 BRF |
768 | help |
769 | Enable this option if you want to have SuSv3 LEGACY macros. | |
770 | Currently applies to bcopy/bzero/bcmp/index/rindex et al. | |
771 | WARNING! ABI incompatibility. | |
772 | ||
3a40407c BRF |
773 | config UCLIBC_SUSV4_LEGACY |
774 | bool "Enable SuSv4 LEGACY or obsolescent functions" | |
3a40407c BRF |
775 | help |
776 | Enable this option if you want to have SuSv4 LEGACY functions | |
777 | and macros in the library. | |
778 | Currently applies to: | |
779 | ||
780 | - XSI functions: | |
781 | _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer, | |
782 | gettimeofday, isascii, pthread_getconcurrency, | |
783 | pthread_setconcurrency, setitimer, setpgrp, sighold, | |
784 | sigignore, sigpause, sigrelse, sigset, siginterrupt, | |
785 | tempnam, toascii, ulimit. | |
786 | ||
787 | - Base functions: | |
788 | asctime, asctime_r, ctime, ctime_r, gets, rand_r, | |
789 | tmpnam, utime. | |
790 | ||
791 | WARNING! ABI incompatibility. | |
792 | ||
a82ba03b | 793 | config UCLIBC_STRICT_HEADERS |
81bd17ac | 794 | bool "Hide structures and constants for unsupported features" |
a82ba03b | 795 | help |
81bd17ac | 796 | Hide structures and constants in headers that should not be used, |
a82ba03b PM |
797 | because the respective feature is disabled. |
798 | ||
799 | WARNING! enabling this option requires to patch many faulty apps, | |
800 | since they make (wrongly) use of these structures/constants, | |
801 | although the feature was disabled. | |
802 | ||
1e85d9e0 DV |
803 | config UCLIBC_HAS_STUBS |
804 | bool "Provide stubs for unavailable functionality" | |
1e85d9e0 DV |
805 | help |
806 | With this option uClibc provides non-functional stubs for | |
807 | functions which are impossible to implement on the target | |
808 | architecture. Otherwise, such functions are simply omitted. | |
809 | ||
3fdaf2bb | 810 | config UCLIBC_HAS_SHADOW |
6737908f EA |
811 | bool "Shadow Password Support" |
812 | default y | |
813 | help | |
b8728981 | 814 | Answer N if you do not need shadow password support. |
6737908f EA |
815 | Most people will answer Y. |
816 | ||
0e09af6c MF |
817 | config UCLIBC_HAS_PROGRAM_INVOCATION_NAME |
818 | bool "Support for program_invocation_name" | |
0e09af6c MF |
819 | help |
820 | Support for the GNU-specific program_invocation_name and | |
821 | program_invocation_short_name strings. Some GNU packages | |
822 | (like tar and coreutils) utilize these for extra useful | |
823 | output, but in general are not required. | |
824 | ||
825 | At startup, these external strings are automatically set | |
826 | up based on the value of ARGV[0]. | |
827 | ||
828 | If unsure, just answer N. | |
829 | ||
cd662e64 MF |
830 | config UCLIBC_HAS___PROGNAME |
831 | bool "Support for __progname" | |
832 | default y | |
833 | help | |
834 | Some packages (like openssh) like to peek into internal libc | |
835 | symbols to make their output a bit more user friendly. | |
836 | ||
837 | At startup, __progname is automatically set up based on the | |
838 | value of ARGV[0]. | |
839 | ||
840 | If unsure, just answer N. | |
841 | ||
4cc4b304 BRF |
842 | config UCLIBC_HAS_PTY |
843 | bool "Support for pseudo-terminals" | |
844 | default y | |
845 | help | |
846 | This enables support for pseudo-terminals (see man 4 pts | |
847 | and man 7 pty). | |
848 | ||
849 | If unsure, just answer Y. | |
850 | ||
7e50fe1a BRF |
851 | config ASSUME_DEVPTS |
852 | bool "Assume that /dev/pts is a devpts or devfs file system" | |
853 | default y | |
854 | depends on UCLIBC_HAS_PTY | |
855 | help | |
856 | Enable this if /dev/pts is on a devpts or devfs filesystem. Both | |
857 | these filesystems automatically manage permissions on the /dev/pts | |
858 | devices. You may need to mount your devpts or devfs filesystem on | |
859 | /dev/pts for this to work. | |
860 | ||
861 | Most people should answer Y. | |
862 | ||
6737908f EA |
863 | config UNIX98PTY_ONLY |
864 | bool "Support only Unix 98 PTYs" | |
865 | default y | |
4cc4b304 | 866 | depends on UCLIBC_HAS_PTY |
6737908f EA |
867 | help |
868 | If you want to support only Unix 98 PTYs enable this. Some older | |
7e50fe1a BRF |
869 | applications may need this disabled and will thus use legacy BSD |
870 | style PTY handling which is more complex and also bigger than | |
871 | Unix 98 PTY handling. | |
872 | ||
873 | For most current programs, you can generally answer Y. | |
6737908f | 874 | |
7e50fe1a | 875 | if UNIX98PTY_ONLY |
4cc4b304 BRF |
876 | config UCLIBC_HAS_GETPT |
877 | bool "Support getpt() (glibc-compat)" | |
4cc4b304 BRF |
878 | depends on UCLIBC_HAS_PTY |
879 | help | |
880 | Some packages may need getpt(). | |
881 | All of those are non-standard and can be considered | |
882 | GNU/libc compatibility. | |
883 | Either use posix_openpt() or just open /dev/ptmx yourself. | |
884 | ||
885 | If unsure, just say N. | |
7e50fe1a | 886 | endif |
4cc4b304 | 887 | |
7e50fe1a BRF |
888 | if !UNIX98PTY_ONLY |
889 | # Have to use __libc_ptyname{1,2}[] and related bloat | |
890 | config UCLIBC_HAS_GETPT | |
891 | def_bool y | |
892 | endif | |
6737908f | 893 | |
5530578d BRF |
894 | config UCLIBC_HAS_LIBUTIL |
895 | bool "Provide libutil library and functions" | |
896 | depends on UCLIBC_HAS_PTY | |
5530578d BRF |
897 | help |
898 | Provide a libutil library. | |
899 | This non-standard conforming library provides the following | |
900 | utility functions: | |
901 | ||
902 | forkpty(): combines openpty(), fork(2), and login_tty() to | |
903 | create a new process operating in a pseudo-terminal. | |
904 | login(): write utmp and wtmp entries | |
905 | login_tty(): prepares for a login on the tty fd by creating a | |
906 | new session, making fd the controlling terminal for | |
907 | the calling process, setting fd to be the standard | |
908 | input, output, and error streams of the current | |
909 | process, and closing fd. | |
910 | logout(): write utmp and wtmp entries | |
911 | logwtmp(): constructs a utmp structure and calls updwtmp() to | |
912 | append the structure to the utmp file. | |
913 | openpty(): finds an available pseudo-terminal and returns | |
914 | file descriptors for the master and slave | |
915 | ||
916 | This library adds about 3k-4k to your system. | |
917 | ||
ea3abe24 EA |
918 | config UCLIBC_HAS_TM_EXTENSIONS |
919 | bool "Support 'struct tm' timezone extension fields" | |
920 | default y | |
921 | help | |
922 | Enabling this option adds fields to 'struct tm' in time.h for | |
923 | tracking the number of seconds east of UTC, and an abbreviation for | |
924 | the current timezone. These fields are not specified by the SuSv3 | |
925 | standard, but they are commonly used in both GNU and BSD application | |
926 | code. | |
927 | ||
928 | To strictly follow the SuSv3 standard, leave this disabled. | |
929 | Most people will probably want to answer Y. | |
930 | ||
39aa3280 EA |
931 | config UCLIBC_HAS_TZ_CACHING |
932 | bool "Enable caching of the last valid timezone 'TZ' string" | |
933 | default y | |
934 | help | |
935 | Answer Y to enable caching of the last valid 'TZ' string describing | |
936 | the timezone setting. This allows a quick string compare to avoid | |
937 | repeated parsing of unchanged 'TZ' strings when tzset() is called. | |
938 | ||
939 | Most people will answer Y. | |
940 | ||
941 | config UCLIBC_HAS_TZ_FILE | |
942 | bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)" | |
943 | default y | |
944 | help | |
945 | Answer Y to enable the setting of a default timezone for uClibc. | |
946 | ||
947 | Ordinarily, uClibc gets the timezone information exclusively from the | |
948 | 'TZ' environment variable. In particular, there is no support for | |
949 | the zoneinfo directory tree or the /etc/timezone file used by glibc. | |
950 | ||
951 | With this option enabled, uClibc will use the value stored in the | |
952 | file '/etc/TZ' (default path) to obtain timezone information if the | |
953 | 'TZ' environment variable is missing or has an invalid value. The | |
954 | file consists of a single line (newline required) of text describing | |
955 | the timezone in the format specified for the TZ environment variable. | |
956 | ||
bd370199 | 957 | Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file. |
39aa3280 EA |
958 | See |
959 | http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html | |
960 | for details on valid settings of 'TZ'. | |
961 | ||
962 | Most people will answer Y. | |
963 | ||
964 | config UCLIBC_HAS_TZ_FILE_READ_MANY | |
965 | bool "Repeatedly read the '/etc/TZ' file" | |
966 | depends on UCLIBC_HAS_TZ_FILE | |
967 | default y | |
968 | help | |
969 | Answer Y to enable repeated reading of the '/etc/TZ' file even after | |
bd370199 BRF |
970 | a valid value has been read. This incurs the overhead of an |
971 | open/read/close for each tzset() call (explicit or implied). However, | |
972 | setting this will allow applications to update their timezone | |
973 | information if the contents of the file change. | |
39aa3280 EA |
974 | |
975 | Most people will answer Y. | |
976 | ||
977 | config UCLIBC_TZ_FILE_PATH | |
978 | string "Path to the 'TZ' file for setting the global timezone" | |
979 | depends on UCLIBC_HAS_TZ_FILE | |
980 | default "/etc/TZ" | |
981 | help | |
982 | This is the path to the 'TZ' file. | |
983 | ||
984 | Most people will use the default of '/etc/TZ'. | |
985 | ||
87327f43 DV |
986 | config UCLIBC_FALLBACK_TO_ETC_LOCALTIME |
987 | bool "Use /etc/localtime as a fallback" | |
988 | depends on UCLIBC_HAS_TZ_FILE | |
989 | default y | |
990 | help | |
991 | Answer Y to try to use /etc/localtime file. | |
992 | On glibc systems this file (if it is in TZif2 format) | |
993 | contains timezone string at the end. | |
994 | ||
995 | Most people will answer Y. | |
996 | ||
6737908f EA |
997 | endmenu |
998 | ||
07b15c5f PK |
999 | menu "Advanced Library Settings" |
1000 | ||
1001 | config UCLIBC_PWD_BUFFER_SIZE | |
1002 | int "Buffer size for getpwnam() and friends" | |
1003 | default 256 | |
1e3ffd5c | 1004 | range 12 1024 |
07b15c5f PK |
1005 | help |
1006 | This sets the value of the buffer size for getpwnam() and friends. | |
1007 | By default, this is 256. (For reference, glibc uses 1024). | |
1008 | The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX | |
1009 | parameter. | |
1010 | ||
1011 | config UCLIBC_GRP_BUFFER_SIZE | |
1012 | int "Buffer size for getgrnam() and friends" | |
1013 | default 256 | |
d673a24f | 1014 | range 12 1024 |
07b15c5f PK |
1015 | help |
1016 | This sets the value of the buffer size for getgrnam() and friends. | |
1017 | By default, this is 256. (For reference, glibc uses 1024). | |
1018 | The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX | |
1019 | parameter. | |
1020 | ||
4cc4b304 BRF |
1021 | comment "Support various families of functions" |
1022 | ||
4cc4b304 BRF |
1023 | config UCLIBC_LINUX_SPECIFIC |
1024 | bool "Linux specific functions" | |
1025 | default y | |
1026 | help | |
04df27ce | 1027 | accept4(), bdflush(), |
33a12b55 | 1028 | capget(), capset(), eventfd(), fallocate(), |
09ff4249 | 1029 | fstatfs(), getrandom(), inotify_*(), ioperm(), iopl(), |
d3ddb92e | 1030 | madvise(), modify_ldt(), pipe2(), personality(), |
04df27ce | 1031 | prctl()/arch_prctl(), pivot_root(), modify_ldt(), |
504302d0 BRF |
1032 | ppoll(), readahead(), reboot(), remap_file_pages(), |
1033 | sched_getaffinity(), sched_setaffinity(), sendfile(), | |
04df27ce | 1034 | setfsgid(), setfsuid(), setresgid(), setresuid(), |
8c57a5d9 | 1035 | splice(), vmsplice(), tee(), signalfd(), statfs(), |
16fc66a4 AB |
1036 | swapoff(), swapon(), sync_file_range(), syncfs(), |
1037 | _sysctl(), sysinfo(), timerfd_*(), vhangup(), umount(), | |
1038 | umount2() | |
4cc4b304 BRF |
1039 | |
1040 | config UCLIBC_HAS_GNU_ERROR | |
1041 | bool "Support GNU extensions for error-reporting" | |
1042 | default y | |
1043 | help | |
1044 | Support for the GNU-specific error(), error_at_line(), | |
1045 | void (* error_print_progname)(), error_message_count | |
1046 | functions and variables. Some GNU packages | |
1047 | utilize these for extra useful output, but in general | |
1048 | are not required. | |
1049 | ||
1050 | If unsure, just answer N. | |
1051 | ||
1052 | config UCLIBC_BSD_SPECIFIC | |
1053 | bool "BSD specific functions" | |
1054 | default y | |
1055 | help | |
1056 | mincore(), getdomainname(), setdomainname() | |
1057 | ||
1058 | If unsure, say N. | |
1059 | ||
1060 | config UCLIBC_HAS_BSD_ERR | |
1061 | bool "BSD err functions" | |
1062 | default y | |
1063 | help | |
1064 | These functions are non-standard BSD extensions. | |
1065 | err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx() | |
1066 | ||
1067 | If unsure, say N. | |
1068 | ||
1069 | config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL | |
1070 | bool "BSD obsolete signal functions" | |
4cc4b304 | 1071 | help |
97a8f9f4 | 1072 | These functions are provided as a compatibility interface for |
4cc4b304 BRF |
1073 | programs that make use of the historical System V signal API. |
1074 | This API is obsolete: | |
1075 | new applications should use the POSIX signal API (sigaction(2), | |
1076 | sigprocmask(2), etc.). | |
1077 | Affected functions: | |
1078 | ||
1079 | sigset(), sighold(), sigrelse(), sigignore() | |
1080 | ||
1081 | If unsure, say N. | |
1082 | ||
cc2b7bf5 WB |
1083 | config UCLIBC_HAS_BSD_B64_NTOP_B64_PTON |
1084 | bool "Support b64_ntop(), b64_pton() (bsd-compat)" | |
1085 | help | |
1086 | Answer Y if you need additional BSD compatibility | |
1087 | (e.g. for openbsd-netcat). | |
1088 | ||
1089 | Most people will say N. | |
1090 | ||
4cc4b304 BRF |
1091 | config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL |
1092 | bool "SYSV obsolete signal functions" | |
4cc4b304 BRF |
1093 | help |
1094 | Use of sysv_signal() should be avoided; use sigaction(2) instead. | |
1095 | ||
1096 | If unsure, say N. | |
1097 | ||
1098 | config UCLIBC_NTP_LEGACY | |
1099 | bool "ntp_*() aliases" | |
4cc4b304 BRF |
1100 | help |
1101 | Provide legacy aliases for ntp functions: | |
1102 | ntp_adjtime(), ntp_gettime() | |
1103 | ||
1104 | It is safe to say N here. | |
1105 | ||
1106 | config UCLIBC_SV4_DEPRECATED | |
1107 | bool "Enable SVr4 deprecated functions" | |
4cc4b304 BRF |
1108 | help |
1109 | These functions are DEPRECATED in System V release 4. | |
1110 | Say N unless you desparately need one of the functions below: | |
1111 | ||
1112 | ustat() [use statfs(2) in your code instead] | |
1113 | ||
1114 | config UCLIBC_HAS_REALTIME | |
1115 | bool "Realtime-related family of SUSv functions" | |
1116 | default y | |
4cc4b304 BRF |
1117 | help |
1118 | These functions are part of the Timers option and need not | |
1119 | be available on all implementations. | |
1120 | Includes AIO, message-queue, scheduler, semaphore functions: | |
1121 | ||
1122 | aio.h | |
1123 | mqueue.h | |
1124 | sched.h | |
1125 | semaphore.h | |
1126 | ||
1127 | aio_cancel() | |
1128 | aio_error() | |
1129 | aio_fsync() | |
1130 | aio_read() | |
1131 | lio_listio() | |
1132 | aio_return() | |
1133 | aio_suspend() | |
1134 | aio_write() | |
1135 | clock_getres(), clock_gettime(), clock_settime() | |
1136 | fdatasync() | |
1137 | mlockall(), munlockall() | |
1138 | mlock(), munlock() | |
1139 | mq_close() | |
1140 | mq_getattr() | |
1141 | mq_notify() | |
1142 | mq_open() | |
1143 | mq_receive() | |
1144 | mq_send() | |
1145 | mq_setattr() | |
1146 | mq_unlink() | |
1147 | nanosleep() | |
1148 | sched_getparam() | |
1149 | sched_get_priority_max(), sched_get_priority_min() | |
1150 | sched_getscheduler() | |
1151 | sched_rr_get_interval() | |
1152 | sched_setparam() | |
1153 | sched_setscheduler() | |
1154 | sem_close() | |
1155 | sem_destroy() | |
1156 | sem_getvalue() | |
1157 | sem_init() | |
1158 | sem_open() | |
1159 | sem_post() | |
1160 | sem_trywait(), sem_wait() | |
1161 | sem_unlink() | |
1162 | sigqueue() | |
1163 | sigtimedwait(), sigwaitinfo() | |
1164 | timer_create() | |
1165 | timer_delete() | |
1166 | timer_getoverrun(), timer_gettime(), timer_settime() | |
1167 | ||
1168 | config UCLIBC_HAS_ADVANCED_REALTIME | |
1169 | bool "Advanced realtime-related family of SUSv functions" | |
1170 | default y | |
1171 | depends on UCLIBC_HAS_REALTIME | |
1172 | help | |
1173 | These functions are part of the Timers option and need not | |
1174 | be available on all implementations. | |
1175 | ||
1176 | clock_getcpuclockid() | |
1177 | clock_nanosleep() | |
1178 | mq_timedreceive() | |
1179 | mq_timedsend() | |
1180 | posix_fadvise() | |
1181 | posix_fallocate() | |
1182 | posix_madvise() | |
1183 | posix_memalign() | |
1184 | posix_mem_offset() | |
1185 | posix_spawnattr_destroy(), posix_spawnattr_init() | |
1186 | posix_spawnattr_getflags(), posix_spawnattr_setflags() | |
1187 | posix_spawnattr_getpgroup(), posix_spawnattr_setpgroup() | |
1188 | posix_spawnattr_getschedparam(), posix_spawnattr_setschedparam() | |
1189 | posix_spawnattr_getschedpolicy(), posix_spawnattr_setschedpolicy() | |
1190 | posix_spawnattr_getsigdefault(), posix_spawnattr_setsigdefault() | |
1191 | posix_spawnattr_getsigmask(), posix_spawnattr_setsigmask() | |
1192 | posix_spawn_file_actions_addclose() | |
1193 | posix_spawn_file_actions_adddup2() | |
1194 | posix_spawn_file_actions_addopen() | |
1195 | posix_spawn_file_actions_destroy() | |
1196 | posix_spawn_file_actions_init() | |
1197 | posix_spawn() | |
1198 | posix_spawnp() | |
1199 | posix_typed_mem_get_info() | |
1200 | pthread_mutex_timedlock() | |
1201 | sem_timedwait() | |
1202 | ||
1203 | #config UCLIBC_HAS_TERMIOS | |
1204 | # bool "termios functions" | |
1205 | # default y | |
1206 | # help | |
1207 | # Get and set terminal attributes, line control, get and set baud | |
1208 | # rate. | |
1209 | # termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), | |
1210 | # tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(), | |
1211 | # cfsetispeed(), cfsetospeed(), cfsetspeed() | |
1212 | # | |
1213 | # If unsure, say Y. | |
1214 | ||
1215 | config UCLIBC_HAS_EPOLL | |
1216 | bool "epoll" | |
1217 | default y | |
1218 | help | |
1219 | epoll_create(), epoll_ctl(), epoll_wait() functions. | |
1220 | ||
1221 | config UCLIBC_HAS_XATTR | |
1222 | bool "Extended Attributes" | |
1223 | default y | |
1224 | help | |
1225 | Extended Attributes support. | |
1226 | ||
1227 | setxattr() | |
1228 | lsetxattr() | |
1229 | fsetxattr() | |
1230 | getxattr() | |
1231 | lgetxattr() | |
1232 | fgetxattr() | |
1233 | listxattr() | |
1234 | llistxattr() | |
1235 | flistxattr() | |
1236 | removexattr() | |
1237 | lremovexattr() | |
1238 | fremovexattr() | |
1239 | ||
1240 | Say N unless you need support for extended attributes and the | |
1241 | filesystems do actually support them. | |
1242 | ||
1243 | config UCLIBC_HAS_PROFILING | |
1244 | bool "Profiling support" | |
1245 | default y | |
1246 | help | |
1247 | gcc's -finstrument-functions needs these. | |
1248 | ||
1249 | Most people can safely answer N. | |
07beb34d BRF |
1250 | |
1251 | config UCLIBC_HAS_CRYPT_IMPL | |
1252 | bool "libcrypt support" | |
1253 | default y | |
1254 | help | |
1255 | libcrypt contains crypt(), setkey() and encrypt() | |
1256 | ||
3ac5fd7e WP |
1257 | config UCLIBC_HAS_SHA256_CRYPT_IMPL |
1258 | bool "libcrypt SHA256 support" | |
1259 | depends on UCLIBC_HAS_CRYPT_IMPL | |
1260 | help | |
1261 | This adds support for SHA256 password hashing via the crypt() function. | |
1262 | Say N here if you do not need SHA256 crypt support. | |
1263 | ||
4c24dabb WP |
1264 | config UCLIBC_HAS_SHA512_CRYPT_IMPL |
1265 | bool "libcrypt SHA512 support" | |
1266 | depends on UCLIBC_HAS_CRYPT_IMPL | |
1267 | help | |
1268 | This adds support for SHA512 password hashing via the crypt() function. | |
1269 | Say N here if you do not need SHA512 crypt support. | |
1270 | ||
07beb34d BRF |
1271 | config UCLIBC_HAS_CRYPT_STUB |
1272 | bool "libcrypt stubs" | |
1273 | default y | |
1274 | depends on !UCLIBC_HAS_CRYPT_IMPL | |
1275 | help | |
1276 | Standards mandate that crypt(3) provides a stub if it is unavailable. | |
1277 | If you enable this option then stubs for | |
1278 | crypt(), setkey() and encrypt() | |
1279 | will be provided in a small libcrypt. | |
1280 | ||
1281 | config UCLIBC_HAS_CRYPT | |
1282 | def_bool y | |
1283 | depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB | |
07b15c5f PK |
1284 | endmenu |
1285 | ||
4cc4b304 BRF |
1286 | menuconfig UCLIBC_HAS_NETWORK_SUPPORT |
1287 | bool "Networking Support" | |
1288 | default y | |
1289 | help | |
1290 | Say N here if you do not need network support. | |
1291 | ||
1292 | if UCLIBC_HAS_NETWORK_SUPPORT | |
1293 | config UCLIBC_HAS_SOCKET | |
1294 | bool "Socket support" | |
1295 | default y | |
1296 | help | |
1297 | If you want to include support for sockets then answer Y. | |
1298 | ||
1299 | config UCLIBC_HAS_IPV4 | |
1300 | bool "IP version 4 support" | |
1301 | default y | |
1302 | select UCLIBC_HAS_SOCKET | |
1303 | help | |
1304 | If you want to include support for the Internet Protocol | |
1305 | (IP version 4) then answer Y. | |
1306 | ||
1307 | Most people will say Y. | |
6737908f EA |
1308 | |
1309 | config UCLIBC_HAS_IPV6 | |
4cc4b304 | 1310 | bool "IP version 6 support" |
4cc4b304 | 1311 | select UCLIBC_HAS_SOCKET |
6737908f EA |
1312 | help |
1313 | If you want to include support for the next version of the Internet | |
1314 | Protocol (IP version 6) then answer Y. | |
b8728981 | 1315 | |
6737908f EA |
1316 | Most people should answer N. |
1317 | ||
c4754292 MF |
1318 | config UCLIBC_USE_NETLINK |
1319 | bool "Use netlink to query interfaces" | |
4cc4b304 | 1320 | depends on UCLIBC_HAS_SOCKET |
c4754292 MF |
1321 | help |
1322 | In newer versions of Linux (2.4.17+), support was added for querying | |
1323 | network device information via netlink rather than the old style | |
1324 | ioctl's. Most of the time, the older ioctl style is sufficient (and | |
1325 | it is smaller than netlink), but if you find that not all of your | |
1326 | devices are being returned by the if_nameindex() function, you will | |
1327 | have to use the netlink implementation. | |
1328 | ||
253acb10 | 1329 | Most people can safely answer N. |
6c1d86dc RW |
1330 | |
1331 | config UCLIBC_SUPPORT_AI_ADDRCONFIG | |
1332 | bool "Support the AI_ADDRCONFIG flag" | |
1333 | depends on UCLIBC_USE_NETLINK | |
6c1d86dc RW |
1334 | help |
1335 | The implementation of AI_ADDRCONFIG is aligned with the glibc | |
1336 | implementation using netlink to query interfaces to find both | |
1337 | ipv4 and ipv6 support. This is only needed if an application uses | |
1338 | the AI_ADDRCONFIG flag. | |
1339 | ||
1340 | Most people can safely answer N. | |
253acb10 | 1341 | |
c9b42656 BRF |
1342 | config UCLIBC_HAS_BSD_RES_CLOSE |
1343 | bool "Support res_close() (bsd-compat)" | |
c9b42656 BRF |
1344 | help |
1345 | Answer Y if you desperately want to support BSD compatibility in | |
1346 | the network code. | |
1347 | ||
1348 | Most people will say N. | |
1349 | ||
97a8f9f4 DV |
1350 | config UCLIBC_HAS_COMPAT_RES_STATE |
1351 | bool "Use compatible but bloated _res" | |
1352 | default y | |
1353 | help | |
1354 | Answer Y if you build network utilities and they muck with resolver | |
1355 | internals a lot (_res global structure). uclibc does not use most | |
1356 | of _res.XXX fields, and with this option OFF they won't even exist. | |
1357 | Which will make e.g. dig build fail. | |
1358 | Answering N saves around 400 bytes in bss. | |
1359 | ||
1360 | config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE | |
1361 | bool "Use extra compatible but extra bloated _res" | |
97a8f9f4 DV |
1362 | help |
1363 | Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough. | |
1364 | As far as I can say, this should never be needed. | |
1365 | ||
466f1101 DM |
1366 | config UCLIBC_HAS_RESOLVER_SUPPORT |
1367 | bool "DNS resolver functions" | |
1368 | select UCLIBC_HAS_COMPAT_RES_STATE | |
e0b741c2 | 1369 | depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6 |
466f1101 DM |
1370 | help |
1371 | Provide implementations for DNS resolver functions. | |
1372 | In particular, the following functions will be added to the | |
1373 | library: | |
1374 | ||
7059926a BRF |
1375 | ns_skiprr, ns_initparse, ns_parserr, ns_msg_getflag, |
1376 | res_mkquery, res_init, res_ninit, res_close, res_nclose | |
1377 | res_query, res_search, res_querydomain, | |
1378 | dn_expand, dn_comp, | |
1379 | ns_name_uncompress, ns_name_ntop, ns_name_pton, ns_name_unpack, | |
1380 | ns_name_pack, ns_name_compress, ns_name_skip, dn_skipname, | |
466f1101 DM |
1381 | ns_get16, ns_get32, ns_put16, ns_put32 |
1382 | ||
f73fcb3d | 1383 | choice |
1384 | prompt "DNS Query ID generation" | |
1385 | default UCLIBC_DNSRAND_MODE_PRNGPLUS | |
1386 | help | |
1387 | Control how successive dns query ids' are generated during | |
1388 | dns lookup. | |
1389 | ||
1390 | config UCLIBC_DNSRAND_MODE_URANDOM | |
1391 | bool "urandom" | |
1392 | help | |
1393 | "urandom" uses /dev/urandom available under many unix flavours | |
1394 | to generate dns query id. This can generate good random ids, | |
1395 | by dipping into the entropy pool maintained by the system. | |
1396 | However this is relatively slow compared to the other options, | |
1397 | as it may involve cryptographic operations internally and | |
1398 | kernel-userspace handshake. | |
1399 | ||
1400 | config UCLIBC_DNSRAND_MODE_CLOCK | |
1401 | bool "clock" | |
1402 | depends on UCLIBC_HAS_REALTIME | |
1403 | help | |
1404 | "clock" uses CLOCK_REALTIME of the system to generate plausibly | |
1405 | random dns query id. Systems require to have clock source with | |
1406 | nanosec granularity mapped to this clock id for this to generate | |
1407 | plausibly random values. However has processor and io performances | |
1408 | improve in future, its effectiveness can get impacted. | |
1409 | ||
1410 | config UCLIBC_DNSRAND_MODE_PRNGPLUS | |
1411 | bool "prngplus" | |
1412 | help | |
1413 | "prngplus" uses random prng available within uclibc, to indirectly | |
1414 | generate the dns query id. This tries to provide a good balance | |
1415 | between speed and randomness to an extent. It periodically reseeds | |
1416 | the prng using random value generated from either the urandom or | |
1417 | else the clock, if either of them is available. Additionally applies | |
1418 | transform (one way, if possible) on internal generated random values. | |
1419 | These make it difficult to infer internal state of prng from unbroken | |
1420 | sequences of exposed random values. | |
1421 | This is the default. | |
1422 | ||
1423 | config UCLIBC_DNSRAND_MODE_SIMPLECOUNTER | |
1424 | bool "simplecounter" | |
1425 | help | |
1426 | "simplecounter" uses a simple counter to generate dns query id. | |
1427 | This is a very simple logic and can be subjected to dns poison | |
1428 | attack relatively easily. | |
1429 | It is recommended to avoid this option. | |
1430 | ||
1431 | endchoice | |
1432 | ||
1433 | ||
4cc4b304 | 1434 | endif |
6737908f EA |
1435 | |
1436 | ||
1437 | menu "String and Stdio Support" | |
1438 | ||
bec90733 | 1439 | config UCLIBC_HAS_STRING_GENERIC_OPT |
15ffa43f | 1440 | bool "Use faster (but larger) generic string functions" |
bec90733 MNI |
1441 | default y |
1442 | help | |
1443 | Answer Y to use the (tweaked) glibc generic string functions. | |
15ffa43f | 1444 | |
bec90733 MNI |
1445 | In general, they are faster (but 3-5K larger) than the base |
1446 | uClibc string functions which are optimized solely for size. | |
1447 | ||
b8728981 | 1448 | Many people will answer Y. |
bec90733 MNI |
1449 | |
1450 | config UCLIBC_HAS_STRING_ARCH_OPT | |
15ffa43f | 1451 | bool "Use arch-specific assembly string functions (where available)" |
bec90733 MNI |
1452 | default y |
1453 | help | |
15ffa43f RL |
1454 | Answer Y to use any archtecture-specific assembly language string |
1455 | functions available for this target plaform. | |
1456 | ||
1457 | Note that assembly implementations are not available for all string | |
1458 | functions, so some generic (written in C) string functions may | |
1459 | still be used. | |
bec90733 | 1460 | |
15ffa43f RL |
1461 | These are small and fast, the only reason _not_ to say Y here is |
1462 | for debugging purposes. | |
bec90733 | 1463 | |
926a698c BRF |
1464 | config UCLIBC_HAS_STDIO_FUTEXES |
1465 | bool "Use futexes for multithreaded I/O locking" | |
1466 | depends on UCLIBC_HAS_THREADS_NATIVE | |
1467 | help | |
1468 | If you want to compile uClibc to use futexes for low-level | |
1469 | I/O locking, answer Y. Otherwise, answer N. | |
1470 | ||
f2239854 MNI |
1471 | config UCLIBC_HAS_CTYPE_TABLES |
1472 | bool "Use Table Versions Of 'ctype.h' Functions." | |
1473 | default y | |
1474 | help | |
1475 | Answer Y to use table versions of the 'ctype.h' functions. | |
1476 | While the non-table versions are often smaller when building | |
09710a49 | 1477 | statically linked apps, they work only in stub locale mode. |
b8728981 | 1478 | |
f2239854 MNI |
1479 | Most people will answer Y. |
1480 | ||
12172897 | 1481 | config UCLIBC_HAS_CTYPE_SIGNED |
39aa3280 | 1482 | bool "Support Signed Characters In 'ctype.h' Functions." |
3afa0348 | 1483 | depends on UCLIBC_HAS_CTYPE_TABLES |
12172897 MNI |
1484 | default y |
1485 | help | |
1486 | Answer Y to enable support for passing signed char values to | |
39aa3280 | 1487 | the 'ctype.h' functions. ANSI/ISO C99 and SUSv3 specify that |
12172897 MNI |
1488 | these functions are only defined for unsigned char values and |
1489 | EOF. However, glibc allows negative signed char values as well | |
1490 | in order to support 'broken old programs'. | |
1491 | ||
1492 | Most people will answer Y. | |
1493 | ||
1494 | choice | |
39aa3280 | 1495 | prompt "ctype argument checking" |
3afa0348 | 1496 | depends on UCLIBC_HAS_CTYPE_TABLES |
39aa3280 | 1497 | default UCLIBC_HAS_CTYPE_UNSAFE |
12172897 | 1498 | help |
bd370199 BRF |
1499 | Please select the invalid arg behavior you want for the 'ctype' |
1500 | functions. | |
12172897 | 1501 | |
39aa3280 | 1502 | The 'ctype' functions are now implemented using table lookups, with |
12172897 MNI |
1503 | the arg being the index. This can result in incorrect memory accesses |
1504 | or even segfaults for args outside of the allowed range. | |
1505 | ||
39aa3280 | 1506 | NOTE: This only affects the 'ctype' _functions_. It does not affect |
12172897 MNI |
1507 | the macro implementations. |
1508 | ||
1509 | config UCLIBC_HAS_CTYPE_UNSAFE | |
39aa3280 | 1510 | bool "Do not check -- unsafe" |
12172897 MNI |
1511 | |
1512 | config UCLIBC_HAS_CTYPE_CHECKED | |
39aa3280 | 1513 | bool "Detect and handle appropriately" |
12172897 MNI |
1514 | |
1515 | config UCLIBC_HAS_CTYPE_ENFORCED | |
39aa3280 | 1516 | bool "Issue a diagnostic and abort()" |
12172897 MNI |
1517 | |
1518 | endchoice | |
1519 | ||
39aa3280 | 1520 | |
6737908f | 1521 | config UCLIBC_HAS_WCHAR |
2956cfac | 1522 | bool "Wide Character Support" |
6737908f | 1523 | help |
b8728981 | 1524 | Answer Y to enable wide character support. This will make uClibc |
12172897 | 1525 | much larger. It is also currently required for locale support. |
6737908f EA |
1526 | |
1527 | Most people will answer N. | |
1528 | ||
4fa7ed93 WB |
1529 | config UCLIBC_HAS_LIBICONV |
1530 | bool "Iconv Support" | |
f81442f0 | 1531 | select UCLIBC_HAS_WCHAR |
4fa7ed93 WB |
1532 | help |
1533 | Add tiny iconv support for charset conversion from and to UTF-8. | |
1534 | ||
b39b5151 WB |
1535 | config UCLIBC_HAS_LIBINTL |
1536 | bool "Intl stubs support" | |
1537 | help | |
1538 | If you enable this option you get stubs for the gettext family of | |
1539 | functions. | |
1540 | ||
6737908f | 1541 | config UCLIBC_HAS_LOCALE |
86be4f7e | 1542 | bool "Locale Support" |
f2239854 | 1543 | select UCLIBC_HAS_WCHAR |
c66fd044 | 1544 | select UCLIBC_HAS_CTYPE_TABLES |
a2c56ee4 | 1545 | select UCLIBC_HAS_LIBICONV |
6737908f | 1546 | help |
4a18ebe8 | 1547 | uClibc now has full ANSI/ISO C99 locale support (except for |
f8853afb | 1548 | wcsftime() and collating items in regex). Be aware that enabling |
b8728981 EA |
1549 | this option will make uClibc much larger. |
1550 | ||
f8853afb EA |
1551 | Enabling UCLIBC_HAS_LOCALE with the default set of supported locales |
1552 | (169 UTF-8 locales, and 144 locales for other codesets) will enlarge | |
4a18ebe8 | 1553 | uClibc by around 300k. You can reduce this size by building your own |
f8853afb EA |
1554 | custom set of locate data (see extra/locale/LOCALES for details). |
1555 | ||
1556 | uClibc's locale support is still under development. For example, | |
1557 | codesets using shift states are not currently supported. Support is | |
1558 | planned in the next iteration of locale support. | |
6737908f | 1559 | |
f8853afb EA |
1560 | Answer Y to enable locale support. Most people will answer N. |
1561 | ||
575c76ab BRF |
1562 | choice |
1563 | ||
1564 | prompt "Locale data" | |
1565 | depends on UCLIBC_HAS_LOCALE | |
b5d946a3 | 1566 | default UCLIBC_BUILD_MINIMAL_LOCALE |
575c76ab BRF |
1567 | |
1568 | config UCLIBC_BUILD_MINIMAL_LOCALE | |
1569 | bool "Only selected locales" | |
1570 | depends on UCLIBC_HAS_LOCALE | |
575c76ab BRF |
1571 | help |
1572 | If you do not need all locales that are available on your | |
1573 | host-box, then set this to 'Y'. | |
1574 | ||
b5d946a3 WB |
1575 | config UCLIBC_BUILD_ALL_LOCALE |
1576 | bool "All locales" | |
1577 | depends on UCLIBC_HAS_LOCALE | |
1578 | help | |
1579 | This builds all the locales that are available on your | |
1580 | host-box. | |
1581 | ||
575c76ab BRF |
1582 | endchoice |
1583 | ||
1584 | config UCLIBC_BUILD_MINIMAL_LOCALES | |
1585 | string "locales to use" | |
1586 | depends on UCLIBC_BUILD_MINIMAL_LOCALE | |
1587 | default "en_US" | |
1588 | help | |
1589 | Space separated list of locales to use. | |
1590 | ||
1591 | E.g.: | |
1592 | en_US en_GB de_AT | |
1593 | default: | |
1594 | en_US | |
1595 | ||
12172897 MNI |
1596 | config UCLIBC_HAS_XLOCALE |
1597 | bool "Extended Locale Support (experimental/incomplete)" | |
1598 | depends on UCLIBC_HAS_LOCALE | |
12172897 MNI |
1599 | help |
1600 | Answer Y to enable extended locale support similar to that provided | |
bd370199 BRF |
1601 | by glibc. This is primarily intended to support libstd++ |
1602 | functionality. | |
1603 | However, it also allows thread-specific locale selection via | |
1604 | uselocale(). | |
12172897 MNI |
1605 | |
1606 | Most people will answer N. | |
1607 | ||
12172897 MNI |
1608 | config UCLIBC_HAS_HEXADECIMAL_FLOATS |
1609 | bool "Support hexadecimal float notation" | |
3afa0348 | 1610 | depends on UCLIBC_HAS_CTYPE_TABLES |
db07e536 | 1611 | depends on UCLIBC_HAS_FLOATS |
12172897 MNI |
1612 | help |
1613 | Answer Y to enable support for hexadecimal float notation in the | |
1614 | (wchar and) char string to floating point conversion functions, as | |
1615 | well as support for the %a and %A conversion specifiers in the | |
1616 | *printf() and *scanf() functions. | |
1617 | ||
1618 | Most people will answer N. | |
1619 | ||
1620 | config UCLIBC_HAS_GLIBC_DIGIT_GROUPING | |
39aa3280 | 1621 | bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping" |
12172897 | 1622 | depends on UCLIBC_HAS_LOCALE |
db07e536 | 1623 | depends on UCLIBC_HAS_FLOATS |
12172897 | 1624 | help |
bd370199 BRF |
1625 | Answer Y to enable support for glibc's \"'\" flag for allowing |
1626 | locale-specific digit grouping in base 10 integer conversions and | |
1627 | appropriate floating point conversions in the *printf() and *scanf() | |
1628 | functions. | |
12172897 MNI |
1629 | |
1630 | Most people will answer N. | |
1631 | ||
1632 | config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING | |
39aa3280 | 1633 | bool "Do not require digit grouping when the \"'\" flag is specified" |
12172897 MNI |
1634 | depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING |
1635 | default y | |
1636 | help | |
bd370199 BRF |
1637 | Answer Y to make digit grouping optional when the \"'\" flag is |
1638 | specified. | |
12172897 | 1639 | This is the standard glibc behavior. If the initial string of digits |
bd370199 BRF |
1640 | exceeds the maximum group number, the input will be treated as a |
1641 | normal non-grouped number. | |
12172897 MNI |
1642 | |
1643 | Most people will answer N. | |
1644 | ||
39aa3280 EA |
1645 | config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF |
1646 | bool "Support glibc's register_printf_function() (glibc-compat)" | |
db07e536 | 1647 | depends on !USE_OLD_VFPRINTF |
39aa3280 EA |
1648 | help |
1649 | Answer Y to support glibc's register_printf_function() to allow an | |
1650 | application to add its own printf conversion specifiers. | |
8116ca7b | 1651 | parse_printf_format() is also enabled. |
39aa3280 | 1652 | |
bd370199 BRF |
1653 | NOTE: Limits the number or registered specifiers to 10. |
1654 | NOTE: Requires new conversion specifiers to be ASCII | |
eb33ef8a MF |
1655 | characters (0-0x7f). This is to avoid problems with processing |
1656 | format strings in locales with different multibyte conversions. | |
39aa3280 EA |
1657 | |
1658 | Most people will answer N. | |
1659 | ||
6737908f EA |
1660 | config USE_OLD_VFPRINTF |
1661 | bool "Use the old vfprintf implementation" | |
f2239854 | 1662 | depends on !UCLIBC_HAS_WCHAR |
6737908f | 1663 | help |
bd370199 BRF |
1664 | Set to true to use the old vfprintf instead of the new. This is |
1665 | roughly C89 compliant with some extensions, and is much smaller. | |
1666 | However, it does not support wide chars, positional args, or glibc | |
1667 | custom printf specifiers. | |
6737908f EA |
1668 | |
1669 | Most people will answer N. | |
1670 | ||
12172897 MNI |
1671 | config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS |
1672 | int "Maximum number of positional args. Either 0 or >= 9." | |
1673 | depends on !USE_OLD_VFPRINTF | |
1674 | default 9 | |
1675 | help | |
bd370199 BRF |
1676 | Set the maximum number of positional args supported by the |
1677 | printf/scanf functions. The Single Unix Specification Version 3 | |
1678 | requires a minimum value of 9. Setting this to a value lower than | |
1679 | 9 will disable positional arg support and cause the NL_ARGMAX macro | |
1680 | in limits.h to be #undef'd. | |
1681 | ||
1682 | WARNING! The workspace to support positional args is currently | |
1683 | allocated on the stack. You probably don't want to set | |
1684 | this to too high a value. | |
12172897 MNI |
1685 | |
1686 | Most people will answer 9. | |
1687 | ||
12172897 MNI |
1688 | choice |
1689 | prompt "Stdio buffer size" | |
5660d0d4 | 1690 | default UCLIBC_HAS_STDIO_BUFSIZ_4096 |
12172897 MNI |
1691 | help |
1692 | Please select a value for BUFSIZ. This will be used by the | |
1693 | stdio subsystem as the default buffer size for a file, and | |
1694 | affects fopen(), setvbuf(), etc. | |
1695 | ||
39aa3280 | 1696 | NOTE: Setting this to 'none' will disable buffering completely. |
12172897 MNI |
1697 | However, BUFSIZ will still be defined in stdio.h as 256 because |
1698 | many applications use this value. | |
1699 | ||
1700 | config UCLIBC_HAS_STDIO_BUFSIZ_NONE | |
1701 | bool "none (WARNING - BUFSIZ will be 256 in stdio.h)" | |
3afa0348 | 1702 | depends on !UCLIBC_HAS_WCHAR |
12172897 MNI |
1703 | |
1704 | config UCLIBC_HAS_STDIO_BUFSIZ_256 | |
1705 | bool "256 (minimum ANSI/ISO C99 value)" | |
1706 | ||
1707 | config UCLIBC_HAS_STDIO_BUFSIZ_512 | |
1708 | bool "512" | |
1709 | ||
1710 | config UCLIBC_HAS_STDIO_BUFSIZ_1024 | |
1711 | bool "1024" | |
1712 | ||
1713 | config UCLIBC_HAS_STDIO_BUFSIZ_2048 | |
1714 | bool "2048" | |
1715 | ||
1716 | config UCLIBC_HAS_STDIO_BUFSIZ_4096 | |
1717 | bool "4096" | |
1718 | ||
1719 | config UCLIBC_HAS_STDIO_BUFSIZ_8192 | |
1720 | bool "8192" | |
1721 | ||
1722 | # If you add more choices, you will need to update uClibc_stdio.h. | |
1723 | ||
1724 | endchoice | |
1725 | ||
39aa3280 EA |
1726 | choice |
1727 | prompt "Stdio builtin buffer size (uClibc-specific)" | |
3afa0348 | 1728 | depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE |
39aa3280 EA |
1729 | default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE |
1730 | help | |
1731 | When a FILE is created with fopen(), an attempt is made to allocate | |
1732 | a BUFSIZ buffer for it. If the allocation fails, fopen() will still | |
1733 | succeed but the FILE will be unbuffered. | |
1734 | ||
1735 | This option adds a small amount of space to each FILE to act as an | |
4a18ebe8 | 1736 | emergency buffer in the event of a buffer allocation failure. |
39aa3280 EA |
1737 | |
1738 | Most people will answer None. | |
1739 | ||
1740 | config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE | |
1741 | bool "None" | |
1742 | ||
1743 | config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 | |
1744 | bool "4" | |
1745 | ||
1746 | config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 | |
1747 | bool "8" | |
1748 | ||
1749 | # If you add more choices, you will need to update uClibc_stdio.h. | |
1750 | ||
1751 | endchoice | |
1752 | ||
0f8a6ff0 | 1753 | config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT |
385a0b9d | 1754 | bool "Attempt to shutdown stdio subsystem when abort() is called." |
0f8a6ff0 | 1755 | help |
bd370199 BRF |
1756 | ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was |
1757 | a behavioral change made in SUSv3. Previously, abort() was required | |
1758 | to have the affect of fclose() on all open streams. The wording has | |
1759 | been changed to "may" from "shall". | |
0f8a6ff0 MNI |
1760 | |
1761 | Most people will answer N. | |
1762 | ||
12172897 MNI |
1763 | config UCLIBC_HAS_STDIO_GETC_MACRO |
1764 | bool "Provide a macro version of getc()" | |
3afa0348 | 1765 | depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE |
12172897 MNI |
1766 | default y |
1767 | help | |
1768 | Provide a macro version of getc(). | |
1769 | ||
1770 | Most people will answer Y. | |
1771 | ||
1772 | config UCLIBC_HAS_STDIO_PUTC_MACRO | |
1773 | bool "Provide a macro version of putc()" | |
3afa0348 | 1774 | depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE |
12172897 MNI |
1775 | default y |
1776 | help | |
1777 | Provide a macro version of putc(). | |
1778 | ||
1779 | Most people will answer Y. | |
1780 | ||
1781 | config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION | |
1782 | bool "Support auto-r/w transition" | |
1783 | default y | |
1784 | help | |
1785 | Answer Y to enable the stdio subsystem to automaticly transition | |
bd370199 BRF |
1786 | between reading and writing. This relaxes the ANSI/ISO C99 |
1787 | requirement: | |
1788 | ||
1789 | When a file is opened with update mode ('+' as the second or third | |
1790 | character in the list of mode argument values), both input and output | |
1791 | may be performed on the associated stream. However, output shall not | |
1792 | be directly followed by input without an intervening call to the | |
1793 | fflush function or to a file positioning function (fseek, fsetpos, | |
1794 | or rewind), and input shall not be directly followed by output without | |
1795 | an intervening call to a file positioning function, unless the input | |
1796 |