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
229 source "extra/Configs/Config.in.arch"
233 menu "General Library Settings"
240 bool "Generate only Position Independent Code (PIC)"
242 depends on !HAVE_NO_PIC
244 If you wish to build all of uClibc as PIC objects, then answer Y here.
245 If you are unsure, then you should answer N.
247 config ARCH_HAS_NO_SHARED
251 config ARCH_HAS_NO_LDSO
253 select ARCH_HAS_NO_SHARED
257 bool "Enable support for shared libraries"
258 depends on !ARCH_HAS_NO_SHARED
261 If you wish to build uClibc with support for shared libraries then
262 answer Y here. If you only want to build uClibc as a static library,
265 config FORCE_SHAREABLE_TEXT_SEGMENTS
266 bool "Only load shared libraries which can share their text segment"
267 depends on HAVE_SHARED
270 If you answer Y here, the uClibc native shared library loader will
271 only load shared libraries, which do not need to modify any
272 non-writable segments. These libraries haven't set the DT_TEXTREL
273 tag in the dynamic section (==> objdump).
274 All your libraries must be compiled with -fPIC or -fpic, and all
275 assembler function must be written as position independent code (PIC).
276 Enabling this option will make uClibc's shared library loader a
277 little bit smaller and guarantee that no memory will be wasted by
278 badly coded shared libraries.
280 config LDSO_LDD_SUPPORT
281 bool "Native 'ldd' support"
282 depends on HAVE_SHARED
285 Enable this to enable all the code needed to support traditional ldd,
286 which executes the shared library loader to resolve all dependencies
287 and then provide a list of shared libraries that are required for an
288 application to function. Disabling this option will makes uClibc's
289 shared library loader a little bit smaller.
290 Most people will answer Y.
292 config LDSO_CACHE_SUPPORT
293 bool "Enable library loader cache (ld.so.conf)"
294 depends on HAVE_SHARED
297 Enable this to make use of /etc/ld.so.conf, the shared library loader
298 cache configuration file to support for non-standard library paths.
299 After updating this file, it is necessary to run 'ldconfig' to update
300 the /etc/ld.so.cache shared library loader cache file.
302 config LDSO_PRELOAD_FILE_SUPPORT
303 bool "Enable library loader preload file (ld.so.preload)"
304 depends on HAVE_SHARED
307 Enable this to make use of /etc/ld.so.preload. This file contains a
308 whitespace separated list of shared libraries to be loaded before
311 config LDSO_BASE_FILENAME
312 string "Shared library loader naming prefix"
313 depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
316 If you wish to support both uClibc and glibc on the same system, it
317 is necessary to set this to something other than "ld.so" to avoid
318 conflicts with glibc, which also uses "ld.so". This prevents both
319 libraries from using the same /etc/ld.so.* files. If you wish to
320 support both uClibc and glibc on the same system then you should set
321 this to "ld-uClibc.so".
323 Most people will leave this set to the default of "ld.so".
325 WARNING: Changing the default prefix could cause problems with
328 config UCLIBC_STATIC_LDCONFIG
329 bool "Link ldconfig statically"
330 depends on HAVE_SHARED
333 Enable this option to statically link the ldconfig binary.
335 Making ldconfig static can be beneficial if you have a library
336 problem and need to use ldconfig to recover. Sometimes, it is
337 preferable to instead keep the size of the system down, in which
338 case you should disable this option.
341 bool "Enable ELF RUNPATH tag support"
342 depends on HAVE_SHARED
345 ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths
346 which extend the library search paths. They are really only useful
347 if a package installs libraries in non standard locations and
348 ld.so.conf support is disabled.
350 Usage of RUNPATH tags is not too common, so disabling this feature
351 should be safe for most people.
353 config UCLIBC_CTOR_DTOR
354 bool "Support global constructors and destructors"
357 If you wish to build uClibc with support for global constructor
358 (ctor) and global destructor (dtor) support, then answer Y here.
359 When ctor/dtor support is enabled, binaries linked with uClibc must
360 also be linked with crtbegin.o and crtend.o which are provided by gcc
361 (the "*startfile:" and "*endfile:" settings in your gcc specs file
362 may need to be adjusted to include these files). This support will
363 also add a small amount of additional size to each binary compiled vs
364 uClibc. If you will be using uClibc with C++, or if you need the gcc
365 __attribute__((constructor)) and __attribute__((destructor)) to work,
366 then you definitely want to answer Y here. If you don't need ctors
367 or dtors and want your binaries to be as small as possible, then
370 config LDSO_GNU_HASH_SUPPORT
371 bool "Enable GNU hash style support"
372 depends on HAVE_SHARED
375 Newest binutils support a new hash style named GNU-hash. The dynamic
376 linker will use the new GNU-hash section (.gnu.hash) for symbol lookup
377 if present into the ELF binaries, otherwise it will use the old SysV
378 hash style (.hash). This ensures that it is completely backward
380 Further, being the hash table implementation self-contained into each
381 executable and shared libraries, objects with mixed hash style can
382 peacefully coexist in the same process.
384 If you want to use this new feature, answer Y
386 config HAS_NO_THREADS
390 config UCLIBC_HAS_THREADS
391 bool "POSIX Threading support"
392 depends on !HAS_NO_THREADS
394 # linuxthreads and linuxthreads.old need nanosleep()
395 select UCLIBC_HAS_REALTIME
397 If you want to compile uClibc with pthread support, then answer Y.
398 This will increase the size of uClibc by adding a bunch of locking
399 to critical data structures, and adding extra code to ensure that
400 functions are properly reentrant.
402 If your applications require pthreads, answer Y.
404 config UCLIBC_HAS_TLS
405 bool "Thread-Local Storage"
406 depends on UCLIBC_HAS_THREADS_NATIVE
409 If you want to enable TLS support then answer Y.
410 This is fast an efficient way to store per-thread local data
411 which is not on stack. It needs __thread support enabled in
414 config PTHREADS_DEBUG_SUPPORT
415 bool "Build pthreads debugging support"
417 depends on UCLIBC_HAS_THREADS
419 Say Y here if you wish to be able to debug applications that use
420 uClibc's pthreads library. By enabling this option, a library
421 named libthread_db will be built. This library will be dlopen()'d
422 by gdb and will allow gdb to debug the threads in your application.
424 IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library,
425 you must compile gdb with uClibc in order for pthread debugging to
428 If you are doing development and want to debug applications using
429 uClibc's pthread library, answer Y. Otherwise, answer N.
431 config LINUXTHREADS_OLD
432 bool "Use the older (stable) version of linuxthreads"
434 depends on UCLIBC_HAS_THREADS && !UCLIBC_HAS_THREADS_NATIVE
436 There are two versions of linuxthreads. The older (stable) version
437 has been in uClibc for quite a long time but hasn't seen too many
438 updates other than bugfixes.
440 The new version has not been tested much, and lacks ports for arches
441 which glibc does not support (like bfin/frv/etc...), but is based on
442 the latest code from glibc, so it may be the only choice for the
443 newer ports (like alpha/amd64/64bit arches and hppa).
445 config UCLIBC_HAS_THREADS_NATIVE
446 bool "Native POSIX Threading (NPTL) Support"
447 depends on UCLIBC_HAS_THREADS
449 select UCLIBC_HAS_TLS
451 If you want to compile uClibc with NPTL support, then answer Y.
453 IMPORTANT NOTE! NPTL requires a Linux 2.6 kernel, binutils
454 at least version 2.16 and GCC with at least version 4.1.0. NPTL
455 will not work with older versions of any above sources. If you
456 ignore any of these guidelines, you do so at your own risk. Do
457 not ask for help on any of the development mailing lists.
459 !!!! WARNING !!!! BIG FAT WARNING !!!! REALLY BIG FAT WARNING !!!!
461 This is experimental code and at times it may not even build and
462 even if it does it might decide to do random damage. This code is
463 potentially hazardous to your health and sanity. It will remain
464 that way until further notice at which point this notice will
465 disappear. Thank you for your support and for not smoking.
467 config LINUXTHREADS_NEW
469 depends on UCLIBC_HAS_THREADS && !LINUXTHREADS_OLD && !UCLIBC_HAS_THREADS_NATIVE
471 config UCLIBC_HAS_SYSLOG
472 bool "Syslog support"
474 depends on UCLIBC_HAS_NETWORK_SUPPORT
475 select UCLIBC_HAS_SOCKET
477 Support sending messages to the system logger.
478 This requires socket-support.
480 config UCLIBC_HAS_LFS
481 bool "Large File Support"
484 If you wish to build uClibc with support for accessing large files
485 (i.e. files greater then 2 GiB) then answer Y. Do not enable this
486 if you are using an older Linux kernel (2.0.x) that lacks large file
487 support. Enabling this option will increase the size of uClibc.
490 prompt "Malloc Implementation"
491 default MALLOC if ! ARCH_USE_MMU
492 default MALLOC_STANDARD if ARCH_USE_MMU
497 "malloc" use mmap for all allocations and so works very well on
498 MMU-less systems that do not support the brk() system call. It is
499 pretty smart about reusing already allocated memory, and minimizing
501 This is the default for uClinux MMU-less systems.
506 "malloc-simple" is trivially simple and slow as molasses. It
507 was written from scratch for uClibc, and is the simplest possible
508 (and therefore smallest) malloc implementation.
510 This uses only the mmap() system call to allocate and free memory,
511 and does not use the brk() system call at all, making it a fine
512 choice for MMU-less systems with very limited memory. It's 100%
513 standards compliant, thread safe, very small, and releases freed
514 memory back to the OS immediately rather than keeping it in the
515 process's heap for reallocation. It is also VERY SLOW.
517 config MALLOC_STANDARD
518 bool "malloc-standard"
519 depends on ARCH_USE_MMU
521 "malloc-standard" is derived from the public domain dlmalloc
522 implementation by Doug Lea. It is quite fast, and is pretty smart
523 about reusing already allocated memory, and minimizing memory
524 wastage. This uses brk() for small allocations, while using mmap()
525 for larger allocations. This is the default malloc implementation
528 If unsure, answer "malloc-standard".
532 config MALLOC_GLIBC_COMPAT
533 bool "Malloc returns live pointer for malloc(0)"
536 The behavior of malloc(0) is listed as implementation-defined by
537 SuSv3. Glibc returns a valid pointer to something, while uClibc
538 normally returns NULL. I personally feel glibc's behavior is
539 not particularly safe, and allows buggy applications to hide very
542 When this option is enabled, uClibc will act just like glibc, and
543 return a live pointer when someone calls malloc(0). This pointer
544 provides a malloc'ed area with a size of 1 byte. This feature is
545 mostly useful when dealing with applications using autoconf's broken
546 AC_FUNC_MALLOC macro (which redefines malloc as rpl_malloc if it
547 does not detect glibc style returning-a-valid-pointer-for-malloc(0)
548 behavior). Most people can safely answer N.
550 config UCLIBC_DYNAMIC_ATEXIT
551 bool "Dynamic atexit() Support"
554 When this option is enabled, uClibc will support an infinite number,
555 of atexit() and on_exit() functions, limited only by your available
556 memory. This can be important when uClibc is used with C++, since
557 global destructors are implemented via atexit(), and it is quite
558 possible to exceed the default number when this option is disabled.
559 Enabling this option adds a few bytes, and more significantly makes
560 atexit and on_exit depend on malloc, which can be bad when compiling
563 Unless you use uClibc with C++, you should probably answer N.
566 bool "Old (visible) atexit Support"
569 Enable this option if you want to update from 0.9.28 to git/0.9.29,
570 else you will be missing atexit() until you rebuild all apps.
572 config UCLIBC_SUSV3_LEGACY
573 bool "Enable SuSv3 LEGACY functions"
580 Enable this option if you want to have SuSv3 LEGACY functions
581 in the library, else they are replaced by SuSv3 proposed macros.
582 Currently applies to:
584 bcmp, bcopy, bzero, index, rindex, ftime,
585 bsd_signal, (ecvt), (fcvt), gcvt, (getcontext),
586 (getwd), (makecontext),
587 mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr),
588 scalb, (setcontext), (swapcontext), ualarm, usleep,
591 WARNING! ABI incompatibility.
593 config UCLIBC_SUSV3_LEGACY_MACROS
594 bool "Enable SuSv3 LEGACY macros"
597 Enable this option if you want to have SuSv3 LEGACY macros.
598 Currently applies to bcopy/bzero/bcmp/index/rindex et al.
599 WARNING! ABI incompatibility.
601 config UCLIBC_SUSV4_LEGACY
602 bool "Enable SuSv4 LEGACY or obsolescent functions"
605 Enable this option if you want to have SuSv4 LEGACY functions
606 and macros in the library.
607 Currently applies to:
610 _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer,
611 gettimeofday, isascii, pthread_getconcurrency,
612 pthread_setconcurrency, setitimer, setpgrp, sighold,
613 sigignore, sigpause, sigrelse, sigset, siginterrupt,
614 tempnam, toascii, ulimit.
617 asctime, asctime_r, ctime, ctime_r, gets, rand_r,
620 WARNING! ABI incompatibility.
622 config UCLIBC_HAS_STUBS
623 bool "Provide stubs for unavailable functionality"
626 With this option uClibc provides non-functional stubs for
627 functions which are impossible to implement on the target
628 architecture. Otherwise, such functions are simply omitted.
630 As of 2008-07, this option makes uClibc provide fork() stub
631 on NOMMU targets. It always sets errno to ENOSYS and returns -1.
633 This may be useful if you port a lot of software and cannot
634 audit all of it and replace or disable fork() usage.
635 With this option, a program which uses fork() will build
636 successfully. Of course, it may be useless if fork()
637 is essential for its operation.
639 config UCLIBC_HAS_SHADOW
640 bool "Shadow Password Support"
643 Answer N if you do not need shadow password support.
644 Most people will answer Y.
646 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
647 bool "Support for program_invocation_name"
650 Support for the GNU-specific program_invocation_name and
651 program_invocation_short_name strings. Some GNU packages
652 (like tar and coreutils) utilize these for extra useful
653 output, but in general are not required.
655 At startup, these external strings are automatically set
656 up based on the value of ARGV[0].
658 If unsure, just answer N.
660 config UCLIBC_HAS___PROGNAME
661 bool "Support for __progname"
663 depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
665 Some packages (like openssh) like to peek into internal libc
666 symbols to make their output a bit more user friendly.
668 At startup, __progname is automatically set up based on the
671 If unsure, just answer N.
673 config UCLIBC_HAS_PTY
674 bool "Support for pseudo-terminals"
677 This enables support for pseudo-terminals (see man 4 pts
680 If unsure, just answer Y.
683 bool "Assume that /dev/pts is a devpts or devfs file system"
685 depends on UCLIBC_HAS_PTY
687 Enable this if /dev/pts is on a devpts or devfs filesystem. Both
688 these filesystems automatically manage permissions on the /dev/pts
689 devices. You may need to mount your devpts or devfs filesystem on
690 /dev/pts for this to work.
692 Most people should answer Y.
694 config UNIX98PTY_ONLY
695 bool "Support only Unix 98 PTYs"
697 depends on UCLIBC_HAS_PTY
699 If you want to support only Unix 98 PTYs enable this. Some older
700 applications may need this disabled and will thus use legacy BSD
701 style PTY handling which is more complex and also bigger than
702 Unix 98 PTY handling.
704 For most current programs, you can generally answer Y.
707 config UCLIBC_HAS_GETPT
708 bool "Support getpt() (glibc-compat)"
710 depends on UCLIBC_HAS_PTY
712 Some packages may need getpt().
713 All of those are non-standard and can be considered
714 GNU/libc compatibility.
715 Either use posix_openpt() or just open /dev/ptmx yourself.
717 If unsure, just say N.
721 # Have to use __libc_ptyname{1,2}[] and related bloat
722 config UCLIBC_HAS_GETPT
726 config UCLIBC_HAS_TM_EXTENSIONS
727 bool "Support 'struct tm' timezone extension fields"
730 Enabling this option adds fields to 'struct tm' in time.h for
731 tracking the number of seconds east of UTC, and an abbreviation for
732 the current timezone. These fields are not specified by the SuSv3
733 standard, but they are commonly used in both GNU and BSD application
736 To strictly follow the SuSv3 standard, leave this disabled.
737 Most people will probably want to answer Y.
739 config UCLIBC_HAS_TZ_CACHING
740 bool "Enable caching of the last valid timezone 'TZ' string"
743 Answer Y to enable caching of the last valid 'TZ' string describing
744 the timezone setting. This allows a quick string compare to avoid
745 repeated parsing of unchanged 'TZ' strings when tzset() is called.
747 Most people will answer Y.
749 config UCLIBC_HAS_TZ_FILE
750 bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
753 Answer Y to enable the setting of a default timezone for uClibc.
755 Ordinarily, uClibc gets the timezone information exclusively from the
756 'TZ' environment variable. In particular, there is no support for
757 the zoneinfo directory tree or the /etc/timezone file used by glibc.
759 With this option enabled, uClibc will use the value stored in the
760 file '/etc/TZ' (default path) to obtain timezone information if the
761 'TZ' environment variable is missing or has an invalid value. The
762 file consists of a single line (newline required) of text describing
763 the timezone in the format specified for the TZ environment variable.
765 Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
767 http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
768 for details on valid settings of 'TZ'.
770 Most people will answer Y.
772 config UCLIBC_HAS_TZ_FILE_READ_MANY
773 bool "Repeatedly read the '/etc/TZ' file"
774 depends on UCLIBC_HAS_TZ_FILE
777 Answer Y to enable repeated reading of the '/etc/TZ' file even after
778 a valid value has been read. This incurs the overhead of an
779 open/read/close for each tzset() call (explicit or implied). However,
780 setting this will allow applications to update their timezone
781 information if the contents of the file change.
783 Most people will answer Y.
785 config UCLIBC_TZ_FILE_PATH
786 string "Path to the 'TZ' file for setting the global timezone"
787 depends on UCLIBC_HAS_TZ_FILE
790 This is the path to the 'TZ' file.
792 Most people will use the default of '/etc/TZ'.
796 menu "Advanced Library Settings"
798 config UCLIBC_PWD_BUFFER_SIZE
799 int "Buffer size for getpwnam() and friends"
803 This sets the value of the buffer size for getpwnam() and friends.
804 By default, this is 256. (For reference, glibc uses 1024).
805 The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX
808 config UCLIBC_GRP_BUFFER_SIZE
809 int "Buffer size for getgrnam() and friends"
813 This sets the value of the buffer size for getgrnam() and friends.
814 By default, this is 256. (For reference, glibc uses 1024).
815 The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX
818 comment "Support various families of functions"
820 config UCLIBC_LINUX_MODULE_24
821 bool "Linux kernel module functions"
822 default !(TARGET_bfin)
824 create_module, query_module
825 are used in linux (prior to 2.6) for loadable kernel modules.
827 Say N if you do not use kernel modules, or you only support
830 config UCLIBC_LINUX_SPECIFIC
831 bool "Linux specific functions"
834 capget(), capset(), fstatfs(), inotify_*(), ioperm(), iopl(),
835 madvise(), modify_ldt(), personality(), prctl()/arch_prctl(),
836 ppoll(), readahead(), reboot(), remap_file_pages(),
837 sched_getaffinity(), sched_setaffinity(), sendfile(),
838 setfsgid(), setfsuid(), setresuid(),
839 splice(), vmsplice(), tee(), signalfd(), swapoff(), swapon(),
840 sync_file_range(), sysctl(), sysinfo(), vhangup()
842 config UCLIBC_HAS_GNU_ERROR
843 bool "Support GNU extensions for error-reporting"
846 Support for the GNU-specific error(), error_at_line(),
847 void (* error_print_progname)(), error_message_count
848 functions and variables. Some GNU packages
849 utilize these for extra useful output, but in general
852 If unsure, just answer N.
854 config UCLIBC_BSD_SPECIFIC
855 bool "BSD specific functions"
858 mincore(), getdomainname(), setdomainname()
862 config UCLIBC_HAS_BSD_ERR
863 bool "BSD err functions"
866 These functions are non-standard BSD extensions.
867 err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx()
871 config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
872 bool "BSD obsolete signal functions"
875 These functions are provided as a compatibility interface for
876 programs that make use of the historical System V signal API.
877 This API is obsolete:
878 new applications should use the POSIX signal API (sigaction(2),
879 sigprocmask(2), etc.).
882 sigset(), sighold(), sigrelse(), sigignore()
886 config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL
887 bool "SYSV obsolete signal functions"
890 Use of sysv_signal() should be avoided; use sigaction(2) instead.
894 config UCLIBC_NTP_LEGACY
895 bool "ntp_*() aliases"
898 Provide legacy aliases for ntp functions:
899 ntp_adjtime(), ntp_gettime()
901 It is safe to say N here.
903 config UCLIBC_SV4_DEPRECATED
904 bool "Enable SVr4 deprecated functions"
907 These functions are DEPRECATED in System V release 4.
908 Say N unless you desparately need one of the functions below:
910 ustat() [use statfs(2) in your code instead]
912 config UCLIBC_HAS_REALTIME
913 bool "Realtime-related family of SUSv functions"
916 These functions are part of the Timers option and need not
917 be available on all implementations.
918 Includes AIO, message-queue, scheduler, semaphore functions:
933 clock_getres(), clock_gettime(), clock_settime()
935 mlockall(), munlockall()
947 sched_get_priority_max(), sched_get_priority_min()
949 sched_rr_get_interval()
958 sem_trywait(), sem_wait()
961 sigtimedwait(), sigwaitinfo()
964 timer_getoverrun(), timer_gettime(), timer_settime()
966 config UCLIBC_HAS_ADVANCED_REALTIME
967 bool "Advanced realtime-related family of SUSv functions"
969 depends on UCLIBC_HAS_REALTIME
971 These functions are part of the Timers option and need not
972 be available on all implementations.
974 clock_getcpuclockid()
983 posix_spawnattr_destroy(), posix_spawnattr_init()
984 posix_spawnattr_getflags(), posix_spawnattr_setflags()
985 posix_spawnattr_getpgroup(), posix_spawnattr_setpgroup()
986 posix_spawnattr_getschedparam(), posix_spawnattr_setschedparam()
987 posix_spawnattr_getschedpolicy(), posix_spawnattr_setschedpolicy()
988 posix_spawnattr_getsigdefault(), posix_spawnattr_setsigdefault()
989 posix_spawnattr_getsigmask(), posix_spawnattr_setsigmask()
990 posix_spawn_file_actions_addclose()
991 posix_spawn_file_actions_adddup2()
992 posix_spawn_file_actions_addopen()
993 posix_spawn_file_actions_destroy()
994 posix_spawn_file_actions_init()
997 posix_typed_mem_get_info()
998 pthread_mutex_timedlock()
1001 #config UCLIBC_HAS_TERMIOS
1002 # bool "termios functions"
1005 # Get and set terminal attributes, line control, get and set baud
1007 # termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(),
1008 # tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(),
1009 # cfsetispeed(), cfsetospeed(), cfsetspeed()
1013 config UCLIBC_HAS_EPOLL
1017 epoll_create(), epoll_ctl(), epoll_wait() functions.
1019 config UCLIBC_HAS_XATTR
1020 bool "Extended Attributes"
1023 Extended Attributes support.
1038 Say N unless you need support for extended attributes and the
1039 filesystems do actually support them.
1041 config UCLIBC_HAS_PROFILING
1042 bool "Profiling support"
1045 gcc's -finstrument-functions needs these.
1047 Most people can safely answer N.
1049 config UCLIBC_HAS_CRYPT_IMPL
1050 bool "libcrypt support"
1053 libcrypt contains crypt(), setkey() and encrypt()
1055 config UCLIBC_HAS_CRYPT_STUB
1056 bool "libcrypt stubs"
1058 depends on !UCLIBC_HAS_CRYPT_IMPL
1060 Standards mandate that crypt(3) provides a stub if it is unavailable.
1061 If you enable this option then stubs for
1062 crypt(), setkey() and encrypt()
1063 will be provided in a small libcrypt.
1065 config UCLIBC_HAS_CRYPT
1067 depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
1070 menuconfig UCLIBC_HAS_NETWORK_SUPPORT
1071 bool "Networking Support"
1074 Say N here if you do not need network support.
1076 if UCLIBC_HAS_NETWORK_SUPPORT
1077 config UCLIBC_HAS_SOCKET
1078 bool "Socket support"
1081 If you want to include support for sockets then answer Y.
1083 config UCLIBC_HAS_IPV4
1084 bool "IP version 4 support"
1086 select UCLIBC_HAS_SOCKET
1088 If you want to include support for the Internet Protocol
1089 (IP version 4) then answer Y.
1091 Most people will say Y.
1093 config UCLIBC_HAS_IPV6
1094 bool "IP version 6 support"
1096 select UCLIBC_HAS_SOCKET
1098 If you want to include support for the next version of the Internet
1099 Protocol (IP version 6) then answer Y.
1101 Most people should answer N.
1103 config UCLIBC_HAS_RPC
1104 bool "Remote Procedure Call (RPC) support"
1106 # RPC+socket-ipvX doesn't currently work.
1107 depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
1109 If you want to include RPC support, enable this. RPC is rarely used
1110 for anything except for the NFS filesystem. Unless you plan to use
1111 NFS, you can probably leave this set to N and save some space.
1113 If you need to use NFS then you should answer Y.
1115 config UCLIBC_HAS_FULL_RPC
1116 bool "Full RPC support"
1117 depends on UCLIBC_HAS_RPC
1118 default y if !HAVE_SHARED
1120 Normally we enable just enough RPC support for things like rshd and
1121 nfs mounts to work. If you find you need the rest of the RPC stuff,
1122 then enable this option. Most people can safely answer N.
1124 config UCLIBC_HAS_REENTRANT_RPC
1125 bool "Reentrant RPC support"
1126 depends on UCLIBC_HAS_RPC
1127 default y if !HAVE_SHARED
1129 Most packages utilize the normal (non-reentrant) RPC functions, but
1130 some (like exportfs from nfs-utils) need these reentrant versions.
1132 Most people can safely answer N.
1134 config UCLIBC_USE_NETLINK
1135 bool "Use netlink to query interfaces"
1137 depends on UCLIBC_HAS_SOCKET
1139 In newer versions of Linux (2.4.17+), support was added for querying
1140 network device information via netlink rather than the old style
1141 ioctl's. Most of the time, the older ioctl style is sufficient (and
1142 it is smaller than netlink), but if you find that not all of your
1143 devices are being returned by the if_nameindex() function, you will
1144 have to use the netlink implementation.
1146 Most people can safely answer N.
1148 config UCLIBC_SUPPORT_AI_ADDRCONFIG
1149 bool "Support the AI_ADDRCONFIG flag"
1150 depends on UCLIBC_USE_NETLINK
1153 The implementation of AI_ADDRCONFIG is aligned with the glibc
1154 implementation using netlink to query interfaces to find both
1155 ipv4 and ipv6 support. This is only needed if an application uses
1156 the AI_ADDRCONFIG flag.
1158 Most people can safely answer N.
1160 config UCLIBC_HAS_BSD_RES_CLOSE
1161 bool "Support res_close() (bsd-compat)"
1164 Answer Y if you desperately want to support BSD compatibility in
1167 Most people will say N.
1169 config UCLIBC_HAS_COMPAT_RES_STATE
1170 bool "Use compatible but bloated _res"
1173 Answer Y if you build network utilities and they muck with resolver
1174 internals a lot (_res global structure). uclibc does not use most
1175 of _res.XXX fields, and with this option OFF they won't even exist.
1176 Which will make e.g. dig build fail.
1177 Answering N saves around 400 bytes in bss.
1179 config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
1180 bool "Use extra compatible but extra bloated _res"
1183 Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough.
1184 As far as I can say, this should never be needed.
1186 config UCLIBC_HAS_RESOLV_STUB
1187 bool "Provide libresolv stub"
1190 Provide a dummy resolv library.
1195 menu "String and Stdio Support"
1197 config UCLIBC_HAS_STRING_GENERIC_OPT
1198 bool "Use faster (but larger) generic string functions"
1201 Answer Y to use the (tweaked) glibc generic string functions.
1203 In general, they are faster (but 3-5K larger) than the base
1204 uClibc string functions which are optimized solely for size.
1206 Many people will answer Y.
1208 config UCLIBC_HAS_STRING_ARCH_OPT
1209 bool "Use arch-specific assembly string functions (where available)"
1212 Answer Y to use any archtecture-specific assembly language string
1213 functions available for this target plaform.
1215 Note that assembly implementations are not available for all string
1216 functions, so some generic (written in C) string functions may
1219 These are small and fast, the only reason _not_ to say Y here is
1220 for debugging purposes.
1222 config UCLIBC_HAS_CTYPE_TABLES
1223 bool "Use Table Versions Of 'ctype.h' Functions."
1226 Answer Y to use table versions of the 'ctype.h' functions.
1227 While the non-table versions are often smaller when building
1228 statically linked apps, they work only in stub locale mode.
1230 Most people will answer Y.
1232 config UCLIBC_HAS_CTYPE_SIGNED
1233 bool "Support Signed Characters In 'ctype.h' Functions."
1234 depends on UCLIBC_HAS_CTYPE_TABLES
1237 Answer Y to enable support for passing signed char values to
1238 the 'ctype.h' functions. ANSI/ISO C99 and SUSv3 specify that
1239 these functions are only defined for unsigned char values and
1240 EOF. However, glibc allows negative signed char values as well
1241 in order to support 'broken old programs'.
1243 Most people will answer Y.
1246 prompt "ctype argument checking"
1247 depends on UCLIBC_HAS_CTYPE_TABLES
1248 default UCLIBC_HAS_CTYPE_UNSAFE
1250 Please select the invalid arg behavior you want for the 'ctype'
1253 The 'ctype' functions are now implemented using table lookups, with
1254 the arg being the index. This can result in incorrect memory accesses
1255 or even segfaults for args outside of the allowed range.
1257 NOTE: This only affects the 'ctype' _functions_. It does not affect
1258 the macro implementations.
1260 config UCLIBC_HAS_CTYPE_UNSAFE
1261 bool "Do not check -- unsafe"
1263 config UCLIBC_HAS_CTYPE_CHECKED
1264 bool "Detect and handle appropriately"
1266 config UCLIBC_HAS_CTYPE_ENFORCED
1267 bool "Issue a diagnostic and abort()"
1272 config UCLIBC_HAS_WCHAR
1273 bool "Wide Character Support"
1276 Answer Y to enable wide character support. This will make uClibc
1277 much larger. It is also currently required for locale support.
1279 Most people will answer N.
1281 config UCLIBC_HAS_LOCALE
1282 bool "Locale Support"
1283 select UCLIBC_HAS_WCHAR
1284 select UCLIBC_HAS_CTYPE_TABLES
1287 uClibc now has full ANSI/ISO C99 locale support (except for
1288 wcsftime() and collating items in regex). Be aware that enabling
1289 this option will make uClibc much larger.
1291 Enabling UCLIBC_HAS_LOCALE with the default set of supported locales
1292 (169 UTF-8 locales, and 144 locales for other codesets) will enlarge
1293 uClibc by around 300k. You can reduce this size by building your own
1294 custom set of locate data (see extra/locale/LOCALES for details).
1296 uClibc's locale support is still under development. For example,
1297 codesets using shift states are not currently supported. Support is
1298 planned in the next iteration of locale support.
1300 Answer Y to enable locale support. Most people will answer N.
1304 prompt "Locale data"
1305 depends on UCLIBC_HAS_LOCALE
1306 default UCLIBC_BUILD_ALL_LOCALE
1308 config UCLIBC_BUILD_ALL_LOCALE
1310 depends on UCLIBC_HAS_LOCALE
1312 This builds all the locales that are available on your
1315 config UCLIBC_BUILD_MINIMAL_LOCALE
1316 bool "Only selected locales"
1317 depends on UCLIBC_HAS_LOCALE
1319 If you do not need all locales that are available on your
1320 host-box, then set this to 'Y'.
1322 config UCLIBC_PREGENERATED_LOCALE_DATA
1323 bool "Use Pre-generated Locale Data"
1324 depends on UCLIBC_HAS_LOCALE
1326 Use pre-built locale data.
1328 Note that these pregenerated locales are sensitive to your
1329 target architecture (endianess, bitcount).
1331 Saying N here is highly recommended.
1335 config UCLIBC_BUILD_MINIMAL_LOCALES
1336 string "locales to use"
1337 depends on UCLIBC_BUILD_MINIMAL_LOCALE
1340 Space separated list of locales to use.
1347 config UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA
1348 bool "Automagically Download the Pre-generated Locale Data (if necessary)"
1349 depends on UCLIBC_PREGENERATED_LOCALE_DATA
1352 If you would like the build process to use 'wget' to automatically
1353 download the pregenerated locale data, enable this option. Otherwise
1354 you will need to obtain the locale data yourself from:
1355 http://www.uclibc.org/downloads/uClibc-locale-*.tgz
1356 and place the uClibc-locale-*.tgz tarball in the extra/locale/
1359 Note that the use of pregenerated locale data is discouraged.
1361 config UCLIBC_HAS_XLOCALE
1362 bool "Extended Locale Support (experimental/incomplete)"
1363 depends on UCLIBC_HAS_LOCALE
1366 Answer Y to enable extended locale support similar to that provided
1367 by glibc. This is primarily intended to support libstd++
1369 However, it also allows thread-specific locale selection via
1372 Most people will answer N.
1374 config UCLIBC_HAS_HEXADECIMAL_FLOATS
1375 bool "Support hexadecimal float notation"
1376 depends on UCLIBC_HAS_CTYPE_TABLES
1377 depends on UCLIBC_HAS_FLOATS
1380 Answer Y to enable support for hexadecimal float notation in the
1381 (wchar and) char string to floating point conversion functions, as
1382 well as support for the %a and %A conversion specifiers in the
1383 *printf() and *scanf() functions.
1385 Most people will answer N.
1387 config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1388 bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
1389 depends on UCLIBC_HAS_LOCALE
1390 depends on UCLIBC_HAS_FLOATS
1393 Answer Y to enable support for glibc's \"'\" flag for allowing
1394 locale-specific digit grouping in base 10 integer conversions and
1395 appropriate floating point conversions in the *printf() and *scanf()
1398 Most people will answer N.
1400 config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
1401 bool "Do not require digit grouping when the \"'\" flag is specified"
1402 depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
1405 Answer Y to make digit grouping optional when the \"'\" flag is
1407 This is the standard glibc behavior. If the initial string of digits
1408 exceeds the maximum group number, the input will be treated as a
1409 normal non-grouped number.
1411 Most people will answer N.
1413 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
1414 bool "Support glibc's register_printf_function() (glibc-compat)"
1415 depends on !USE_OLD_VFPRINTF
1418 Answer Y to support glibc's register_printf_function() to allow an
1419 application to add its own printf conversion specifiers.
1421 NOTE: Limits the number or registered specifiers to 10.
1422 NOTE: Requires new conversion specifiers to be ASCII
1423 characters (0-0x7f). This is to avoid problems with processing
1424 format strings in locales with different multibyte conversions.
1426 Most people will answer N.
1428 config USE_OLD_VFPRINTF
1429 bool "Use the old vfprintf implementation"
1430 depends on !UCLIBC_HAS_WCHAR
1433 Set to true to use the old vfprintf instead of the new. This is
1434 roughly C89 compliant with some extensions, and is much smaller.
1435 However, it does not support wide chars, positional args, or glibc
1436 custom printf specifiers.
1438 Most people will answer N.
1440 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
1441 int "Maximum number of positional args. Either 0 or >= 9."
1442 depends on !USE_OLD_VFPRINTF
1445 Set the maximum number of positional args supported by the
1446 printf/scanf functions. The Single Unix Specification Version 3
1447 requires a minimum value of 9. Setting this to a value lower than
1448 9 will disable positional arg support and cause the NL_ARGMAX macro
1449 in limits.h to be #undef'd.
1451 WARNING! The workspace to support positional args is currently
1452 allocated on the stack. You probably don't want to set
1453 this to too high a value.
1455 Most people will answer 9.
1458 config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
1459 bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
1462 NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!!
1463 NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!!
1465 Answer Y to enable support for glibc's 'a' flag for the scanf string
1466 conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to
1467 auto-allocate sufficient memory to hold the data retrieved.
1469 Most people will answer N.
1472 prompt "Stdio buffer size"
1473 default UCLIBC_HAS_STDIO_BUFSIZ_4096
1475 Please select a value for BUFSIZ. This will be used by the
1476 stdio subsystem as the default buffer size for a file, and
1477 affects fopen(), setvbuf(), etc.
1479 NOTE: Setting this to 'none' will disable buffering completely.
1480 However, BUFSIZ will still be defined in stdio.h as 256 because
1481 many applications use this value.
1483 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
1484 bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
1485 depends on !UCLIBC_HAS_WCHAR
1487 config UCLIBC_HAS_STDIO_BUFSIZ_256
1488 bool "256 (minimum ANSI/ISO C99 value)"
1490 config UCLIBC_HAS_STDIO_BUFSIZ_512
1493 config UCLIBC_HAS_STDIO_BUFSIZ_1024
1496 config UCLIBC_HAS_STDIO_BUFSIZ_2048
1499 config UCLIBC_HAS_STDIO_BUFSIZ_4096
1502 config UCLIBC_HAS_STDIO_BUFSIZ_8192
1505 # If you add more choices, you will need to update uClibc_stdio.h.
1510 prompt "Stdio builtin buffer size (uClibc-specific)"
1511 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1512 default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1514 When a FILE is created with fopen(), an attempt is made to allocate
1515 a BUFSIZ buffer for it. If the allocation fails, fopen() will still
1516 succeed but the FILE will be unbuffered.
1518 This option adds a small amount of space to each FILE to act as an
1519 emergency buffer in the event of a buffer allocation failure.
1521 Most people will answer None.
1523 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1526 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1529 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1532 # If you add more choices, you will need to update uClibc_stdio.h.
1536 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1537 bool "Attempt to shutdown stdio subsystem when abort() is called."
1540 ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was
1541 a behavioral change made in SUSv3. Previously, abort() was required
1542 to have the affect of fclose() on all open streams. The wording has
1543 been changed to "may" from "shall".
1545 Most people will answer N.
1547 config UCLIBC_HAS_STDIO_GETC_MACRO
1548 bool "Provide a macro version of getc()"
1549 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1552 Provide a macro version of getc().
1554 Most people will answer Y.
1556 config UCLIBC_HAS_STDIO_PUTC_MACRO
1557 bool "Provide a macro version of putc()"
1558 depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1561 Provide a macro version of putc().
1563 Most people will answer Y.
1565 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1566 bool "Support auto-r/w transition"
1569 Answer Y to enable the stdio subsystem to automaticly transition
1570 between reading and writing. This relaxes the ANSI/ISO C99
1573 When a file is opened with update mode ('+' as the second or third
1574 character in the list of mode argument values), both input and output
1575 may be performed on the associated stream. However, output shall not
1576 be directly followed by input without an intervening call to the
1577 fflush function or to a file positioning function (fseek, fsetpos,
1578 or rewind), and input shall not be directly followed by output without
1579 an intervening call to a file positioning function, unless the input
1580 operation encounters endÂofÂfile.
1582 Most people will answer Y.
1584 config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
1585 bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
1586 depends on UCLIBC_HAS_LFS
1589 Answer Y to enable a uClibc-specific extension to allow passing an
1590 additional 'F' flag in the mode string for fopen() to specify that
1591 the file should be open()ed with the O_LARGEFILE flag set.
1593 Most people will answer N.
1595 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1596 bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1599 Answer Y to support a glibc extension to allow passing
1600 additional 'x' flag in the mode string for fopen() to specify that
1601 the file should be open()ed with the O_EXCL flag set.
1603 Most people will answer N.
1605 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1606 bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1609 Answer Y to support the glibc 'custom stream' extension functions
1610 fmemopen(), open_memstream(), and fopencookie().
1612 NOTE: There are some minor differences regarding seeking behavior.
1614 Most people will answer N.
1616 config UCLIBC_HAS_PRINTF_M_SPEC
1617 bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1620 Answer Y to support a glibc extension to interpret '%m' in printf
1621 format strings as an instruction to output the error message string
1622 (as generated by strerror) corresponding to the current value of
1625 Most people will answer N.
1627 config UCLIBC_HAS_ERRNO_MESSAGES
1628 bool "Include the errno message text in the library"
1631 Answer Y if you want to include the errno message text in the
1632 library. This adds about 3K to the library, but enables strerror()
1633 to generate text other than 'Unknown error <number>'.
1635 Most people will answer Y.
1637 config UCLIBC_HAS_SYS_ERRLIST
1638 bool "Support sys_errlist[] (obsolete-compat)"
1639 depends on UCLIBC_HAS_ERRNO_MESSAGES
1642 Answer Y if you want to support the obsolete sys_errlist[].
1643 This adds about 0.5k to the library, except for the mips
1644 arch where it adds over 4K.
1646 WARNING! In the future, support for sys_errlist[] may be unavailable
1647 in at least some configurations. In fact, it may be removed
1650 Most people will answer N.
1652 Application writers: use the strerror(3) function.
1654 config UCLIBC_HAS_SIGNUM_MESSAGES
1655 bool "Include the signum message text in the library"
1658 Answer Y if you want to include the signum message text in the
1659 library. This adds about 0.5K to the library, but enables strsignal()
1660 to generate text other than 'Unknown signal <number>'.
1662 Most people will answer Y.
1664 config UCLIBC_HAS_SYS_SIGLIST
1665 bool "Support sys_siglist[] (bsd-compat)"
1666 depends on UCLIBC_HAS_SIGNUM_MESSAGES
1669 Answer Y if you want to support sys_siglist[].
1671 WARNING! In the future, support for sys_siglist[] may be unavailable
1672 in at least some configurations. In fact, it may be removed
1675 Most people will answer N.
1677 config UCLIBC_HAS_GETTEXT_AWARENESS
1678 bool "Include gettext awareness"
1679 depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
1682 NOTE!!! Not yet integrated with strerror and strsignal. NOTE!!!
1684 Answer Y if you want to include weak stub gettext support and
1685 make the *strerror*() and strsignal() functions gettext-aware.
1687 Currently, to get functional gettext functionality you will need
1690 Most people will answer N.
1692 config UCLIBC_HAS_GNU_GETOPT
1693 bool "Support gnu getopt"
1696 Answer Y if you want to include full gnu getopt() instead of a
1697 (much smaller) SUSv3 compatible getopt().
1699 Most people will answer Y.
1701 config UCLIBC_HAS_STDIO_FUTEXES
1702 bool "Use futexes for multithreaded I/O locking"
1704 depends on UCLIBC_HAS_THREADS_NATIVE
1706 If you want to compile uClibc to use futexes for low-level
1707 I/O locking, answer Y. Otherwise, answer N.
1709 config UCLIBC_HAS_GETOPT_LONG
1710 bool "Support getopt_long/getopt_long_only"
1711 depends on !UCLIBC_HAS_GNU_GETOPT
1714 Answer Y if you want to include getopt_long[_only() used by many
1717 Most people will answer Y.
1719 config UCLIBC_HAS_GNU_GETSUBOPT
1720 bool "Support glibc getsubopt"
1723 Answer Y if you want to include glibc getsubopt() instead of a
1724 smaller SUSv3 compatible getsubopt().
1726 Most people will answer Y.
1732 config UCLIBC_HAS_REGEX
1733 bool "Regular Expression Support"
1736 POSIX regular expression code is really big -- 53k all by itself.
1737 If you don't use regular expressions, turn this off and save space.
1738 Of course, if you only statically link, leave this on, since it will
1739 only be included in your apps if you use regular expressions.
1741 config UCLIBC_HAS_REGEX_OLD
1742 bool "Use the older (stable) regular expression code"
1743 depends on UCLIBC_HAS_REGEX
1746 There are two versions of regex. The older (stable) version has
1747 been in uClibc for quite a long time but hasn't seen too many
1748 updates. It also has some known issues when dealing with uncommon
1749 corner cases and multibyte/unicode strings. However, it is quite
1750 a bit smaller than the newer version.
1752 If the older version has worked for you and you don't need unicode
1753 support, then stick with the old version (and say Y here).
1754 Otherwise, you should use the new version (and say N here).
1756 config UCLIBC_HAS_FNMATCH
1757 bool "fnmatch Support"
1762 config UCLIBC_HAS_FNMATCH_OLD
1763 bool "Use the older (stable) fnmatch code"
1764 depends on UCLIBC_HAS_FNMATCH
1767 There are two versions of fnmatch. The older (stable) version has
1768 been in uClibc for quite a long time but hasn't seen too many
1769 updates. It also has some known issues when dealing with uncommon
1770 corner cases and multibyte/unicode strings. However, it is quite
1771 a bit smaller than the newer version.
1773 If the older version has worked for you and you don't need unicode
1774 support, then stick with the old version (and say Y here).
1775 Otherwise, you should use the new version (and say N here).
1777 config UCLIBC_HAS_WORDEXP
1778 bool "Support the wordexp() interface"
1779 depends on UCLIBC_HAS_GLOB
1782 The SuSv3 wordexp() interface performs word expansions per the Shell
1783 and Utilities volume of IEEE Std 1003.1-2001, Section 2.6. It is
1784 intended for use by applications that want to implement all of the
1785 standard Bourne shell expansions on input data.
1787 This interface is rarely used, and very large. Unless you have a
1788 pressing need for wordexp(), you should probably answer N.
1790 config UCLIBC_HAS_NFTW
1791 bool "Support the nftw() interface"
1794 The SuSv3 nftw() interface is used to recursively descend
1795 directory paths while repeatedly calling a function.
1797 This interface is rarely used, and adds around 4.5k. Unless you have
1798 a pressing need for nftw(), you should probably answer N.
1800 config UCLIBC_HAS_FTW
1801 bool "Support the ftw() interface"
1803 depends on UCLIBC_SUSV4_LEGACY
1805 The SuSv3 ftw() interface is used to recursively descend
1806 directory paths while repeatedly calling a function.
1808 This interface is rarely used, and adds around 4.5k. Unless you have
1809 a pressing need for ftw(), you should probably answer N.
1812 config UCLIBC_HAS_GLOB
1813 bool "Support the glob() interface"
1814 depends on UCLIBC_HAS_FNMATCH
1818 The glob interface is somewhat large (weighing in at about 2,5k). It
1819 is used fairly often, but is an option since people wanting to go for
1820 absolute minimum size may wish to omit it.
1822 Most people will answer Y.
1824 config UCLIBC_HAS_GNU_GLOB
1825 bool "Support gnu glob() interface"
1826 depends on UCLIBC_HAS_GLOB
1829 The gnu glob interface is somewhat larger (weighing in at about 4,2k)
1830 than it's SuSv3 counterpart (and is out of date). It is an old copy
1831 from glibc and does not support all the GNU specific options.
1833 Answer Y if you want to include full gnu glob() instead of the smaller
1834 SUSv3 compatible glob().
1836 Most people will answer N.
1843 menu "Library Installation Options"
1845 config SHARED_LIB_LOADER_PREFIX
1846 string "Shared library loader path"
1847 depends on HAVE_SHARED
1848 default "$(RUNTIME_PREFIX)lib"
1850 When using shared libraries, this path is the location where the
1851 shared library will be invoked. This value will be compiled into
1852 every binary compiled with uClibc.
1854 For a typical target system this should be set to "/lib", such that
1855 'make install' will install /lib/ld-uClibc.so.0.
1858 If you do not have a shared library loader with the correct name
1859 sitting in the directory this points to, your binaries will not
1862 config RUNTIME_PREFIX
1863 string "uClibc runtime library directory"
1864 default "/usr/$(TARGET_ARCH)-linux-uclibc/"
1866 RUNTIME_PREFIX is the directory into which the uClibc runtime
1867 libraries will be installed. The result will look something
1870 lib/ <contains all runtime libraries>
1871 usr/bin/ldd <the ldd utility program>
1872 sbin/ldconfig <the ldconfig utility program>
1873 This value is used by the 'make install' Makefile target. Since this
1874 directory is compiled into the shared library loader, you will need to
1875 recompile uClibc if you change this value...
1877 For a typical target system this should be set to "/", such that
1878 'make install' will install /lib/libuClibc-<VERSION>.so
1881 string "uClibc development environment directory"
1882 default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
1884 DEVEL_PREFIX is the directory into which the uClibc development
1885 environment will be installed. The result will look something
1888 lib/ <contains static libs>
1889 include/ <Where all the header files go>
1890 This value is used by the 'make install' Makefile target when
1891 installing a uClibc development environment.
1893 For a typical target system this should be set to "/usr", such that
1894 'make install' will install /usr/include/<header files>.
1896 config HARDWIRED_ABSPATH
1897 bool "Hardwire absolute paths into linker scripts"
1900 This prepends absolute paths to the libraries mentioned in linker
1901 scripts such as libc.so.
1903 This is a build time optimization. It has no impact on dynamic
1904 linking at runtime, which doesn't use linker scripts.
1906 You must disable this to use uClibc with a relocatable toolchain,
1907 such as the prebuilt binary cross compilers at
1908 http://uclibc.org/downloads/binaries which may be installed at an
1909 arbitrary location (such as in a user's home directory).
1911 The amount of time saved by this optimization is actually too small to
1912 measure. The linker just had to search the library path to find the
1913 linker script, so the dentries are cache hot if it has to search the
1914 same path again. But it's what glibc does, so we do it too.
1919 menu "Security options"
1921 config UCLIBC_BUILD_PIE
1922 bool "Build utilities as ET_DYN/PIE executables"
1923 depends on HAVE_SHARED
1924 depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc
1925 select FORCE_SHAREABLE_TEXT_SEGMENTS
1928 If you answer Y here, ldd and iconv are built as ET_DYN/PIE
1931 It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later.
1932 More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> .
1934 WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so
1935 all libraries have to be built with -fPIC or -fpic, and all
1936 assembler functions must be written as position independent
1939 config UCLIBC_HAS_ARC4RANDOM
1940 bool "Include the arc4random() function"
1943 Answer Y to support the OpenBSD-like arc4random() function. This
1944 function picks a random number between 0 and N, and will always return
1945 something even if the random driver is dead. If urandom fails then
1946 gettimeofday(2) will be used as the random seed. This function is
1947 designed to be more dependable than invoking /dev/urandom directly.
1948 OpenSSL and OpenNTPD currently support this function.
1950 Most people will answer N.
1956 config UCLIBC_HAS_SSP
1957 bool "Support for GCC stack smashing protector"
1958 depends on !HAVE_NO_SSP
1961 Add code to support GCC's -fstack-protector[-all] option to uClibc.
1962 This requires GCC 4.1 or newer. GCC does not have to provide libssp,
1963 the needed functions are added to ldso/libc instead.
1965 GCC's stack protector is a reimplementation of IBM's propolice.
1966 See http://www.trl.ibm.com/projects/security/ssp/ and
1967 http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
1970 Note that NOEXECSTACK on a kernel with address space randomization
1971 is generally sufficient to prevent most buffer overflow exploits
1972 without increasing code size. This option essentially adds debugging
1975 Most people will answer N.
1977 config UCLIBC_HAS_SSP_COMPAT
1978 bool "Support for gcc-3.x propolice smashing stack protector"
1979 depends on UCLIBC_HAS_SSP
1982 Add gcc-3.x propolice smashing stack protector to the library.
1984 This requires a patched version of GCC, supporting the
1985 -fstack-protector[-all] options, with the __guard and
1986 __stack_smash_handler functions removed from libgcc.
1987 These functions are added to ldso/libc instead.
1989 More information at:
1990 <http://www.research.ibm.com/trl/projects/security/ssp/>
1992 Most people will answer N.
1994 config SSP_QUICK_CANARY
1995 bool "Use simple guard values without accessing /dev/urandom"
1996 depends on UCLIBC_HAS_SSP
1999 Use gettimeofday(2) to define the __guard without accessing
2001 WARNING: This makes smashing stack protector vulnerable to timing
2003 Most people will answer N.
2006 prompt "Propolice protection blocking signal"
2007 depends on UCLIBC_HAS_SSP
2008 default PROPOLICE_BLOCK_ABRT if ! DODEBUG
2009 default PROPOLICE_BLOCK_SEGV if DODEBUG
2011 "abort" use SIGABRT to block offending programs.
2012 This is the default implementation.
2014 "segfault" use SIGSEGV to block offending programs.
2015 Use this for debugging.
2017 If unsure, answer "abort".
2019 config PROPOLICE_BLOCK_ABRT
2022 config PROPOLICE_BLOCK_SEGV
2027 config UCLIBC_BUILD_SSP
2028 bool "Build uClibc with -fstack-protector"
2029 depends on UCLIBC_HAS_SSP
2032 Build all uClibc libraries and executables with -fstack-protector,
2033 adding extra stack overflow checking to most uClibc functions.
2035 config UCLIBC_BUILD_RELRO
2036 bool "Build uClibc with linker option -z RELRO"
2037 depends on HAVE_SHARED
2040 Build all libraries and executables with "ld -z relro".
2042 This tells the linker to mark chunks of an executable or shared
2043 library read-only after applying dynamic relocations. (This comes
2044 up when a global const variable is initialized to the address of a
2045 function or the value of another global variable.)
2047 This is a fairly obscure option the ld man page doesn't even bother
2048 to document properly. It's a security paranoia issue that's more
2049 likely to consume memory (by allocating an extra page) rather than
2052 This is explained in more depth at
2053 http://www.airs.com/blog/archives/189
2055 Nobody is likely to care whether you say Y or N here.
2057 config UCLIBC_BUILD_NOW
2058 bool "Build uClibc with linker option -z NOW"
2059 depends on HAVE_SHARED
2062 Build all libraries and executables with "ld -z now".
2064 This tells the linker to resolve all symbols when the library is
2065 first loaded, rather than when each function is first called. This
2066 increases start-up latency by a few microseconds and may do
2067 unnecessary work (resolving symbols that are never used), but the
2068 realtime people like it for making microbenchmark timings slightly
2069 more predictable and in some cases it can be slightly faster due to
2070 CPU cache behavior (not having to fault the linker back in to do
2071 lazy symbol resolution).
2073 Most people can't tell the difference between selecting Y or N here.
2075 config UCLIBC_BUILD_NOEXECSTACK
2076 bool "Build uClibc with noexecstack marking"
2079 Mark all assembler files as noexecstack, which will mark uClibc
2080 as not requiring an executable stack. (This doesn't prevent other
2081 files you link against from claiming to need an executable stack, it
2082 just won't cause uClibc to request it unnecessarily.)
2084 This is a security thing to make buffer overflows harder to exploit.
2085 By itself, it's kind of useless, as Linus Torvalds explained in 1998:
2086 http://old.lwn.net/1998/0806/a/linus-noexec.html
2088 It only actually provides any security when combined with address
2089 space randomization, explained here: http://lwn.net/Articles/121845/
2091 Address space randomization is on by default in current linux
2092 kernels (although it can be disabled using the option
2095 You should probably say Y.
2099 menu "uClibc development/debugging options"
2101 config CROSS_COMPILER_PREFIX
2102 string "Cross-compiling toolchain prefix"
2105 The prefix used to execute your cross-compiling toolchain. For
2106 example, if you run 'arm-linux-uclibc-gcc' to compile something,
2107 then enter 'arm-linux-uclibc-' here.
2109 config UCLIBC_EXTRA_CFLAGS
2110 string "Enter any extra CFLAGS to use to build uClibc"
2113 Add any additional CFLAGS to be used to build uClibc.
2116 bool "Build uClibc with debugging symbols"
2118 select EXTRA_WARNINGS
2120 Say Y here if you wish to compile uClibc with debugging symbols.
2121 This will allow you to use a debugger to examine uClibc internals
2122 while applications are running. This increases the size of the
2123 library considerably and should only be used when doing development.
2124 If you are doing development and want to debug uClibc, answer Y.
2126 Otherwise, answer N.
2129 bool "Build pthread with debugging output"
2130 depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
2133 Enable debug output in libpthread. This is only useful when doing
2134 development in libpthread itself.
2136 Otherwise, answer N.
2139 bool "Strip libraries and executables"
2143 Say Y here if you do wish to strip all uClibc libraries and
2144 executables. No stripping increases the size of the binaries
2145 considerably, but makes it possible to debug uClibc libraries.
2146 Most people will answer Y.
2149 bool "Build uClibc with run-time assertion testing"
2152 Say Y here to include runtime assertion tests.
2153 This enables runtime assertion testing in some code, which can
2154 increase the size of the library and incur runtime overhead.
2155 If you say N, then this testing will be disabled.
2157 config SUPPORT_LD_DEBUG
2158 bool "Build the shared library loader with debugging support"
2159 depends on HAVE_SHARED
2162 Answer Y here to enable all the extra code needed to debug the uClibc
2163 native shared library loader. The level of debugging noise that is
2164 generated depends on the LD_DEBUG environment variable... Just set
2165 LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to
2166 debug your application. Diagnostic messages will then be printed to
2169 For now these debugging tokens are available:
2170 detail provide more information for some options
2171 move display copy processing
2172 symbols display symbol table processing
2173 reloc display relocation processing; detail shows the
2175 nofixups never fixes up jump relocations
2176 bindings displays the resolve processing (function calls);
2177 detail shows the relocation patch
2178 all Enable everything!
2180 The additional environment variable:
2181 LD_DEBUG_OUTPUT=file
2182 redirects the diagnostics to an output file created using
2183 the specified name and the process id as a suffix.
2185 An excellent start is simply:
2186 $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
2187 or to log everything to a file named 'logfile', try this
2188 $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
2190 If you are doing development and want to debug uClibc's shared library
2191 loader, answer Y. Mere mortals answer N.
2193 config SUPPORT_LD_DEBUG_EARLY
2194 bool "Build the shared library loader with early debugging support"
2195 depends on HAVE_SHARED
2198 Answer Y here to if you find the uClibc shared library loader is
2199 crashing or otherwise not working very early on. This is typical
2200 only when starting a new port when you haven't figured out how to
2201 properly get the values for argc, argv, environ, etc. This method
2202 allows a degree of visibility into the very early shared library
2203 loader initialization process. If you are doing development and want
2204 to debug the uClibc shared library loader early initialization,
2205 answer Y. Mere mortals answer N.
2207 config UCLIBC_MALLOC_DEBUGGING
2208 bool "Build malloc with debugging support"
2209 depends on MALLOC || MALLOC_STANDARD
2212 Answer Y here to compile extra debugging support code into malloc.
2213 Malloc debugging output may then be enabled at runtime using the
2214 MALLOC_DEBUG environment variable.
2216 The value of MALLOC_DEBUG should be an integer, which is interpreted
2217 as a bitmask with the following bits:
2218 1 - do extra consistency checking
2219 2 - output messages for malloc/free calls and OS
2221 4 - output messages for the `MMB' layer
2222 8 - output messages for internal malloc heap manipulation
2225 Because this increases the size of malloc appreciably (due to strings
2226 etc), you should say N unless you need to debug a malloc problem.
2229 string "Compiler Warnings"
2232 Set this to the set of gcc warnings you wish to see while compiling.
2234 config EXTRA_WARNINGS
2235 bool "Enable extra annoying warnings"
2238 If you wish to build with extra warnings enabled, say Y here.
2241 bool "Compile all sources at once into an object"
2244 Set this to compile all sources at once into an object (IMA).
2245 This mode of compilation uses alot of memory but may produce
2248 Note that you need a very recent GCC for this to work, like
2249 gcc >= 4.3 plus eventually some patches.
2251 If unsure, keep the default of N.
2253 config UCLIBC_MJN3_ONLY
2254 bool "Manuel's hidden warnings"
2257 Answer Y here to see all Manuel's personal notes, warnings, and todos.
2259 Most people will answer N.