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