2 # For a description of the syntax of this configuration file,
3 # see extra/config/Kconfig-language.txt
6 mainmenu "uClibc C Library Configuration"
9 prompt "Target Architecture"
52 config TARGET_microblaze
53 bool "microblaze (BROKEN)"
88 menu "Target Architecture Features and Options"
91 source "extra/Configs/Config.alpha"
95 source "extra/Configs/Config.arm"
99 source "extra/Configs/Config.avr32"
103 source "extra/Configs/Config.bfin"
107 source "extra/Configs/Config.cris"
111 source "extra/Configs/Config.e1"
115 source "extra/Configs/Config.frv"
119 source "extra/Configs/Config.h8300"
123 source "extra/Configs/Config.hppa"
127 source "extra/Configs/Config.i386"
131 source "extra/Configs/Config.i960"
135 source "extra/Configs/Config.ia64"
139 source "extra/Configs/Config.m68k"
143 source "extra/Configs/Config.nios"
147 source "extra/Configs/Config.nios2"
151 source "extra/Configs/Config.microblaze"
155 source "extra/Configs/Config.mips"
159 source "extra/Configs/Config.powerpc"
163 source "extra/Configs/Config.sh"
167 source "extra/Configs/Config.sh64"
171 source "extra/Configs/Config.sparc"
175 source "extra/Configs/Config.v850"
179 source "extra/Configs/Config.vax"
183 source "extra/Configs/Config.x86_64"
186 config TARGET_SUBARCH
188 default "e500" if CONFIG_E500
189 default "classic" if CONFIG_CLASSIC
192 source "extra/Configs/Config.in.arch"
196 menu "General Library Settings"
203 bool "Generate only Position Independent Code (PIC)"
207 If you wish to build all of uClibc as PIC objects, then answer Y here.
208 If you are unsure, then you should answer N.
210 config HAVE_NO_SHARED
214 config ARCH_HAS_NO_LDSO
216 select HAVE_NO_SHARED
220 bool "Enable support for shared libraries"
221 depends on !HAVE_NO_SHARED
224 If you wish to build uClibc with support for shared libraries then
225 answer Y here. If you only want to build uClibc as a static library,
228 config FORCE_SHAREABLE_TEXT_SEGMENTS
229 bool "Only load shared libraries which can share their text segment"
230 depends on HAVE_SHARED
233 If you answer Y here, the uClibc native shared library loader will
234 only load shared libraries, which do not need to modify any non-writable
235 segments. These libraries haven't set the DT_TEXTREL tag in the dynamic
236 section (==> objdump). All your libraries must be compiled with
237 -fPIC or -fpic, and all assembler function must be written as position
238 independent code (PIC).
239 Enabling this option will make uClibc's shared library loader a
240 little bit smaller and guarantee that no memory will be wasted by badly
241 coded shared libraries.
243 config LDSO_LDD_SUPPORT
244 bool "Native 'ldd' support"
245 depends on HAVE_SHARED
248 Enable this to enable all the code needed to support traditional ldd,
249 which executes the shared library loader to resolve all dependencies
250 and then provide a list of shared libraries that are required for an
251 application to function. Disabling this option will makes uClibc's
252 shared library loader a little bit smaller. Most people will answer Y.
254 config LDSO_CACHE_SUPPORT
255 bool "Enable library loader cache (ld.so.conf)"
256 depends on HAVE_SHARED
259 Enable this to make use of /etc/ld.so.conf, the shared library loader
260 cache configuration file to support for non-standard library paths.
261 After updating this file, it is necessary to run 'ldconfig' to update
262 the /etc/ld.so.cache shared library loader cache file.
264 config LDSO_PRELOAD_FILE_SUPPORT
265 bool "Enable library loader preload file (ld.so.preload)"
266 depends on HAVE_SHARED
269 Enable this to make use of /etc/ld.so.preload. This file contains a
270 whitespace separated list of shared libraries to be loaded before
273 config LDSO_BASE_FILENAME
274 string "Shared library loader naming prefix"
275 depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
278 If you wish to support both uClibc and glibc on the same system, it
279 is necessary to set this to something other than "ld.so" to avoid
280 conflicts with glibc, which also uses "ld.so". This prevents both
281 libraries from using the same /etc/ld.so.* files. If you wish to
282 support both uClibc and glibc on the same system then you should set
283 this to "ld-uClibc.so".
285 Most people will leave this set to the default of "ld.so".
287 WARNING: Changing the default prefix could cause problems with
290 config UCLIBC_STATIC_LDCONFIG
291 bool "Link ldconfig statically"
292 depends on HAVE_SHARED
295 Enable this option to statically link the ldconfig binary.
297 Making ldconfig static can be beneficial if you have a library
298 problem and need to use ldconfig to recover. Sometimes, it is
299 preferable to instead keep the size of the system down, in which
300 case you should disable this option.
303 bool "Enable ELF RUNPATH tag support"
304 depends on HAVE_SHARED
307 ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths
308 which extend the library search paths. They are really only useful
309 if a package installs libraries in non standard locations and
310 ld.so.conf support is disabled.
312 Usage of RUNPATH tags is not too common, so disabling this feature
313 should be safe for most people.
315 config UCLIBC_CTOR_DTOR
316 bool "Support global constructors and destructors"
319 If you wish to build uClibc with support for global constructor
320 (ctor) and global destructor (dtor) support, then answer Y here.
321 When ctor/dtor support is enabled, binaries linked with uClibc must
322 also be linked with crtbegin.o and crtend.o which are provided by gcc
323 (the "*startfile:" and "*endfile:" settings in your gcc specs file
324 may need to be adjusted to include these files). This support will
325 also add a small amount of additional size to each binary compiled vs
326 uClibc. If you will be using uClibc with C++, or if you need the gcc
327 __attribute__((constructor)) and __attribute__((destructor)) to work,
328 then you definitely want to answer Y here. If you don't need ctors
329 or dtors and want your binaries to be as small as possible, then
332 config LDSO_GNU_HASH_SUPPORT
333 bool "Enable GNU hash style support"
334 depends on HAVE_SHARED
337 Newest binutils support a new hash style named GNU-hash. The dynamic
338 linker will use the new GNU-hash section (.gnu.hash) for symbol lookup
339 if present into the ELF binaries, otherwise it will use the old SysV
340 hash style (.hash). This ensures that it is completely backward compatible.
341 Further, being the hash table implementation self-contained into each
342 executable and shared libraries, objects with mixed hash style can
343 peacefully coexist in the same process.
345 If you want to use this new feature, answer Y
347 config HAS_NO_THREADS
351 config UCLIBC_HAS_THREADS
352 bool "POSIX Threading Support"
353 depends on !HAS_NO_THREADS
356 If you want to compile uClibc with pthread support, then answer Y.
357 This will increase the size of uClibc by adding a bunch of locking
358 to critical data structures, and adding extra code to ensure that
359 functions are properly reentrant.
361 If your applications require pthreads, answer Y.
363 config PTHREADS_DEBUG_SUPPORT
364 bool "Build pthreads debugging support"
366 depends on UCLIBC_HAS_THREADS
368 Say Y here if you wish to be able to debug applications that use
369 uClibc's pthreads library. By enabling this option, a library
370 named libthread_db will be built. This library will be dlopen()'d
371 by gdb and will allow gdb to debug the threads in your application.
373 IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library,
374 you must compile gdb with uClibc in order for pthread debugging to
377 If you are doing development and want to debug applications using
378 uClibc's pthread library, answer Y. Otherwise, answer N.
380 config LINUXTHREADS_OLD
381 bool "Use the older (stable) version of linuxthreads"
383 depends on UCLIBC_HAS_THREADS
385 There are two versions of linuxthreads. The older (stable) version
386 has been in uClibc for quite a long time but hasn't seen too many
387 updates other than bugfixes.
389 The new version has not been tested much, and lacks ports for arches
390 which glibc does not support (like bfin/frv/etc...), but is based on
391 the latest code from glibc, so it may be the only choice for the
392 newer ports (like alpha/amd64/64bit arches and hppa).
394 config UCLIBC_HAS_LFS
395 bool "Large File Support"
398 If you wish to build uClibc with support for accessing large files
399 (i.e. files greater then 2 GiB) then answer Y. Do not enable this
400 if you are using an older Linux kernel (2.0.x) that lacks large file
401 support. Enabling this option will increase the size of uClibc.
404 prompt "Malloc Implementation"
405 default MALLOC if ! ARCH_USE_MMU
406 default MALLOC_STANDARD if ARCH_USE_MMU
408 "malloc" use mmap for all allocations and so works very well on MMU-less
409 systems that do not support the brk() system call. It is pretty smart
410 about reusing already allocated memory, and minimizing memory wastage.
411 This is the default for uClinux MMU-less systems.
413 "malloc-simple" was written from scratch for uClibc, and is the
414 simplest possible (and therefore smallest) malloc implementation.
415 This uses only the mmap() system call to allocation memory, and does
416 not use the brk() system call at all, making it a fine choice for
417 MMU-less systems with very limited memory. It is rather dumb, and
418 certainly isn't the fastest. But it is 100% standards compliant,
419 thread safe, and very small.
421 "malloc-standard" is derived from the public domain dlmalloc
422 implementation by Doug Lea. It is quite fast, and is pretty smart
423 about reusing already allocated memory, and minimizing memory
424 wastage. This uses brk() for small allocations, while using mmap()
425 for larger allocations. This is the default malloc implementation
428 If unsure, answer "malloc-standard".
436 config MALLOC_STANDARD
437 bool "malloc-standard"
438 depends on ARCH_USE_MMU
442 config MALLOC_GLIBC_COMPAT
443 bool "Malloc returns live pointer for malloc(0)"
446 The behavior of malloc(0) is listed as implementation-defined by
447 SuSv3. Glibc returns a valid pointer to something, while uClibc
448 normally returns NULL. I personally feel glibc's behavior is
449 not particularly safe, and allows buggy applications to hide very
452 When this option is enabled, uClibc will act just like glibc, and
453 return a live pointer when someone calls malloc(0). This pointer
454 provides a malloc'ed area with a size of 1 byte. This feature is
455 mostly useful when dealing with applications using autoconf's broken
456 AC_FUNC_MALLOC macro (which redefines malloc as rpl_malloc if it
457 does not detect glibc style returning-a-valid-pointer-for-malloc(0)
458 behavior). Most people can safely answer N.
460 config UCLIBC_DYNAMIC_ATEXIT
461 bool "Dynamic atexit() Support"
464 When this option is enabled, uClibc will support an infinite number,
465 of atexit() and on_exit() functions, limited only by your available
466 memory. This can be important when uClibc is used with C++, since
467 global destructors are implemented via atexit(), and it is quite
468 possible to exceed the default number when this option is disabled.
469 Enabling this option adds a few bytes, and more significantly makes
470 atexit and on_exit depend on malloc, which can be bad when compiling
473 Unless you use uClibc with C++, you should probably answer N.
476 bool "Old (visible) atexit Support"
479 Enable this option if you want to update from 0.9.28 to svn/0.9.29, else
480 you will be missing atexit() until you rebuild all apps.
482 config UCLIBC_SUSV3_LEGACY
483 bool "Enable SuSv3 LEGACY functions"
486 Enable this option if you want to have SuSv3 LEGACY functions
487 in the library, else they are replaced by SuSv3 proposed macros.
488 Currently applies to bcopy/bzero/bcmp/index/rindex.
489 WARNING! ABI incompatibility.
491 config UCLIBC_SUSV3_LEGACY_MACROS
492 bool "Enable SuSv3 LEGACY macros"
495 Enable this option if you want to have SuSv3 LEGACY macros.
496 Currently applies to bcopy/bzero/bcmp/index/rindex et al.
497 WARNING! ABI incompatibility.
499 config UCLIBC_HAS_SHADOW
500 bool "Shadow Password Support"
503 Answer N if you do not need shadow password support.
504 Most people will answer Y.
506 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
507 bool "Support for program_invocation_name"
510 Support for the GNU-specific program_invocation_name and
511 program_invocation_short_name strings. Some GNU packages
512 (like tar and coreutils) utilize these for extra useful
513 output, but in general are not required.
515 At startup, these external strings are automatically set
516 up based on the value of ARGV[0].
518 If unsure, just answer N.
520 config UCLIBC_HAS___PROGNAME
521 bool "Support for __progname"
523 depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
525 Some packages (like openssh) like to peek into internal libc
526 symbols to make their output a bit more user friendly.
528 At startup, __progname is automatically set up based on the
531 If unsure, just answer N.
533 config UNIX98PTY_ONLY
534 bool "Support only Unix 98 PTYs"
537 If you want to support only Unix 98 PTYs enable this. Some older
538 applications may need this disabled. For most current programs,
539 you can generally answer Y.
542 bool "Assume that /dev/pts is a devpts or devfs file system"
545 Enable this if /dev/pts is on a devpts or devfs filesystem. Both
546 these filesystems automatically manage permissions on the /dev/pts
547 devices. You may need to mount your devpts or devfs filesystem on
548 /dev/pts for this to work.
550 Most people should answer Y.
552 config UCLIBC_HAS_TM_EXTENSIONS
553 bool "Support 'struct tm' timezone extension fields"
556 Enabling this option adds fields to 'struct tm' in time.h for
557 tracking the number of seconds east of UTC, and an abbreviation for
558 the current timezone. These fields are not specified by the SuSv3
559 standard, but they are commonly used in both GNU and BSD application
562 To strictly follow the SuSv3 standard, leave this disabled.
563 Most people will probably want to answer Y.
565 config UCLIBC_HAS_TZ_CACHING
566 bool "Enable caching of the last valid timezone 'TZ' string"
569 Answer Y to enable caching of the last valid 'TZ' string describing
570 the timezone setting. This allows a quick string compare to avoid
571 repeated parsing of unchanged 'TZ' strings when tzset() is called.
573 Most people will answer Y.
575 config UCLIBC_HAS_TZ_FILE
576 bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
579 Answer Y to enable the setting of a default timezone for uClibc.
581 Ordinarily, uClibc gets the timezone information exclusively from the
582 'TZ' environment variable. In particular, there is no support for
583 the zoneinfo directory tree or the /etc/timezone file used by glibc.
585 With this option enabled, uClibc will use the value stored in the
586 file '/etc/TZ' (default path) to obtain timezone information if the
587 'TZ' environment variable is missing or has an invalid value. The
588 file consists of a single line (newline required) of text describing
589 the timezone in the format specified for the TZ environment variable.
591 Simply doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
593 http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
594 for details on valid settings of 'TZ'.
596 Most people will answer Y.
598 config UCLIBC_HAS_TZ_FILE_READ_MANY
599 bool "Repeatedly read the '/etc/TZ' file"
600 depends on UCLIBC_HAS_TZ_FILE
603 Answer Y to enable repeated reading of the '/etc/TZ' file even after
604 a valid value has been read. This incurs the overhead of an open/read/close
605 for each tzset() call (explicit or implied). However, setting this
606 will allows applications to update their timezone information if the contents
609 Most people will answer Y.
611 config UCLIBC_TZ_FILE_PATH
612 string "Path to the 'TZ' file for setting the global timezone"
613 depends on UCLIBC_HAS_TZ_FILE
616 This is the path to the 'TZ' file.
618 Most people will use the default of '/etc/TZ'.
622 menu "Advanced Library Settings"
624 config UCLIBC_PWD_BUFFER_SIZE
625 int "Buffer size for getpwnam() and friends"
629 This sets the value of the buffer size for getpwnam() and friends.
630 By default, this is 256. (For reference, glibc uses 1024).
631 The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX
634 config UCLIBC_GRP_BUFFER_SIZE
635 int "Buffer size for getgrnam() and friends"
639 This sets the value of the buffer size for getgrnam() and friends.
640 By default, this is 256. (For reference, glibc uses 1024).
641 The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX
646 menu "Networking Support"
648 config UCLIBC_HAS_IPV6
649 bool "IP version 6 Support"
652 If you want to include support for the next version of the Internet
653 Protocol (IP version 6) then answer Y.
655 Most people should answer N.
657 config UCLIBC_HAS_RPC
658 bool "Remote Procedure Call (RPC) support"
661 If you want to include RPC support, enable this. RPC is rarely used
662 for anything except for the NFS filesystem. Unless you plan to use NFS,
663 you can probably leave this set to N and save some space. If you need
664 to use NFS then you should answer Y.
666 config UCLIBC_HAS_FULL_RPC
667 bool "Full RPC support"
668 depends on UCLIBC_HAS_RPC
669 default y if !HAVE_SHARED
671 Normally we enable just enough RPC support for things like rshd and
672 nfs mounts to work. If you find you need the rest of the RPC stuff,
673 then enable this option. Most people can safely answer N.
675 config UCLIBC_HAS_REENTRANT_RPC
676 bool "Reentrant RPC support"
677 depends on UCLIBC_HAS_RPC
678 default y if !HAVE_SHARED
680 Most packages utilize the normal (non-reentrant) RPC functions, but
681 some (like exportfs from nfs-utils) need these reentrant versions.
683 Most people can safely answer N.
685 config UCLIBC_USE_NETLINK
686 bool "Use netlink to query interfaces"
689 In newer versions of Linux (2.4.17+), support was added for querying
690 network device information via netlink rather than the old style
691 ioctl's. Most of the time, the older ioctl style is sufficient (and
692 it is smaller than netlink), but if you find that not all of your
693 devices are being returned by the if_nameindex() function, you will
694 have to use the netlink implementation.
696 Most people can safely answer N.
698 config UCLIBC_HAS_BSD_RES_CLOSE
699 bool "Support res_close() (bsd-compat)"
702 Answer Y if you desperately want to support BSD compatibility in
705 Most people will say N.
710 menu "String and Stdio Support"
712 config UCLIBC_HAS_STRING_GENERIC_OPT
713 bool "Use glibc generic string functions"
716 Answer Y to use the (tweaked) glibc generic string functions.
717 In general, they are faster (but 3-5K larger) than the base
718 uClibc string functions which are optimized solely for size.
720 Many people will answer Y.
722 config UCLIBC_HAS_STRING_ARCH_OPT
723 bool "Use arch-specific string functions"
726 Answer Y to use the arch-specific string functions instead of the
727 base uClibc versions, which are optimized exclusively for size.
729 Most people will answer Y, as this has been default behavior
732 config UCLIBC_HAS_CTYPE_TABLES
733 bool "Use Table Versions Of 'ctype.h' Functions."
736 Answer Y to use table versions of the 'ctype.h' functions.
737 While the non-table versions are often smaller when building
738 statically linked apps, they work only in stub locale mode.
740 Most people will answer Y.
742 config UCLIBC_HAS_CTYPE_SIGNED
743 bool "Support Signed Characters In 'ctype.h' Functions."
744 depends UCLIBC_HAS_CTYPE_TABLES
747 Answer Y to enable support for passing signed char values to
748 the 'ctype.h' functions. ANSI/ISO C99 and SUSv3 specify that
749 these functions are only defined for unsigned char values and
750 EOF. However, glibc allows negative signed char values as well
751 in order to support 'broken old programs'.
753 Most people will answer Y.
756 prompt "ctype argument checking"
757 depends UCLIBC_HAS_CTYPE_TABLES
758 default UCLIBC_HAS_CTYPE_UNSAFE
760 Please select the invalid arg behavior you want for the 'ctype' functions.
762 The 'ctype' functions are now implemented using table lookups, with
763 the arg being the index. This can result in incorrect memory accesses
764 or even segfaults for args outside of the allowed range.
766 NOTE: This only affects the 'ctype' _functions_. It does not affect
767 the macro implementations.
769 config UCLIBC_HAS_CTYPE_UNSAFE
770 bool "Do not check -- unsafe"
772 config UCLIBC_HAS_CTYPE_CHECKED
773 bool "Detect and handle appropriately"
775 config UCLIBC_HAS_CTYPE_ENFORCED
776 bool "Issue a diagnostic and abort()"
781 config UCLIBC_HAS_WCHAR
782 bool "Wide Character Support"
785 Answer Y to enable wide character support. This will make uClibc
786 much larger. It is also currently required for locale support.
788 Most people will answer N.
790 config UCLIBC_HAS_LOCALE
791 bool "Locale Support"
792 select UCLIBC_HAS_WCHAR
793 select UCLIBC_HAS_CTYPE_TABLES
796 uClibc now has full ANSI/ISO C99 locale support (except for
797 wcsftime() and collating items in regex). Be aware that enabling
798 this option will make uClibc much larger.
800 Enabling UCLIBC_HAS_LOCALE with the default set of supported locales
801 (169 UTF-8 locales, and 144 locales for other codesets) will enlarge
802 uClibc by around 300k. You can reduce this size by building your own
803 custom set of locate data (see extra/locale/LOCALES for details).
805 uClibc's locale support is still under development. For example,
806 codesets using shift states are not currently supported. Support is
807 planned in the next iteration of locale support.
809 Answer Y to enable locale support. Most people will answer N.
811 config UCLIBC_PREGENERATED_LOCALE_DATA
812 bool "Use Pre-generated Locale Data"
813 depends on UCLIBC_HAS_LOCALE
816 If you are selective and only want locale data for a few particular
817 locales, or you enjoy pain, or you are a rabid do-it-yourself sort of
818 person, you can turn this option off and manually walk through the
819 mostly undocumented procedure needed to generate your own locale
822 Mere mortals will answer Y and use the default set of pregenerated
823 locale data, which supports 169 UTF-8 locales, and 144 locales for
824 other codesets (for the complete list see extra/locale/LOCALES).
826 config UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA
827 bool "Automagically Download the Pre-generated Locale Data (if necessary)"
828 depends on UCLIBC_PREGENERATED_LOCALE_DATA
831 If you would like the build process to use 'wget' to automatically
832 download the pregenerated locale data, enable this option. Otherwise
833 you will need to obtain the locale data yourself from:
834 http://www.uclibc.org/downloads/uClibc-locale-030818.tgz
835 and place the uClibc-locale-030818.tgz tarball in the extra/locale/
838 Go ahead and make life easy for yourself... Answer Y.
840 config UCLIBC_HAS_XLOCALE
841 bool "Extended Locale Support (experimental/incomplete)"
842 depends on UCLIBC_HAS_LOCALE
845 Answer Y to enable extended locale support similar to that provided
846 by glibc. This is primarily intended to support libstd++ functionality.
847 However, it also allows thread-specific locale selection via uselocale().
849 Most people will answer N.
851 config UCLIBC_HAS_HEXADECIMAL_FLOATS
852 bool "Support hexadecimal float notation"
853 depends UCLIBC_HAS_CTYPE_TABLES
854 depends on UCLIBC_HAS_FLOATS
857 Answer Y to enable support for hexadecimal float notation in the
858 (wchar and) char string to floating point conversion functions, as
859 well as support for the %a and %A conversion specifiers in the
860 *printf() and *scanf() functions.
862 Most people will answer N.
864 config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
865 bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
866 depends on UCLIBC_HAS_LOCALE
867 depends on UCLIBC_HAS_FLOATS
870 Answer Y to enable support for glibc's \"'\" flag for allowing locale-specific
871 digit grouping in base 10 integer conversions and appropriate floating point
872 conversions in the *printf() and *scanf() functions.
874 Most people will answer N.
876 config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
877 bool "Do not require digit grouping when the \"'\" flag is specified"
878 depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
881 Answer Y to make digit grouping optional when the \"'\" flag is specified.
882 This is the standard glibc behavior. If the initial string of digits
883 exceeds the maximum group number, the input will be treated as a normal
886 Most people will answer N.
888 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
889 bool "Support glibc's register_printf_function() (glibc-compat)"
890 depends on !USE_OLD_VFPRINTF
893 Answer Y to support glibc's register_printf_function() to allow an
894 application to add its own printf conversion specifiers.
896 NOTE: This implementation limits the number or registered specifiers to 10.
897 NOTE: This implementation requires new conversion specifiers to be ASCII
898 characters (0-0x7f). This is to avoid problems with processing
899 format strings in locales with different multibyte conversions.
901 Most people will answer N.
903 config USE_OLD_VFPRINTF
904 bool "Use the old vfprintf implementation"
905 depends on !UCLIBC_HAS_WCHAR
908 Set to true to use the old vfprintf instead of the new. This is roughly
909 C89 compliant with some extensions, and is much smaller. However, it does
910 not support wide chars, positional args, or glibc custom printf specifiers.
912 Most people will answer N.
914 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
915 int "Maximum number of positional args. Either 0 or >= 9."
916 depends on !USE_OLD_VFPRINTF
919 Set the maximum number of positional args supported by the printf/scanf
920 functions. The Single Unix Specification Version 3 requires a minimum
921 value of 9. Setting this to a value lower than 9 will disable positional
922 arg support and cause the NL_ARGMAX macro in limits.h to be #undef'd.
923 WARNING! The workspace to support positional args is currently allocated
924 on the stack. You probably don't want to set this to too high a value.
926 Most people will answer 9.
929 config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
930 bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
933 NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!!
934 NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!!
936 Answer Y to enable support for glibc's 'a' flag for the scanf string
937 conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to
938 auto-allocate sufficient memory to hold the data retrieved.
940 Most people will answer N.
943 prompt "Stdio buffer size"
944 default UCLIBC_HAS_STDIO_BUFSIZ_4096
946 Please select a value for BUFSIZ. This will be used by the
947 stdio subsystem as the default buffer size for a file, and
948 affects fopen(), setvbuf(), etc.
950 NOTE: Setting this to 'none' will disable buffering completely.
951 However, BUFSIZ will still be defined in stdio.h as 256 because
952 many applications use this value.
954 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
955 bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
956 depends !UCLIBC_HAS_WCHAR
958 config UCLIBC_HAS_STDIO_BUFSIZ_256
959 bool "256 (minimum ANSI/ISO C99 value)"
961 config UCLIBC_HAS_STDIO_BUFSIZ_512
964 config UCLIBC_HAS_STDIO_BUFSIZ_1024
967 config UCLIBC_HAS_STDIO_BUFSIZ_2048
970 config UCLIBC_HAS_STDIO_BUFSIZ_4096
973 config UCLIBC_HAS_STDIO_BUFSIZ_8192
976 # If you add more choices, you will need to update uClibc_stdio.h.
981 prompt "Stdio builtin buffer size (uClibc-specific)"
982 depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
983 default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
985 When a FILE is created with fopen(), an attempt is made to allocate
986 a BUFSIZ buffer for it. If the allocation fails, fopen() will still
987 succeed but the FILE will be unbuffered.
989 This option adds a small amount of space to each FILE to act as an
990 emergency buffer in the event of a buffer allocation failure.
992 Most people will answer None.
994 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
997 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1000 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1003 # If you add more choices, you will need to update uClibc_stdio.h.
1007 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1008 bool "Attempt to shutdown stdio subsystem when abort() is called."
1011 ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was a behavioral
1012 change made in SUSv3. Previously, abort() was required to have the affect of
1013 fclose() on all open streams. The wording has been changed to "may" from "shall".
1015 Most people will answer N.
1017 config UCLIBC_HAS_STDIO_GETC_MACRO
1018 bool "Provide a macro version of getc()"
1019 depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1022 Provide a macro version of getc().
1024 Most people will answer Y.
1026 config UCLIBC_HAS_STDIO_PUTC_MACRO
1027 bool "Provide a macro version of putc()"
1028 depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1031 Provide a macro version of putc().
1033 Most people will answer Y.
1035 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1036 bool "Support auto-r/w transition"
1039 Answer Y to enable the stdio subsystem to automaticly transition
1040 between reading and writing. This relaxes the ANSI/ISO C99 requirement:
1042 When a file is opened with update mode ('+' as the second or third character
1043 in the list of mode argument values), both input and output may be performed
1044 on the associated stream. However, output shall not be directly followed by
1045 input without an intervening call to the fflush function or to a file
1046 positioning function (fseek, fsetpos, or rewind), and input shall not be
1047 directly followed by output without an intervening call to a file positioning
1048 function, unless the input operation encounters endÂofÂfile.
1050 Most people will answer Y.
1052 config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
1053 bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
1054 depends on UCLIBC_HAS_LFS
1057 Answer Y to enable a uClibc-specific extension to allow passing an
1058 additional 'F' flag in the mode string for fopen() to specify that
1059 the file should be open()ed with the O_LARGEFILE flag set.
1061 Most people will answer N.
1063 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1064 bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1067 Answer Y to support a glibc extension to allow passing
1068 additional 'x' flag in the mode string for fopen() to specify that
1069 the file should be open()ed with the O_EXCL flag set.
1071 Most people will answer N.
1073 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1074 bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1077 Answer Y to support the glibc 'custom stream' extension functions
1078 fmemopen(), open_memstream(), and fopencookie().
1080 NOTE: There are some minor differences regarding seeking behavior.
1082 Most people will answer N.
1084 config UCLIBC_HAS_PRINTF_M_SPEC
1085 bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1088 Answer Y to support a glibc extension to interpret '%m' in printf
1089 format strings as an instruction to output the error message string
1090 (as generated by strerror) corresponding to the current value of 'errno'.
1092 Most people will answer N.
1094 config UCLIBC_HAS_ERRNO_MESSAGES
1095 bool "Include the errno message text in the library"
1098 Answer Y if you want to include the errno message text in the
1099 library. This adds about 3K to the library, but enables strerror()
1100 to generate text other than 'Unknown error <number>'.
1102 Most people will answer Y.
1104 config UCLIBC_HAS_SYS_ERRLIST
1105 bool "Support sys_errlist[] (obsolete-compat)"
1106 depends on UCLIBC_HAS_ERRNO_MESSAGES
1109 Answer Y if you want to support the obsolete sys_errlist[].
1110 This adds about 0.5k to the library, except for the mips
1111 arch where it adds over 4K.
1113 WARNING! In the future, support for sys_errlist[] may be unavailable
1114 in at least some configurations. In fact, it may be removed altogether.
1116 Most people will answer N.
1118 Application writers: use the strerror(3) function.
1120 config UCLIBC_HAS_SIGNUM_MESSAGES
1121 bool "Include the signum message text in the library"
1124 Answer Y if you want to include the signum message text in the
1125 library. This adds about 0.5K to the library, but enables strsignal()
1126 to generate text other than 'Unknown signal <number>'.
1128 Most people will answer Y.
1130 config UCLIBC_HAS_SYS_SIGLIST
1131 bool "Support sys_siglist[] (bsd-compat)"
1132 depends on UCLIBC_HAS_SIGNUM_MESSAGES
1135 Answer Y if you want to support sys_siglist[].
1137 WARNING! In the future, support for sys_siglist[] may be unavailable
1138 in at least some configurations. In fact, it may be removed altogether.
1140 Most people will answer N.
1142 config UCLIBC_HAS_GETTEXT_AWARENESS
1143 bool "Include gettext awareness"
1144 depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
1147 NOTE!!! Not yet integrated with strerror and strsignal. NOTE!!!
1149 Answer Y if you want to include weak stub gettext support and
1150 make the *strerror*() and strsignal() functions gettext-aware.
1152 Currently, to get functional gettext functionality you will need
1155 Most people will answer N.
1157 config UCLIBC_HAS_GNU_GETOPT
1158 bool "Support gnu getopt"
1161 Answer Y if you want to include full gnu getopt() instead of a
1162 (much smaller) SUSv3 compatible getopt().
1164 Most people will answer Y.
1166 config UCLIBC_HAS_GETOPT_LONG
1167 bool "Support getopt_long/getopt_long_only"
1168 depends !UCLIBC_HAS_GNU_GETOPT
1171 Answer Y if you want to include getopt_long[_only() used by many
1174 Most people will answer Y.
1176 config UCLIBC_HAS_GNU_GETSUBOPT
1177 bool "Support glibc getsubopt"
1180 Answer Y if you want to include glibc getsubopt() instead of a
1181 smaller SUSv3 compatible getsubopt().
1183 Most people will answer Y.
1189 config UCLIBC_HAS_REGEX
1190 bool "Regular Expression Support"
1193 POSIX regular expression code is really big -- 53k all by itself.
1194 If you don't use regular expressions, turn this off and save space.
1195 Of course, if you only statically link, leave this on, since it will
1196 only be included in your apps if you use regular expressions.
1198 config UCLIBC_HAS_REGEX_OLD
1199 bool "Use the older (stable) regular expression code"
1200 depends on UCLIBC_HAS_REGEX
1203 There are two versions of regex. The older (stable) version has
1204 been in uClibc for quite a long time but hasn't seen too many
1205 updates. It also has some known issues when dealing with uncommon
1206 corner cases and multibyte/unicode strings. However, it is quite
1207 a bit smaller than the newer version.
1209 If the older version has worked for you and you don't need unicode
1210 support, then stick with the old version (and say Y here).
1211 Otherwise, you should use the new version (and say N here).
1213 config UCLIBC_HAS_FNMATCH
1214 bool "fnmatch Support"
1219 config UCLIBC_HAS_FNMATCH_OLD
1220 bool "Use the older (stable) fnmatch code"
1221 depends on UCLIBC_HAS_FNMATCH
1224 There are two versions of fnmatch. The older (stable) version has
1225 been in uClibc for quite a long time but hasn't seen too many
1226 updates. It also has some known issues when dealing with uncommon
1227 corner cases and multibyte/unicode strings. However, it is quite
1228 a bit smaller than the newer version.
1230 If the older version has worked for you and you don't need unicode
1231 support, then stick with the old version (and say Y here).
1232 Otherwise, you should use the new version (and say N here).
1234 config UCLIBC_HAS_WORDEXP
1235 bool "Support the wordexp() interface"
1236 depends on UCLIBC_HAS_GLOB
1239 The SuSv3 wordexp() interface performs word expansions per the Shell
1240 and Utilities volume of IEEE Std 1003.1-2001, Section 2.6. It is
1241 intended for use by applications that want to implement all of the
1242 standard Bourne shell expansions on input data.
1244 This interface is rarely used, and very large. Unless you have a
1245 pressing need for wordexp(), you should probably answer N.
1247 config UCLIBC_HAS_FTW
1248 bool "Support the ftw() and nftw() interfaces"
1251 The SuSv3 ftw() and nftw() interfaces are used to recursively descend
1252 directory paths while repeatedly calling a function.
1254 This interface is rarely used, and adds around 4.5k. Unless you have
1255 a pressing need for ftw() or nftw(), you should probably answer N.
1257 config UCLIBC_HAS_GLOB
1258 bool "Support the glob() interface"
1259 depends on UCLIBC_HAS_FNMATCH
1263 The glob interface is somewhat large (weighing in at about 2,5k). It
1264 is used fairly often, but is an option since people wanting to go for
1265 absolute minimum size may wish to omit it.
1267 Most people will answer Y.
1269 config UCLIBC_HAS_GNU_GLOB
1270 bool "Support gnu glob() interface"
1271 depends on UCLIBC_HAS_GLOB
1274 The gnu glob interface is somewhat larger (weighing in at about 4,2k) than
1275 it's SuSv3 counterpart (and is out of date). It is an old copy from glibc and
1276 does not support all the GNU specific options.
1278 Answer Y if you want to include full gnu glob() instead of the smaller SUSv3
1281 Most people will answer N.
1288 menu "Library Installation Options"
1290 config SHARED_LIB_LOADER_PREFIX
1291 string "Shared library loader path"
1292 depends on HAVE_SHARED
1293 default "$(RUNTIME_PREFIX)lib"
1295 When using shared libraries, this path is the location where the
1296 shared library will be invoked. This value will be compiled into
1297 every binary compiled with uClibc.
1299 For a typical target system this should be set to "/lib", such that
1300 'make install' will install /lib/ld-uClibc.so.0.
1303 If you do not have a shared library loader with the correct name
1304 sitting in the directory this points to, your binaries will not
1307 config RUNTIME_PREFIX
1308 string "uClibc runtime library directory"
1309 default "/usr/$(TARGET_ARCH)-linux-uclibc/"
1311 RUNTIME_PREFIX is the directory into which the uClibc runtime
1312 libraries will be installed. The result will look something
1315 lib/ <contains all runtime libraries>
1316 usr/bin/ldd <the ldd utility program>
1317 sbin/ldconfig <the ldconfig utility program>
1318 This value is used by the 'make install' Makefile target. Since this
1319 directory is compiled into the shared library loader, you will need to
1320 recompile uClibc if you change this value...
1322 For a typical target system this should be set to "/", such that
1323 'make install' will install /lib/libuClibc-<VERSION>.so
1326 string "uClibc development environment directory"
1327 default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
1329 DEVEL_PREFIX is the directory into which the uClibc development
1330 environment will be installed. The result will look something
1333 lib/ <contains static libs>
1334 include/ <Where all the header files go>
1335 This value is used by the 'make install' Makefile target when
1336 installing a uClibc development environment.
1338 For a typical target system this should be set to "/usr", such that
1339 'make install' will install /usr/include/<header files>.
1344 menu "Security options"
1346 config UCLIBC_BUILD_PIE
1347 bool "Build utilities as ET_DYN/PIE executables"
1348 depends on HAVE_SHARED
1349 depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc
1350 select FORCE_SHAREABLE_TEXT_SEGMENTS
1353 If you answer Y here, ldd and iconv are built as ET_DYN/PIE executables.
1354 It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later.
1355 More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> .
1356 WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so all
1357 libraries have to be built with -fPIC or -fpic, and all assembler
1358 functions must be written as position independent code (PIC).
1360 config UCLIBC_HAS_ARC4RANDOM
1361 bool "Include the arc4random() function"
1364 Answer Y to support the OpenBSD-like arc4random() function. This
1365 function picks a random number between 0 and N, and will always return
1366 something even if the random driver is dead. If urandom fails then
1367 gettimeofday(2) will be used as the random seed. This function is
1368 designed to be more dependable than invoking /dev/urandom directly.
1369 OpenSSL and OpenNTPD currently support this function.
1371 Most people will answer N.
1377 config UCLIBC_HAS_SSP
1378 bool "Support for propolice smashing stack protector"
1379 depends on !HAVE_NO_SSP
1382 Add propolice smashing stack protector to the library.
1383 This requires GCC 4.1, supporting the -fstack-protector[-all]
1384 options. GCC does not have to provide libssp, the needed
1385 functions are added to ldso/libc instead.
1386 Most people will answer N.
1388 config UCLIBC_HAS_SSP_COMPAT
1389 bool "Support for gcc-3.x propolice smashing stack protector"
1390 depends on UCLIBC_HAS_SSP
1393 Add gcc-3.x propolice smashing stack protector to the library.
1394 This requires a patched version of GCC, supporting the
1395 -fstack-protector[-all] options, with the __guard and
1396 __stack_smash_handler functions removed from libgcc.
1397 These functions are added to ldso/libc instead.
1398 More information at:
1399 <http://www.research.ibm.com/trl/projects/security/ssp/>
1400 Most people will answer N.
1402 config SSP_QUICK_CANARY
1403 bool "Use simple guard values without accessing /dev/urandom"
1404 depends on UCLIBC_HAS_SSP
1407 Use gettimeofday(2) to define the __guard without accessing
1409 WARNING: This makes smashing stack protector vulnerable to timing
1411 Most people will answer N.
1414 prompt "Propolice protection blocking signal"
1415 depends on UCLIBC_HAS_SSP
1416 default PROPOLICE_BLOCK_ABRT if ! DODEBUG
1417 default PROPOLICE_BLOCK_SEGV if DODEBUG
1419 "abort" use SIGABRT to block offending programs.
1420 This is the default implementation.
1422 "segfault" use SIGSEGV to block offending programs.
1423 Use this for debugging.
1425 If unsure, answer "abort".
1427 config PROPOLICE_BLOCK_ABRT
1430 config PROPOLICE_BLOCK_SEGV
1435 config UCLIBC_BUILD_SSP
1436 bool "Build uClibc with propolice protection"
1437 depends on UCLIBC_HAS_SSP
1440 Build all libraries and executables with propolice protection enabled.
1442 config UCLIBC_BUILD_RELRO
1443 bool "Build uClibc with RELRO"
1444 depends on HAVE_SHARED
1447 Build all libraries and executables with -z relro.
1449 config UCLIBC_BUILD_NOW
1450 bool "Build uClibc with NOW"
1451 depends on HAVE_SHARED
1454 Build all libraries and executables with -z now.
1456 config UCLIBC_BUILD_NOEXECSTACK
1457 bool "Build uClibc with noexecstack marking"
1460 Mark all assembler files as noexecstack. This will result in marking
1461 all libraries and executables built against uClibc not requiring
1466 menu "uClibc development/debugging options"
1468 config CROSS_COMPILER_PREFIX
1469 string "Cross-compiling toolchain prefix"
1472 The prefix used to execute your cross-compiling toolchain. For
1473 example, if you run 'arm-linux-uclibc-gcc' to compile something,
1474 then enter 'arm-linux-uclibc-' here.
1476 config UCLIBC_EXTRA_CFLAGS
1477 string "Enter any extra CFLAGS to use to build uClibc"
1480 Add any additional CFLAGS to be used to build uClibc.
1483 bool "Build uClibc with debugging symbols"
1485 select EXTRA_WARNINGS
1487 Say Y here if you wish to compile uClibc with debugging symbols.
1488 This will allow you to use a debugger to examine uClibc internals
1489 while applications are running. This increases the size of the
1490 library considerably and should only be used when doing development.
1491 If you are doing development and want to debug uClibc, answer Y.
1493 Otherwise, answer N.
1496 bool "Build pthread with debugging output"
1497 depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
1500 Enable debug output in libpthread. This is only useful when doing
1501 development in libpthread itself.
1503 Otherwise, answer N.
1506 bool "Strip libraries and executables"
1510 Say Y here if you do wish to strip all uClibc libraries and
1511 executables. No stripping increases the size of the binaries
1512 considerably, but makes it possible to debug uClibc libraries.
1513 Most people will answer Y.
1516 bool "Build uClibc with run-time assertion testing"
1519 Say Y here to include runtime assertion tests.
1520 This enables runtime assertion testing in some code, which can
1521 increase the size of the library and incur runtime overhead.
1522 If you say N, then this testing will be disabled.
1524 config SUPPORT_LD_DEBUG
1525 bool "Build the shared library loader with debugging support"
1526 depends on HAVE_SHARED
1529 Answer Y here to enable all the extra code needed to debug the uClibc
1530 native shared library loader. The level of debugging noise that is
1531 generated depends on the LD_DEBUG environment variable... Just set
1532 LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to
1533 debug your application. Diagnostic messages will then be printed to
1536 For now these debugging tokens are available:
1537 detail provide more information for some options
1538 move display copy processing
1539 symbols display symbol table processing
1540 reloc display relocation processing; detail shows the relocation patch
1541 nofixups never fixes up jump relocations
1542 bindings displays the resolve processing (function calls); detail shows the relocation patch
1543 all Enable everything!
1545 The additional environment variable:
1546 LD_DEBUG_OUTPUT=file
1547 redirects the diagnostics to an output file created using
1548 the specified name and the process id as a suffix.
1550 An excellent start is simply:
1551 $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
1552 or to log everything to a file named 'logfile', try this
1553 $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
1555 If you are doing development and want to debug uClibc's shared library
1556 loader, answer Y. Mere mortals answer N.
1558 config SUPPORT_LD_DEBUG_EARLY
1559 bool "Build the shared library loader with early debugging support"
1560 depends on HAVE_SHARED
1563 Answer Y here to if you find the uClibc shared library loader is
1564 crashing or otherwise not working very early on. This is typical
1565 only when starting a new port when you haven't figured out how to
1566 properly get the values for argc, argv, environ, etc. This method
1567 allows a degree of visibility into the very early shared library
1568 loader initialization process. If you are doing development and want
1569 to debug the uClibc shared library loader early initialization,
1570 answer Y. Mere mortals answer N.
1572 config UCLIBC_MALLOC_DEBUGGING
1573 bool "Build malloc with debugging support"
1574 depends MALLOC || MALLOC_STANDARD
1577 Answer Y here to compile extra debugging support code into malloc.
1578 Malloc debugging output may then be enabled at runtime using the
1579 MALLOC_DEBUG environment variable.
1581 The value of MALLOC_DEBUG should be an integer, which is interpreted as
1582 a bitmask with the following bits:
1583 1 - do extra consistency checking
1584 2 - output messages for malloc/free calls and OS allocation calls
1585 4 - output messages for the `MMB' layer
1586 8 - output messages for internal malloc heap manipulation calls
1588 Because this increases the size of malloc appreciably (due to strings
1589 etc), you should say N unless you need to debug a malloc problem.
1592 string "Compiler Warnings"
1595 Set this to the set of gcc warnings you wish to see while compiling.
1597 config EXTRA_WARNINGS
1598 bool "Enable extra annoying warnings"
1601 If you wish to build with extra warnings enabled, say Y here.
1604 bool "Compile all sources at once into an object"
1607 Set this to compile all sources at once into an object (IMA).
1609 config UCLIBC_MJN3_ONLY
1610 bool "Manuel's hidden warnings"
1613 Answer Y here to see all Manuel's personal notes, warnings, and todos.
1615 Most people will answer N.