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
17 prompt "Target Architecture"
18 default TARGET_aarch64 if DESIRED_TARGET_ARCH = "aarch64"
19 default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha"
20 default TARGET_arc if DESIRED_TARGET_ARCH = "arc"
21 default TARGET_arm if DESIRED_TARGET_ARCH = "arm"
22 default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32"
23 default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin"
24 default TARGET_cris if DESIRED_TARGET_ARCH = "cris"
25 default TARGET_csky if DESIRED_TARGET_ARCH = "csky"
26 default TARGET_frv if DESIRED_TARGET_ARCH = "frv"
27 default TARGET_h8300 if DESIRED_TARGET_ARCH = "h8300"
28 default TARGET_hppa if DESIRED_TARGET_ARCH = "hppa"
29 default TARGET_i386 if DESIRED_TARGET_ARCH = "i386"
30 default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64"
31 default TARGET_lm32 if DESIRED_TARGET_ARCH = "lm32"
32 default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k"
33 default TARGET_metag if DESIRED_TARGET_ARCH = "metag"
34 default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze"
35 default TARGET_mips if DESIRED_TARGET_ARCH = "mips"
36 default TARGET_nds32 if DESIRED_TARGET_ARCH = "nds32"
37 default TARGET_nios2 if DESIRED_TARGET_ARCH = "nios2"
38 default TARGET_or1k if DESIRED_TARGET_ARCH = "or1k"
39 default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc"
40 default TARGET_sh if DESIRED_TARGET_ARCH = "sh"
41 default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc"
42 default TARGET_sparc64 if DESIRED_TARGET_ARCH = "sparc64"
43 default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64"
44 default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa"
46 The architecture of your target.
66 # someone could sync this tree:
67 # http://linux-c6x.org/git/?p=uClibc.git;a=summary
101 config TARGET_microblaze
116 config TARGET_powerpc
125 config TARGET_sparc64
137 menu "Target Architecture Features and Options"
140 source "extra/Configs/Config.aarch64"
144 source "extra/Configs/Config.alpha"
148 source "extra/Configs/Config.arm"
152 source "extra/Configs/Config.avr32"
156 source "extra/Configs/Config.bfin"
160 source "extra/Configs/Config.cris"
164 source "extra/Configs/Config.csky"
168 source "extra/Configs/Config.frv"
172 source "extra/Configs/Config.h8300"
176 source "extra/Configs/Config.hppa"
180 source "extra/Configs/Config.i386"
184 source "extra/Configs/Config.ia64"
188 source "extra/Configs/Config.lm32"
192 source "extra/Configs/Config.m68k"
196 source "extra/Configs/Config.metag"
200 source "extra/Configs/Config.nds32"
204 source "extra/Configs/Config.nios2"
208 source "extra/Configs/Config.microblaze"
212 source "extra/Configs/Config.mips"
216 source "extra/Configs/Config.or1k"
220 source "extra/Configs/Config.powerpc"
224 source "extra/Configs/Config.sh"
228 source "extra/Configs/Config.sparc"
232 source "extra/Configs/Config.sparc64"
236 source "extra/Configs/Config.x86_64"
240 source "extra/Configs/Config.xtensa"
244 source "extra/Configs/Config.c6x"
248 source "extra/Configs/Config.arc"
251 config TARGET_SUBARCH
253 default "e500" if CONFIG_E500
254 default "classic" if CONFIG_CLASSIC
255 default "sh4" if CONFIG_SH4
256 default "sh4" if CONFIG_SH4A
257 default "" if CONFIG_386
258 default "i486" if CONFIG_486
259 default "i586" if CONFIG_586
260 default "i686" if CONFIG_686
263 source "extra/Configs/Config.in.arch"
267 menu "General Library Settings"
273 bool "Generate only Position Independent Code (PIC)"
275 depends on !HAVE_NO_PIC
277 If you wish to build all of uClibc as PIC objects, then answer Y here.
278 If you are unsure, then you should answer N.
280 config ARCH_HAS_NO_SHARED
283 config ARCH_HAS_NO_LDSO
285 select ARCH_HAS_NO_SHARED
287 config ARCH_HAS_UCONTEXT
291 bool "Enable shared libraries"
292 depends on !ARCH_HAS_NO_SHARED
295 If you wish to build uClibc with support for shared libraries then
296 answer Y here. If you only want to build uClibc as a static library,
299 config FORCE_SHAREABLE_TEXT_SEGMENTS
300 bool "Only load shared libraries which can share their text segment"
301 depends on HAVE_SHARED
304 If you answer Y here, the uClibc native shared library loader will
305 only load shared libraries, which do not need to modify any
306 non-writable segments. These libraries haven't set the DT_TEXTREL
307 tag in the dynamic section (==> objdump).
308 All your libraries must be compiled with -fPIC or -fpic, and all
309 assembler function must be written as position independent code (PIC).
310 Enabling this option will make uClibc's shared library loader a
311 little bit smaller and guarantee that no memory will be wasted by
312 badly coded shared libraries.
314 config LDSO_LDD_SUPPORT
315 bool "Native 'ldd' support"
316 depends on HAVE_SHARED
319 Enable all the code needed to support traditional ldd,
320 which executes the shared library loader to resolve all dependencies
321 and then provide a list of shared libraries that are required for an
322 application to function. Disabling this option will make uClibc's
323 shared library loader a little bit smaller.
324 Most people will answer Y.
326 config LDSO_CACHE_SUPPORT
327 bool "Enable library loader cache (ld.so.conf)"
328 depends on HAVE_SHARED
331 Enable this to make use of /etc/ld.so.conf, the shared library loader
332 cache configuration file to support for non-standard library paths.
333 After updating this file, it is necessary to run 'ldconfig' to update
334 the /etc/ld.so.cache shared library loader cache file.
336 config LDSO_PRELOAD_ENV_SUPPORT
337 bool "Enable library loader LD_PRELOAD environment"
338 depends on HAVE_SHARED
341 Enable this to make use of LD_PRELOAD environment variable.
342 A whitespace-separated list of additional, user-specified, ELF shared
343 libraries to be loaded before all others. This can be used to
344 selectively override functions in other shared libraries. For
345 set-user-ID/set-group-ID ELF binaries, only libraries in the standard
346 search directories that are also set-user-ID will be loaded.
348 config LDSO_PRELOAD_FILE_SUPPORT
349 bool "Enable library loader preload file (ld.so.preload)"
350 depends on HAVE_SHARED
352 Enable this to make use of /etc/ld.so.preload. This file contains a
353 whitespace separated list of shared libraries to be loaded before
356 config LDSO_BASE_FILENAME
357 string "Shared library loader naming prefix"
358 depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
361 If you wish to support both uClibc and glibc on the same system, it
362 is necessary to set this to something other than "ld.so" to avoid
363 conflicts with glibc, which also uses "ld.so". This prevents both
364 libraries from using the same /etc/ld.so.* files. If you wish to
365 support both uClibc and glibc on the same system then you should set
366 this to "ld-uClibc.so".
368 Most people will leave this set to the default of "ld.so".
370 WARNING: Changing the default prefix could cause problems with
373 config LDSO_STANDALONE_SUPPORT
374 bool "Dynamic linker stand-alone mode support"
375 depends on HAVE_SHARED
377 The dynamic linker can be run either indirectly through running some
378 dynamically linked program or library (in which case no command line
379 options to the dynamic linker can be passed and, in the ELF case, the
380 dynamic linker which is stored in the .interp section of the program
381 is executed) or directly by running:
383 /lib/ld-uClibc.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]
385 Stand-alone execution is a prerequisite for adding prelink
386 capabilities to uClibc dynamic linker, as well useful for testing an
387 updated version of the dynamic linker without breaking the system.
389 config LDSO_PRELINK_SUPPORT
390 bool "Dynamic linker prelink support"
391 depends on HAVE_SHARED
392 select LDSO_STANDALONE_SUPPORT
394 The dynamic linker can be used in stand-alone mode by the prelink tool
395 for prelinking ELF shared libraries and binaries to speed up startup
396 time. It also is able to load and handle prelinked libraries and
399 config UCLIBC_STATIC_LDCONFIG
400 bool "Link ldconfig statically"
401 depends on HAVE_SHARED
404 Enable this option to statically link the ldconfig binary.
406 Making ldconfig static can be beneficial if you have a library
407 problem and need to use ldconfig to recover. Sometimes it is
408 preferable to instead keep the size of the system down, in which
409 case you should disable this option.
412 bool "Enable ELF RUNPATH tag support"
413 depends on HAVE_SHARED
414 default y if LDSO_CACHE_SUPPORT
416 ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths
417 which extend the library search paths. They are really only useful
418 if a package installs libraries in non standard locations and
419 ld.so.conf support is disabled.
421 Usage of RUNPATH tags is not too common, so disabling this feature
422 should be safe for most people.
424 config LDSO_RUNPATH_OF_EXECUTABLE
425 bool "Use executables RUNPATH/RPATH when searching for libraries."
426 depends on LDSO_RUNPATH
429 Use the executables RUNPATH/RPATH to find to find libraries even
430 though this behavour is not standard. Setting this option causes
431 the uclibc dynamic linker behavour to match the glibc dynamic linker.
433 config LDSO_SAFE_RUNPATH
434 bool "Allow only RUNPATH beginning with /"
435 depends on LDSO_RUNPATH
438 Allow only absolute path in RPATH/RUNPATH.
440 config LDSO_SEARCH_INTERP_PATH
441 bool "Add ldso path to lib search path"
442 depends on HAVE_SHARED
445 The ldso is told where it is being executed from and can use that
446 path to find related core libraries. This is useful by default,
447 but can be annoying in a mixed development environment.
449 i.e. if the ldso is run from /foo/boo/ldso.so, it will start its
450 library search with /foo/boo/
452 If unsure, simply say Y here.
454 config LDSO_LD_LIBRARY_PATH
455 bool "Add LD_LIBRARY_PATH to lib search path"
456 depends on HAVE_SHARED
459 On hardened system it could be useful to disable the use of
460 LD_LIBRARY_PATH environment variable (a colon-separated list of
461 directories in which to search for ELF libraries at execution-time).
463 If unsure, simply say Y here.
465 config LDSO_NO_CLEANUP
466 bool "Disable automatic unloading of dynamically loaded shared objects"
467 depends on HAVE_SHARED
469 If you need complete allocation traces when debugging memory leaks
470 using Valgrind in a process that dynamically loads shared objects,
471 then answer Y here. Unlike glibc, uClibc unloads all dynamically
472 loaded shared objects when a process exits, which prevents Valgrind
473 from correctly resolving the symbols from the unloaded shared objects.
474 Unless you know you need this, you should answer N.
476 config UCLIBC_CTOR_DTOR
480 If you wish to build uClibc with support for global constructor
481 (ctor) and global destructor (dtor) support, then answer Y here.
482 When ctor/dtor support is enabled, binaries linked with uClibc must
483 also be linked with crtbegin.o and crtend.o which are provided by gcc
484 (the "*startfile:" and "*endfile:" settings in your gcc specs file
485 may need to be adjusted to include these files). This support will
486 also add a small amount of additional size to each binary compiled vs
487 uClibc. If you will be using uClibc with C++, or if you need the gcc
488 __attribute__((constructor)) and __attribute__((destructor)) to work,
489 then you definitely want to answer Y here. If you don't need ctors
490 or dtors and want your binaries to be as small as possible, then
493 config LDSO_GNU_HASH_SUPPORT
494 bool "Enable GNU hash style support"
495 depends on HAVE_SHARED
497 Newest binutils support a new hash style named GNU-hash. The dynamic
498 linker will use the new GNU-hash section (.gnu.hash) for symbol lookup
499 if present into the ELF binaries, otherwise it will use the old SysV
500 hash style (.hash). This ensures that it is completely backward
502 Further, being the hash table implementation self-contained into each
503 executable and shared libraries, objects with mixed hash style can
504 peacefully coexist in the same process.
506 If you want to use this new feature, answer Y
509 prompt "Thread support"
510 default HAS_NO_THREADS
512 If you want to compile uClibc with pthread support, then answer Y.
513 This will increase the size of uClibc by adding a bunch of locking
514 to critical data structures, and adding extra code to ensure that
515 functions are properly reentrant.
517 config HAS_NO_THREADS
520 Disable thread support.
522 config UCLIBC_HAS_LINUXTHREADS
524 # linuxthreads need nanosleep()
525 select UCLIBC_HAS_REALTIME
526 depends on !TARGET_aarch64 && \
529 If you want to compile uClibc with Linuxthreads support, then answer Y.
531 config UCLIBC_HAS_THREADS_NATIVE
532 bool "Native POSIX Threading (NPTL)"
533 select UCLIBC_HAS_TLS
534 select UCLIBC_HAS_STDIO_FUTEXES
535 select UCLIBC_HAS_REALTIME
536 # i386 has no lowlevellock support (yet) as opposed to i486 onward
537 depends on !CONFIG_386 && \
549 If you want to compile uClibc with NPTL support, then answer Y.
553 config UCLIBC_HAS_THREADS
554 def_bool y if !HAS_NO_THREADS
556 config UCLIBC_HAS_TLS
557 bool "Thread-Local Storage"
558 depends on UCLIBC_HAS_THREADS_NATIVE
560 If you want to enable TLS support then answer Y.
561 This is fast an efficient way to store per-thread local data
562 which is not on stack. It needs __thread support enabled in
565 config PTHREADS_DEBUG_SUPPORT
566 bool "Build pthreads debugging support"
567 depends on UCLIBC_HAS_THREADS
569 Say Y here if you wish to be able to debug applications that use
570 uClibc's pthreads library. By enabling this option, a library
571 named libthread_db will be built. This library will be dlopen()'d
572 by gdb and will allow gdb to debug the threads in your application.
574 IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library,
575 you must compile gdb with uClibc in order for pthread debugging to
578 If you are doing development and want to debug applications using
579 uClibc's pthread library, answer Y. Otherwise, answer N.
582 config UCLIBC_HAS_SYSLOG
583 bool "Syslog support"
585 depends on UCLIBC_HAS_NETWORK_SUPPORT
586 select UCLIBC_HAS_SOCKET
588 Support sending messages to the system logger.
589 This requires socket-support.
591 config UCLIBC_HAS_LFS
594 Large file support (always enabled; config symbol retained for
595 feature test to be compatible with uClibc).
597 prompt "Malloc Implementation"
598 default MALLOC if ! ARCH_USE_MMU
599 default MALLOC_STANDARD if ARCH_USE_MMU
604 "malloc" use mmap for all allocations and so works very well on
605 MMU-less systems that do not support the brk() system call. It is
606 pretty smart about reusing already allocated memory, and minimizing
608 This is the default for uClinux MMU-less systems.
613 "malloc-simple" is trivially simple and slow as molasses. It
614 was written from scratch for uClibc, and is the simplest possible
615 (and therefore smallest) malloc implementation.
617 This uses only the mmap() system call to allocate and free memory,
618 and does not use the brk() system call at all, making it a fine
619 choice for MMU-less systems with very limited memory. It's 100%
620 standards compliant, thread safe, very small, and releases freed
621 memory back to the OS immediately rather than keeping it in the
622 process's heap for reallocation. It is also VERY SLOW.
624 config MALLOC_STANDARD
625 bool "malloc-standard"
626 depends on ARCH_USE_MMU
628 "malloc-standard" is derived from the public domain dlmalloc
629 implementation by Doug Lea. It is quite fast, and is pretty smart
630 about reusing already allocated memory, and minimizing memory
631 wastage. This uses brk() for small allocations, while using mmap()
632 for larger allocations. This is the default malloc implementation
635 If unsure, answer "malloc-standard".
639 config UCLIBC_DYNAMIC_ATEXIT
640 bool "Dynamic atexit() Support"
643 When this option is enabled, uClibc will support an infinite number,
644 of atexit() and on_exit() functions, limited only by your available
645 memory. This can be important when uClibc is used with C++, since
646 global destructors are implemented via atexit(), and it is quite
647 possible to exceed the default number when this option is disabled.
648 Enabling this option adds a few bytes, and more significantly makes
649 atexit and on_exit depend on malloc, which can be bad when compiling
652 Unless you use uClibc with C++, you should probably answer N.
655 bool "Old (visible) atexit Support"
657 Enable this option if you want to update from 0.9.28 to git/0.9.29,
658 else you will be missing atexit() until you rebuild all apps.
660 config UCLIBC_HAS_UTMPX
661 bool "utmpx based support for tracking login/logouts to/from the system"
663 Answer y to enable support for accessing user accounting database.
664 It can be used to track all login/logout to the system.
666 config UCLIBC_HAS_UTMP
667 bool "utmp support (XPG2 compat, SVr4 compat)"
668 depends on UCLIBC_HAS_UTMPX
670 Answer y to enable legacy SVID support for accessing
671 user accounting database:
672 getutent(), getutid(), getutline(), pututline(),
673 setutent(), endutent(), utmpname() in utmp.h
674 It can be used to track all login/logout to the system.
676 If unsure, answer N and use corresponding POSIX functions
679 config UCLIBC_SUSV2_LEGACY
680 bool "Enable SuSv2 LEGACY functions"
682 Enable this option if you want to have SuSv2 LEGACY functions
683 Currently applies to:
687 WARNING! ABI incompatibility.
689 config UCLIBC_SUSV3_LEGACY
690 bool "Enable SuSv3 LEGACY functions"
696 Enable this option if you want to have SuSv3 LEGACY functions
697 in the library, else they are replaced by SuSv3 proposed macros.
698 Currently applies to:
700 bcmp, bcopy, bzero, index, rindex, ftime,
701 bsd_signal, (ecvt), (fcvt), gcvt, (getcontext),
702 (getwd), (makecontext),
703 mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr),
704 scalb, (setcontext), (swapcontext), ualarm, usleep,
707 WARNING! ABI incompatibility.
709 config UCLIBC_HAS_CONTEXT_FUNCS
710 bool "Use obsolescent context control functions"
711 depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT
713 Add into library the SuSv3 obsolescent functions used for context
714 control. The setcontext family allows the implementation in C of
715 advanced control flow patterns such as iterators, fibers, and
716 coroutines. They may be viewed as an advanced version of
717 setjmp/longjmp; whereas the latter allows only a single non-local jump
718 up the stack, setcontext allows the creation of multiple cooperative
719 threads of control, each with its own stack.
720 These functions are: setcontext, getcontext, makecontext, swapcontext.
722 config UCLIBC_SUSV3_LEGACY_MACROS
723 bool "Enable SuSv3 LEGACY macros"
725 Enable this option if you want to have SuSv3 LEGACY macros.
726 Currently applies to bcopy/bzero/bcmp/index/rindex et al.
727 WARNING! ABI incompatibility.
729 config UCLIBC_SUSV4_LEGACY
730 bool "Enable SuSv4 LEGACY or obsolescent functions"
732 Enable this option if you want to have SuSv4 LEGACY functions
733 and macros in the library.
734 Currently applies to:
737 _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer,
738 gettimeofday, isascii, pthread_getconcurrency,
739 pthread_setconcurrency, setitimer, setpgrp, sighold,
740 sigignore, sigpause, sigrelse, sigset, siginterrupt,
741 tempnam, toascii, ulimit.
744 asctime, asctime_r, ctime, ctime_r, gets, rand_r,
747 WARNING! ABI incompatibility.
749 config UCLIBC_STRICT_HEADERS
750 bool "Hide structures and constants for unsupported features"
752 Hide structures and constants in headers that should not be used,
753 because the respective feature is disabled.
755 WARNING! enabling this option requires to patch many faulty apps,
756 since they make (wrongly) use of these structures/constants,
757 although the feature was disabled.
759 config UCLIBC_HAS_STUBS
760 bool "Provide stubs for unavailable functionality"
762 With this option uClibc provides non-functional stubs for
763 functions which are impossible to implement on the target
764 architecture. Otherwise, such functions are simply omitted.
766 config UCLIBC_HAS_SHADOW
767 bool "Shadow Password Support"
770 Answer N if you do not need shadow password support.
771 Most people will answer Y.
773 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
774 bool "Support for program_invocation_name"
776 Support for the GNU-specific program_invocation_name and
777 program_invocation_short_name strings. Some GNU packages
778 (like tar and coreutils) utilize these for extra useful
779 output, but in general are not required.
781 At startup, these external strings are automatically set
782 up based on the value of ARGV[0].
784 If unsure, just answer N.
786 config UCLIBC_HAS___PROGNAME
787 bool "Support for __progname"
790 Some packages (like openssh) like to peek into internal libc
791 symbols to make their output a bit more user friendly.
793 At startup, __progname is automatically set up based on the
796 If unsure, just answer N.
798 config UCLIBC_HAS_PTY
799 bool "Support for pseudo-terminals"
802 This enables support for pseudo-terminals (see man 4 pts
805 If unsure, just answer Y.
808 bool "Assume that /dev/pts is a devpts or devfs file system"
810 depends on UCLIBC_HAS_PTY
812 Enable this if /dev/pts is on a devpts or devfs filesystem. Both
813 these filesystems automatically manage permissions on the /dev/pts
814 devices. You may need to mount your devpts or devfs filesystem on
815 /dev/pts for this to work.
817 Most people should answer Y.
819 config UNIX98PTY_ONLY
820 bool "Support only Unix 98 PTYs"
822 depends on UCLIBC_HAS_PTY
824 If you want to support only Unix 98 PTYs enable this. Some older
825 applications may need this disabled and will thus use legacy BSD
826 style PTY handling which is more complex and also bigger than
827 Unix 98 PTY handling.
829 For most current programs, you can generally answer Y.
832 config UCLIBC_HAS_GETPT
833 bool "Support getpt() (glibc-compat)"
834 depends on UCLIBC_HAS_PTY
836 Some packages may need getpt().
837 All of those are non-standard and can be considered
838 GNU/libc compatibility.
839 Either use posix_openpt() or just open /dev/ptmx yourself.
841 If unsure, just say N.
845 # Have to use __libc_ptyname{1,2}[] and related bloat
846 config UCLIBC_HAS_GETPT
850 config UCLIBC_HAS_LIBUTIL
851 bool "Provide libutil library and functions"
852 depends on UCLIBC_HAS_PTY
854 Provide a libutil library.
855 This non-standard conforming library provides the following
858 forkpty(): combines openpty(), fork(2), and login_tty() to
859 create a new process operating in a pseudo-terminal.
860 login(): write utmp and wtmp entries
861 login_tty(): prepares for a login on the tty fd by creating a
862 new session, making fd the controlling terminal for
863 the calling process, setting fd to be the standard
864 input, output, and error streams of the current
865 process, and closing fd.
866 logout(): write utmp and wtmp entries
867 logwtmp(): constructs a utmp structure and calls updwtmp() to
868 append the structure to the utmp file.
869 openpty(): finds an available pseudo-terminal and returns
870 file descriptors for the master and slave
872 This library adds about 3k-4k to your system.
874 config UCLIBC_HAS_TM_EXTENSIONS
875 bool "Support 'struct tm' timezone extension fields"
878 Enabling this option adds fields to 'struct tm' in time.h for
879 tracking the number of seconds east of UTC, and an abbreviation for
880 the current timezone. These fields are not specified by the SuSv3
881 standard, but they are commonly used in both GNU and BSD application
884 To strictly follow the SuSv3 standard, leave this disabled.
885 Most people will probably want to answer Y.
887 config UCLIBC_HAS_TZ_CACHING
888 bool "Enable caching of the last valid timezone 'TZ' string"
891 Answer Y to enable caching of the last valid 'TZ' string describing
892 the timezone setting. This allows a quick string compare to avoid
893 repeated parsing of unchanged 'TZ' strings when tzset() is called.
895 Most people will answer Y.
897 config UCLIBC_HAS_TZ_FILE
898 bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
901 Answer Y to enable the setting of a default timezone for uClibc.
903 Ordinarily, uClibc gets the timezone information exclusively from the
904 'TZ' environment variable. In particular, there is no support for
905 the zoneinfo directory tree or the /etc/timezone file used by glibc.
907 With this option enabled, uClibc will use the value stored in the
908 file '/etc/TZ' (default path) to obtain timezone information if the
909 'TZ' environment variable is missing or has an invalid value. The
910 file consists of a single line (newline required) of text describing
911 the timezone in the format specified for the TZ environment variable.
913 Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
915 http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
916 for details on valid settings of 'TZ'.
918 Most people will answer Y.
920 config UCLIBC_HAS_TZ_FILE_READ_MANY
921 bool "Repeatedly read the '/etc/TZ' file"
922 depends on UCLIBC_HAS_TZ_FILE
925 Answer Y to enable repeated reading of the '/etc/TZ' file even after
926 a valid value has been read. This incurs the overhead of an
927 open/read/close for each tzset() call (explicit or implied). However,
928 setting this will allow applications to update their timezone
929 information if the contents of the file change.
931 Most people will answer Y.
933 config UCLIBC_TZ_FILE_PATH
934 string "Path to the 'TZ' file for setting the global timezone"
935 depends on UCLIBC_HAS_TZ_FILE
938 This is the path to the 'TZ' file.
940 Most people will use the default of '/etc/TZ'.
942 config UCLIBC_FALLBACK_TO_ETC_LOCALTIME
943 bool "Use /etc/localtime as a fallback"
944 depends on UCLIBC_HAS_TZ_FILE
947 Answer Y to try to use /etc/localtime file.
948 On glibc systems this file (if it is in TZif2 format)
949 contains timezone string at the end.
951 Most people will answer Y.
955 menu "Advanced Library Settings"
957 config UCLIBC_PWD_BUFFER_SIZE
958 int "Buffer size for getpwnam() and friends"
962 This sets the value of the buffer size for getpwnam() and friends.
963 By default, this is 256. (For reference, glibc uses 1024).
964 The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX
967 config UCLIBC_GRP_BUFFER_SIZE
968 int "Buffer size for getgrnam() and friends"
972 This sets the value of the buffer size for getgrnam() and friends.
973 By default, this is 256. (For reference, glibc uses 1024).
974 The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX
977 comment "Support various families of functions"
979 config UCLIBC_LINUX_SPECIFIC
980 bool "Linux specific functions"
983 accept4(), bdflush(),
984 capget(), capset(), eventfd(), fallocate(),
985 fstatfs(), getrandom(), inotify_*(), ioperm(), iopl(),
986 madvise(), modify_ldt(), pipe2(), personality(),
987 prctl()/arch_prctl(), pivot_root(), modify_ldt(),
988 ppoll(), readahead(), reboot(), remap_file_pages(),
989 sched_getaffinity(), sched_setaffinity(), sendfile(),
990 setfsgid(), setfsuid(), setresgid(), setresuid(),
991 splice(), vmsplice(), tee(), signalfd(), statfs(),
992 swapoff(), swapon(), sync_file_range(), syncfs(),
993 _sysctl(), sysinfo(), timerfd_*(), vhangup(), umount(),
996 config UCLIBC_HAS_GNU_ERROR
997 bool "Support GNU extensions for error-reporting"
1000 Support for the GNU-specific error(), error_at_line(),
1001 void (* error_print_progname)(), error_message_count
1002 functions and variables. Some GNU packages
1003 utilize these for extra useful output, but in general
1006 If unsure, just answer N.
1008 config UCLIBC_BSD_SPECIFIC
1009 bool "BSD specific functions"
1012 mincore(), getdomainname(), setdomainname()
1016 config UCLIBC_HAS_BSD_ERR
1017 bool "BSD err functions"
1020 These functions are non-standard BSD extensions.
1021 err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx()
1025 config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
1026 bool "BSD obsolete signal functions"
1028 These functions are provided as a compatibility interface for
1029 programs that make use of the historical System V signal API.
1030 This API is obsolete:
1031 new applications should use the POSIX signal API (sigaction(2),
1032 sigprocmask(2), etc.).
1035 sigset(), sighold(), sigrelse(), sigignore()
1039 config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL
1040 bool "SYSV obsolete signal functions"
1042 Use of sysv_signal() should be avoided; use sigaction(2) instead.
1046 config UCLIBC_NTP_LEGACY
1047 bool "ntp_*() aliases"
1049 Provide legacy aliases for ntp functions:
1050 ntp_adjtime(), ntp_gettime()
1052 It is safe to say N here.
1054 config UCLIBC_SV4_DEPRECATED
1055 bool "Enable SVr4 deprecated functions"
1057 These functions are DEPRECATED in System V release 4.
1058 Say N unless you desparately need one of the functions below:
1060 ustat() [use statfs(2) in your code instead]
1062 config UCLIBC_HAS_REALTIME
1063 bool "Realtime-related family of SUSv functions"
1066 These functions are part of the Timers option and need not
1067 be available on all implementations.
1068 Includes AIO, message-queue, scheduler, semaphore functions:
1083 clock_getres(), clock_gettime(), clock_settime()
1085 mlockall(), munlockall()
1097 sched_get_priority_max(), sched_get_priority_min()
1098 sched_getscheduler()
1099 sched_rr_get_interval()
1101 sched_setscheduler()
1108 sem_trywait(), sem_wait()
1111 sigtimedwait(), sigwaitinfo()
1114 timer_getoverrun(), timer_gettime(), timer_settime()
1116 config UCLIBC_HAS_ADVANCED_REALTIME
1117 bool "Advanced realtime-related family of SUSv functions"
1119 depends on UCLIBC_HAS_REALTIME
1121 These functions are part of the Timers option and need not
1122 be available on all implementations.
1124 clock_getcpuclockid()
1133 posix_spawnattr_destroy(), posix_spawnattr_init()
1134 posix_spawnattr_getflags(), posix_spawnattr_setflags()
1135 posix_spawnattr_getpgroup(), posix_spawnattr_setpgroup()
1136 posix_spawnattr_getschedparam(), posix_spawnattr_setschedparam()
1137 posix_spawnattr_getschedpolicy(), posix_spawnattr_setschedpolicy()
1138 posix_spawnattr_getsigdefault(), posix_spawnattr_setsigdefault()
1139 posix_spawnattr_getsigmask(), posix_spawnattr_setsigmask()
1140 posix_spawn_file_actions_addclose()
1141 posix_spawn_file_actions_adddup2()
1142 posix_spawn_file_actions_addopen()
1143 posix_spawn_file_actions_destroy()
1144 posix_spawn_file_actions_init()
1147 posix_typed_mem_get_info()
1148 pthread_mutex_timedlock()
1151 #config UCLIBC_HAS_TERMIOS
1152 # bool "termios functions"
1155 # Get and set terminal attributes, line control, get and set baud
1157 # termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(),
1158 # tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(),
1159 # cfsetispeed(), cfsetospeed(), cfsetspeed()
1163 config UCLIBC_HAS_EPOLL
1167 epoll_create(), epoll_ctl(), epoll_wait() functions.
1169 config UCLIBC_HAS_XATTR
1170 bool "Extended Attributes"
1173 Extended Attributes support.
1188 Say N unless you need support for extended attributes and the
1189 filesystems do actually support them.
1191 config UCLIBC_HAS_PROFILING
1192 bool "Profiling support"
1195 gcc's -finstrument-functions needs these.
1197 Most people can safely answer N.
1199 config UCLIBC_HAS_CRYPT_IMPL
1200 bool "libcrypt support"
1203 libcrypt contains crypt(), setkey() and encrypt()
1205 config UCLIBC_HAS_SHA256_CRYPT_IMPL
1206 bool "libcrypt SHA256 support"
1207 depends on UCLIBC_HAS_CRYPT_IMPL
1209 This adds support for SHA256 password hashing via the crypt() function.
1210 Say N here if you do not need SHA256 crypt support.
1212 config UCLIBC_HAS_SHA512_CRYPT_IMPL
1213 bool "libcrypt SHA512 support"
1214 depends on UCLIBC_HAS_CRYPT_IMPL
1216 This adds support for SHA512 password hashing via the crypt() function.
1217 Say N here if you do not need SHA512 crypt support.
1219 config UCLIBC_HAS_CRYPT_STUB
1220 bool "libcrypt stubs"
1222 depends on !UCLIBC_HAS_CRYPT_IMPL
1224 Standards mandate that crypt(3) provides a stub if it is unavailable.
1225 If you enable this option then stubs for
1226 crypt(), setkey() and encrypt()
1227 will be provided in a small libcrypt.
1229 config UCLIBC_HAS_CRYPT
1231 depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
1234 menuconfig UCLIBC_HAS_NETWORK_SUPPORT
1235 bool "Networking Support"
1238 Say N here if you do not need network support.
1240 if UCLIBC_HAS_NETWORK_SUPPORT
1241 config UCLIBC_HAS_SOCKET
1242 bool "Socket support"
1245 If you want to include support for sockets then answer Y.
1247 config UCLIBC_HAS_IPV4
1248 bool "IP version 4 support"
1250 select UCLIBC_HAS_SOCKET
1252 If you want to include support for the Internet Protocol
1253 (IP version 4) then answer Y.
1255 Most people will say Y.
1257 config UCLIBC_HAS_IPV6
1258 bool "IP version 6 support"
1259 select UCLIBC_HAS_SOCKET
1261 If you want to include support for the next version of the Internet
1262 Protocol (IP version 6) then answer Y.
1264 Most people should answer N.
1266 config UCLIBC_USE_NETLINK
1267 bool "Use netlink to query interfaces"
1268 depends on UCLIBC_HAS_SOCKET
1270 In newer versions of Linux (2.4.17+), support was added for querying
1271 network device information via netlink rather than the old style
1272 ioctl's. Most of the time, the older ioctl style is sufficient (and
1273 it is smaller than netlink), but if you find that not all of your
1274 devices are being returned by the if_nameindex() function, you will
1275 have to use the netlink implementation.
1277 Most people can safely answer N.
1279 config UCLIBC_SUPPORT_AI_ADDRCONFIG
1280 bool "Support the AI_ADDRCONFIG flag"
1281 depends on UCLIBC_USE_NETLINK
1283 The implementation of AI_ADDRCONFIG is aligned with the glibc
1284 implementation using netlink to query interfaces to find both
1285 ipv4 and ipv6 support. This is only needed if an application uses
1286 the AI_ADDRCONFIG flag.
1288 Most people can safely answer N.
1290 config UCLIBC_HAS_BSD_RES_CLOSE
1291 bool "Support res_close() (bsd-compat)"
1293 Answer Y if you desperately want to support BSD compatibility in
1296 Most people will say N.
1298 config UCLIBC_HAS_COMPAT_RES_STATE
1299 bool "Use compatible but bloated _res"
1302 Answer Y if you build network utilities and they muck with resolver
1303 internals a lot (_res global structure). uclibc does not use most
1304 of _res.XXX fields, and with this option OFF they won't even exist.
1305 Which will make e.g. dig build fail.
1306 Answering N saves around 400 bytes in bss.
1308 config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
1309 bool "Use extra compatible but extra bloated _res"
1311 Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough.
1312 As far as I can say, this should never be needed.
1314 config UCLIBC_HAS_RESOLVER_SUPPORT
1315 bool "DNS resolver functions"
1316 select UCLIBC_HAS_COMPAT_RES_STATE
1317 depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
1319 Provide implementations for DNS resolver functions.
1320 In particular, the following functions will be added to the
1323 ns_skiprr, ns_initparse, ns_parserr, ns_msg_getflag,
1324 res_mkquery, res_init, res_ninit, res_close, res_nclose
1325 res_query, res_search, res_querydomain,
1327 ns_name_uncompress, ns_name_ntop, ns_name_pton, ns_name_unpack,
1328 ns_name_pack, ns_name_compress, ns_name_skip, dn_skipname,
1329 ns_get16, ns_get32, ns_put16, ns_put32
1334 menu "String and Stdio Support"
1336 config UCLIBC_HAS_STRING_GENERIC_OPT
1337 bool "Use faster (but larger) generic string functions"
1340 Answer Y to use the (tweaked) glibc generic string functions.
1342 In general, they are faster (but 3-5K larger) than the base
1343 uClibc string functions which are optimized solely for size.
1345 Many people will answer Y.
1347 config UCLIBC_HAS_STRING_ARCH_OPT
1348 bool "Use arch-specific assembly string functions (where available)"
1351 Answer Y to use any archtecture-specific assembly language string
1352 functions available for this target plaform.
1354 Note that assembly implementations are not available for all string
1355 functions, so some generic (written in C) string functions may
1358 These are small and fast, the only reason _not_ to say Y here is
1359 for debugging purposes.
1361 config UCLIBC_HAS_STDIO_FUTEXES
1362 bool "Use futexes for multithreaded I/O locking"
1363 depends on UCLIBC_HAS_THREADS_NATIVE
1365 If you want to compile uClibc to use futexes for low-level
1366 I/O locking, answer Y. Otherwise, answer N.
1368 config UCLIBC_HAS_CTYPE_TABLES
1369 bool "Use Table Versions Of 'ctype.h' Functions."
1372 Answer Y to use table versions of the 'ctype.h' functions.
1373 While the non-table versions are often smaller when building
1374 statically linked apps, they work only in stub locale mode.
1376 Most people will answer Y.
1378 config UCLIBC_HAS_CTYPE_SIGNED
1379 bool "Support Signed Characters In 'ctype.h' Functions."
1380 depends on UCLIBC_HAS_CTYPE_TABLES
1383 Answer Y to enable support for passing signed char values to
1384 the 'ctype.h' functions. ANSI/ISO C99 and SUSv3 specify that
1385 these functions are only defined for unsigned char values and
1386 EOF. However, glibc allows negative signed char values as well
1387 in order to support 'broken old programs'.
1389 Most people will answer Y.
1392 prompt "ctype argument checking"
1393 depends on UCLIBC_HAS_CTYPE_TABLES
1394 default UCLIBC_HAS_CTYPE_UNSAFE
1396 Please select the invalid arg behavior you want for the 'ctype'
1399 The 'ctype' functions are now implemented using table lookups, with
1400 the arg being the index. This can result in incorrect memory accesses
1401 or even segfaults for args outside of the allowed range.
1403 NOTE: This only affects the 'ctype' _functions_. It does not affect
1404 the macro implementations.
1406 config UCLIBC_HAS_CTYPE_UNSAFE
1407 bool "Do not check -- unsafe"
1409 config UCLIBC_HAS_CTYPE_CHECKED
1410 bool "Detect and handle appropriately"
1412 config UCLIBC_HAS_CTYPE_ENFORCED
1413 bool "Issue a diagnostic and abort()"
1418 config UCLIBC_HAS_WCHAR
1419 bool "Wide Character Support"
1421 Answer Y to enable wide character support. This will make uClibc
1422 much larger. It is also currently required for locale support.
1424 Most people will answer N.
1426 config UCLIBC_HAS_LIBICONV
1427 bool "Iconv Support"
1428 select UCLIBC_HAS_WCHAR
1430 Add tiny iconv support for charset conversion from and to UTF-8.
1432 config UCLIBC_HAS_LIBINTL
1433 bool "Intl stubs support"
1435 If you enable this option you get stubs for the gettext family of
1438 config UCLIBC_HAS_LOCALE
1439 bool "Locale Support"
1440 select UCLIBC_HAS_WCHAR
1441 select UCLIBC_HAS_CTYPE_TABLES
1442 select UCLIBC_HAS_LIBICONV
1444 uClibc now has full ANSI/ISO C99 locale support (except for
1445 wcsftime() and collating items in regex). Be aware that enabling
1446 this option will make uClibc much larger.
1448 Enabling UCLIBC_HAS_LOCALE with the default set of supported locales
1449 (169 UTF-8 locales, and 144 locales for other codesets) will enlarge
1450 uClibc by around 300k. You can reduce this size by building your own
1451 custom set of locate data (see extra/locale/LOCALES for details).
1453 uClibc's locale support is still under development. For example,
1454 codesets using shift states are not currently supported. Support is
1455 planned in the next iteration of locale support.
1457 Answer Y to enable locale support. Most people will answer N.
1461 prompt "Locale data"
1462 depends on UCLIBC_HAS_LOCALE
1463 default UCLIBC_BUILD_MINIMAL_LOCALE
1465 config UCLIBC_BUILD_MINIMAL_LOCALE
1466 bool "Only selected locales"
1467 depends on UCLIBC_HAS_LOCALE
1469 If you do not need all locales that are available on your
1470 host-box, then set this to 'Y'.
1472 config UCLIBC_BUILD_ALL_LOCALE
1474 depends on UCLIBC_HAS_LOCALE
1476 This builds all the locales that are available on your
1481 config UCLIBC_BUILD_MINIMAL_LOCALES
1482 string "locales to use"
1483 depends on UCLIBC_BUILD_MINIMAL_LOCALE
1486 Space separated list of locales to use.
1493 config UCLIBC_HAS_XLOCALE
1494 bool "Extended Locale Support (experimental/incomplete)"
1495 depends on UCLIBC_HAS_LOCALE
1497 Answer Y to enable extended locale support similar to that provided
1498 by glibc. This is primarily intended to support libstd++
1500 However, it also allows thread-specific locale selection via
1503 Most people will answer N.
1505 config UCLIBC_HAS_HEXADECIMAL_FLOATS
1506 bool "Support hexadecimal float notation"
1507 depends on UCLIBC_HAS_CTYPE_TABLES
1508 depends on UCLIBC_HAS_FLOATS
1510 Answer Y to enable support for hexadecimal float notation in the
1511 (wchar and) char string to floating point conversion functions, as
1512 well as support for the %a and %A conversion specifiers in the
1513 *printf() and *scanf() functions.
1515 Most people will answer N.
1517 config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1518 bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
1519 depends on UCLIBC_HAS_LOCALE
1520 depends on UCLIBC_HAS_FLOATS
1522 Answer Y to enable support for glibc's \"'\" flag for allowing
1523 locale-specific digit grouping in base 10 integer conversions and
1524 appropriate floating point conversions in the *printf() and *scanf()
1527 Most people will answer N.
1529 config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
1530 bool "Do not require digit grouping when the \"'\" flag is specified"
1531 depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1534 Answer Y to make digit grouping optional when the \"'\" flag is
1536 This is the standard glibc behavior. If the initial string of digits
1537 exceeds the maximum group number, the input will be treated as a
1538 normal non-grouped number.
1540 Most people will answer N.
1542 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
1543 bool "Support glibc's register_printf_function() (glibc-compat)"
1544 depends on !USE_OLD_VFPRINTF
1546 Answer Y to support glibc's register_printf_function() to allow an
1547 application to add its own printf conversion specifiers.
1548 parse_printf_format() is also enabled.
1550 NOTE: Limits the number or registered specifiers to 10.
1551 NOTE: Requires new conversion specifiers to be ASCII
1552 characters (0-0x7f). This is to avoid problems with processing
1553 format strings in locales with different multibyte conversions.
1555 Most people will answer N.
1557 config USE_OLD_VFPRINTF
1558 bool "Use the old vfprintf implementation"
1559 depends on !UCLIBC_HAS_WCHAR
1561 Set to true to use the old vfprintf instead of the new. This is
1562 roughly C89 compliant with some extensions, and is much smaller.
1563 However, it does not support wide chars, positional args, or glibc
1564 custom printf specifiers.
1566 Most people will answer N.
1568 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
1569 int "Maximum number of positional args. Either 0 or >= 9."
1570 depends on !USE_OLD_VFPRINTF
1573 Set the maximum number of positional args supported by the
1574 printf/scanf functions. The Single Unix Specification Version 3
1575 requires a minimum value of 9. Setting this to a value lower than
1576 9 will disable positional arg support and cause the NL_ARGMAX macro
1577 in limits.h to be #undef'd.
1579 WARNING! The workspace to support positional args is currently
1580 allocated on the stack. You probably don't want to set
1581 this to too high a value.
1583 Most people will answer 9.
1586 prompt "Stdio buffer size"
1587 default UCLIBC_HAS_STDIO_BUFSIZ_4096
1589 Please select a value for BUFSIZ. This will be used by the
1590 stdio subsystem as the default buffer size for a file, and
1591 affects fopen(), setvbuf(), etc.
1593 NOTE: Setting this to 'none' will disable buffering completely.
1594 However, BUFSIZ will still be defined in stdio.h as 256 because
1595 many applications use this value.
1597 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
1598 bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
1599 depends on !UCLIBC_HAS_WCHAR
1601 config UCLIBC_HAS_STDIO_BUFSIZ_256
1602 bool "256 (minimum ANSI/ISO C99 value)"
1604 config UCLIBC_HAS_STDIO_BUFSIZ_512
1607 config UCLIBC_HAS_STDIO_BUFSIZ_1024
1610 config UCLIBC_HAS_STDIO_BUFSIZ_2048
1613 config UCLIBC_HAS_STDIO_BUFSIZ_4096
1616 config UCLIBC_HAS_STDIO_BUFSIZ_8192
1619 # If you add more choices, you will need to update uClibc_stdio.h.
1624 prompt "Stdio builtin buffer size (uClibc-specific)"
1625 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1626 default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1628 When a FILE is created with fopen(), an attempt is made to allocate
1629 a BUFSIZ buffer for it. If the allocation fails, fopen() will still
1630 succeed but the FILE will be unbuffered.
1632 This option adds a small amount of space to each FILE to act as an
1633 emergency buffer in the event of a buffer allocation failure.
1635 Most people will answer None.
1637 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1640 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1643 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1646 # If you add more choices, you will need to update uClibc_stdio.h.
1650 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1651 bool "Attempt to shutdown stdio subsystem when abort() is called."
1653 ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was
1654 a behavioral change made in SUSv3. Previously, abort() was required
1655 to have the affect of fclose() on all open streams. The wording has
1656 been changed to "may" from "shall".
1658 Most people will answer N.
1660 config UCLIBC_HAS_STDIO_GETC_MACRO
1661 bool "Provide a macro version of getc()"
1662 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1665 Provide a macro version of getc().
1667 Most people will answer Y.
1669 config UCLIBC_HAS_STDIO_PUTC_MACRO
1670 bool "Provide a macro version of putc()"
1671 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1674 Provide a macro version of putc().
1676 Most people will answer Y.
1678 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1679 bool "Support auto-r/w transition"
1682 Answer Y to enable the stdio subsystem to automaticly transition
1683 between reading and writing. This relaxes the ANSI/ISO C99
1686 When a file is opened with update mode ('+' as the second or third
1687 character in the list of mode argument values), both input and output
1688 may be performed on the associated stream. However, output shall not
1689 be directly followed by input without an intervening call to the
1690 fflush function or to a file positioning function (fseek, fsetpos,
1691 or rewind), and input shall not be directly followed by output without
1692 an intervening call to a file positioning function, unless the input
1693 operation encounters endÂofÂfile.
1695 Most people will answer Y.
1697 config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
1698 bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
1700 Answer Y to enable a uClibc-specific extension to allow passing an
1701 additional 'F' flag in the mode string for fopen() to specify that
1702 the file should be open()ed with the O_LARGEFILE flag set.
1704 Most people will answer N.
1706 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1707 bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1709 Answer Y to support a glibc extension to allow passing
1710 additional 'x' flag in the mode string for fopen() to specify that
1711 the file should be open()ed with the O_EXCL flag set.
1713 Most people will answer N.
1715 config UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE
1716 bool "Support an fopen() 'e' flag for close-on-exec mode (glibc-compat)"
1718 Answer Y to support a glibc extension to allow passing
1719 additional 'e' flag in the mode string for fopen() to specify that
1720 the file should be open()ed with the O_CLOEXEC flag set.
1722 Most people will answer N.
1724 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1725 bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1727 Answer Y to support the glibc 'custom stream' extension functions
1728 fmemopen(), open_memstream(), and fopencookie().
1730 NOTE: There are some minor differences regarding seeking behavior.
1732 Most people will answer N.
1734 config UCLIBC_HAS_PRINTF_M_SPEC
1735 bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1737 Answer Y to support a glibc extension to interpret '%m' in printf
1738 format strings as an instruction to output the error message string
1739 (as generated by strerror) corresponding to the current value of
1742 Most people will answer N.
1744 config UCLIBC_HAS_ERRNO_MESSAGES
1745 bool "Include the errno message text in the library"
1748 Answer Y if you want to include the errno message text in the
1749 library. This adds about 3K to the library, but enables strerror()
1750 to generate text other than 'Unknown error <number>'.
1752 Most people will answer Y.
1754 config UCLIBC_HAS_SYS_ERRLIST
1755 bool "Support sys_errlist[] (obsolete-compat)"
1756 depends on UCLIBC_HAS_ERRNO_MESSAGES
1758 Answer Y if you want to support the obsolete sys_errlist[].
1759 This adds about 0.5k to the library, except for the mips
1760 arch where it adds over 4K.
1762 WARNING! In the future, support for sys_errlist[] may be unavailable
1763 in at least some configurations. In fact, it may be removed
1766 Most people will answer N.
1768 Application writers: use the strerror(3) function.
1770 config UCLIBC_HAS_SIGNUM_MESSAGES
1771 bool "Include the signum message text in the library"
1774 Answer Y if you want to include the signum message text in the
1775 library. This adds about 0.5K to the library, but enables strsignal()
1776 to generate text other than 'Unknown signal <number>'.
1778 Most people will answer Y.
1780 config UCLIBC_HAS_SYS_SIGLIST
1781 bool "Support sys_siglist[] (bsd-compat)"
1782 depends on UCLIBC_HAS_SIGNUM_MESSAGES
1784 Answer Y if you want to support sys_siglist[].
1786 WARNING! In the future, support for sys_siglist[] may be unavailable
1787 in at least some configurations. In fact, it may be removed
1790 Most people will answer N.
1792 config UCLIBC_HAS_GNU_GETOPT
1793 bool "Support gnu getopt"
1796 Answer Y if you want to include full gnu getopt() instead of a
1797 (much smaller) SUSv3 compatible getopt().
1798 Note that getopt_long, getopt_long_only as well as getsubopt
1799 are implemented on top of this choice.
1801 Most people will answer Y.
1803 config UCLIBC_HAS_GETOPT_LONG
1804 bool "Support getopt_long/getopt_long_only (glibc-compat)"
1807 Answer Y if you want to include getopt_long[_only()] used by many
1810 Most people will answer Y.
1812 config UCLIBC_HAS_GNU_GETSUBOPT
1813 bool "Support getsubopt"
1816 Answer Y if you want to include getsubopt().
1818 Most people will answer Y.
1820 config UCLIBC_HAS_ARGP
1822 select UCLIBC_HAS_GETOPT_LONG
1823 select UCLIBC_HAS_GNU_GETOPT
1824 select UCLIBC_HAS_WCHAR
1827 Argp is an interface for parsing unix-style argument vectors. Unlike
1828 the common getopt interface, it provides many advanced features in
1829 addition to parsing options, such as automatic output in response to
1830 `--help' and `--version' options.
1831 A library can export an argp option parser, which programs can easily
1832 use in conjunction with their own option parser.
1833 Argp support is needed by elfutils libdw.
1835 Most people can safely answer N.
1842 config UCLIBC_HAS_REGEX
1843 bool "Regular Expression Support"
1846 POSIX regular expression code is really big -- 53k all by itself.
1847 If you don't use regular expressions, turn this off and save space.
1848 Of course, if you only statically link, leave this on, since it will
1849 only be included in your apps if you use regular expressions.
1851 config UCLIBC_HAS_FNMATCH
1852 bool "fnmatch Support"
1857 config UCLIBC_HAS_WORDEXP
1858 bool "Support the wordexp() interface"
1859 depends on UCLIBC_HAS_GLOB
1861 The SuSv3 wordexp() interface performs word expansions per the Shell
1862 and Utilities volume of IEEE Std 1003.1-2001, Section 2.6. It is
1863 intended for use by applications that want to implement all of the
1864 standard Bourne shell expansions on input data.
1866 This interface is rarely used, and very large. Unless you have a
1867 pressing need for wordexp(), you should probably answer N.
1869 config UCLIBC_HAS_NFTW
1870 bool "Support the nftw() interface"
1872 The SuSv3 nftw() interface is used to recursively descend
1873 directory paths while repeatedly calling a function.
1875 This interface is rarely used, and adds around 4.5k. Unless you have
1876 a pressing need for nftw(), you should probably answer N.
1878 config UCLIBC_HAS_FTW
1879 bool "Support the ftw() interface (SUSv4-obsolete)"
1880 depends on UCLIBC_SUSV4_LEGACY
1882 The SuSv3 ftw() interface is used to recursively descend
1883 directory paths while repeatedly calling a function.
1885 This interface is rarely used, and adds around 4.5k. Unless you have
1886 a pressing need for ftw(), you should probably answer N.
1888 config UCLIBC_HAS_FTS
1889 bool "Support the fts() interface (bsd-compat)"
1891 The fts functions are provided for traversing UNIX file hierarchies.
1893 This interface is currently used by the elfutils and adds
1895 You should port your application to use the POSIX nftw()
1898 Unless you need to build/use elfutils, you should prolly answer N.
1900 config UCLIBC_HAS_GLOB
1901 bool "Support the glob() interface"
1902 depends on UCLIBC_HAS_FNMATCH
1906 The glob interface is somewhat large (weighing in at about 2,5k). It
1907 is used fairly often, but is an option since people wanting to go for
1908 absolute minimum size may wish to omit it.
1910 Most people will answer Y.
1912 config UCLIBC_HAS_GNU_GLOB
1913 bool "Support gnu glob() interface"
1914 depends on UCLIBC_HAS_GLOB
1916 The gnu glob interface is somewhat larger (weighing in at about 4,2k)
1917 than it's SuSv3 counterpart (and is out of date). It is an old copy
1918 from glibc and does not support all the GNU specific options.
1920 Answer Y if you want to include full gnu glob() instead of the smaller
1921 SUSv3 compatible glob().
1923 Most people will answer N.
1930 menu "Library Installation Options"
1932 config RUNTIME_PREFIX
1933 string "uClibc runtime library directory"
1934 default "/usr/$(TARGET_ARCH)-linux-uclibc/"
1936 RUNTIME_PREFIX is the directory into which the uClibc runtime
1937 libraries will be installed. The result will look something
1940 lib/ <contains all runtime libraries>
1941 usr/bin/ldd <the ldd utility program>
1942 sbin/ldconfig <the ldconfig utility program>
1943 This value is used by the 'make install' Makefile target. Since this
1944 directory is compiled into the shared library loader, you will need to
1945 recompile uClibc if you change this value...
1947 For a typical target system this should be set to "/", such that
1948 'make install' will install /lib/libuClibc-<VERSION>.so
1951 string "uClibc development environment directory"
1952 default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
1954 DEVEL_PREFIX is the directory into which the uClibc development
1955 environment will be installed. The result will look something
1958 lib/ <contains static libs>
1959 include/ <Where all the header files go>
1960 This value is used by the 'make install' Makefile target when
1961 installing a uClibc development environment.
1963 For a typical target system this should be set to "/usr", such that
1964 'make install' will install /usr/include/<header files>.
1967 string "library path component"
1970 Path component where libraries reside.
1972 For a typical target system this should be set to "lib", such that
1973 'make install' will install libraries to "/lib" and "/usr/lib"
1975 DEVEL_PREFIX/MULTILIB_DIR
1976 RUNTIME_PREFIX/MULTILIB_DIR
1978 Other settings may include "lib32" or "lib64".
1980 config HARDWIRED_ABSPATH
1981 bool "Hardwire absolute paths into linker scripts"
1984 This prepends absolute paths to the libraries mentioned in linker
1985 scripts such as libc.so.
1987 This is a build time optimization. It has no impact on dynamic
1988 linking at runtime, which doesn't use linker scripts.
1990 You must disable this to use uClibc with old non-sysroot toolchains,
1991 such as the prebuilt binary cross compilers at:
1992 http://uclibc.org/downloads/binaries
1994 The amount of time saved by this optimization is actually too small to
1995 measure. The linker just had to search the library path to find the
1996 linker script, so the dentries are cache hot if it has to search the
1997 same path again. But it's what glibc does, so we do it too.
2002 menu "Security options"
2004 config UCLIBC_BUILD_PIE
2005 bool "Build utilities as ET_DYN/PIE executables"
2006 depends on HAVE_SHARED
2007 depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc || TARGET_nds32
2008 select FORCE_SHAREABLE_TEXT_SEGMENTS
2010 If you answer Y here, ldd and iconv are built as ET_DYN/PIE
2013 It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later.
2014 More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> .
2016 WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so
2017 all libraries have to be built with -fPIC or -fpic, and all
2018 assembler functions must be written as position independent
2021 config UCLIBC_HAS_ARC4RANDOM
2022 bool "Include the arc4random() function"
2024 Answer Y to support the OpenBSD-like arc4random() function. This
2025 function picks a random number between 0 and N, and will always return
2026 something even if the random driver is dead. If urandom fails then
2027 gettimeofday(2) will be used as the random seed. This function is
2028 designed to be more dependable than invoking /dev/urandom directly.
2029 OpenSSL and OpenNTPD currently support this function.
2031 Most people will answer N.
2033 config ARC4RANDOM_USES_NODEV
2034 bool "Do not use /dev/urandom with arc4random()"
2035 depends on UCLIBC_HAS_ARC4RANDOM
2037 Answer Y to use gettimeofday(2) and getpid(2) exclusively for
2038 arc4random(). This is not a bad idea for a diskless system, but
2039 it uses a lot of syscalls to stir each array element.
2041 Most people will answer N.
2046 config UCLIBC_HAS_SSP
2047 bool "Support for GCC stack smashing protector"
2048 depends on !HAVE_NO_SSP
2050 Add code to support GCC's -fstack-protector[-all] option to uClibc.
2051 This requires GCC 4.1 or newer. GCC does not have to provide libssp,
2052 the needed functions are added to ldso/libc instead.
2054 GCC's stack protector is a reimplementation of IBM's propolice.
2055 See http://www.trl.ibm.com/projects/security/ssp/ and
2056 http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
2059 Note that NOEXECSTACK on a kernel with address space randomization
2060 is generally sufficient to prevent most buffer overflow exploits
2061 without increasing code size. This option essentially adds debugging
2064 Most people will answer N.
2066 config SSP_QUICK_CANARY
2067 bool "Use simple guard values without accessing /dev/urandom"
2068 depends on UCLIBC_HAS_SSP
2070 Use gettimeofday(2) to define the __guard without accessing
2072 WARNING: This makes smashing stack protector vulnerable to timing
2074 Most people will answer N.
2077 prompt "Propolice protection blocking signal"
2078 depends on UCLIBC_HAS_SSP
2080 default PROPOLICE_BLOCK_SEGV
2082 "abort" use SIGABRT to block offending programs.
2083 This is the default implementation.
2085 "segfault" use SIGSEGV to block offending programs.
2086 Use this for debugging.
2088 If unsure, answer "abort".
2090 config PROPOLICE_BLOCK_ABRT
2093 config PROPOLICE_BLOCK_SEGV
2098 config UCLIBC_BUILD_SSP
2099 bool "Build uClibc with -fstack-protector"
2100 depends on UCLIBC_HAS_SSP
2102 Build all uClibc libraries and executables with -fstack-protector,
2103 adding extra stack overflow checking to most uClibc functions.
2105 config UCLIBC_BUILD_RELRO
2106 bool "Build uClibc with linker option -z RELRO"
2107 depends on HAVE_SHARED
2110 Build all libraries and executables with "ld -z relro".
2112 This tells the linker to mark chunks of an executable or shared
2113 library read-only after applying dynamic relocations. (This comes
2114 up when a global const variable is initialized to the address of a
2115 function or the value of another global variable.)
2117 This is a fairly obscure option the ld man page doesn't even bother
2118 to document properly. It's a security paranoia issue that's more
2119 likely to consume memory (by allocating an extra page) rather than
2122 This is explained in more depth at
2123 http://www.airs.com/blog/archives/189
2125 Nobody is likely to care whether you say Y or N here.
2127 config UCLIBC_BUILD_NOW
2128 bool "Build uClibc with linker option -z NOW"
2129 depends on HAVE_SHARED
2131 Build all libraries and executables with "ld -z now".
2133 This tells the linker to resolve all symbols when the library is
2134 first loaded, rather than when each function is first called. This
2135 increases start-up latency by a few microseconds and may do
2136 unnecessary work (resolving symbols that are never used), but the
2137 realtime people like it for making microbenchmark timings slightly
2138 more predictable and in some cases it can be slightly faster due to
2139 CPU cache behavior (not having to fault the linker back in to do
2140 lazy symbol resolution).
2142 Most people can't tell the difference between selecting Y or N here.
2144 config UCLIBC_BUILD_NOEXECSTACK
2145 bool "Build uClibc with noexecstack marking"
2148 Mark all assembler files as noexecstack, which will mark uClibc
2149 as not requiring an executable stack. (This doesn't prevent other
2150 files you link against from claiming to need an executable stack, it
2151 just won't cause uClibc to request it unnecessarily.)
2153 This is a security thing to make buffer overflows harder to exploit.
2154 By itself, it's kind of useless, as Linus Torvalds explained in 1998:
2155 http://old.lwn.net/1998/0806/a/linus-noexec.html
2157 It only actually provides any security when combined with address
2158 space randomization, explained here: http://lwn.net/Articles/121845/
2160 Address space randomization is on by default in current linux
2161 kernels (although it can be disabled using the option
2164 You should probably say Y.
2168 menu "Development/debugging options"
2170 config CROSS_COMPILER_PREFIX
2171 string "Cross-compiling toolchain prefix"
2174 The prefix used to execute your cross-compiling toolchain. For
2175 example, if you run 'arm-linux-uclibc-gcc' to compile something,
2176 then enter 'arm-linux-uclibc-' here.
2178 config UCLIBC_EXTRA_CFLAGS
2179 string "Extra CFLAGS"
2182 Add any additional CFLAGS to be used to build uClibc.
2185 bool "Enable debugging symbols"
2186 select EXTRA_WARNINGS
2188 Say Y here if you wish to compile uClibc with debugging symbols.
2189 This will allow you to use a debugger to examine uClibc internals
2190 while applications are running. This increases the size of the
2191 library considerably and should only be used when doing development.
2192 If you are doing development and want to debug uClibc, answer Y.
2194 Otherwise, answer N.
2197 bool "Build pthread with debugging output"
2198 depends on UCLIBC_HAS_THREADS && UCLIBC_HAS_LINUXTHREADS
2200 Enable debug output in libpthread. This is only useful when doing
2201 development in libpthread itself.
2203 Otherwise, answer N.
2206 bool "Strip libraries and executables"
2210 Say Y here if you do wish to strip all uClibc libraries and
2211 executables. No stripping increases the size of the binaries
2212 considerably, but makes it possible to debug uClibc libraries.
2213 Most people will answer Y.
2216 bool "Build with run-time assertion testing"
2218 Say Y here to include runtime assertion tests.
2219 This enables runtime assertion testing in some code, which can
2220 increase the size of the library and incur runtime overhead.
2221 If you say N, then this testing will be disabled.
2223 config SUPPORT_LD_DEBUG
2224 bool "Build the shared library loader with debugging support"
2225 depends on HAVE_SHARED
2227 Answer Y here to enable all the extra code needed to debug the uClibc
2228 native shared library loader. The level of debugging noise that is
2229 generated depends on the LD_DEBUG environment variable... Just set
2230 LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to
2231 debug your application. Diagnostic messages will then be printed to
2234 For now these debugging tokens are available:
2235 detail provide more information for some options
2236 move display copy processing
2237 symbols display symbol table processing
2238 reloc display relocation processing; detail shows the
2240 nofixups never fixes up jump relocations
2241 bindings displays the resolve processing (function calls);
2242 detail shows the relocation patch
2243 all Enable everything!
2245 The additional environment variable:
2246 LD_DEBUG_OUTPUT=file
2247 redirects the diagnostics to an output file created using
2248 the specified name and the process id as a suffix.
2250 An excellent start is simply:
2251 $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
2252 or to log everything to a file named 'logfile', try this
2253 $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
2255 If you are doing development and want to debug uClibc's shared library
2256 loader, answer Y. Mere mortals answer N.
2258 config SUPPORT_LD_DEBUG_EARLY
2259 bool "Build the shared library loader with early debugging support"
2260 depends on HAVE_SHARED
2262 Answer Y here to if you find the uClibc shared library loader is
2263 crashing or otherwise not working very early on. This is typical
2264 only when starting a new port when you haven't figured out how to
2265 properly get the values for argc, argv, environ, etc. This method
2266 allows a degree of visibility into the very early shared library
2267 loader initialization process. If you are doing development and want
2268 to debug the uClibc shared library loader early initialization,
2269 answer Y. Mere mortals answer N.
2271 config UCLIBC_MALLOC_DEBUGGING
2272 bool "Build malloc with debugging support"
2273 depends on MALLOC || MALLOC_STANDARD
2276 Answer Y here to compile extra debugging support code into malloc.
2277 Malloc debugging output may then be enabled at runtime using the
2278 MALLOC_DEBUG environment variable.
2280 The value of MALLOC_DEBUG should be an integer, which is interpreted
2281 as a bitmask with the following bits:
2282 1 - do extra consistency checking
2283 2 - output messages for malloc/free calls and OS
2285 4 - output messages for the `MMB' layer
2286 8 - output messages for internal malloc heap manipulation
2289 Because this increases the size of malloc appreciably (due to strings
2290 etc), you should say N unless you need to debug a malloc problem.
2292 config UCLIBC_HAS_BACKTRACE
2293 bool "Add support for application self-debugging"
2294 depends on HAVE_SHARED
2296 Answer Y here to compile support for application self-debugging that
2297 provides the following new functions:
2298 backtrace, backtrace_symbols, backtrace_symbols_fd
2300 The backtrace functionality is currently supported on some platforms, and it
2301 based on dwarf2 informations to properly work, so any application that
2302 want to use backtrace needs to be built with -fexceptions flag.
2304 The symbol names may be unavailable without the use of special linker
2305 options. For systems using the GNU linker, it is necessary to use the
2306 -rdynamic linker option too. Note that names of "static" functions are not
2307 exposed, and won't be available in the backtrace.
2310 string "Compiler Warnings"
2313 Set this to the set of compiler warnings you wish to see while compiling.
2315 config EXTRA_WARNINGS
2316 bool "Enable extra annoying warnings"
2318 If you wish to build with extra warnings enabled, say Y here.