OSDN Git Service

config: move STDIO_FUTEXES up a bit
[uclinux-h8/uClibc.git] / extra / Configs / Config.in
1 #
2 # For a description of the syntax of this configuration file,
3 # see extra/config/Kconfig-language.txt
4 #
5
6 mainmenu "uClibc $VERSION C Library Configuration"
7
8 config DESIRED_TARGET_ARCH
9         string
10         option env="ARCH"
11
12 config VERSION
13         string
14         option env="VERSION"
15
16 choice
17         prompt "Target Architecture"
18         default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha"
19         default TARGET_arc if DESIRED_TARGET_ARCH = "arc"
20         default TARGET_arm if DESIRED_TARGET_ARCH = "arm"
21         default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32"
22         default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin"
23         default TARGET_cris if DESIRED_TARGET_ARCH = "cris"
24         default TARGET_e1 if DESIRED_TARGET_ARCH = "e1"
25         default TARGET_frv if DESIRED_TARGET_ARCH = "frv"
26         default TARGET_h8300 if DESIRED_TARGET_ARCH = "h8300"
27         default TARGET_hppa if DESIRED_TARGET_ARCH = "hppa"
28         default TARGET_i386 if DESIRED_TARGET_ARCH = "i386"
29         default TARGET_i960 if DESIRED_TARGET_ARCH = "i960"
30         default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64"
31         default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k"
32         default TARGET_metag if DESIRED_TARGET_ARCH = "metag"
33         default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze"
34         default TARGET_mips if DESIRED_TARGET_ARCH = "mips"
35         default TARGET_nios if DESIRED_TARGET_ARCH = "nios"
36         default TARGET_nios2 if DESIRED_TARGET_ARCH = "nios2"
37         default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc"
38         default TARGET_sh if DESIRED_TARGET_ARCH = "sh"
39         default TARGET_sh64 if DESIRED_TARGET_ARCH = "sh64"
40         default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc"
41         default TARGET_v850 if DESIRED_TARGET_ARCH = "v850"
42         default TARGET_vax if DESIRED_TARGET_ARCH = "vax"
43         default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64"
44         default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa"
45         help
46           The architecture of your target.
47
48 config TARGET_alpha
49         bool "alpha"
50
51 config TARGET_arc
52         bool "arc"
53
54 config TARGET_arm
55         bool "arm"
56
57 config TARGET_avr32
58         bool "avr32"
59
60 config TARGET_bfin
61         bool "bfin"
62
63 config TARGET_c6x
64         bool "c6x"
65
66 config TARGET_cris
67         bool "cris"
68
69 config TARGET_e1
70         bool "e1 (BROKEN)"
71
72 config TARGET_frv
73         bool "frv (BROKEN)"
74
75 config TARGET_h8300
76         bool "h8300 (BROKEN)"
77
78 config TARGET_hppa
79         bool "hppa"
80
81 config TARGET_i386
82         bool "i386"
83
84 config TARGET_i960
85         bool "i960 (BROKEN)"
86
87 config TARGET_ia64
88         bool "ia64"
89
90 config TARGET_m68k
91         bool "m68k"
92
93 config TARGET_metag
94         bool "metag"
95
96 config TARGET_microblaze
97         bool "microblaze"
98
99 config TARGET_mips
100         bool "mips"
101
102 config TARGET_nios
103         bool "nios"
104
105 config TARGET_nios2
106         bool "nios2"
107
108 config TARGET_powerpc
109         bool "powerpc"
110
111 config TARGET_sh
112         bool "superh"
113
114 config TARGET_sh64
115         bool "sh64"
116
117 config TARGET_sparc
118         bool "sparc"
119
120 config TARGET_v850
121         bool "v850 (BROKEN)"
122
123 config TARGET_vax
124         bool "vax"
125
126 config TARGET_x86_64
127         bool "x86_64"
128
129 config TARGET_xtensa
130         bool "xtensa"
131
132 endchoice
133
134
135 menu "Target Architecture Features and Options"
136
137 if TARGET_alpha
138 source "extra/Configs/Config.alpha"
139 endif
140
141 if TARGET_arm
142 source "extra/Configs/Config.arm"
143 endif
144
145 if TARGET_avr32
146 source "extra/Configs/Config.avr32"
147 endif
148
149 if TARGET_bfin
150 source "extra/Configs/Config.bfin"
151 endif
152
153 if TARGET_cris
154 source "extra/Configs/Config.cris"
155 endif
156
157 if TARGET_e1
158 source "extra/Configs/Config.e1"
159 endif
160
161 if TARGET_frv
162 source "extra/Configs/Config.frv"
163 endif
164
165 if TARGET_h8300
166 source "extra/Configs/Config.h8300"
167 endif
168
169 if TARGET_hppa
170 source "extra/Configs/Config.hppa"
171 endif
172
173 if TARGET_i386
174 source "extra/Configs/Config.i386"
175 endif
176
177 if TARGET_i960
178 source "extra/Configs/Config.i960"
179 endif
180
181 if TARGET_ia64
182 source "extra/Configs/Config.ia64"
183 endif
184
185 if TARGET_m68k
186 source "extra/Configs/Config.m68k"
187 endif
188
189 if TARGET_metag
190 source "extra/Configs/Config.metag"
191 endif
192
193 if TARGET_nios
194 source "extra/Configs/Config.nios"
195 endif
196
197 if TARGET_nios2
198 source "extra/Configs/Config.nios2"
199 endif
200
201 if TARGET_microblaze
202 source "extra/Configs/Config.microblaze"
203 endif
204
205 if TARGET_mips
206 source "extra/Configs/Config.mips"
207 endif
208
209 if TARGET_powerpc
210 source "extra/Configs/Config.powerpc"
211 endif
212
213 if TARGET_sh
214 source "extra/Configs/Config.sh"
215 endif
216
217 if TARGET_sh64
218 source "extra/Configs/Config.sh64"
219 endif
220
221 if TARGET_sparc
222 source "extra/Configs/Config.sparc"
223 endif
224
225 if TARGET_v850
226 source "extra/Configs/Config.v850"
227 endif
228
229 if TARGET_vax
230 source "extra/Configs/Config.vax"
231 endif
232
233 if TARGET_x86_64
234 source "extra/Configs/Config.x86_64"
235 endif
236
237 if TARGET_xtensa
238 source "extra/Configs/Config.xtensa"
239 endif
240
241 if TARGET_c6x
242 source "extra/Configs/Config.c6x"
243 endif
244
245 if TARGET_arc
246 source "extra/Configs/Config.arc"
247 endif
248
249 config TARGET_SUBARCH
250         string
251         default "e500" if CONFIG_E500
252         default "classic" if CONFIG_CLASSIC
253         default "sh4" if CONFIG_SH4
254         default "" if CONFIG_386
255         default "i486" if CONFIG_486
256         default "i586" if CONFIG_586
257         default "i686" if CONFIG_686
258         default ""
259
260 source "extra/Configs/Config.in.arch"
261
262 endmenu
263
264 menu "General Library Settings"
265
266 config HAVE_NO_PIC
267         bool
268
269 config DOPIC
270         bool "Generate only Position Independent Code (PIC)"
271         default y
272         depends on !HAVE_NO_PIC
273         help
274           If you wish to build all of uClibc as PIC objects, then answer Y here.
275           If you are unsure, then you should answer N.
276
277 config ARCH_HAS_NO_SHARED
278         bool
279
280 config ARCH_HAS_NO_LDSO
281         bool
282         select ARCH_HAS_NO_SHARED
283
284 config ARCH_HAS_UCONTEXT
285         bool
286
287 config HAVE_SHARED
288         bool "Enable shared libraries"
289         depends on !ARCH_HAS_NO_SHARED
290         default y
291         help
292           If you wish to build uClibc with support for shared libraries then
293           answer Y here.  If you only want to build uClibc as a static library,
294           then answer N.
295
296 config FORCE_SHAREABLE_TEXT_SEGMENTS
297         bool "Only load shared libraries which can share their text segment"
298         depends on HAVE_SHARED
299         select DOPIC
300         help
301           If you answer Y here, the uClibc native shared library loader will
302           only load shared libraries, which do not need to modify any
303           non-writable segments. These libraries haven't set the DT_TEXTREL
304           tag in the dynamic section (==> objdump).
305           All your libraries must be compiled with -fPIC or -fpic, and all
306           assembler function must be written as position independent code (PIC).
307           Enabling this option will make uClibc's shared library loader a
308           little bit smaller and guarantee that no memory will be wasted by
309           badly coded shared libraries.
310
311 config LDSO_LDD_SUPPORT
312         bool "Native 'ldd' support"
313         depends on HAVE_SHARED
314         default y
315         help
316           Enable all the code needed to support traditional ldd,
317           which executes the shared library loader to resolve all dependencies
318           and then provide a list of shared libraries that are required for an
319           application to function.  Disabling this option will make uClibc's
320           shared library loader a little bit smaller.
321           Most people will answer Y.
322
323 config LDSO_CACHE_SUPPORT
324         bool "Enable library loader cache (ld.so.conf)"
325         depends on HAVE_SHARED
326         default y
327         help
328           Enable this to make use of /etc/ld.so.conf, the shared library loader
329           cache configuration file to support for non-standard library paths.
330           After updating this file, it is necessary to run 'ldconfig' to update
331           the /etc/ld.so.cache shared library loader cache file.
332
333 config LDSO_PRELOAD_ENV_SUPPORT
334         bool "Enable library loader LD_PRELOAD environment"
335         depends on HAVE_SHARED
336         default y
337         help
338           Enable this to make use of LD_PRELOAD environment variable.
339           A whitespace-separated list of additional, user-specified, ELF shared
340           libraries to be loaded before all others. This can be used to
341           selectively override functions in other shared libraries. For
342           set-user-ID/set-group-ID ELF binaries, only libraries in the standard
343           search directories that are also set-user-ID will be loaded.
344
345 config LDSO_PRELOAD_FILE_SUPPORT
346         bool "Enable library loader preload file (ld.so.preload)"
347         depends on HAVE_SHARED
348         help
349           Enable this to make use of /etc/ld.so.preload. This file contains a
350           whitespace separated list of shared libraries to be loaded before
351           the program.
352
353 config LDSO_BASE_FILENAME
354         string "Shared library loader naming prefix"
355         depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
356         default "ld.so"
357         help
358           If you wish to support both uClibc and glibc on the same system, it
359           is necessary to set this to something other than "ld.so" to avoid
360           conflicts with glibc, which also uses "ld.so".  This prevents both
361           libraries from using the same /etc/ld.so.* files.  If you wish to
362           support both uClibc and glibc on the same system then you should set
363           this to "ld-uClibc.so".
364
365           Most people will leave this set to the default of "ld.so".
366
367           WARNING: Changing the default prefix could cause problems with
368                    binutils' ld !
369
370 config LDSO_STANDALONE_SUPPORT
371         bool "Dynamic linker stand-alone mode support"
372         depends on HAVE_SHARED
373         help
374           The dynamic linker can be run either indirectly through running some
375           dynamically linked program or library (in which case no command line
376           options to the dynamic linker can be passed and, in the ELF case, the
377           dynamic linker which is stored in the .interp section of the program
378           is executed) or directly by running:
379
380           /lib/ld-uClibc.so.*  [OPTIONS] [PROGRAM [ARGUMENTS]]
381
382           Stand-alone execution is a prerequisite for adding prelink
383           capabilities to uClibc dynamic linker, as well useful for testing an
384           updated version of the dynamic linker without breaking the system.
385
386 config LDSO_PRELINK_SUPPORT
387         bool "Dynamic linker prelink support"
388         depends on HAVE_SHARED
389         select LDSO_STANDALONE_SUPPORT
390         help
391           The dynamic linker can be used in stand-alone mode by the prelink tool
392           for prelinking ELF shared libraries and binaries to speed up startup
393           time. It also is able to load and handle prelinked libraries and
394           binaries at runtime.
395
396 config UCLIBC_STATIC_LDCONFIG
397         bool "Link ldconfig statically"
398         depends on HAVE_SHARED
399         default y
400         help
401           Enable this option to statically link the ldconfig binary.
402
403           Making ldconfig static can be beneficial if you have a library
404           problem and need to use ldconfig to recover.  Sometimes it is
405           preferable to instead keep the size of the system down, in which
406           case you should disable this option.
407
408 config LDSO_RUNPATH
409         bool "Enable ELF RUNPATH tag support"
410         depends on HAVE_SHARED
411         default y if LDSO_CACHE_SUPPORT
412         help
413           ELF's may have dynamic RPATH/RUNPATH tags.  These tags list paths
414           which extend the library search paths.  They are really only useful
415           if a package installs libraries in non standard locations and
416           ld.so.conf support is disabled.
417
418           Usage of RUNPATH tags is not too common, so disabling this feature
419           should be safe for most people.
420
421 config LDSO_SAFE_RUNPATH
422         bool "Allow only RUNPATH beginning with /"
423         depends on LDSO_RUNPATH
424         default y
425         help
426           Allow only absolute path in RPATH/RUNPATH.
427
428 config LDSO_SEARCH_INTERP_PATH
429         bool "Add ldso path to lib search path"
430         depends on HAVE_SHARED
431         default y
432         help
433           The ldso is told where it is being executed from and can use that
434           path to find related core libraries.  This is useful by default,
435           but can be annoying in a mixed development environment.
436
437           i.e. if the ldso is run from /foo/boo/ldso.so, it will start its
438           library search with /foo/boo/
439
440           If unsure, simply say Y here.
441
442 config LDSO_LD_LIBRARY_PATH
443         bool "Add LD_LIBRARY_PATH to lib search path"
444         depends on HAVE_SHARED
445         default y
446         help
447           On hardened system it could be useful to disable the use of
448           LD_LIBRARY_PATH environment variable (a colon-separated list of
449           directories in which to search for ELF libraries at execution-time).
450
451           If unsure, simply say Y here.
452
453 config LDSO_NO_CLEANUP
454         bool "Disable automatic unloading of dynamically loaded shared objects"
455         depends on HAVE_SHARED
456         help
457           If you need complete allocation traces when debugging memory leaks
458           using Valgrind in a process that dynamically loads shared objects,
459           then answer Y here. Unlike glibc, uClibc unloads all dynamically
460           loaded shared objects when a process exits, which prevents Valgrind
461           from correctly resolving the symbols from the unloaded shared objects.
462           Unless you know you need this, you should answer N.
463
464 config UCLIBC_CTOR_DTOR
465         bool "Support global constructors and destructors"
466         default y
467         help
468           If you wish to build uClibc with support for global constructor
469           (ctor) and global destructor (dtor) support, then answer Y here.
470           When ctor/dtor support is enabled, binaries linked with uClibc must
471           also be linked with crtbegin.o and crtend.o which are provided by gcc
472           (the "*startfile:" and "*endfile:" settings in your gcc specs file
473           may need to be adjusted to include these files).  This support will
474           also add a small amount of additional size to each binary compiled vs
475           uClibc.  If you will be using uClibc with C++, or if you need the gcc
476           __attribute__((constructor)) and __attribute__((destructor)) to work,
477           then you definitely want to answer Y here.  If you don't need ctors
478           or dtors and want your binaries to be as small as possible, then
479           answer N.
480
481 config LDSO_GNU_HASH_SUPPORT
482         bool "Enable GNU hash style support"
483         depends on HAVE_SHARED
484         help
485           Newest binutils support a new hash style named GNU-hash. The dynamic
486           linker will use the new GNU-hash section (.gnu.hash) for symbol lookup
487           if present into the ELF binaries, otherwise it will use the old SysV
488           hash style (.hash). This ensures that it is completely backward
489           compatible.
490           Further, being the hash table implementation self-contained into each
491           executable and shared libraries, objects with mixed hash style can
492           peacefully coexist in the same process.
493
494           If you want to use this new feature, answer Y
495
496 choice
497         prompt "Thread support"
498         #default UCLIBC_HAS_THREADS_NATIVE if (TARGET_alpha || TARGET_arm || TARGET_i386 || TARGET_mips || TARGET_powerpc || TARGET_sh || TARGET_sh64)
499         default HAS_NO_THREADS
500         help
501           If you want to compile uClibc with pthread support, then answer Y.
502           This will increase the size of uClibc by adding a bunch of locking
503           to critical data structures, and adding extra code to ensure that
504           functions are properly reentrant.
505
506 config HAS_NO_THREADS
507         bool "none"
508         help
509           Disable thread support.
510
511 config LINUXTHREADS_OLD
512         bool "older (stable) version of linuxthreads"
513         # linuxthreads and linuxthreads.old need nanosleep()
514         select UCLIBC_HAS_REALTIME
515         help
516           There are two versions of linuxthreads.  The older (stable) version
517           has been in uClibc for quite a long time but hasn't seen too many
518           updates other than bugfixes.
519
520
521 config LINUXTHREADS_NEW
522         bool "slightly newer version of linuxthreads"
523         depends on ARCH_HAS_DEPRECATED_SYSCALLS
524         help
525           The new version has not been tested much, and lacks ports for arches
526           which glibc does not support (like bfin/frv/etc...), but is based on
527           the latest code from glibc, so it may be the only choice for the
528           newer ports (like alpha/amd64/64bit arches and hppa).
529
530 config UCLIBC_HAS_THREADS_NATIVE
531         bool "Native POSIX Threading (NPTL)"
532         select UCLIBC_HAS_TLS
533         select UCLIBC_HAS_STDIO_FUTEXES
534         select UCLIBC_HAS_REALTIME
535         # i386 has no lowlevellock support (yet) as opposed to i486 onward
536         depends on !CONFIG_386
537         help
538           If you want to compile uClibc with NPTL support, then answer Y.
539
540           IMPORTANT NOTE!  NPTL requires a Linux 2.6 kernel, binutils
541           at least version 2.16 and GCC with at least version 4.1.0. NPTL
542           will not work with older versions of any above sources. If you
543           ignore any of these guidelines, you do so at your own risk. Do
544           not ask for help on any of the development mailing lists.
545
546           !!!! WARNING !!!! BIG FAT WARNING !!!! REALLY BIG FAT WARNING !!!!
547
548           This is experimental code and at times it may not even build and
549           even if it does it might decide to do random damage. This code is
550           potentially hazardous to your health and sanity. It will remain
551           that way until further notice at which point this notice will
552           disappear. Thank you for your support and for not smoking.
553
554 endchoice
555
556 config UCLIBC_HAS_THREADS
557         def_bool y if !HAS_NO_THREADS
558
559 config UCLIBC_HAS_TLS
560         bool "Thread-Local Storage"
561         depends on UCLIBC_HAS_THREADS_NATIVE
562         help
563           If you want to enable TLS support then answer Y.
564           This is fast an efficient way to store per-thread local data
565           which is not on stack. It needs __thread support enabled in
566           gcc.
567
568 config PTHREADS_DEBUG_SUPPORT
569         bool "Build pthreads debugging support"
570         depends on UCLIBC_HAS_THREADS
571         help
572           Say Y here if you wish to be able to debug applications that use
573           uClibc's pthreads library.  By enabling this option, a library
574           named libthread_db will be built.  This library will be dlopen()'d
575           by gdb and will allow gdb to debug the threads in your application.
576
577           IMPORTANT NOTE!  Because gdb must dlopen() the libthread_db library,
578           you must compile gdb with uClibc in order for pthread debugging to
579           work properly.
580
581           If you are doing development and want to debug applications using
582           uClibc's pthread library, answer Y.  Otherwise, answer N.
583
584
585 config UCLIBC_HAS_SYSLOG
586         bool "Syslog support"
587         default y
588         depends on UCLIBC_HAS_NETWORK_SUPPORT
589         select UCLIBC_HAS_SOCKET
590         help
591           Support sending messages to the system logger.
592           This requires socket-support.
593
594 config UCLIBC_HAS_LFS
595         bool "Large File Support"
596         default y
597         help
598           If you wish to build uClibc with support for accessing large files
599           (i.e. files greater then 2 GiB) then answer Y.  Do not enable this
600           if you are using an older Linux kernel (2.0.x) that lacks large file
601           support.  Enabling this option will increase the size of uClibc.
602
603 choice
604         prompt "Malloc Implementation"
605         default MALLOC if ! ARCH_USE_MMU
606         default MALLOC_STANDARD if ARCH_USE_MMU
607
608 config MALLOC
609         bool "malloc"
610         help
611           "malloc" use mmap for all allocations and so works very well on
612           MMU-less systems that do not support the brk() system call.   It is
613           pretty smart about reusing already allocated memory, and minimizing
614           memory wastage.
615           This is the default for uClinux MMU-less systems.
616
617 config MALLOC_SIMPLE
618         bool "malloc-simple"
619         help
620           "malloc-simple" is trivially simple and slow as molasses.  It
621           was written from scratch for uClibc, and is the simplest possible
622           (and therefore smallest) malloc implementation.
623
624           This uses only the mmap() system call to allocate and free memory,
625           and does not use the brk() system call at all, making it a fine
626           choice for MMU-less systems with very limited memory.  It's 100%
627           standards compliant, thread safe, very small, and releases freed
628           memory back to the OS immediately rather than keeping it in the
629           process's heap for reallocation.  It is also VERY SLOW.
630
631 config MALLOC_STANDARD
632         bool "malloc-standard"
633         depends on ARCH_USE_MMU
634         help
635           "malloc-standard" is derived from the public domain dlmalloc
636           implementation by Doug Lea.  It is quite fast, and is pretty smart
637           about reusing already allocated memory, and minimizing memory
638           wastage.  This uses brk() for small allocations, while using mmap()
639           for larger allocations.  This is the default malloc implementation
640           for uClibc.
641
642           If unsure, answer "malloc-standard".
643
644 endchoice
645
646 config MALLOC_GLIBC_COMPAT
647         bool "Malloc returns live pointer for malloc(0)"
648         help
649           The behavior of malloc(0) is listed as implementation-defined by
650           SuSv3.  Glibc returns a valid pointer to something, while uClibc
651           normally returns NULL.  I personally feel glibc's behavior is
652           not particularly safe, and allows buggy applications to hide very
653           serious problems.
654
655           When this option is enabled, uClibc will act just like glibc, and
656           return a live pointer when someone calls malloc(0).  This pointer
657           provides a malloc'ed area with a size of 1 byte.  This feature is
658           mostly useful when dealing with applications using autoconf's broken
659           AC_FUNC_MALLOC macro (which redefines malloc as rpl_malloc if it
660           does not detect glibc style returning-a-valid-pointer-for-malloc(0)
661           behavior).  Most people can safely answer N.
662
663 config UCLIBC_HAS_OBSTACK
664         bool "Obstack Support (gnu extension)"
665         help
666           When this option is enabled, uClibc will provide support for obstacks.
667           An obstack is a structure in which memory can be dynamically allocated
668           as a 'stack of objects'.  Many programs need this GNU extention and
669           you should say Y if you are using any.  Otherwise, say N to save some
670           space.
671
672 config UCLIBC_DYNAMIC_ATEXIT
673         bool "Dynamic atexit() Support"
674         default y
675         help
676           When this option is enabled, uClibc will support an infinite number,
677           of atexit() and on_exit() functions, limited only by your available
678           memory.  This can be important when uClibc is used with C++, since
679           global destructors are implemented via atexit(), and it is quite
680           possible to exceed the default number when this option is disabled.
681           Enabling this option adds a few bytes, and more significantly makes
682           atexit and on_exit depend on malloc, which can be bad when compiling
683           static executables.
684
685           Unless you use uClibc with C++, you should probably answer N.
686
687 config COMPAT_ATEXIT
688         bool "Old (visible) atexit Support"
689         help
690           Enable this option if you want to update from 0.9.28 to git/0.9.29,
691           else you will be missing atexit() until you rebuild all apps.
692
693 config UCLIBC_SUSV2_LEGACY
694         bool "Enable SuSv2 LEGACY functions"
695         help
696           Enable this option if you want to have SuSv2 LEGACY functions
697           Currently applies to:
698
699           valloc
700
701           WARNING! ABI incompatibility.
702
703 config UCLIBC_SUSV3_LEGACY
704         bool "Enable SuSv3 LEGACY functions"
705         #vfork,
706         # h_errno
707         # gethostbyaddr
708         # gethostbyname
709         help
710           Enable this option if you want to have SuSv3 LEGACY functions
711           in the library, else they are replaced by SuSv3 proposed macros.
712           Currently applies to:
713
714           bcmp, bcopy, bzero, index, rindex, ftime,
715           bsd_signal, (ecvt), (fcvt), gcvt, (getcontext),
716           (getwd), (makecontext),
717           mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr),
718           scalb, (setcontext), (swapcontext), ualarm, usleep,
719           wcswcs.
720
721           WARNING! ABI incompatibility.
722
723 config UCLIBC_HAS_CONTEXT_FUNCS
724         bool "Use obsolescent context control functions"
725         depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT
726         help
727           Add into library the SuSv3 obsolescent functions used for context
728           control. The setcontext family allows the implementation in C of
729           advanced control flow patterns such as iterators, fibers, and
730           coroutines. They may be viewed as an advanced version of
731           setjmp/longjmp; whereas the latter allows only a single non-local jump
732           up the stack, setcontext allows the creation of multiple cooperative
733           threads of control, each with its own stack.
734           These functions are: setcontext, getcontext, makecontext, swapcontext.
735
736 config UCLIBC_SUSV3_LEGACY_MACROS
737         bool "Enable SuSv3 LEGACY macros"
738         help
739           Enable this option if you want to have SuSv3 LEGACY macros.
740           Currently applies to bcopy/bzero/bcmp/index/rindex et al.
741           WARNING! ABI incompatibility.
742
743 config UCLIBC_SUSV4_LEGACY
744         bool "Enable SuSv4 LEGACY or obsolescent functions"
745         help
746           Enable this option if you want to have SuSv4 LEGACY functions
747           and macros in the library.
748           Currently applies to:
749
750           - XSI functions:
751             _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer,
752             gettimeofday, isascii, pthread_getconcurrency,
753             pthread_setconcurrency, setitimer, setpgrp, sighold,
754             sigignore, sigpause, sigrelse, sigset, siginterrupt,
755             tempnam, toascii, ulimit.
756
757           - Base functions:
758             asctime, asctime_r, ctime, ctime_r, gets, rand_r,
759             tmpnam, utime.
760
761           WARNING! ABI incompatibility.
762
763 config UCLIBC_STRICT_HEADERS
764         bool "Hide structures and constants for unsupported features"
765         help
766           Hide structures and constants in headers that should not be used,
767           because the respective feature is disabled.
768
769           WARNING! enabling this option requires to patch many faulty apps,
770           since they make (wrongly) use of these structures/constants,
771           although the feature was disabled.
772
773 config UCLIBC_HAS_STUBS
774         bool "Provide stubs for unavailable functionality"
775         help
776           With this option uClibc provides non-functional stubs for
777           functions which are impossible to implement on the target
778           architecture. Otherwise, such functions are simply omitted.
779
780 config UCLIBC_HAS_SHADOW
781         bool "Shadow Password Support"
782         default y
783         help
784           Answer N if you do not need shadow password support.
785           Most people will answer Y.
786
787 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
788         bool "Support for program_invocation_name"
789         help
790           Support for the GNU-specific program_invocation_name and
791           program_invocation_short_name strings.  Some GNU packages
792           (like tar and coreutils) utilize these for extra useful
793           output, but in general are not required.
794
795           At startup, these external strings are automatically set
796           up based on the value of ARGV[0].
797
798           If unsure, just answer N.
799
800 config UCLIBC_HAS___PROGNAME
801         bool "Support for __progname"
802         default y
803         help
804           Some packages (like openssh) like to peek into internal libc
805           symbols to make their output a bit more user friendly.
806
807           At startup, __progname is automatically set up based on the
808           value of ARGV[0].
809
810           If unsure, just answer N.
811
812 config UCLIBC_HAS_PTY
813         bool "Support for pseudo-terminals"
814         default y
815         help
816           This enables support for pseudo-terminals (see man 4 pts
817           and man 7 pty).
818
819           If unsure, just answer Y.
820
821 config ASSUME_DEVPTS
822         bool "Assume that /dev/pts is a devpts or devfs file system"
823         default y
824         depends on UCLIBC_HAS_PTY
825         help
826           Enable this if /dev/pts is on a devpts or devfs filesystem.  Both
827           these filesystems automatically manage permissions on the /dev/pts
828           devices.  You may need to mount your devpts or devfs filesystem on
829           /dev/pts for this to work.
830
831           Most people should answer Y.
832
833 config UNIX98PTY_ONLY
834         bool "Support only Unix 98 PTYs"
835         default y
836         depends on UCLIBC_HAS_PTY
837         help
838           If you want to support only Unix 98 PTYs enable this.  Some older
839           applications may need this disabled and will thus use legacy BSD
840           style PTY handling which is more complex and also bigger than
841           Unix 98 PTY handling.
842
843           For most current programs, you can generally answer Y.
844
845 if UNIX98PTY_ONLY
846 config UCLIBC_HAS_GETPT
847         bool "Support getpt() (glibc-compat)"
848         depends on UCLIBC_HAS_PTY
849         help
850           Some packages may need getpt().
851           All of those are non-standard and can be considered
852           GNU/libc compatibility.
853           Either use posix_openpt() or just open /dev/ptmx yourself.
854
855           If unsure, just say N.
856 endif
857
858 if !UNIX98PTY_ONLY
859 # Have to use __libc_ptyname{1,2}[] and related bloat
860 config UCLIBC_HAS_GETPT
861         def_bool y
862 endif
863
864 config UCLIBC_HAS_LIBUTIL
865         bool "Provide libutil library and functions"
866         depends on UCLIBC_HAS_PTY
867         help
868           Provide a libutil library.
869           This non-standard conforming library provides the following
870           utility functions:
871
872           forkpty(): combines openpty(), fork(2), and login_tty() to
873                        create a new process operating in a pseudo-terminal.
874           login(): write utmp and wtmp entries
875           login_tty(): prepares for a login on the tty fd by creating a
876                        new session, making fd the controlling terminal for
877                        the calling process, setting fd to be the standard
878                        input, output, and error streams of the current
879                        process, and closing fd.
880           logout(): write utmp and wtmp entries
881           logwtmp(): constructs a utmp structure and calls updwtmp() to
882                        append the structure to the utmp file.
883           openpty(): finds an available pseudo-terminal and returns
884                        file descriptors for the master and slave
885
886           This library adds about 3k-4k to your system.
887
888 config UCLIBC_HAS_TM_EXTENSIONS
889         bool "Support 'struct tm' timezone extension fields"
890         default y
891         help
892           Enabling this option adds fields to 'struct tm' in time.h for
893           tracking the number of seconds east of UTC, and an abbreviation for
894           the current timezone.  These fields are not specified by the SuSv3
895           standard, but they are commonly used in both GNU and BSD application
896           code.
897
898           To strictly follow the SuSv3 standard, leave this disabled.
899           Most people will probably want to answer Y.
900
901 config UCLIBC_HAS_TZ_CACHING
902         bool "Enable caching of the last valid timezone 'TZ' string"
903         default y
904         help
905           Answer Y to enable caching of the last valid 'TZ' string describing
906           the timezone setting.  This allows a quick string compare to avoid
907           repeated parsing of unchanged 'TZ' strings when tzset() is called.
908
909           Most people will answer Y.
910
911 config UCLIBC_HAS_TZ_FILE
912         bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
913         default y
914         help
915           Answer Y to enable the setting of a default timezone for uClibc.
916
917           Ordinarily, uClibc gets the timezone information exclusively from the
918           'TZ' environment variable.  In particular, there is no support for
919           the zoneinfo directory tree or the /etc/timezone file used by glibc.
920
921           With this option enabled, uClibc will use the value stored in the
922           file '/etc/TZ' (default path) to obtain timezone information if the
923           'TZ' environment variable is missing or has an invalid value.  The
924           file consists of a single line (newline required) of text describing
925           the timezone in the format specified for the TZ environment variable.
926
927           Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
928           See
929           http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
930           for details on valid settings of 'TZ'.
931
932           Most people will answer Y.
933
934 config UCLIBC_HAS_TZ_FILE_READ_MANY
935         bool "Repeatedly read the '/etc/TZ' file"
936         depends on UCLIBC_HAS_TZ_FILE
937         default y
938         help
939           Answer Y to enable repeated reading of the '/etc/TZ' file even after
940           a valid value has been read.  This incurs the overhead of an
941           open/read/close for each tzset() call (explicit or implied).  However,
942           setting this will allow applications to update their timezone
943           information if the contents of the file change.
944
945           Most people will answer Y.
946
947 config UCLIBC_TZ_FILE_PATH
948         string "Path to the 'TZ' file for setting the global timezone"
949         depends on UCLIBC_HAS_TZ_FILE
950         default "/etc/TZ"
951         help
952           This is the path to the 'TZ' file.
953
954           Most people will use the default of '/etc/TZ'.
955
956 config UCLIBC_FALLBACK_TO_ETC_LOCALTIME
957         bool "Use /etc/localtime as a fallback"
958         depends on UCLIBC_HAS_TZ_FILE
959         default y
960         help
961           Answer Y to try to use /etc/localtime file.
962           On glibc systems this file (if it is in TZif2 format)
963           contains timezone string at the end.
964
965           Most people will answer Y.
966
967 endmenu
968
969 menu "Advanced Library Settings"
970
971 config UCLIBC_PWD_BUFFER_SIZE
972         int "Buffer size for getpwnam() and friends"
973         default 256
974         range 12 1024
975         help
976           This sets the value of the buffer size for getpwnam() and friends.
977           By default, this is 256. (For reference, glibc uses 1024).
978           The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX
979           parameter.
980
981 config UCLIBC_GRP_BUFFER_SIZE
982         int "Buffer size for getgrnam() and friends"
983         default 256
984         range 12 1024
985         help
986           This sets the value of the buffer size for getgrnam() and friends.
987           By default, this is 256. (For reference, glibc uses 1024).
988           The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX
989           parameter.
990
991 comment "Support various families of functions"
992
993 config UCLIBC_LINUX_MODULE_26
994         bool "Linux kernel module functions (2.6)"
995         default y
996         help
997           delete_module, init_module
998           are used in linux for loadable kernel modules.
999
1000           Say N if you do not use kernel modules.
1001
1002 config UCLIBC_LINUX_MODULE_24
1003         bool "Linux kernel module functions (<2.6)"
1004         depends on !TARGET_bfin && !TARGET_c6x
1005         help
1006           create_module, query_module
1007           are used in linux (prior to 2.6) for loadable kernel modules.
1008
1009           Say N if you do not use kernel modules, or you only support
1010           Linux 2.6+.
1011
1012 config UCLIBC_LINUX_SPECIFIC
1013         bool "Linux specific functions"
1014         default y
1015         help
1016           accept4(), bdflush(),
1017           capget(), capset(), eventfd(), fallocate(),
1018           fstatfs(), inotify_*(), ioperm(), iopl(),
1019           madvise(), modify_ldt(), pipe2(), personality(),
1020           prctl()/arch_prctl(), pivot_root(), modify_ldt(),
1021           ppoll(), readahead(), reboot(), remap_file_pages(),
1022           sched_getaffinity(), sched_setaffinity(), sendfile(),
1023           setfsgid(), setfsuid(), setresgid(), setresuid(),
1024           splice(), vmsplice(), tee(), signalfd(), statfs(),
1025           swapoff(), swapon(), sync_file_range(), _sysctl(),
1026           sysinfo(), timerfd_*(), vhangup(), umount(), umount2()
1027
1028 config UCLIBC_HAS_GNU_ERROR
1029         bool "Support GNU extensions for error-reporting"
1030         default y
1031         help
1032           Support for the GNU-specific error(), error_at_line(),
1033           void (* error_print_progname)(), error_message_count
1034           functions and variables.  Some GNU packages
1035           utilize these for extra useful output, but in general
1036           are not required.
1037
1038           If unsure, just answer N.
1039
1040 config UCLIBC_BSD_SPECIFIC
1041         bool "BSD specific functions"
1042         default y
1043         help
1044           mincore(), getdomainname(), setdomainname()
1045
1046           If unsure, say N.
1047
1048 config UCLIBC_HAS_BSD_ERR
1049         bool "BSD err functions"
1050         default y
1051         help
1052           These functions are non-standard BSD extensions.
1053           err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx()
1054
1055           If unsure, say N.
1056
1057 config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
1058         bool "BSD obsolete signal functions"
1059         help
1060           These functions are provided as a compatibility interface for
1061           programs that make use of the historical System V signal API.
1062           This API is obsolete:
1063           new applications should use the POSIX signal API (sigaction(2),
1064           sigprocmask(2), etc.).
1065           Affected functions:
1066
1067           sigset(), sighold(), sigrelse(), sigignore()
1068
1069           If unsure, say N.
1070
1071 config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL
1072         bool "SYSV obsolete signal functions"
1073         help
1074           Use of sysv_signal() should be avoided; use sigaction(2) instead.
1075
1076           If unsure, say N.
1077
1078 config UCLIBC_NTP_LEGACY
1079         bool "ntp_*() aliases"
1080         help
1081           Provide legacy aliases for ntp functions:
1082           ntp_adjtime(), ntp_gettime()
1083
1084           It is safe to say N here.
1085
1086 config UCLIBC_SV4_DEPRECATED
1087         bool "Enable SVr4 deprecated functions"
1088         help
1089           These functions are DEPRECATED in System V release 4.
1090           Say N unless you desparately need one of the functions below:
1091
1092           ustat() [use statfs(2) in your code instead]
1093
1094 config UCLIBC_HAS_REALTIME
1095         bool "Realtime-related family of SUSv functions"
1096         default y
1097         help
1098           These functions are part of the Timers option and need not
1099           be available on all implementations.
1100           Includes AIO, message-queue, scheduler, semaphore functions:
1101
1102           aio.h
1103           mqueue.h
1104           sched.h
1105           semaphore.h
1106
1107           aio_cancel()
1108           aio_error()
1109           aio_fsync()
1110           aio_read()
1111           lio_listio()
1112           aio_return()
1113           aio_suspend()
1114           aio_write()
1115           clock_getres(), clock_gettime(), clock_settime()
1116           fdatasync()
1117           mlockall(), munlockall()
1118           mlock(), munlock()
1119           mq_close()
1120           mq_getattr()
1121           mq_notify()
1122           mq_open()
1123           mq_receive()
1124           mq_send()
1125           mq_setattr()
1126           mq_unlink()
1127           nanosleep()
1128           sched_getparam()
1129           sched_get_priority_max(), sched_get_priority_min()
1130           sched_getscheduler()
1131           sched_rr_get_interval()
1132           sched_setparam()
1133           sched_setscheduler()
1134           sem_close()
1135           sem_destroy()
1136           sem_getvalue()
1137           sem_init()
1138           sem_open()
1139           sem_post()
1140           sem_trywait(), sem_wait()
1141           sem_unlink()
1142           sigqueue()
1143           sigtimedwait(), sigwaitinfo()
1144           timer_create()
1145           timer_delete()
1146           timer_getoverrun(), timer_gettime(), timer_settime()
1147
1148 config UCLIBC_HAS_ADVANCED_REALTIME
1149         bool "Advanced realtime-related family of SUSv functions"
1150         default y
1151         depends on UCLIBC_HAS_REALTIME
1152         help
1153           These functions are part of the Timers option and need not
1154           be available on all implementations.
1155
1156           clock_getcpuclockid()
1157           clock_nanosleep()
1158           mq_timedreceive()
1159           mq_timedsend()
1160           posix_fadvise()
1161           posix_fallocate()
1162           posix_madvise()
1163           posix_memalign()
1164           posix_mem_offset()
1165           posix_spawnattr_destroy(), posix_spawnattr_init()
1166           posix_spawnattr_getflags(), posix_spawnattr_setflags()
1167           posix_spawnattr_getpgroup(), posix_spawnattr_setpgroup()
1168           posix_spawnattr_getschedparam(), posix_spawnattr_setschedparam()
1169           posix_spawnattr_getschedpolicy(), posix_spawnattr_setschedpolicy()
1170           posix_spawnattr_getsigdefault(), posix_spawnattr_setsigdefault()
1171           posix_spawnattr_getsigmask(), posix_spawnattr_setsigmask()
1172           posix_spawn_file_actions_addclose()
1173           posix_spawn_file_actions_adddup2()
1174           posix_spawn_file_actions_addopen()
1175           posix_spawn_file_actions_destroy()
1176           posix_spawn_file_actions_init()
1177           posix_spawn()
1178           posix_spawnp()
1179           posix_typed_mem_get_info()
1180           pthread_mutex_timedlock()
1181           sem_timedwait()
1182
1183 #config UCLIBC_HAS_TERMIOS
1184 #       bool "termios functions"
1185 #       default y
1186 #       help
1187 #         Get and set terminal attributes, line control, get and set baud
1188 #         rate.
1189 #         termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(),
1190 #         tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(),
1191 #         cfsetispeed(), cfsetospeed(), cfsetspeed()
1192 #
1193 #         If unsure, say Y.
1194
1195 config UCLIBC_HAS_EPOLL
1196         bool "epoll"
1197         default y
1198         help
1199           epoll_create(), epoll_ctl(), epoll_wait() functions.
1200
1201 config UCLIBC_HAS_XATTR
1202         bool "Extended Attributes"
1203         default y
1204         help
1205           Extended Attributes support.
1206
1207           setxattr()
1208           lsetxattr()
1209           fsetxattr()
1210           getxattr()
1211           lgetxattr()
1212           fgetxattr()
1213           listxattr()
1214           llistxattr()
1215           flistxattr()
1216           removexattr()
1217           lremovexattr()
1218           fremovexattr()
1219
1220           Say N unless you need support for extended attributes and the
1221           filesystems do actually support them.
1222
1223 config UCLIBC_HAS_PROFILING
1224         bool "Profiling support"
1225         default y
1226         help
1227           gcc's -finstrument-functions needs these.
1228
1229           Most people can safely answer N.
1230
1231 config UCLIBC_HAS_CRYPT_IMPL
1232         bool "libcrypt support"
1233         default y
1234         help
1235           libcrypt contains crypt(), setkey() and encrypt()
1236
1237 config UCLIBC_HAS_SHA256_CRYPT_IMPL
1238         bool "libcrypt SHA256 support"
1239         depends on UCLIBC_HAS_CRYPT_IMPL
1240         help
1241           This adds support for SHA256 password hashing via the crypt() function.
1242           Say N here if you do not need SHA256 crypt support.
1243
1244 config UCLIBC_HAS_SHA512_CRYPT_IMPL
1245         bool "libcrypt SHA512 support"
1246         depends on UCLIBC_HAS_CRYPT_IMPL
1247         help
1248           This adds support for SHA512 password hashing via the crypt() function.
1249           Say N here if you do not need SHA512 crypt support.
1250
1251 config UCLIBC_HAS_CRYPT_STUB
1252         bool "libcrypt stubs"
1253         default y
1254         depends on !UCLIBC_HAS_CRYPT_IMPL
1255         help
1256           Standards mandate that crypt(3) provides a stub if it is unavailable.
1257           If you enable this option then stubs for
1258             crypt(), setkey() and encrypt()
1259           will be provided in a small libcrypt.
1260
1261 config UCLIBC_HAS_CRYPT
1262         def_bool y
1263         depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
1264 endmenu
1265
1266 menuconfig UCLIBC_HAS_NETWORK_SUPPORT
1267         bool "Networking Support"
1268         default y
1269         help
1270           Say N here if you do not need network support.
1271
1272 if UCLIBC_HAS_NETWORK_SUPPORT
1273 config UCLIBC_HAS_SOCKET
1274         bool "Socket support"
1275         default y
1276         help
1277           If you want to include support for sockets then answer Y.
1278
1279 config UCLIBC_HAS_IPV4
1280         bool "IP version 4 support"
1281         default y
1282         select UCLIBC_HAS_SOCKET
1283         help
1284           If you want to include support for the Internet Protocol
1285           (IP version 4) then answer Y.
1286
1287           Most people will say Y.
1288
1289 config UCLIBC_HAS_IPV6
1290         bool "IP version 6 support"
1291         select UCLIBC_HAS_SOCKET
1292         help
1293           If you want to include support for the next version of the Internet
1294           Protocol (IP version 6) then answer Y.
1295
1296           Most people should answer N.
1297
1298 config UCLIBC_HAS_RPC
1299         bool "Remote Procedure Call (RPC) support"
1300         # RPC+socket-ipvX doesn't currently work.
1301         depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
1302         help
1303           If you want to include RPC support, enable this.  RPC is rarely used
1304           for anything except for the NFS filesystem.  Unless you plan to use
1305           NFS, you can probably leave this set to N and save some space.
1306
1307           If you need to use NFS then you should answer Y.
1308
1309 config UCLIBC_HAS_FULL_RPC
1310         bool "Full RPC support"
1311         depends on UCLIBC_HAS_RPC
1312         default y if !HAVE_SHARED
1313         help
1314           Normally we enable just enough RPC support for things like rshd and
1315           nfs mounts to work.  If you find you need the rest of the RPC stuff,
1316           then enable this option.  Most people can safely answer N.
1317
1318 config UCLIBC_HAS_REENTRANT_RPC
1319         bool "Reentrant RPC support"
1320         depends on UCLIBC_HAS_RPC
1321         default y if !HAVE_SHARED
1322         help
1323           Most packages utilize the normal (non-reentrant) RPC functions, but
1324           some (like exportfs from nfs-utils) need these reentrant versions.
1325
1326           Most people can safely answer N.
1327
1328 config UCLIBC_USE_NETLINK
1329         bool "Use netlink to query interfaces"
1330         depends on UCLIBC_HAS_SOCKET
1331         help
1332           In newer versions of Linux (2.4.17+), support was added for querying
1333           network device information via netlink rather than the old style
1334           ioctl's.  Most of the time, the older ioctl style is sufficient (and
1335           it is smaller than netlink), but if you find that not all of your
1336           devices are being returned by the if_nameindex() function, you will
1337           have to use the netlink implementation.
1338
1339           Most people can safely answer N.
1340
1341 config UCLIBC_SUPPORT_AI_ADDRCONFIG
1342         bool "Support the AI_ADDRCONFIG flag"
1343         depends on UCLIBC_USE_NETLINK
1344         help
1345           The implementation of AI_ADDRCONFIG is aligned with the glibc
1346           implementation using netlink to query interfaces to find both
1347           ipv4 and ipv6 support. This is only needed if an application uses
1348           the AI_ADDRCONFIG flag.
1349
1350           Most people can safely answer N.
1351
1352 config UCLIBC_HAS_BSD_RES_CLOSE
1353         bool "Support res_close() (bsd-compat)"
1354         help
1355           Answer Y if you desperately want to support BSD compatibility in
1356           the network code.
1357
1358           Most people will say N.
1359
1360 config UCLIBC_HAS_COMPAT_RES_STATE
1361         bool "Use compatible but bloated _res"
1362         default y
1363         help
1364           Answer Y if you build network utilities and they muck with resolver
1365           internals a lot (_res global structure). uclibc does not use most
1366           of _res.XXX fields, and with this option OFF they won't even exist.
1367           Which will make e.g. dig build fail.
1368           Answering N saves around 400 bytes in bss.
1369
1370 config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
1371         bool "Use extra compatible but extra bloated _res"
1372         help
1373           Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough.
1374           As far as I can say, this should never be needed.
1375
1376 config UCLIBC_HAS_RESOLVER_SUPPORT
1377         bool "DNS resolver functions"
1378         select UCLIBC_HAS_COMPAT_RES_STATE
1379         depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
1380         help
1381           Provide implementations for DNS resolver functions.
1382           In particular, the following functions will be added to the
1383           library:
1384
1385           ns_skiprr, ns_initparse, ns_parserr, ns_msg_getflag,
1386           res_mkquery, res_init, res_ninit, res_close, res_nclose
1387           res_query, res_search, res_querydomain,
1388           dn_expand, dn_comp,
1389           ns_name_uncompress, ns_name_ntop, ns_name_pton, ns_name_unpack,
1390           ns_name_pack, ns_name_compress, ns_name_skip, dn_skipname,
1391           ns_get16, ns_get32, ns_put16, ns_put32
1392
1393 config UCLIBC_HAS_LIBRESOLV_STUB
1394         bool "Provide libresolv stub"
1395         help
1396           Provide a dummy resolv library.
1397
1398 config UCLIBC_HAS_LIBNSL_STUB
1399         bool "Provide libnsl stub"
1400         help
1401           Provide a dummy nsl library.
1402
1403 endif
1404
1405
1406 menu "String and Stdio Support"
1407
1408 config UCLIBC_HAS_STRING_GENERIC_OPT
1409         bool "Use faster (but larger) generic string functions"
1410         default y
1411         help
1412           Answer Y to use the (tweaked) glibc generic string functions.
1413
1414           In general, they are faster (but 3-5K larger) than the base
1415           uClibc string functions which are optimized solely for size.
1416
1417           Many people will answer Y.
1418
1419 config UCLIBC_HAS_STRING_ARCH_OPT
1420         bool "Use arch-specific assembly string functions (where available)"
1421         default y
1422         help
1423           Answer Y to use any archtecture-specific assembly language string
1424           functions available for this target plaform.
1425
1426           Note that assembly implementations are not available for all string
1427           functions, so some generic (written in C) string functions may
1428           still be used.
1429
1430           These are small and fast, the only reason _not_ to say Y here is
1431           for debugging purposes.
1432
1433 config UCLIBC_HAS_STDIO_FUTEXES
1434         bool "Use futexes for multithreaded I/O locking"
1435         depends on UCLIBC_HAS_THREADS_NATIVE
1436         help
1437           If you want to compile uClibc to use futexes for low-level
1438           I/O locking, answer Y.  Otherwise, answer N.
1439
1440 config UCLIBC_HAS_CTYPE_TABLES
1441         bool "Use Table Versions Of 'ctype.h' Functions."
1442         default y
1443         help
1444           Answer Y to use table versions of the 'ctype.h' functions.
1445           While the non-table versions are often smaller when building
1446           statically linked apps, they work only in stub locale mode.
1447
1448           Most people will answer Y.
1449
1450 config UCLIBC_HAS_CTYPE_SIGNED
1451         bool "Support Signed Characters In 'ctype.h' Functions."
1452         depends on UCLIBC_HAS_CTYPE_TABLES
1453         default y
1454         help
1455           Answer Y to enable support for passing signed char values to
1456           the 'ctype.h' functions.  ANSI/ISO C99 and SUSv3 specify that
1457           these functions are only defined for unsigned char values and
1458           EOF.  However, glibc allows negative signed char values as well
1459           in order to support 'broken old programs'.
1460
1461           Most people will answer Y.
1462
1463 choice
1464         prompt "ctype argument checking"
1465         depends on UCLIBC_HAS_CTYPE_TABLES
1466         default UCLIBC_HAS_CTYPE_UNSAFE
1467         help
1468           Please select the invalid arg behavior you want for the 'ctype'
1469           functions.
1470
1471           The 'ctype' functions are now implemented using table lookups, with
1472           the arg being the index.  This can result in incorrect memory accesses
1473           or even segfaults for args outside of the allowed range.
1474
1475           NOTE: This only affects the 'ctype' _functions_.  It does not affect
1476           the macro implementations.
1477
1478 config UCLIBC_HAS_CTYPE_UNSAFE
1479         bool "Do not check -- unsafe"
1480
1481 config UCLIBC_HAS_CTYPE_CHECKED
1482         bool "Detect and handle appropriately"
1483
1484 config UCLIBC_HAS_CTYPE_ENFORCED
1485         bool "Issue a diagnostic and abort()"
1486
1487 endchoice
1488
1489
1490 config UCLIBC_HAS_WCHAR
1491         bool "Wide Character Support"
1492         help
1493           Answer Y to enable wide character support.  This will make uClibc
1494           much larger.  It is also currently required for locale support.
1495
1496           Most people will answer N.
1497
1498 config UCLIBC_HAS_LOCALE
1499         bool "Locale Support"
1500         select UCLIBC_HAS_WCHAR
1501         select UCLIBC_HAS_CTYPE_TABLES
1502         help
1503           uClibc now has full ANSI/ISO C99 locale support (except for
1504           wcsftime() and collating items in regex).  Be aware that enabling
1505           this option will make uClibc much larger.
1506
1507           Enabling UCLIBC_HAS_LOCALE with the default set of supported locales
1508           (169 UTF-8 locales, and 144 locales for other codesets) will enlarge
1509           uClibc by around 300k.  You can reduce this size by building your own
1510           custom set of locate data (see extra/locale/LOCALES for details).
1511
1512           uClibc's locale support is still under development.  For example,
1513           codesets using shift states are not currently supported.  Support is
1514           planned in the next iteration of locale support.
1515
1516           Answer Y to enable locale support.  Most people will answer N.
1517
1518 choice
1519
1520 prompt "Locale data"
1521         depends on UCLIBC_HAS_LOCALE
1522         default UCLIBC_BUILD_ALL_LOCALE
1523
1524 config UCLIBC_BUILD_ALL_LOCALE
1525         bool "All locales"
1526         depends on UCLIBC_HAS_LOCALE
1527         help
1528           This builds all the locales that are available on your
1529           host-box.
1530
1531 config UCLIBC_BUILD_MINIMAL_LOCALE
1532         bool "Only selected locales"
1533         depends on UCLIBC_HAS_LOCALE
1534         help
1535           If you do not need all locales that are available on your
1536           host-box, then set this to 'Y'.
1537
1538 config UCLIBC_PREGENERATED_LOCALE_DATA
1539         bool "Use Pre-generated Locale Data"
1540         depends on UCLIBC_HAS_LOCALE && !TARGET_metag
1541         help
1542           Use pre-built locale data.
1543
1544           Note that these pregenerated locales are sensitive to your
1545           target architecture (endianess, bitcount).
1546
1547           Saying N here is highly recommended.
1548
1549 endchoice
1550
1551 config UCLIBC_BUILD_MINIMAL_LOCALES
1552         string "locales to use"
1553         depends on UCLIBC_BUILD_MINIMAL_LOCALE
1554         default "en_US"
1555         help
1556           Space separated list of locales to use.
1557
1558           E.g.:
1559               en_US en_GB de_AT
1560           default:
1561               en_US
1562
1563 config UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA
1564         bool "Automagically Download the Pre-generated Locale Data (if necessary)"
1565         depends on UCLIBC_PREGENERATED_LOCALE_DATA
1566         help
1567           If you would like the build process to use 'wget' to automatically
1568           download the pregenerated locale data, enable this option.  Otherwise
1569           you will need to obtain the locale data yourself from:
1570                 http://www.uclibc.org/downloads/uClibc-locale-*.tgz
1571           and place the uClibc-locale-*.tgz tarball in the extra/locale/
1572           directory.
1573
1574           Note that the use of pregenerated locale data is discouraged.
1575
1576 config UCLIBC_HAS_XLOCALE
1577         bool "Extended Locale Support (experimental/incomplete)"
1578         depends on UCLIBC_HAS_LOCALE
1579         help
1580           Answer Y to enable extended locale support similar to that provided
1581           by glibc.  This is primarily intended to support libstd++
1582           functionality.
1583           However, it also allows thread-specific locale selection via
1584           uselocale().
1585
1586           Most people will answer N.
1587
1588 config UCLIBC_HAS_HEXADECIMAL_FLOATS
1589         bool "Support hexadecimal float notation"
1590         depends on UCLIBC_HAS_CTYPE_TABLES
1591         depends on UCLIBC_HAS_FLOATS
1592         help
1593           Answer Y to enable support for hexadecimal float notation in the
1594           (wchar and) char string to floating point conversion functions, as
1595            well as support for the %a and %A conversion specifiers in the
1596            *printf() and *scanf() functions.
1597
1598           Most people will answer N.
1599
1600 config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1601         bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
1602         depends on UCLIBC_HAS_LOCALE
1603         depends on UCLIBC_HAS_FLOATS
1604         help
1605           Answer Y to enable support for glibc's \"'\" flag for allowing
1606           locale-specific digit grouping in base 10 integer conversions and
1607           appropriate floating point conversions in the *printf() and *scanf()
1608           functions.
1609
1610           Most people will answer N.
1611
1612 config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
1613         bool "Do not require digit grouping when the \"'\" flag is specified"
1614         depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1615         default y
1616         help
1617           Answer Y to make digit grouping optional when the \"'\" flag is
1618           specified.
1619           This is the standard glibc behavior.  If the initial string of digits
1620           exceeds the maximum group number, the input will be treated as a
1621           normal non-grouped number.
1622
1623           Most people will answer N.
1624
1625 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
1626         bool "Support glibc's register_printf_function() (glibc-compat)"
1627         depends on !USE_OLD_VFPRINTF
1628         help
1629           Answer Y to support glibc's register_printf_function() to allow an
1630           application to add its own printf conversion specifiers.
1631           parse_printf_format() is also enabled.
1632
1633           NOTE: Limits the number or registered specifiers to 10.
1634           NOTE: Requires new conversion specifiers to be ASCII
1635                 characters (0-0x7f).  This is to avoid problems with processing
1636                 format strings in locales with different multibyte conversions.
1637
1638           Most people will answer N.
1639
1640 config USE_OLD_VFPRINTF
1641         bool "Use the old vfprintf implementation"
1642         depends on !UCLIBC_HAS_WCHAR
1643         help
1644           Set to true to use the old vfprintf instead of the new.  This is
1645           roughly C89 compliant with some extensions, and is much smaller.
1646           However, it does not support wide chars, positional args, or glibc
1647           custom printf specifiers.
1648
1649           Most people will answer N.
1650
1651 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
1652         int "Maximum number of positional args.  Either 0 or >= 9."
1653         depends on !USE_OLD_VFPRINTF
1654         default 9
1655         help
1656           Set the maximum number of positional args supported by the
1657           printf/scanf functions.  The Single Unix Specification Version 3
1658           requires a minimum value of 9.  Setting this to a value lower than
1659           9 will disable positional arg support and cause the NL_ARGMAX macro
1660           in limits.h to be #undef'd.
1661
1662           WARNING!  The workspace to support positional args is currently
1663                     allocated on the stack.  You probably don't want to set
1664                     this to too high a value.
1665
1666           Most people will answer 9.
1667
1668 choice
1669         prompt "Stdio buffer size"
1670         default UCLIBC_HAS_STDIO_BUFSIZ_4096
1671         help
1672           Please select a value for BUFSIZ.  This will be used by the
1673           stdio subsystem as the default buffer size for a file, and
1674           affects fopen(), setvbuf(), etc.
1675
1676           NOTE: Setting this to 'none' will disable buffering completely.
1677           However, BUFSIZ will still be defined in stdio.h as 256 because
1678           many applications use this value.
1679
1680 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
1681         bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
1682         depends on !UCLIBC_HAS_WCHAR
1683
1684 config UCLIBC_HAS_STDIO_BUFSIZ_256
1685         bool "256 (minimum ANSI/ISO C99 value)"
1686
1687 config UCLIBC_HAS_STDIO_BUFSIZ_512
1688         bool "512"
1689
1690 config UCLIBC_HAS_STDIO_BUFSIZ_1024
1691         bool "1024"
1692
1693 config UCLIBC_HAS_STDIO_BUFSIZ_2048
1694         bool "2048"
1695
1696 config UCLIBC_HAS_STDIO_BUFSIZ_4096
1697         bool "4096"
1698
1699 config UCLIBC_HAS_STDIO_BUFSIZ_8192
1700         bool "8192"
1701
1702 # If you add more choices, you will need to update uClibc_stdio.h.
1703
1704 endchoice
1705
1706 choice
1707         prompt "Stdio builtin buffer size (uClibc-specific)"
1708         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1709         default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1710         help
1711           When a FILE is created with fopen(), an attempt is made to allocate
1712           a BUFSIZ buffer for it.  If the allocation fails, fopen() will still
1713           succeed but the FILE will be unbuffered.
1714
1715           This option adds a small amount of space to each FILE to act as an
1716           emergency buffer in the event of a buffer allocation failure.
1717
1718           Most people will answer None.
1719
1720 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1721         bool "None"
1722
1723 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1724         bool "4"
1725
1726 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1727         bool "8"
1728
1729 # If you add more choices, you will need to update uClibc_stdio.h.
1730
1731 endchoice
1732
1733 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1734         bool "Attempt to shutdown stdio subsystem when abort() is called."
1735         help
1736           ANSI/ISO C99 requires abort() to be asyn-signal-safe.  So there was
1737           a behavioral change made in SUSv3.  Previously, abort() was required
1738           to have the affect of fclose() on all open streams.  The wording has
1739           been changed to "may" from "shall".
1740
1741           Most people will answer N.
1742
1743 config UCLIBC_HAS_STDIO_GETC_MACRO
1744         bool "Provide a macro version of getc()"
1745         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1746         default y
1747         help
1748           Provide a macro version of getc().
1749
1750           Most people will answer Y.
1751
1752 config UCLIBC_HAS_STDIO_PUTC_MACRO
1753         bool "Provide a macro version of putc()"
1754         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1755         default y
1756         help
1757           Provide a macro version of putc().
1758
1759           Most people will answer Y.
1760
1761 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1762         bool "Support auto-r/w transition"
1763         default y
1764         help
1765           Answer Y to enable the stdio subsystem to automaticly transition
1766           between reading and writing.  This relaxes the ANSI/ISO C99
1767           requirement:
1768
1769           When a file is opened with update mode ('+' as the second or third
1770           character in the list of mode argument values), both input and output
1771           may be performed on the associated stream. However, output shall not
1772           be directly followed by input without an intervening call to the
1773           fflush function or to a file positioning function (fseek, fsetpos,
1774           or rewind), and input shall not be directly followed by output without
1775           an intervening call to a file positioning function, unless the input
1776           operation encounters end­of­file.
1777
1778           Most people will answer Y.
1779
1780 config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
1781         bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
1782         depends on UCLIBC_HAS_LFS
1783         help
1784           Answer Y to enable a uClibc-specific extension to allow passing an
1785           additional 'F' flag in the mode string for fopen() to specify that
1786           the file should be open()ed with the O_LARGEFILE flag set.
1787
1788           Most people will answer N.
1789
1790 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1791         bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1792         help
1793           Answer Y to support a glibc extension to allow passing
1794           additional 'x' flag in the mode string for fopen() to specify that
1795           the file should be open()ed with the O_EXCL flag set.
1796
1797           Most people will answer N.
1798
1799 config UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE
1800         bool "Support an fopen() 'e' flag for close-on-exec mode (glibc-compat)"
1801         help
1802           Answer Y to support a glibc extension to allow passing
1803           additional 'e' flag in the mode string for fopen() to specify that
1804           the file should be open()ed with the O_CLOEXEC flag set.
1805
1806           Most people will answer N.
1807
1808 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1809         bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1810         help
1811           Answer Y to support the glibc 'custom stream' extension functions
1812           fmemopen(), open_memstream(), and fopencookie().
1813
1814           NOTE: There are some minor differences regarding seeking behavior.
1815
1816           Most people will answer N.
1817
1818 config UCLIBC_HAS_PRINTF_M_SPEC
1819         bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1820         help
1821           Answer Y to support a glibc extension to interpret '%m' in printf
1822           format strings as an instruction to output the error message string
1823           (as generated by strerror) corresponding to the current value of
1824           'errno'.
1825
1826           Most people will answer N.
1827
1828 config UCLIBC_HAS_ERRNO_MESSAGES
1829         bool "Include the errno message text in the library"
1830         default y
1831         help
1832           Answer Y if you want to include the errno message text in the
1833           library.  This adds about 3K to the library, but enables strerror()
1834           to generate text other than 'Unknown error <number>'.
1835
1836           Most people will answer Y.
1837
1838 config UCLIBC_HAS_SYS_ERRLIST
1839         bool "Support sys_errlist[] (obsolete-compat)"
1840         depends on UCLIBC_HAS_ERRNO_MESSAGES
1841         help
1842           Answer Y if you want to support the obsolete sys_errlist[].
1843           This adds about 0.5k to the library, except for the mips
1844           arch where it adds over 4K.
1845
1846           WARNING!  In the future, support for sys_errlist[] may be unavailable
1847                     in at least some configurations.  In fact, it may be removed
1848                     altogether.
1849
1850           Most people will answer N.
1851
1852           Application writers: use the strerror(3) function.
1853
1854 config UCLIBC_HAS_SIGNUM_MESSAGES
1855         bool "Include the signum message text in the library"
1856         default y
1857         help
1858           Answer Y if you want to include the signum message text in the
1859           library.  This adds about 0.5K to the library, but enables strsignal()
1860           to generate text other than 'Unknown signal <number>'.
1861
1862           Most people will answer Y.
1863
1864 config UCLIBC_HAS_SYS_SIGLIST
1865         bool "Support sys_siglist[] (bsd-compat)"
1866         depends on UCLIBC_HAS_SIGNUM_MESSAGES
1867         help
1868           Answer Y if you want to support sys_siglist[].
1869
1870           WARNING!  In the future, support for sys_siglist[] may be unavailable
1871                     in at least some configurations.  In fact, it may be removed
1872                     altogether.
1873
1874           Most people will answer N.
1875
1876 config UCLIBC_HAS_GETTEXT_AWARENESS
1877         bool "Include gettext awareness"
1878         depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
1879         help
1880           NOTE!!!  Not yet integrated with strerror and strsignal.  NOTE!!!
1881
1882           Answer Y if you want to include weak stub gettext support and
1883           make the *strerror*() and strsignal() functions gettext-aware.
1884
1885           Currently, to get functional gettext functionality you will need
1886           to use gnu gettext.
1887
1888           Most people will answer N.
1889
1890 config UCLIBC_HAS_GNU_GETOPT
1891         bool "Support gnu getopt"
1892         default y
1893         help
1894           Answer Y if you want to include full gnu getopt() instead of a
1895           (much smaller) SUSv3 compatible getopt().
1896
1897           Most people will answer Y.
1898
1899 config UCLIBC_HAS_GETOPT_LONG
1900         bool "Support getopt_long/getopt_long_only"
1901         depends on !UCLIBC_HAS_GNU_GETOPT
1902         default y
1903         help
1904           Answer Y if you want to include getopt_long[_only() used by many
1905           apps, even busybox.
1906
1907           Most people will answer Y.
1908
1909 config UCLIBC_HAS_GNU_GETSUBOPT
1910         bool "Support glibc getsubopt"
1911         default y
1912         help
1913           Answer Y if you want to include glibc getsubopt() instead of a
1914           smaller SUSv3 compatible getsubopt().
1915
1916           Most people will answer Y.
1917 endmenu
1918
1919
1920 menu "Big and Tall"
1921
1922 config UCLIBC_HAS_REGEX
1923         bool "Regular Expression Support"
1924         default y
1925         help
1926           POSIX regular expression code is really big -- 53k all by itself.
1927           If you don't use regular expressions, turn this off and save space.
1928           Of course, if you only statically link, leave this on, since it will
1929           only be included in your apps if you use regular expressions.
1930
1931 config UCLIBC_HAS_REGEX_OLD
1932         bool "Use the older (stable) regular expression code"
1933         depends on UCLIBC_HAS_REGEX
1934         default y
1935         help
1936           There are two versions of regex.  The older (stable) version has
1937           been in uClibc for quite a long time but hasn't seen too many
1938           updates.  It also has some known issues when dealing with uncommon
1939           corner cases and multibyte/unicode strings.  However, it is quite
1940           a bit smaller than the newer version.
1941
1942           If the older version has worked for you and you don't need unicode
1943           support, then stick with the old version (and say Y here).
1944           Otherwise, you should use the new version (and say N here).
1945
1946 config UCLIBC_HAS_FNMATCH
1947         bool "fnmatch Support"
1948         default y
1949         help
1950           POSIX fnmatch.
1951
1952 config UCLIBC_HAS_FNMATCH_OLD
1953         bool "Use the older (stable) fnmatch code"
1954         depends on UCLIBC_HAS_FNMATCH
1955         default y
1956         help
1957           There are two versions of fnmatch.  The older (stable) version has
1958           been in uClibc for quite a long time but hasn't seen too many
1959           updates.  It also has some known issues when dealing with uncommon
1960           corner cases and multibyte/unicode strings.  However, it is quite
1961           a bit smaller than the newer version.
1962
1963           If the older version has worked for you and you don't need unicode
1964           support, then stick with the old version (and say Y here).
1965           Otherwise, you should use the new version (and say N here).
1966
1967 config UCLIBC_HAS_WORDEXP
1968         bool "Support the wordexp() interface"
1969         depends on UCLIBC_HAS_GLOB
1970         help
1971           The SuSv3 wordexp() interface performs word expansions per the  Shell
1972           and Utilities volume of IEEE Std 1003.1-2001, Section 2.6.  It is
1973           intended for use by applications that want to implement all of the
1974           standard Bourne shell expansions on input data.
1975
1976           This interface is rarely used, and very large.  Unless you have a
1977           pressing need for wordexp(), you should probably answer N.
1978
1979 config UCLIBC_HAS_NFTW
1980         bool "Support the nftw() interface"
1981         help
1982           The SuSv3 nftw() interface is used to recursively descend
1983           directory paths while repeatedly calling a function.
1984
1985           This interface is rarely used, and adds around 4.5k.  Unless you have
1986           a pressing need for nftw(), you should probably answer N.
1987
1988 config UCLIBC_HAS_FTW
1989         bool "Support the ftw() interface (SUSv4-obsolete)"
1990         depends on UCLIBC_SUSV4_LEGACY
1991         help
1992           The SuSv3 ftw() interface is used to recursively descend
1993           directory paths while repeatedly calling a function.
1994
1995           This interface is rarely used, and adds around 4.5k.  Unless you have
1996           a pressing need for ftw(), you should probably answer N.
1997
1998 config UCLIBC_HAS_FTS
1999         bool "Support the fts() interface (bsd-compat)"
2000         help
2001           The fts functions are provided for traversing UNIX file hierarchies.
2002
2003           This interface is currently used by the elfutils and adds
2004           around 7.5k.
2005           You should port your application to use the POSIX nftw()
2006           interface.
2007
2008           Unless you need to build/use elfutils, you should prolly answer N.
2009
2010 config UCLIBC_HAS_GLOB
2011         bool "Support the glob() interface"
2012         depends on UCLIBC_HAS_FNMATCH
2013         default y
2014         help
2015
2016           The glob interface is somewhat large (weighing in at about 2,5k).  It
2017           is used fairly often, but is an option since people wanting to go for
2018           absolute minimum size may wish to omit it.
2019
2020           Most people will answer Y.
2021
2022 config UCLIBC_HAS_GNU_GLOB
2023         bool "Support gnu glob() interface"
2024         depends on UCLIBC_HAS_GLOB
2025         help
2026           The gnu glob interface is somewhat larger (weighing in at about 4,2k)
2027           than it's SuSv3 counterpart (and is out of date). It is an old copy
2028           from glibc and does not support all the GNU specific options.
2029
2030           Answer Y if you want to include full gnu glob() instead of the smaller
2031           SUSv3 compatible glob().
2032
2033           Most people will answer N.
2034
2035 config UCLIBC_HAS_UTMPX
2036        bool "utmpx based support for tracking login/logouts to/from the system"
2037        help
2038          Answer y to enable support for accessing user accounting database.
2039          It can be used to track all login/logout to the system.
2040
2041          If unsure, just answer N.
2042
2043 endmenu
2044
2045
2046
2047
2048 menu "Library Installation Options"
2049
2050 config RUNTIME_PREFIX
2051         string "uClibc runtime library directory"
2052         default "/usr/$(TARGET_ARCH)-linux-uclibc/"
2053         help
2054           RUNTIME_PREFIX is the directory into which the uClibc runtime
2055           libraries will be installed.   The result will look something
2056           like the following:
2057               $(RUNTIME_PREFIX)/
2058                   lib/            <contains all runtime libraries>
2059                   usr/bin/ldd     <the ldd utility program>
2060                   sbin/ldconfig   <the ldconfig utility program>
2061           This value is used by the 'make install' Makefile target.  Since this
2062           directory is compiled into the shared library loader, you will need to
2063           recompile uClibc if you change this value...
2064
2065           For a typical target system this should be set to "/", such that
2066           'make install' will install /lib/libuClibc-<VERSION>.so
2067
2068 config DEVEL_PREFIX
2069         string "uClibc development environment directory"
2070         default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
2071         help
2072           DEVEL_PREFIX is the directory into which the uClibc development
2073           environment will be installed.   The result will look something
2074           like the following:
2075               $(DEVEL_PREFIX)/
2076                   lib/            <contains static libs>
2077                   include/        <Where all the header files go>
2078           This value is used by the 'make install' Makefile target when
2079           installing a uClibc development environment.
2080
2081           For a typical target system this should be set to "/usr", such that
2082           'make install' will install /usr/include/<header files>.
2083
2084 config MULTILIB_DIR
2085         string "library path component"
2086         default "lib"
2087         help
2088           Path component where libraries reside.
2089
2090           For a typical target system this should be set to "lib", such that
2091           'make install' will install libraries to "/lib" and "/usr/lib"
2092           respectively
2093             DEVEL_PREFIX/MULTILIB_DIR
2094             RUNTIME_PREFIX/MULTILIB_DIR
2095
2096           Other settings may include "lib32" or "lib64".
2097
2098 config HARDWIRED_ABSPATH
2099         bool "Hardwire absolute paths into linker scripts"
2100         default y
2101         help
2102           This prepends absolute paths to the libraries mentioned in linker
2103           scripts such as libc.so.
2104
2105           This is a build time optimization.  It has no impact on dynamic
2106           linking at runtime, which doesn't use linker scripts.
2107
2108           You must disable this to use uClibc with old non-sysroot toolchains,
2109           such as the prebuilt binary cross compilers at:
2110              http://uclibc.org/downloads/binaries
2111
2112           The amount of time saved by this optimization is actually too small to
2113           measure. The linker just had to search the library path to find the
2114           linker script, so the dentries are cache hot if it has to search the
2115           same path again.  But it's what glibc does, so we do it too.
2116
2117 endmenu
2118
2119
2120 menu "Security options"
2121
2122 config UCLIBC_BUILD_PIE
2123         bool "Build utilities as ET_DYN/PIE executables"
2124         depends on HAVE_SHARED
2125         depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc
2126         select FORCE_SHAREABLE_TEXT_SEGMENTS
2127         help
2128           If you answer Y here, ldd and iconv are built as ET_DYN/PIE
2129           executables.
2130
2131           It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later.
2132           More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> .
2133
2134           WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so
2135                    all libraries have to be built with -fPIC or -fpic, and all
2136                    assembler functions must be written as position independent
2137                    code (PIC).
2138
2139 config UCLIBC_HAS_ARC4RANDOM
2140         bool "Include the arc4random() function"
2141         help
2142           Answer Y to support the OpenBSD-like arc4random() function. This
2143           function picks a random number between 0 and N, and will always return
2144           something even if the random driver is dead. If urandom fails then
2145           gettimeofday(2) will be used as the random seed. This function is
2146           designed to be more dependable than invoking /dev/urandom directly.
2147           OpenSSL and OpenNTPD currently support this function.
2148
2149           Most people will answer N.
2150
2151 config ARC4RANDOM_USES_NODEV
2152         bool "Do not use /dev/urandom with arc4random()"
2153         depends on UCLIBC_HAS_ARC4RANDOM
2154         help
2155           Answer Y to use gettimeofday(2) and getpid(2) exclusively for
2156           arc4random(). This is not a bad idea for a diskless system, but
2157           it uses a lot of syscalls to stir each array element.
2158
2159           Most people will answer N.
2160
2161 config HAVE_NO_SSP
2162         bool
2163
2164 config UCLIBC_HAS_SSP
2165         bool "Support for GCC stack smashing protector"
2166         depends on !HAVE_NO_SSP
2167         help
2168           Add code to support GCC's -fstack-protector[-all] option to uClibc.
2169           This requires GCC 4.1 or newer.  GCC does not have to provide libssp,
2170           the needed functions are added to ldso/libc instead.
2171
2172           GCC's stack protector is a reimplementation of IBM's propolice.
2173           See http://www.trl.ibm.com/projects/security/ssp/ and
2174           http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
2175           for details.
2176
2177           Note that NOEXECSTACK on a kernel with address space randomization
2178           is generally sufficient to prevent most buffer overflow exploits
2179           without increasing code size.  This option essentially adds debugging
2180           code to catch them.
2181
2182           Most people will answer N.
2183
2184 config UCLIBC_HAS_SSP_COMPAT
2185         bool "Support for gcc-3.x propolice smashing stack protector"
2186         depends on UCLIBC_HAS_SSP
2187         help
2188           Add gcc-3.x propolice smashing stack protector to the library.
2189
2190           This requires a patched version of GCC, supporting the
2191           -fstack-protector[-all] options, with the __guard and
2192           __stack_smash_handler functions removed from libgcc.
2193           These functions are added to ldso/libc instead.
2194
2195           More information at:
2196           <http://www.research.ibm.com/trl/projects/security/ssp/>
2197
2198           Most people will answer N.
2199
2200 config SSP_QUICK_CANARY
2201         bool "Use simple guard values without accessing /dev/urandom"
2202         depends on UCLIBC_HAS_SSP
2203         help
2204           Use gettimeofday(2) to define the __guard without accessing
2205           /dev/urandom.
2206           WARNING: This makes smashing stack protector vulnerable to timing
2207                 attacks.
2208           Most people will answer N.
2209
2210 choice
2211         prompt "Propolice protection blocking signal"
2212         depends on UCLIBC_HAS_SSP
2213         depends on DODEBUG
2214         default PROPOLICE_BLOCK_SEGV
2215         help
2216           "abort" use SIGABRT to block offending programs.
2217           This is the default implementation.
2218
2219           "segfault" use SIGSEGV to block offending programs.
2220           Use this for debugging.
2221
2222           If unsure, answer "abort".
2223
2224 config PROPOLICE_BLOCK_ABRT
2225         bool "abort"
2226
2227 config PROPOLICE_BLOCK_SEGV
2228         bool "segfault"
2229
2230 endchoice
2231
2232 config UCLIBC_BUILD_SSP
2233         bool "Build uClibc with -fstack-protector"
2234         depends on UCLIBC_HAS_SSP
2235         help
2236           Build all uClibc libraries and executables with -fstack-protector,
2237           adding extra stack overflow checking to most uClibc functions.
2238
2239 config UCLIBC_BUILD_RELRO
2240         bool "Build uClibc with linker option -z RELRO"
2241         depends on HAVE_SHARED
2242         default y
2243         help
2244           Build all libraries and executables with "ld -z relro".
2245
2246           This tells the linker to mark chunks of an executable or shared
2247           library read-only after applying dynamic relocations.  (This comes
2248           up when a global const variable is initialized to the address of a
2249           function or the value of another global variable.)
2250
2251           This is a fairly obscure option the ld man page doesn't even bother
2252           to document properly.  It's a security paranoia issue that's more
2253           likely to consume memory (by allocating an extra page) rather than
2254           save it.
2255
2256           This is explained in more depth at
2257           http://www.airs.com/blog/archives/189
2258
2259           Nobody is likely to care whether you say Y or N here.
2260
2261 config UCLIBC_BUILD_NOW
2262         bool "Build uClibc with linker option -z NOW"
2263         depends on HAVE_SHARED
2264         help
2265           Build all libraries and executables with "ld -z now".
2266
2267           This tells the linker to resolve all symbols when the library is
2268           first loaded, rather than when each function is first called.  This
2269           increases start-up latency by a few microseconds and may do
2270           unnecessary work (resolving symbols that are never used), but the
2271           realtime people like it for making microbenchmark timings slightly
2272           more predictable and in some cases it can be slightly faster due to
2273           CPU cache behavior (not having to fault the linker back in to do
2274           lazy symbol resolution).
2275
2276           Most people can't tell the difference between selecting Y or N here.
2277
2278 config UCLIBC_BUILD_NOEXECSTACK
2279         bool "Build uClibc with noexecstack marking"
2280         default y
2281         help
2282           Mark all assembler files as noexecstack, which will mark uClibc
2283           as not requiring an executable stack.  (This doesn't prevent other
2284           files you link against from claiming to need an executable stack, it
2285           just won't cause uClibc to request it unnecessarily.)
2286
2287           This is a security thing to make buffer overflows harder to exploit.
2288           By itself, it's kind of useless, as Linus Torvalds explained in 1998:
2289           http://old.lwn.net/1998/0806/a/linus-noexec.html
2290
2291           It only actually provides any security when combined with address
2292           space randomization, explained here: http://lwn.net/Articles/121845/
2293
2294           Address space randomization is on by default in current linux
2295           kernels (although it can be disabled using the option
2296           CONFIG_COMPAT_BRK).
2297
2298           You should probably say Y.
2299
2300 endmenu
2301
2302 menu "Development/debugging options"
2303
2304 config CROSS_COMPILER_PREFIX
2305         string "Cross-compiling toolchain prefix"
2306         default ""
2307         help
2308           The prefix used to execute your cross-compiling toolchain.  For
2309           example, if you run 'arm-linux-uclibc-gcc' to compile something,
2310           then enter 'arm-linux-uclibc-' here.
2311
2312 config UCLIBC_EXTRA_CFLAGS
2313         string "Extra CFLAGS"
2314         default ""
2315         help
2316           Add any additional CFLAGS to be used to build uClibc.
2317
2318 config DODEBUG
2319         bool "Enable debugging symbols"
2320         select EXTRA_WARNINGS
2321         help
2322           Say Y here if you wish to compile uClibc with debugging symbols.
2323           This will allow you to use a debugger to examine uClibc internals
2324           while applications are running.  This increases the size of the
2325           library considerably and should only be used when doing development.
2326           If you are doing development and want to debug uClibc, answer Y.
2327
2328           Otherwise, answer N.
2329
2330 config DODEBUG_PT
2331         bool "Build pthread with debugging output"
2332         depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
2333         help
2334           Enable debug output in libpthread.  This is only useful when doing
2335           development in libpthread itself.
2336
2337           Otherwise, answer N.
2338
2339 config DOSTRIP
2340         bool "Strip libraries and executables"
2341         default y
2342         depends on !DODEBUG
2343         help
2344           Say Y here if you do wish to strip all uClibc libraries and
2345           executables.  No stripping increases the size of the binaries
2346           considerably, but makes it possible to debug uClibc libraries.
2347           Most people will answer Y.
2348
2349 config DOASSERTS
2350         bool "Build with run-time assertion testing"
2351         help
2352           Say Y here to include runtime assertion tests.
2353           This enables runtime assertion testing in some code, which can
2354           increase the size of the library and incur runtime overhead.
2355           If you say N, then this testing will be disabled.
2356
2357 config SUPPORT_LD_DEBUG
2358         bool "Build the shared library loader with debugging support"
2359         depends on HAVE_SHARED
2360         help
2361           Answer Y here to enable all the extra code needed to debug the uClibc
2362           native shared library loader.  The level of debugging noise that is
2363           generated depends on the LD_DEBUG environment variable...  Just set
2364           LD_DEBUG to something like: 'LD_DEBUG=token1,token2,..  prog' to
2365           debug your application.  Diagnostic messages will then be printed to
2366           the stderr.
2367
2368           For now these debugging tokens are available:
2369             detail        provide more information for some options
2370             move          display copy processing
2371             symbols       display symbol table processing
2372             reloc         display relocation processing; detail shows the
2373                           relocation patch
2374             nofixups      never fixes up jump relocations
2375             bindings      displays the resolve processing (function calls);
2376                           detail shows the relocation patch
2377             all           Enable everything!
2378
2379           The additional environment variable:
2380             LD_DEBUG_OUTPUT=file
2381           redirects the diagnostics to an output file created using
2382           the specified name and the process id as a suffix.
2383
2384           An excellent start is simply:
2385             $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
2386           or to log everything to a file named 'logfile', try this
2387             $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
2388
2389           If you are doing development and want to debug uClibc's shared library
2390           loader, answer Y.  Mere mortals answer N.
2391
2392 config SUPPORT_LD_DEBUG_EARLY
2393         bool "Build the shared library loader with early debugging support"
2394         depends on HAVE_SHARED
2395         help
2396           Answer Y here to if you find the uClibc shared library loader is
2397           crashing or otherwise not working very early on.  This is typical
2398           only when starting a new port when you haven't figured out how to
2399           properly get the values for argc, argv, environ, etc.  This method
2400           allows a degree of visibility into the very early shared library
2401           loader initialization process.  If you are doing development and want
2402           to debug the uClibc shared library loader early initialization,
2403           answer Y.  Mere mortals answer N.
2404
2405 config UCLIBC_MALLOC_DEBUGGING
2406         bool "Build malloc with debugging support"
2407         depends on MALLOC || MALLOC_STANDARD
2408         select DOASSERTS
2409         help
2410           Answer Y here to compile extra debugging support code into malloc.
2411           Malloc debugging output may then be enabled at runtime using the
2412           MALLOC_DEBUG environment variable.
2413
2414           The value of MALLOC_DEBUG should be an integer, which is interpreted
2415           as a bitmask with the following bits:
2416                   1   -  do extra consistency checking
2417                   2   -  output messages for malloc/free calls and OS
2418                          allocation calls
2419                   4   -  output messages for the `MMB' layer
2420                   8   -  output messages for internal malloc heap manipulation
2421                          calls
2422
2423           Because this increases the size of malloc appreciably (due to strings
2424           etc), you should say N unless you need to debug a malloc problem.
2425
2426 config UCLIBC_HAS_BACKTRACE
2427         bool "Add support for application self-debugging"
2428         depends on HAVE_SHARED
2429         help
2430           Answer Y here to compile support for application self-debugging, by adding
2431           a new shared object "libubacktrace.so" that provides the following new
2432           functions:
2433           backtrace, backtrace_symbols, backtrace_symbols_fd
2434
2435           The backtrace functionality is currently supported on SH platform, and it
2436           based on dwarf2 informations to properly work, so any application that
2437           want to use backtrace needs to be built with -fexceptions flag.
2438
2439           The symbol names may be unavailable without the use of special linker
2440           options. For systems using the GNU linker, it is necessary to use the
2441           -rdynamic linker option too. Note that names of "static" functions are not
2442           exposed, and won't be available in the backtrace.
2443
2444 config WARNINGS
2445         string "Compiler Warnings"
2446         default "-Wall"
2447         help
2448           Set this to the set of compiler warnings you wish to see while compiling.
2449
2450 config EXTRA_WARNINGS
2451         bool "Enable extra annoying warnings"
2452         help
2453           If you wish to build with extra warnings enabled, say Y here.
2454
2455 config DOMULTI
2456         bool "Compile all sources at once into an object"
2457         help
2458           Set this to compile all sources at once into an object (IMA).
2459           This mode of compilation uses alot of memory but may produce
2460           smaller binaries.
2461
2462           Note that you need a very recent GCC for this to work, like
2463           gcc >= 4.3 plus eventually some patches.
2464
2465           If unsure, keep the default of N.
2466
2467 config UCLIBC_MJN3_ONLY
2468         bool "Manuel's hidden warnings"
2469         help
2470           Answer Y here to see all Manuel's personal notes, warnings, and todos.
2471
2472           Most people will answer N.
2473
2474 endmenu