OSDN Git Service

remove wrong default for choice
[uclinux-h8/uClibc.git] / extra / Configs / Config.in
1 #
2 # For a description of the syntax of this configuration file,
3 # see extra/config/Kconfig-language.txt
4 #
5
6 mainmenu "uClibc C Library Configuration"
7
8 config DESIRED_TARGET_ARCH
9         string
10         option env="ARCH"
11
12 choice
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"
39         help
40           The architecture of your target.
41
42 config TARGET_alpha
43         bool "alpha"
44
45 config TARGET_arm
46         bool "arm"
47
48 config TARGET_avr32
49         bool "avr32"
50
51 config TARGET_bfin
52         bool "bfin"
53
54 config TARGET_cris
55         bool "cris"
56
57 config TARGET_e1
58         bool "e1 (BROKEN)"
59
60 config TARGET_frv
61         bool "frv (BROKEN)"
62
63 config TARGET_h8300
64         bool "h8300 (BROKEN)"
65
66 config TARGET_hppa
67         bool "hppa"
68
69 config TARGET_i386
70         bool "i386"
71
72 config TARGET_i960
73         bool "i960 (BROKEN)"
74
75 config TARGET_ia64
76         bool "ia64"
77
78 config TARGET_m68k
79         bool "m68k"
80
81 config TARGET_microblaze
82         bool "microblaze (BROKEN)"
83
84 config TARGET_mips
85         bool "mips"
86
87 config TARGET_nios
88         bool "nios"
89
90 config TARGET_nios2
91         bool "nios2"
92
93 config TARGET_powerpc
94         bool "powerpc"
95
96 config TARGET_sh
97         bool "superh"
98
99 config TARGET_sh64
100         bool "sh64"
101
102 config TARGET_sparc
103         bool "sparc"
104
105 config TARGET_v850
106         bool "v850 (BROKEN)"
107
108 config TARGET_vax
109         bool "vax"
110
111 config TARGET_x86_64
112         bool "x86_64"
113
114 config TARGET_xtensa
115         bool "xtensa"
116
117 endchoice
118
119
120 menu "Target Architecture Features and Options"
121
122 if TARGET_alpha
123 source "extra/Configs/Config.alpha"
124 endif
125
126 if TARGET_arm
127 source "extra/Configs/Config.arm"
128 endif
129
130 if TARGET_avr32
131 source "extra/Configs/Config.avr32"
132 endif
133
134 if TARGET_bfin
135 source "extra/Configs/Config.bfin"
136 endif
137
138 if TARGET_cris
139 source "extra/Configs/Config.cris"
140 endif
141
142 if TARGET_e1
143 source "extra/Configs/Config.e1"
144 endif
145
146 if TARGET_frv
147 source "extra/Configs/Config.frv"
148 endif
149
150 if TARGET_h8300
151 source "extra/Configs/Config.h8300"
152 endif
153
154 if TARGET_hppa
155 source "extra/Configs/Config.hppa"
156 endif
157
158 if TARGET_i386
159 source "extra/Configs/Config.i386"
160 endif
161
162 if TARGET_i960
163 source "extra/Configs/Config.i960"
164 endif
165
166 if TARGET_ia64
167 source "extra/Configs/Config.ia64"
168 endif
169
170 if TARGET_m68k
171 source "extra/Configs/Config.m68k"
172 endif
173
174 if TARGET_nios
175 source "extra/Configs/Config.nios"
176 endif
177
178 if TARGET_nios2
179 source "extra/Configs/Config.nios2"
180 endif
181
182 if TARGET_microblaze
183 source "extra/Configs/Config.microblaze"
184 endif
185
186 if TARGET_mips
187 source "extra/Configs/Config.mips"
188 endif
189
190 if TARGET_powerpc
191 source "extra/Configs/Config.powerpc"
192 endif
193
194 if TARGET_sh
195 source "extra/Configs/Config.sh"
196 endif
197
198 if TARGET_sh64
199 source "extra/Configs/Config.sh64"
200 endif
201
202 if TARGET_sparc
203 source "extra/Configs/Config.sparc"
204 endif
205
206 if TARGET_v850
207 source "extra/Configs/Config.v850"
208 endif
209
210 if TARGET_vax
211 source "extra/Configs/Config.vax"
212 endif
213
214 if TARGET_x86_64
215 source "extra/Configs/Config.x86_64"
216 endif
217
218 if TARGET_xtensa
219 source "extra/Configs/Config.xtensa"
220 endif
221
222 config TARGET_SUBARCH
223         string
224         default "e500" if CONFIG_E500
225         default "classic" if CONFIG_CLASSIC
226         default "sh4" if CONFIG_SH4
227         default ""
228
229 source "extra/Configs/Config.in.arch"
230
231 endmenu
232
233 menu "General Library Settings"
234
235 config HAVE_NO_PIC
236         bool
237         default n
238
239 config DOPIC
240         bool "Generate only Position Independent Code (PIC)"
241         default y
242         depends on !HAVE_NO_PIC
243         help
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.
246
247 config ARCH_HAS_NO_SHARED
248         bool
249         default n
250
251 config ARCH_HAS_NO_LDSO
252         bool
253         select ARCH_HAS_NO_SHARED
254         default n
255
256 config HAVE_SHARED
257         bool "Enable support for shared libraries"
258         depends on !ARCH_HAS_NO_SHARED
259         default y
260         help
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,
263           then answer N.
264
265 config FORCE_SHAREABLE_TEXT_SEGMENTS
266         bool "Only load shared libraries which can share their text segment"
267         depends on HAVE_SHARED
268         default n
269         help
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.
279
280 config LDSO_LDD_SUPPORT
281         bool "Native 'ldd' support"
282         depends on HAVE_SHARED
283         default y
284         help
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.
291
292 config LDSO_CACHE_SUPPORT
293         bool "Enable library loader cache (ld.so.conf)"
294         depends on HAVE_SHARED
295         default y
296         help
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.
301
302 config LDSO_PRELOAD_FILE_SUPPORT
303         bool "Enable library loader preload file (ld.so.preload)"
304         depends on HAVE_SHARED
305         default n
306         help
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
309           the program.
310
311 config LDSO_BASE_FILENAME
312         string "Shared library loader naming prefix"
313         depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
314         default "ld.so"
315         help
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".
322
323           Most people will leave this set to the default of "ld.so".
324
325           WARNING: Changing the default prefix could cause problems with
326                    binutils' ld !
327
328 config UCLIBC_STATIC_LDCONFIG
329         bool "Link ldconfig statically"
330         depends on HAVE_SHARED
331         default y
332         help
333           Enable this option to statically link the ldconfig binary.
334
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.
339
340 config LDSO_RUNPATH
341         bool "Enable ELF RUNPATH tag support"
342         depends on HAVE_SHARED
343         default y
344         help
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.
349
350           Usage of RUNPATH tags is not too common, so disabling this feature
351           should be safe for most people.
352
353 config UCLIBC_CTOR_DTOR
354         bool "Support global constructors and destructors"
355         default y
356         help
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
368           answer N.
369
370 config LDSO_GNU_HASH_SUPPORT
371         bool "Enable GNU hash style support"
372         depends on HAVE_SHARED
373         default n
374         help
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
379           compatible.
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.
383
384           If you want to use this new feature, answer Y
385
386 config HAS_NO_THREADS
387         bool
388         default n
389
390 config UCLIBC_HAS_THREADS
391         bool "POSIX Threading support"
392         depends on !HAS_NO_THREADS
393         default y
394         # linuxthreads and linuxthreads.old need nanosleep()
395         select UCLIBC_HAS_REALTIME
396         help
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.
401
402           If your applications require pthreads, answer Y.
403
404 config UCLIBC_HAS_TLS
405         bool "Thread-Local Storage"
406         depends on UCLIBC_HAS_THREADS_NATIVE
407         default n
408         help
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
412           gcc.
413
414 config PTHREADS_DEBUG_SUPPORT
415         bool "Build pthreads debugging support"
416         default n
417         depends on UCLIBC_HAS_THREADS
418         help
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.
423
424           IMPORTANT NOTE!  Because gdb must dlopen() the libthread_db library,
425           you must compile gdb with uClibc in order for pthread debugging to
426           work properly.
427
428           If you are doing development and want to debug applications using
429           uClibc's pthread library, answer Y.  Otherwise, answer N.
430
431 config LINUXTHREADS_OLD
432         bool "Use the older (stable) version of linuxthreads"
433         default y
434         depends on UCLIBC_HAS_THREADS && !UCLIBC_HAS_THREADS_NATIVE
435         help
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.
439
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).
444
445 config UCLIBC_HAS_THREADS_NATIVE
446         bool "Native POSIX Threading (NPTL) Support"
447         depends on UCLIBC_HAS_THREADS
448         default n
449         select UCLIBC_HAS_TLS
450         help
451           If you want to compile uClibc with NPTL support, then answer Y.
452
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.
458
459           !!!! WARNING !!!! BIG FAT WARNING !!!! REALLY BIG FAT WARNING !!!!
460
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.
466
467 config LINUXTHREADS_NEW
468         def_bool y
469         depends on UCLIBC_HAS_THREADS && !LINUXTHREADS_OLD && !UCLIBC_HAS_THREADS_NATIVE
470
471 config UCLIBC_HAS_SYSLOG
472         bool "Syslog support"
473         default y
474         depends on UCLIBC_HAS_NETWORK_SUPPORT
475         select UCLIBC_HAS_SOCKET
476         help
477           Support sending messages to the system logger.
478           This requires socket-support.
479
480 config UCLIBC_HAS_LFS
481         bool "Large File Support"
482         default y
483         help
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.
488
489 choice
490         prompt "Malloc Implementation"
491         default MALLOC if ! ARCH_USE_MMU
492         default MALLOC_STANDARD if ARCH_USE_MMU
493
494 config MALLOC
495         bool "malloc"
496         help
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
500           memory wastage.
501           This is the default for uClinux MMU-less systems.
502
503 config MALLOC_SIMPLE
504         bool "malloc-simple"
505         help
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.
509
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.
516
517 config MALLOC_STANDARD
518         bool "malloc-standard"
519         depends on ARCH_USE_MMU
520         help
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
526           for uClibc.
527
528           If unsure, answer "malloc-standard".
529
530 endchoice
531
532 config MALLOC_GLIBC_COMPAT
533         bool "Malloc returns live pointer for malloc(0)"
534         default n
535         help
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
540           serious problems.
541
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.
549
550 config UCLIBC_DYNAMIC_ATEXIT
551         bool "Dynamic atexit() Support"
552         default y
553         help
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
561           static executables.
562
563           Unless you use uClibc with C++, you should probably answer N.
564
565 config COMPAT_ATEXIT
566         bool "Old (visible) atexit Support"
567         default n
568         help
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.
571
572 config UCLIBC_SUSV3_LEGACY
573         bool "Enable SuSv3 LEGACY functions"
574         default n
575         #vfork,
576         # h_errno
577         # gethostbyaddr
578         # gethostbyname
579         help
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:
583
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,
589           wcswcs.
590
591           WARNING! ABI incompatibility.
592
593 config UCLIBC_SUSV3_LEGACY_MACROS
594         bool "Enable SuSv3 LEGACY macros"
595         default n
596         help
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.
600
601 config UCLIBC_SUSV4_LEGACY
602         bool "Enable SuSv4 LEGACY or obsolescent functions"
603         default n
604         help
605           Enable this option if you want to have SuSv4 LEGACY functions
606           and macros in the library.
607           Currently applies to:
608
609           - XSI functions:
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.
615
616           - Base functions:
617             asctime, asctime_r, ctime, ctime_r, gets, rand_r,
618             tmpnam, utime.
619
620           WARNING! ABI incompatibility.
621
622 config UCLIBC_HAS_STUBS
623         bool "Provide stubs for unavailable functionality"
624         default n
625         help
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.
629
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.
632
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.
638
639 config UCLIBC_HAS_SHADOW
640         bool "Shadow Password Support"
641         default y
642         help
643           Answer N if you do not need shadow password support.
644           Most people will answer Y.
645
646 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
647         bool "Support for program_invocation_name"
648         default n
649         help
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.
654
655           At startup, these external strings are automatically set
656           up based on the value of ARGV[0].
657
658           If unsure, just answer N.
659
660 config UCLIBC_HAS___PROGNAME
661         bool "Support for __progname"
662         default y
663         depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
664         help
665           Some packages (like openssh) like to peek into internal libc
666           symbols to make their output a bit more user friendly.
667
668           At startup, __progname is automatically set up based on the
669           value of ARGV[0].
670
671           If unsure, just answer N.
672
673 config UCLIBC_HAS_PTY
674         bool "Support for pseudo-terminals"
675         default y
676         help
677           This enables support for pseudo-terminals (see man 4 pts
678           and man 7 pty).
679
680           If unsure, just answer Y.
681
682 config ASSUME_DEVPTS
683         bool "Assume that /dev/pts is a devpts or devfs file system"
684         default y
685         depends on UCLIBC_HAS_PTY
686         help
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.
691
692           Most people should answer Y.
693
694 config UNIX98PTY_ONLY
695         bool "Support only Unix 98 PTYs"
696         default y
697         depends on UCLIBC_HAS_PTY
698         help
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.
703
704           For most current programs, you can generally answer Y.
705
706 if UNIX98PTY_ONLY
707 config UCLIBC_HAS_GETPT
708         bool "Support getpt() (glibc-compat)"
709         default n
710         depends on UCLIBC_HAS_PTY
711         help
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.
716
717           If unsure, just say N.
718 endif
719
720 if !UNIX98PTY_ONLY
721 # Have to use __libc_ptyname{1,2}[] and related bloat
722 config UCLIBC_HAS_GETPT
723         def_bool y
724 endif
725
726 config UCLIBC_HAS_TM_EXTENSIONS
727         bool "Support 'struct tm' timezone extension fields"
728         default y
729         help
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
734           code.
735
736           To strictly follow the SuSv3 standard, leave this disabled.
737           Most people will probably want to answer Y.
738
739 config UCLIBC_HAS_TZ_CACHING
740         bool "Enable caching of the last valid timezone 'TZ' string"
741         default y
742         help
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.
746
747           Most people will answer Y.
748
749 config UCLIBC_HAS_TZ_FILE
750         bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
751         default y
752         help
753           Answer Y to enable the setting of a default timezone for uClibc.
754
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.
758
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.
764
765           Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
766           See
767           http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
768           for details on valid settings of 'TZ'.
769
770           Most people will answer Y.
771
772 config UCLIBC_HAS_TZ_FILE_READ_MANY
773         bool "Repeatedly read the '/etc/TZ' file"
774         depends on UCLIBC_HAS_TZ_FILE
775         default y
776         help
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.
782
783           Most people will answer Y.
784
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
788         default "/etc/TZ"
789         help
790           This is the path to the 'TZ' file.
791
792           Most people will use the default of '/etc/TZ'.
793
794 endmenu
795
796 menu "Advanced Library Settings"
797
798 config UCLIBC_PWD_BUFFER_SIZE
799         int "Buffer size for getpwnam() and friends"
800         default 256
801         range 12 1024
802         help
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
806           parameter.
807
808 config UCLIBC_GRP_BUFFER_SIZE
809         int "Buffer size for getgrnam() and friends"
810         default 256
811         range 12 1024
812         help
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
816           parameter.
817
818 comment "Support various families of functions"
819
820 config UCLIBC_LINUX_MODULE_24
821         bool "Linux kernel module functions"
822         default !(TARGET_bfin)
823         help
824           create_module, query_module
825           are used in linux (prior to 2.6) for loadable kernel modules.
826
827           Say N if you do not use kernel modules, or you only support
828           Linux 2.6+.
829
830 config UCLIBC_LINUX_SPECIFIC
831         bool "Linux specific functions"
832         default y
833         help
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()
841
842 config UCLIBC_HAS_GNU_ERROR
843         bool "Support GNU extensions for error-reporting"
844         default y
845         help
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
850           are not required.
851
852           If unsure, just answer N.
853
854 config UCLIBC_BSD_SPECIFIC
855         bool "BSD specific functions"
856         default y
857         help
858           mincore(), getdomainname(), setdomainname()
859
860           If unsure, say N.
861
862 config UCLIBC_HAS_BSD_ERR
863         bool "BSD err functions"
864         default y
865         help
866           These functions are non-standard BSD extensions.
867           err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx()
868
869           If unsure, say N.
870
871 config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
872         bool "BSD obsolete signal functions"
873         default n
874         help
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.).
880           Affected functions:
881
882           sigset(), sighold(), sigrelse(), sigignore()
883
884           If unsure, say N.
885
886 config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL
887         bool "SYSV obsolete signal functions"
888         default n
889         help
890           Use of sysv_signal() should be avoided; use sigaction(2) instead.
891
892           If unsure, say N.
893
894 config UCLIBC_NTP_LEGACY
895         bool "ntp_*() aliases"
896         default n
897         help
898           Provide legacy aliases for ntp functions:
899           ntp_adjtime(), ntp_gettime()
900
901           It is safe to say N here.
902
903 config UCLIBC_SV4_DEPRECATED
904         bool "Enable SVr4 deprecated functions"
905         default n
906         help
907           These functions are DEPRECATED in System V release 4.
908           Say N unless you desparately need one of the functions below:
909
910           ustat() [use statfs(2) in your code instead]
911
912 config UCLIBC_HAS_REALTIME
913         bool "Realtime-related family of SUSv functions"
914         default y
915         help
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:
919
920           aio.h
921           mqueue.h
922           sched.h
923           semaphore.h
924
925           aio_cancel()
926           aio_error()
927           aio_fsync()
928           aio_read()
929           lio_listio()
930           aio_return()
931           aio_suspend()
932           aio_write()
933           clock_getres(), clock_gettime(), clock_settime()
934           fdatasync()
935           mlockall(), munlockall()
936           mlock(), munlock()
937           mq_close()
938           mq_getattr()
939           mq_notify()
940           mq_open()
941           mq_receive()
942           mq_send()
943           mq_setattr()
944           mq_unlink()
945           nanosleep()
946           sched_getparam()
947           sched_get_priority_max(), sched_get_priority_min()
948           sched_getscheduler()
949           sched_rr_get_interval()
950           sched_setparam()
951           sched_setscheduler()
952           sem_close()
953           sem_destroy()
954           sem_getvalue()
955           sem_init()
956           sem_open()
957           sem_post()
958           sem_trywait(), sem_wait()
959           sem_unlink()
960           sigqueue()
961           sigtimedwait(), sigwaitinfo()
962           timer_create()
963           timer_delete()
964           timer_getoverrun(), timer_gettime(), timer_settime()
965
966 config UCLIBC_HAS_ADVANCED_REALTIME
967         bool "Advanced realtime-related family of SUSv functions"
968         default y
969         depends on UCLIBC_HAS_REALTIME
970         help
971           These functions are part of the Timers option and need not
972           be available on all implementations.
973
974           clock_getcpuclockid()
975           clock_nanosleep()
976           mq_timedreceive()
977           mq_timedsend()
978           posix_fadvise()
979           posix_fallocate()
980           posix_madvise()
981           posix_memalign()
982           posix_mem_offset()
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()
995           posix_spawn()
996           posix_spawnp()
997           posix_typed_mem_get_info()
998           pthread_mutex_timedlock()
999           sem_timedwait()
1000
1001 #config UCLIBC_HAS_TERMIOS
1002 #       bool "termios functions"
1003 #       default y
1004 #       help
1005 #         Get and set terminal attributes, line control, get and set baud
1006 #         rate.
1007 #         termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(),
1008 #         tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(),
1009 #         cfsetispeed(), cfsetospeed(), cfsetspeed()
1010 #
1011 #         If unsure, say Y.
1012
1013 config UCLIBC_HAS_EPOLL
1014         bool "epoll"
1015         default y
1016         help
1017           epoll_create(), epoll_ctl(), epoll_wait() functions.
1018
1019 config UCLIBC_HAS_XATTR
1020         bool "Extended Attributes"
1021         default y
1022         help
1023           Extended Attributes support.
1024
1025           setxattr()
1026           lsetxattr()
1027           fsetxattr()
1028           getxattr()
1029           lgetxattr()
1030           fgetxattr()
1031           listxattr()
1032           llistxattr()
1033           flistxattr()
1034           removexattr()
1035           lremovexattr()
1036           fremovexattr()
1037
1038           Say N unless you need support for extended attributes and the
1039           filesystems do actually support them.
1040
1041 config UCLIBC_HAS_PROFILING
1042         bool "Profiling support"
1043         default y
1044         help
1045           gcc's -finstrument-functions needs these.
1046
1047           Most people can safely answer N.
1048
1049 config UCLIBC_HAS_CRYPT_IMPL
1050         bool "libcrypt support"
1051         default y
1052         help
1053           libcrypt contains crypt(), setkey() and encrypt()
1054
1055 config UCLIBC_HAS_CRYPT_STUB
1056         bool "libcrypt stubs"
1057         default y
1058         depends on !UCLIBC_HAS_CRYPT_IMPL
1059         help
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.
1064
1065 config UCLIBC_HAS_CRYPT
1066         def_bool y
1067         depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
1068 endmenu
1069
1070 menuconfig UCLIBC_HAS_NETWORK_SUPPORT
1071         bool "Networking Support"
1072         default y
1073         help
1074           Say N here if you do not need network support.
1075
1076 if UCLIBC_HAS_NETWORK_SUPPORT
1077 config UCLIBC_HAS_SOCKET
1078         bool "Socket support"
1079         default y
1080         help
1081           If you want to include support for sockets then answer Y.
1082
1083 config UCLIBC_HAS_IPV4
1084         bool "IP version 4 support"
1085         default y
1086         select UCLIBC_HAS_SOCKET
1087         help
1088           If you want to include support for the Internet Protocol
1089           (IP version 4) then answer Y.
1090
1091           Most people will say Y.
1092
1093 config UCLIBC_HAS_IPV6
1094         bool "IP version 6 support"
1095         default n
1096         select UCLIBC_HAS_SOCKET
1097         help
1098           If you want to include support for the next version of the Internet
1099           Protocol (IP version 6) then answer Y.
1100
1101           Most people should answer N.
1102
1103 config UCLIBC_HAS_RPC
1104         bool "Remote Procedure Call (RPC) support"
1105         default n
1106         # RPC+socket-ipvX doesn't currently work.
1107         depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
1108         help
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.
1112
1113           If you need to use NFS then you should answer Y.
1114
1115 config UCLIBC_HAS_FULL_RPC
1116         bool "Full RPC support"
1117         depends on UCLIBC_HAS_RPC
1118         default y if !HAVE_SHARED
1119         help
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.
1123
1124 config UCLIBC_HAS_REENTRANT_RPC
1125         bool "Reentrant RPC support"
1126         depends on UCLIBC_HAS_RPC
1127         default y if !HAVE_SHARED
1128         help
1129           Most packages utilize the normal (non-reentrant) RPC functions, but
1130           some (like exportfs from nfs-utils) need these reentrant versions.
1131
1132           Most people can safely answer N.
1133
1134 config UCLIBC_USE_NETLINK
1135         bool "Use netlink to query interfaces"
1136         default n
1137         depends on UCLIBC_HAS_SOCKET
1138         help
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.
1145
1146           Most people can safely answer N.
1147
1148 config UCLIBC_SUPPORT_AI_ADDRCONFIG
1149         bool "Support the AI_ADDRCONFIG flag"
1150         depends on UCLIBC_USE_NETLINK
1151         default n
1152         help
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.
1157
1158           Most people can safely answer N.
1159
1160 config UCLIBC_HAS_BSD_RES_CLOSE
1161         bool "Support res_close() (bsd-compat)"
1162         default n
1163         help
1164           Answer Y if you desperately want to support BSD compatibility in
1165           the network code.
1166
1167           Most people will say N.
1168
1169 config UCLIBC_HAS_COMPAT_RES_STATE
1170         bool "Use compatible but bloated _res"
1171         default y
1172         help
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.
1178
1179 config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
1180         bool "Use extra compatible but extra bloated _res"
1181         default n
1182         help
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.
1185
1186 config UCLIBC_HAS_RESOLV_STUB
1187         bool "Provide libresolv stub"
1188         default n
1189         help
1190           Provide a dummy resolv library.
1191
1192 endif
1193
1194
1195 menu "String and Stdio Support"
1196
1197 config UCLIBC_HAS_STRING_GENERIC_OPT
1198         bool "Use faster (but larger) generic string functions"
1199         default y
1200         help
1201           Answer Y to use the (tweaked) glibc generic string functions.
1202
1203           In general, they are faster (but 3-5K larger) than the base
1204           uClibc string functions which are optimized solely for size.
1205
1206           Many people will answer Y.
1207
1208 config UCLIBC_HAS_STRING_ARCH_OPT
1209         bool "Use arch-specific assembly string functions (where available)"
1210         default y
1211         help
1212           Answer Y to use any archtecture-specific assembly language string
1213           functions available for this target plaform.
1214
1215           Note that assembly implementations are not available for all string
1216           functions, so some generic (written in C) string functions may
1217           still be used.
1218
1219           These are small and fast, the only reason _not_ to say Y here is
1220           for debugging purposes.
1221
1222 config UCLIBC_HAS_CTYPE_TABLES
1223         bool "Use Table Versions Of 'ctype.h' Functions."
1224         default y
1225         help
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.
1229
1230           Most people will answer Y.
1231
1232 config UCLIBC_HAS_CTYPE_SIGNED
1233         bool "Support Signed Characters In 'ctype.h' Functions."
1234         depends on UCLIBC_HAS_CTYPE_TABLES
1235         default y
1236         help
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'.
1242
1243           Most people will answer Y.
1244
1245 choice
1246         prompt "ctype argument checking"
1247         depends on UCLIBC_HAS_CTYPE_TABLES
1248         default UCLIBC_HAS_CTYPE_UNSAFE
1249         help
1250           Please select the invalid arg behavior you want for the 'ctype'
1251           functions.
1252
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.
1256
1257           NOTE: This only affects the 'ctype' _functions_.  It does not affect
1258           the macro implementations.
1259
1260 config UCLIBC_HAS_CTYPE_UNSAFE
1261         bool "Do not check -- unsafe"
1262
1263 config UCLIBC_HAS_CTYPE_CHECKED
1264         bool "Detect and handle appropriately"
1265
1266 config UCLIBC_HAS_CTYPE_ENFORCED
1267         bool "Issue a diagnostic and abort()"
1268
1269 endchoice
1270
1271
1272 config UCLIBC_HAS_WCHAR
1273         bool "Wide Character Support"
1274         default n
1275         help
1276           Answer Y to enable wide character support.  This will make uClibc
1277           much larger.  It is also currently required for locale support.
1278
1279           Most people will answer N.
1280
1281 config UCLIBC_HAS_LOCALE
1282         bool "Locale Support"
1283         select UCLIBC_HAS_WCHAR
1284         select UCLIBC_HAS_CTYPE_TABLES
1285         default n
1286         help
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.
1290
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).
1295
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.
1299
1300           Answer Y to enable locale support.  Most people will answer N.
1301
1302 choice
1303
1304 prompt "Locale data"
1305         depends on UCLIBC_HAS_LOCALE
1306         default UCLIBC_BUILD_ALL_LOCALE
1307
1308 config UCLIBC_BUILD_ALL_LOCALE
1309         bool "All locales"
1310         depends on UCLIBC_HAS_LOCALE
1311         help
1312           This builds all the locales that are available on your
1313           host-box.
1314
1315 config UCLIBC_BUILD_MINIMAL_LOCALE
1316         bool "Only selected locales"
1317         depends on UCLIBC_HAS_LOCALE
1318         help
1319           If you do not need all locales that are available on your
1320           host-box, then set this to 'Y'.
1321
1322 config UCLIBC_PREGENERATED_LOCALE_DATA
1323         bool "Use Pre-generated Locale Data"
1324         depends on UCLIBC_HAS_LOCALE
1325         help
1326           Use pre-built locale data.
1327
1328           Note that these pregenerated locales are sensitive to your
1329           target architecture (endianess, bitcount).
1330
1331           Saying N here is highly recommended.
1332
1333 endchoice
1334
1335 config UCLIBC_BUILD_MINIMAL_LOCALES
1336         string "locales to use"
1337         depends on UCLIBC_BUILD_MINIMAL_LOCALE
1338         default "en_US"
1339         help
1340           Space separated list of locales to use.
1341
1342           E.g.:
1343               en_US en_GB de_AT
1344           default:
1345               en_US
1346
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
1350         default n
1351         help
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/
1357           directory.
1358
1359           Note that the use of pregenerated locale data is discouraged.
1360
1361 config UCLIBC_HAS_XLOCALE
1362         bool "Extended Locale Support (experimental/incomplete)"
1363         depends on UCLIBC_HAS_LOCALE
1364         default n
1365         help
1366           Answer Y to enable extended locale support similar to that provided
1367           by glibc.  This is primarily intended to support libstd++
1368           functionality.
1369           However, it also allows thread-specific locale selection via
1370           uselocale().
1371
1372           Most people will answer N.
1373
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
1378         default n
1379         help
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.
1384
1385           Most people will answer N.
1386
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
1391         default n
1392         help
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()
1396           functions.
1397
1398           Most people will answer N.
1399
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
1403         default y
1404         help
1405           Answer Y to make digit grouping optional when the \"'\" flag is
1406           specified.
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.
1410
1411           Most people will answer N.
1412
1413 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
1414         bool "Support glibc's register_printf_function() (glibc-compat)"
1415         depends on !USE_OLD_VFPRINTF
1416         default n
1417         help
1418           Answer Y to support glibc's register_printf_function() to allow an
1419           application to add its own printf conversion specifiers.
1420
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.
1425
1426           Most people will answer N.
1427
1428 config USE_OLD_VFPRINTF
1429         bool "Use the old vfprintf implementation"
1430         depends on !UCLIBC_HAS_WCHAR
1431         default n
1432         help
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.
1437
1438           Most people will answer N.
1439
1440 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
1441         int "Maximum number of positional args.  Either 0 or >= 9."
1442         depends on !USE_OLD_VFPRINTF
1443         default 9
1444         help
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.
1450
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.
1454
1455           Most people will answer 9.
1456
1457
1458 config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
1459         bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
1460         default n
1461         help
1462           NOTE!!!  Currently Not Implemented!!! Just A Place Holder!!  NOTE!!!
1463           NOTE!!!  Conflicts with an ANSI/ISO C99 scanf flag!!         NOTE!!!
1464
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.
1468
1469           Most people will answer N.
1470
1471 choice
1472         prompt "Stdio buffer size"
1473         default UCLIBC_HAS_STDIO_BUFSIZ_4096
1474         help
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.
1478
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.
1482
1483 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
1484         bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
1485         depends on !UCLIBC_HAS_WCHAR
1486
1487 config UCLIBC_HAS_STDIO_BUFSIZ_256
1488         bool "256 (minimum ANSI/ISO C99 value)"
1489
1490 config UCLIBC_HAS_STDIO_BUFSIZ_512
1491         bool "512"
1492
1493 config UCLIBC_HAS_STDIO_BUFSIZ_1024
1494         bool "1024"
1495
1496 config UCLIBC_HAS_STDIO_BUFSIZ_2048
1497         bool "2048"
1498
1499 config UCLIBC_HAS_STDIO_BUFSIZ_4096
1500         bool "4096"
1501
1502 config UCLIBC_HAS_STDIO_BUFSIZ_8192
1503         bool "8192"
1504
1505 # If you add more choices, you will need to update uClibc_stdio.h.
1506
1507 endchoice
1508
1509 choice
1510         prompt "Stdio builtin buffer size (uClibc-specific)"
1511         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1512         default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1513         help
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.
1517
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.
1520
1521           Most people will answer None.
1522
1523 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
1524         bool "None"
1525
1526 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
1527         bool "4"
1528
1529 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1530         bool "8"
1531
1532 # If you add more choices, you will need to update uClibc_stdio.h.
1533
1534 endchoice
1535
1536 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1537         bool "Attempt to shutdown stdio subsystem when abort() is called."
1538         default n
1539         help
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".
1544
1545           Most people will answer N.
1546
1547 config UCLIBC_HAS_STDIO_GETC_MACRO
1548         bool "Provide a macro version of getc()"
1549         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1550         default y
1551         help
1552           Provide a macro version of getc().
1553
1554           Most people will answer Y.
1555
1556 config UCLIBC_HAS_STDIO_PUTC_MACRO
1557         bool "Provide a macro version of putc()"
1558         depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1559         default y
1560         help
1561           Provide a macro version of putc().
1562
1563           Most people will answer Y.
1564
1565 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1566         bool "Support auto-r/w transition"
1567         default y
1568         help
1569           Answer Y to enable the stdio subsystem to automaticly transition
1570           between reading and writing.  This relaxes the ANSI/ISO C99
1571           requirement:
1572
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.
1581
1582           Most people will answer Y.
1583
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
1587         default n
1588         help
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.
1592
1593           Most people will answer N.
1594
1595 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1596         bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1597         default n
1598         help
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.
1602
1603           Most people will answer N.
1604
1605 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1606         bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1607         default n
1608         help
1609           Answer Y to support the glibc 'custom stream' extension functions
1610           fmemopen(), open_memstream(), and fopencookie().
1611
1612           NOTE: There are some minor differences regarding seeking behavior.
1613
1614           Most people will answer N.
1615
1616 config UCLIBC_HAS_PRINTF_M_SPEC
1617         bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1618         default n
1619         help
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
1623           'errno'.
1624
1625           Most people will answer N.
1626
1627 config UCLIBC_HAS_ERRNO_MESSAGES
1628         bool "Include the errno message text in the library"
1629         default y
1630         help
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>'.
1634
1635           Most people will answer Y.
1636
1637 config UCLIBC_HAS_SYS_ERRLIST
1638         bool "Support sys_errlist[] (obsolete-compat)"
1639         depends on UCLIBC_HAS_ERRNO_MESSAGES
1640         default n
1641         help
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.
1645
1646           WARNING!  In the future, support for sys_errlist[] may be unavailable
1647                     in at least some configurations.  In fact, it may be removed
1648                     altogether.
1649
1650           Most people will answer N.
1651
1652           Application writers: use the strerror(3) function.
1653
1654 config UCLIBC_HAS_SIGNUM_MESSAGES
1655         bool "Include the signum message text in the library"
1656         default y
1657         help
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>'.
1661
1662           Most people will answer Y.
1663
1664 config UCLIBC_HAS_SYS_SIGLIST
1665         bool "Support sys_siglist[] (bsd-compat)"
1666         depends on UCLIBC_HAS_SIGNUM_MESSAGES
1667         default n
1668         help
1669           Answer Y if you want to support sys_siglist[].
1670
1671           WARNING!  In the future, support for sys_siglist[] may be unavailable
1672                     in at least some configurations.  In fact, it may be removed
1673                     altogether.
1674
1675           Most people will answer N.
1676
1677 config UCLIBC_HAS_GETTEXT_AWARENESS
1678         bool "Include gettext awareness"
1679         depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
1680         default n
1681         help
1682           NOTE!!!  Not yet integrated with strerror and strsignal.  NOTE!!!
1683
1684           Answer Y if you want to include weak stub gettext support and
1685           make the *strerror*() and strsignal() functions gettext-aware.
1686
1687           Currently, to get functional gettext functionality you will need
1688           to use gnu gettext.
1689
1690           Most people will answer N.
1691
1692 config UCLIBC_HAS_GNU_GETOPT
1693         bool "Support gnu getopt"
1694         default y
1695         help
1696           Answer Y if you want to include full gnu getopt() instead of a
1697           (much smaller) SUSv3 compatible getopt().
1698
1699           Most people will answer Y.
1700
1701 config UCLIBC_HAS_STDIO_FUTEXES
1702         bool "Use futexes for multithreaded I/O locking"
1703         default n
1704         depends on UCLIBC_HAS_THREADS_NATIVE
1705         help
1706           If you want to compile uClibc to use futexes for low-level
1707           I/O locking, answer Y.  Otherwise, answer N.
1708
1709 config UCLIBC_HAS_GETOPT_LONG
1710         bool "Support getopt_long/getopt_long_only"
1711         depends on !UCLIBC_HAS_GNU_GETOPT
1712         default y
1713         help
1714           Answer Y if you want to include getopt_long[_only() used by many
1715           apps, even busybox.
1716
1717           Most people will answer Y.
1718
1719 config UCLIBC_HAS_GNU_GETSUBOPT
1720         bool "Support glibc getsubopt"
1721         default y
1722         help
1723           Answer Y if you want to include glibc getsubopt() instead of a
1724           smaller SUSv3 compatible getsubopt().
1725
1726           Most people will answer Y.
1727 endmenu
1728
1729
1730 menu "Big and Tall"
1731
1732 config UCLIBC_HAS_REGEX
1733         bool "Regular Expression Support"
1734         default y
1735         help
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.
1740
1741 config UCLIBC_HAS_REGEX_OLD
1742         bool "Use the older (stable) regular expression code"
1743         depends on UCLIBC_HAS_REGEX
1744         default y
1745         help
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.
1751
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).
1755
1756 config UCLIBC_HAS_FNMATCH
1757         bool "fnmatch Support"
1758         default y
1759         help
1760           POSIX fnmatch.
1761
1762 config UCLIBC_HAS_FNMATCH_OLD
1763         bool "Use the older (stable) fnmatch code"
1764         depends on UCLIBC_HAS_FNMATCH
1765         default y
1766         help
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.
1772
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).
1776
1777 config UCLIBC_HAS_WORDEXP
1778         bool "Support the wordexp() interface"
1779         depends on UCLIBC_HAS_GLOB
1780         default n
1781         help
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.
1786
1787           This interface is rarely used, and very large.  Unless you have a
1788           pressing need for wordexp(), you should probably answer N.
1789
1790 config UCLIBC_HAS_NFTW
1791         bool "Support the nftw() interface"
1792         default n
1793         help
1794           The SuSv3 nftw() interface is used to recursively descend
1795           directory paths while repeatedly calling a function.
1796
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.
1799
1800 config UCLIBC_HAS_FTW
1801         bool "Support the ftw() interface"
1802         default n
1803         depends on UCLIBC_SUSV4_LEGACY
1804         help
1805           The SuSv3 ftw() interface is used to recursively descend
1806           directory paths while repeatedly calling a function.
1807
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.
1810
1811
1812 config UCLIBC_HAS_GLOB
1813         bool "Support the glob() interface"
1814         depends on UCLIBC_HAS_FNMATCH
1815         default y
1816         help
1817
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.
1821
1822           Most people will answer Y.
1823
1824 config UCLIBC_HAS_GNU_GLOB
1825         bool "Support gnu glob() interface"
1826         depends on UCLIBC_HAS_GLOB
1827         default n
1828         help
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.
1832
1833           Answer Y if you want to include full gnu glob() instead of the smaller
1834           SUSv3 compatible glob().
1835
1836           Most people will answer N.
1837
1838 endmenu
1839
1840
1841
1842
1843 menu "Library Installation Options"
1844
1845 config SHARED_LIB_LOADER_PREFIX
1846         string "Shared library loader path"
1847         depends on HAVE_SHARED
1848         default "$(RUNTIME_PREFIX)lib"
1849         help
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.
1853
1854           For a typical target system this should be set to "/lib", such that
1855           'make install' will install /lib/ld-uClibc.so.0.
1856
1857           BIG FAT WARNING:
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
1860           run.
1861
1862 config RUNTIME_PREFIX
1863         string "uClibc runtime library directory"
1864         default "/usr/$(TARGET_ARCH)-linux-uclibc/"
1865         help
1866           RUNTIME_PREFIX is the directory into which the uClibc runtime
1867           libraries will be installed.   The result will look something
1868           like the following:
1869               $(RUNTIME_PREFIX)/
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...
1876
1877           For a typical target system this should be set to "/", such that
1878           'make install' will install /lib/libuClibc-<VERSION>.so
1879
1880 config DEVEL_PREFIX
1881         string "uClibc development environment directory"
1882         default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
1883         help
1884           DEVEL_PREFIX is the directory into which the uClibc development
1885           environment will be installed.   The result will look something
1886           like the following:
1887               $(DEVEL_PREFIX)/
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.
1892
1893           For a typical target system this should be set to "/usr", such that
1894           'make install' will install /usr/include/<header files>.
1895
1896 config HARDWIRED_ABSPATH
1897         bool "Hardwire absolute paths into linker scripts"
1898         default y
1899         help
1900           This prepends absolute paths to the libraries mentioned in linker
1901           scripts such as libc.so.
1902
1903           This is a build time optimization.  It has no impact on dynamic
1904           linking at runtime, which doesn't use linker scripts.
1905
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).
1910
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.
1915
1916 endmenu
1917
1918
1919 menu "Security options"
1920
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
1926         default n
1927         help
1928           If you answer Y here, ldd and iconv are built as ET_DYN/PIE
1929           executables.
1930
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/> .
1933
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
1937                    code (PIC).
1938
1939 config UCLIBC_HAS_ARC4RANDOM
1940         bool "Include the arc4random() function"
1941         default n
1942         help
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.
1949
1950           Most people will answer N.
1951
1952 config HAVE_NO_SSP
1953         bool
1954         default n
1955
1956 config UCLIBC_HAS_SSP
1957         bool "Support for GCC stack smashing protector"
1958         depends on !HAVE_NO_SSP
1959         default n
1960         help
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.
1964
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
1968           for details.
1969
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
1973           code to catch them.
1974
1975           Most people will answer N.
1976
1977 config UCLIBC_HAS_SSP_COMPAT
1978         bool "Support for gcc-3.x propolice smashing stack protector"
1979         depends on UCLIBC_HAS_SSP
1980         default n
1981         help
1982           Add gcc-3.x propolice smashing stack protector to the library.
1983
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.
1988
1989           More information at:
1990           <http://www.research.ibm.com/trl/projects/security/ssp/>
1991
1992           Most people will answer N.
1993
1994 config SSP_QUICK_CANARY
1995         bool "Use simple guard values without accessing /dev/urandom"
1996         depends on UCLIBC_HAS_SSP
1997         default n
1998         help
1999           Use gettimeofday(2) to define the __guard without accessing
2000           /dev/urandom.
2001           WARNING: This makes smashing stack protector vulnerable to timing
2002                 attacks.
2003           Most people will answer N.
2004
2005 choice
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
2010         help
2011           "abort" use SIGABRT to block offending programs.
2012           This is the default implementation.
2013
2014           "segfault" use SIGSEGV to block offending programs.
2015           Use this for debugging.
2016
2017           If unsure, answer "abort".
2018
2019 config PROPOLICE_BLOCK_ABRT
2020         bool "abort"
2021
2022 config PROPOLICE_BLOCK_SEGV
2023         bool "segfault"
2024
2025 endchoice
2026
2027 config UCLIBC_BUILD_SSP
2028         bool "Build uClibc with -fstack-protector"
2029         depends on UCLIBC_HAS_SSP
2030         default n
2031         help
2032           Build all uClibc libraries and executables with -fstack-protector,
2033           adding extra stack overflow checking to most uClibc functions.
2034
2035 config UCLIBC_BUILD_RELRO
2036         bool "Build uClibc with linker option -z RELRO"
2037         depends on HAVE_SHARED
2038         default y
2039         help
2040           Build all libraries and executables with "ld -z relro".
2041
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.)
2046
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
2050           save it.
2051
2052           This is explained in more depth at
2053           http://www.airs.com/blog/archives/189
2054
2055           Nobody is likely to care whether you say Y or N here.
2056
2057 config UCLIBC_BUILD_NOW
2058         bool "Build uClibc with linker option -z NOW"
2059         depends on HAVE_SHARED
2060         default n
2061         help
2062           Build all libraries and executables with "ld -z now".
2063
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).
2072
2073           Most people can't tell the difference between selecting Y or N here.
2074
2075 config UCLIBC_BUILD_NOEXECSTACK
2076         bool "Build uClibc with noexecstack marking"
2077         default y
2078         help
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.)
2083
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
2087
2088           It only actually provides any security when combined with address
2089           space randomization, explained here: http://lwn.net/Articles/121845/
2090
2091           Address space randomization is on by default in current linux
2092           kernels (although it can be disabled using the option
2093           CONFIG_COMPAT_BRK).
2094
2095           You should probably say Y.
2096
2097 endmenu
2098
2099 menu "uClibc development/debugging options"
2100
2101 config CROSS_COMPILER_PREFIX
2102         string "Cross-compiling toolchain prefix"
2103         default ""
2104         help
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.
2108
2109 config UCLIBC_EXTRA_CFLAGS
2110         string "Enter any extra CFLAGS to use to build uClibc"
2111         default ""
2112         help
2113           Add any additional CFLAGS to be used to build uClibc.
2114
2115 config DODEBUG
2116         bool "Build uClibc with debugging symbols"
2117         default n
2118         select EXTRA_WARNINGS
2119         help
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.
2125
2126           Otherwise, answer N.
2127
2128 config DODEBUG_PT
2129         bool "Build pthread with debugging output"
2130         depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
2131         default n
2132         help
2133           Enable debug output in libpthread.  This is only useful when doing
2134           development in libpthread itself.
2135
2136           Otherwise, answer N.
2137
2138 config DOSTRIP
2139         bool "Strip libraries and executables"
2140         default y
2141         depends on !DODEBUG
2142         help
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.
2147
2148 config DOASSERTS
2149         bool "Build uClibc with run-time assertion testing"
2150         default n
2151         help
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.
2156
2157 config SUPPORT_LD_DEBUG
2158         bool "Build the shared library loader with debugging support"
2159         depends on HAVE_SHARED
2160         default n
2161         help
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
2167           the stderr.
2168
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
2174                           relocation patch
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!
2179
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.
2184
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
2189
2190           If you are doing development and want to debug uClibc's shared library
2191           loader, answer Y.  Mere mortals answer N.
2192
2193 config SUPPORT_LD_DEBUG_EARLY
2194         bool "Build the shared library loader with early debugging support"
2195         depends on HAVE_SHARED
2196         default n
2197         help
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.
2206
2207 config UCLIBC_MALLOC_DEBUGGING
2208         bool "Build malloc with debugging support"
2209         depends on MALLOC || MALLOC_STANDARD
2210         default n
2211         help
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.
2215
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
2220                          allocation calls
2221                   4   -  output messages for the `MMB' layer
2222                   8   -  output messages for internal malloc heap manipulation
2223                          calls
2224
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.
2227
2228 config WARNINGS
2229         string "Compiler Warnings"
2230         default "-Wall"
2231         help
2232           Set this to the set of gcc warnings you wish to see while compiling.
2233
2234 config EXTRA_WARNINGS
2235         bool "Enable extra annoying warnings"
2236         default n
2237         help
2238           If you wish to build with extra warnings enabled, say Y here.
2239
2240 config DOMULTI
2241         bool "Compile all sources at once into an object"
2242         default n
2243         help
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
2246           smaller binaries.
2247
2248           Note that you need a very recent GCC for this to work, like
2249           gcc >= 4.3 plus eventually some patches.
2250
2251           If unsure, keep the default of N.
2252
2253 config UCLIBC_MJN3_ONLY
2254         bool "Manuel's hidden warnings"
2255         default n
2256         help
2257           Answer Y here to see all Manuel's personal notes, warnings, and todos.
2258
2259           Most people will answer N.
2260
2261 endmenu