]> Git Repo - uclibc-ng.git/blame - extra/Configs/Config.in
tmp
[uclibc-ng.git] / extra / Configs / Config.in
CommitLineData
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 6mainmenu "uClibc-ng $VERSION C Library Configuration"
3a5c27d1 7
554b79bf
BRF
8config DESIRED_TARGET_ARCH
9 string
10 option env="ARCH"
11
e286a674
BRF
12config VERSION
13 string
14 option env="VERSION"
15
3a5c27d1
BRF
16choice
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
52config TARGET_aarch64
53 bool "aarch64"
54
3b02a1d5
WB
55config TARGET_alpha
56 bool "alpha"
3a5c27d1 57
917b9eeb
VG
58config TARGET_arc
59 bool "arc"
60
3a5c27d1
BRF
61config TARGET_arm
62 bool "arm"
63
64config TARGET_avr32
65 bool "avr32"
66
67config 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
72config TARGET_c6x
73 bool "c6x"
1d57dcdd 74
3a5c27d1
BRF
75config TARGET_cris
76 bool "cris"
77
2fcffe26
GR
78config TARGET_csky
79 bool "csky"
80
adedda21
WB
81config TARGET_frv
82 bool "frv"
3a5c27d1 83
8df92aac
YS
84config TARGET_h8300
85 bool "h8300"
3a5c27d1 86
acffbf7d
WB
87config TARGET_hppa
88 bool "hppa"
3a5c27d1
BRF
89
90config TARGET_i386
91 bool "i386"
92
9747e322
WB
93config TARGET_ia64
94 bool "ia64"
3a5c27d1 95
672a3038
YS
96config TARGET_kvx
97 bool "kvx"
98
312f482d
WB
99config TARGET_lm32
100 bool "lm32"
101
3a5c27d1
BRF
102config TARGET_m68k
103 bool "m68k"
104
2de0dec4
WB
105config TARGET_metag
106 bool "metag"
22686a13 107
6252572a
WB
108config TARGET_microblaze
109 bool "microblaze"
3a5c27d1
BRF
110
111config TARGET_mips
112 bool "mips"
113
ee92c0fe
WB
114config TARGET_nds32
115 bool "nds32"
116
f972c226
WB
117config TARGET_nios2
118 bool "nios2"
3a5c27d1 119
4d8e5484
WB
120config TARGET_or1k
121 bool "or1k"
122
3a5c27d1
BRF
123config TARGET_powerpc
124 bool "powerpc"
125
9595fb8c
WB
126config TARGET_riscv64
127 bool "riscv64"
128
0a5466d8 129config TARGET_riscv32
130 bool "riscv32"
131
3a5c27d1
BRF
132config TARGET_sh
133 bool "superh"
134
3a5c27d1
BRF
135config TARGET_sparc
136 bool "sparc"
137
041cdc27
WB
138config TARGET_sparc64
139 bool "sparc64"
140
490e84f5
WB
141config TARGET_tile
142 bool "tile"
143
3a5c27d1
BRF
144config TARGET_x86_64
145 bool "x86_64"
146
147config TARGET_xtensa
148 bool "xtensa"
149
150endchoice
151
b1638b69
WB
152config 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
162config 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
173menu "Target Architecture Features and Options"
174
dba942c8
WB
175if TARGET_aarch64
176source "extra/Configs/Config.aarch64"
177endif
178
3a5c27d1
BRF
179if TARGET_alpha
180source "extra/Configs/Config.alpha"
181endif
182
183if TARGET_arm
184source "extra/Configs/Config.arm"
185endif
186
187if TARGET_avr32
188source "extra/Configs/Config.avr32"
189endif
190
191if TARGET_bfin
192source "extra/Configs/Config.bfin"
193endif
194
195if TARGET_cris
196source "extra/Configs/Config.cris"
197endif
198
2fcffe26
GR
199if TARGET_csky
200source "extra/Configs/Config.csky"
201endif
202
3a5c27d1
BRF
203if TARGET_frv
204source "extra/Configs/Config.frv"
205endif
206
207if TARGET_h8300
208source "extra/Configs/Config.h8300"
209endif
210
211if TARGET_hppa
212source "extra/Configs/Config.hppa"
213endif
214
215if TARGET_i386
216source "extra/Configs/Config.i386"
217endif
218
3a5c27d1
BRF
219if TARGET_ia64
220source "extra/Configs/Config.ia64"
221endif
222
672a3038
YS
223if TARGET_kvx
224source "extra/Configs/Config.kvx"
225endif
226
312f482d
WB
227if TARGET_lm32
228source "extra/Configs/Config.lm32"
229endif
230
3a5c27d1
BRF
231if TARGET_m68k
232source "extra/Configs/Config.m68k"
233endif
234
22686a13
MC
235if TARGET_metag
236source "extra/Configs/Config.metag"
237endif
238
ee92c0fe
WB
239if TARGET_nds32
240source "extra/Configs/Config.nds32"
241endif
242
3a5c27d1
BRF
243if TARGET_nios2
244source "extra/Configs/Config.nios2"
245endif
246
247if TARGET_microblaze
248source "extra/Configs/Config.microblaze"
249endif
250
251if TARGET_mips
252source "extra/Configs/Config.mips"
253endif
254
4d8e5484
WB
255if TARGET_or1k
256source "extra/Configs/Config.or1k"
257endif
258
3a5c27d1
BRF
259if TARGET_powerpc
260source "extra/Configs/Config.powerpc"
261endif
262
9595fb8c
WB
263if TARGET_riscv64
264source "extra/Configs/Config.riscv64"
265endif
266
0a5466d8 267if TARGET_riscv32
268source "extra/Configs/Config.riscv32"
269endif
270
3a5c27d1
BRF
271if TARGET_sh
272source "extra/Configs/Config.sh"
273endif
274
3a5c27d1
BRF
275if TARGET_sparc
276source "extra/Configs/Config.sparc"
277endif
278
041cdc27
WB
279if TARGET_sparc64
280source "extra/Configs/Config.sparc64"
281endif
282
490e84f5
WB
283if TARGET_tile
284source "extra/Configs/Config.tile"
285endif
286
3a5c27d1
BRF
287if TARGET_x86_64
288source "extra/Configs/Config.x86_64"
289endif
290
291if TARGET_xtensa
292source "extra/Configs/Config.xtensa"
293endif
294
46d6a248
AJ
295if TARGET_c6x
296source "extra/Configs/Config.c6x"
297endif
298
917b9eeb
VG
299if TARGET_arc
300source "extra/Configs/Config.arc"
301endif
302
3a5c27d1
BRF
303config 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
315source "extra/Configs/Config.in.arch"
316
317endmenu
318
6737908f
EA
319menu "General Library Settings"
320
f8a3fa02
EA
321config HAVE_NO_PIC
322 bool
f8a3fa02 323
a356ea25 324config 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 332config 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 339config ARCH_HAS_NO_SHARED
1e4f229f 340 bool
1e4f229f 341
f89321f2
MF
342config ARCH_HAS_NO_LDSO
343 bool
a1c0be1a 344 select ARCH_HAS_NO_SHARED
f89321f2 345
a8dc90ea
FF
346config ARCH_HAS_UCONTEXT
347 bool
348
6737908f 349config 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
358config 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 373config 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 385config 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
395config 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 407config 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 415config 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
432config 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
448config 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
458config 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
470config 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 483config 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
492config 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
499config 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
513config 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 524config 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
541config 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
556choice
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
565config HAS_NO_THREADS
566 bool "none"
27b9ce8b 567 help
7345b706 568 Disable thread support.
27b9ce8b 569
6a8ccc95
WB
570config 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
581config 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
601endchoice
602
603config UCLIBC_HAS_THREADS
604 def_bool y if !HAS_NO_THREADS
605
4737dfdd
AF
606config 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
615config 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
632config 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
641config 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
646choice
647 prompt "Malloc Implementation"
701f87d8
MF
648 default MALLOC if ! ARCH_USE_MMU
649 default MALLOC_STANDARD if ARCH_USE_MMU
5d7ab365
BRF
650
651config 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
660config 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
674config 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
687endchoice
688
336849ea
EA
689config 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 704config 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
710config 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
723config 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
733config 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
753config 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
766config 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
773config 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 793config 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
803config 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 810config 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
817config 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
830config 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
842config 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
851config 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
863config 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 875if UNIX98PTY_ONLY
4cc4b304
BRF
876config 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 886endif
4cc4b304 887
7e50fe1a
BRF
888if !UNIX98PTY_ONLY
889# Have to use __libc_ptyname{1,2}[] and related bloat
890config UCLIBC_HAS_GETPT
891 def_bool y
892endif
6737908f 893
5530578d
BRF
894config 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
918config 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
931config 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
941config 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
964config 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
977config 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
986config 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
997endmenu
998
07b15c5f
PK
999menu "Advanced Library Settings"
1000
1001config 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
1011config 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
1021comment "Support various families of functions"
1022
4cc4b304
BRF
1023config 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
1040config 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
1052config UCLIBC_BSD_SPECIFIC
1053 bool "BSD specific functions"
1054 default y
1055 help
1056 mincore(), getdomainname(), setdomainname()
1057
1058 If unsure, say N.
1059
1060config 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
1069config 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
1083config 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
1091config 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
1098config 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
1106config 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
1114config 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
1168config 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
1215config UCLIBC_HAS_EPOLL
1216 bool "epoll"
1217 default y
1218 help
1219 epoll_create(), epoll_ctl(), epoll_wait() functions.
1220
1221config 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
1243config 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
1251config UCLIBC_HAS_CRYPT_IMPL
1252 bool "libcrypt support"
1253 default y
1254 help
1255 libcrypt contains crypt(), setkey() and encrypt()
1256
3ac5fd7e
WP
1257config 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
1264config 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
1271config 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
1281config UCLIBC_HAS_CRYPT
1282 def_bool y
1283 depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
07b15c5f
PK
1284endmenu
1285
4cc4b304
BRF
1286menuconfig 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
1292if UCLIBC_HAS_NETWORK_SUPPORT
1293config 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
1299config 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
1309config 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
1318config 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
1331config 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
1342config 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
1350config 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
1360config 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
1366config 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 1383choice
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
1390config 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
1400config 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
1410config 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
1423config 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
1431endchoice
1432
1433
4cc4b304 1434endif
6737908f
EA
1435
1436
1437menu "String and Stdio Support"
1438
bec90733 1439config 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
1450config 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
1464config 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
1471config 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 1481config 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
1494choice
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
1509config UCLIBC_HAS_CTYPE_UNSAFE
39aa3280 1510 bool "Do not check -- unsafe"
12172897
MNI
1511
1512config UCLIBC_HAS_CTYPE_CHECKED
39aa3280 1513 bool "Detect and handle appropriately"
12172897
MNI
1514
1515config UCLIBC_HAS_CTYPE_ENFORCED
39aa3280 1516 bool "Issue a diagnostic and abort()"
12172897
MNI
1517
1518endchoice
1519
39aa3280 1520
6737908f 1521config 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
1529config 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
1535config 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 1541config 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
1562choice
1563
1564prompt "Locale data"
1565 depends on UCLIBC_HAS_LOCALE
b5d946a3 1566 default UCLIBC_BUILD_MINIMAL_LOCALE
575c76ab
BRF
1567
1568config 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
1575config 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
1582endchoice
1583
1584config 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
1596config 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
1608config 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
1620config 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
1632config 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
1645config 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
1660config 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
1671config 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
1688choice
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
1700config 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
1704config UCLIBC_HAS_STDIO_BUFSIZ_256
1705 bool "256 (minimum ANSI/ISO C99 value)"
1706
1707config UCLIBC_HAS_STDIO_BUFSIZ_512
1708 bool "512"
1709
1710config UCLIBC_HAS_STDIO_BUFSIZ_1024
1711 bool "1024"
1712
1713config UCLIBC_HAS_STDIO_BUFSIZ_2048
1714 bool "2048"
1715
1716config UCLIBC_HAS_STDIO_BUFSIZ_4096
1717 bool "4096"
1718
1719config UCLIBC_HAS_STDIO_BUFSIZ_8192
1720 bool "8192"
1721
1722# If you add more choices, you will need to update uClibc_stdio.h.
1723
1724endchoice
1725
39aa3280
EA
1726choice
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
1740config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1741 bool "None"
1742
1743config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1744 bool "4"
1745
1746config 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
1751endchoice
1752
0f8a6ff0 1753config 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
1763config 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
1772config 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
1781config 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