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