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