OSDN Git Service

ec4cb4bdc40112f13a1dc49243d3a1501edc5cfb
[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 choice
9         prompt "Target Architecture"
10         help
11           Stuff
12
13 config TARGET_alpha
14         bool "alpha"
15
16 config TARGET_arm
17         bool "arm"
18
19 config TARGET_avr32
20        bool "avr32"
21
22 config TARGET_bfin
23         bool "bfin"
24
25 config TARGET_cris
26         bool "cris"
27
28 config TARGET_e1
29         bool "e1 (BROKEN)"
30
31 config TARGET_frv
32         bool "frv (BROKEN)"
33
34 config TARGET_h8300
35         bool "h8300 (BROKEN)"
36
37 config TARGET_hppa
38         bool "hppa"
39
40 config TARGET_i386
41         bool "i386"
42
43 config TARGET_i960
44         bool "i960 (BROKEN)"
45
46 config TARGET_ia64
47         bool "ia64"
48
49 config TARGET_m68k
50         bool "m68k"
51
52 config TARGET_microblaze
53         bool "microblaze (BROKEN)"
54
55 config TARGET_mips
56         bool "mips"
57
58 config TARGET_nios
59         bool "nios"
60
61 config TARGET_nios2
62         bool "nios2"
63
64 config TARGET_powerpc
65         bool "powerpc"
66
67 config TARGET_sh
68         bool "superh"
69
70 config TARGET_sh64
71         bool "sh64"
72
73 config TARGET_sparc
74         bool "sparc"
75
76 config TARGET_v850
77         bool "v850 (BROKEN)"
78
79 config TARGET_vax
80         bool "vax"
81
82 config TARGET_x86_64
83         bool "x86_64"
84
85 endchoice
86
87
88 menu "Target Architecture Features and Options"
89
90 if TARGET_alpha
91 source "extra/Configs/Config.alpha"
92 endif
93
94 if TARGET_arm
95 source "extra/Configs/Config.arm"
96 endif
97
98 if TARGET_avr32
99 source "extra/Configs/Config.avr32"
100 endif
101
102 if TARGET_bfin
103 source "extra/Configs/Config.bfin"
104 endif
105
106 if TARGET_cris
107 source "extra/Configs/Config.cris"
108 endif
109
110 if TARGET_e1
111 source "extra/Configs/Config.e1"
112 endif
113
114 if TARGET_frv
115 source "extra/Configs/Config.frv"
116 endif
117
118 if TARGET_h8300
119 source "extra/Configs/Config.h8300"
120 endif
121
122 if TARGET_hppa
123 source "extra/Configs/Config.hppa"
124 endif
125
126 if TARGET_i386
127 source "extra/Configs/Config.i386"
128 endif
129
130 if TARGET_i960
131 source "extra/Configs/Config.i960"
132 endif
133
134 if TARGET_ia64
135 source "extra/Configs/Config.ia64"
136 endif
137
138 if TARGET_m68k
139 source "extra/Configs/Config.m68k"
140 endif
141
142 if TARGET_nios
143 source "extra/Configs/Config.nios"
144 endif
145
146 if TARGET_nios2
147 source "extra/Configs/Config.nios2"
148 endif
149
150 if TARGET_microblaze
151 source "extra/Configs/Config.microblaze"
152 endif
153
154 if TARGET_mips
155 source "extra/Configs/Config.mips"
156 endif
157
158 if TARGET_powerpc
159 source "extra/Configs/Config.powerpc"
160 endif
161
162 if TARGET_sh
163 source "extra/Configs/Config.sh"
164 endif
165
166 if TARGET_sh64
167 source "extra/Configs/Config.sh64"
168 endif
169
170 if TARGET_sparc
171 source "extra/Configs/Config.sparc"
172 endif
173
174 if TARGET_v850
175 source "extra/Configs/Config.v850"
176 endif
177
178 if TARGET_vax
179 source "extra/Configs/Config.vax"
180 endif
181
182 if TARGET_x86_64
183 source "extra/Configs/Config.x86_64"
184 endif
185
186 config TARGET_SUBARCH
187         string
188         default "e500" if CONFIG_E500
189         default "classic" if CONFIG_CLASSIC
190         default ""
191
192 source "extra/Configs/Config.in.arch"
193
194 endmenu
195
196 menu "General Library Settings"
197
198 config HAVE_NO_PIC
199         bool
200         default n
201
202 config DOPIC
203         bool "Generate only Position Independent Code (PIC)"
204         default y
205         depends !HAVE_NO_PIC
206         help
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.
209
210 config HAVE_NO_SHARED
211         bool
212         default n
213
214 config ARCH_HAS_NO_LDSO
215         bool
216         select HAVE_NO_SHARED
217         default n
218
219 config HAVE_SHARED
220         bool "Enable support for shared libraries"
221         depends on !HAVE_NO_SHARED
222         default y
223         help
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,
226           then answer N.
227
228 config FORCE_SHAREABLE_TEXT_SEGMENTS
229         bool "Only load shared libraries which can share their text segment"
230         depends on HAVE_SHARED
231         default n
232         help
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.
242
243 config LDSO_LDD_SUPPORT
244         bool "Native 'ldd' support"
245         depends on HAVE_SHARED
246         default y
247         help
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.
253
254 config LDSO_CACHE_SUPPORT
255         bool "Enable library loader cache (ld.so.conf)"
256         depends on HAVE_SHARED
257         default y
258         help
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.
263
264 config LDSO_PRELOAD_FILE_SUPPORT
265         bool "Enable library loader preload file (ld.so.preload)"
266         depends on HAVE_SHARED
267         default n
268         help
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
271           the program.
272
273 config LDSO_BASE_FILENAME
274         string "Shared library loader naming prefix"
275         depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
276         default "ld.so"
277         help
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".
284
285           Most people will leave this set to the default of "ld.so".
286
287           WARNING: Changing the default prefix could cause problems with
288                    binutils' ld !
289
290 config UCLIBC_STATIC_LDCONFIG
291         bool "Link ldconfig statically"
292         depends on HAVE_SHARED
293         default y
294         help
295           Enable this option to statically link the ldconfig binary.
296
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.
301
302 config LDSO_RUNPATH
303         bool "Enable ELF RUNPATH tag support"
304         depends on HAVE_SHARED
305         default y
306         help
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.
311
312           Usage of RUNPATH tags is not too common, so disabling this feature 
313           should be safe for most people.
314
315 config UCLIBC_CTOR_DTOR
316         bool "Support global constructors and destructors"
317         default y
318         help
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
330           answer N.
331
332 config LDSO_GNU_HASH_SUPPORT
333         bool "Enable GNU hash style support"
334         depends on HAVE_SHARED
335         default n
336         help
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.
344           
345           If you want to use this new feature, answer Y  
346
347 config HAS_NO_THREADS
348         bool
349         default n
350
351 config UCLIBC_HAS_THREADS
352         bool "POSIX Threading Support"
353         depends on !HAS_NO_THREADS
354         default y
355         help
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.
360
361           If your applications require pthreads, answer Y.
362
363 config PTHREADS_DEBUG_SUPPORT
364         bool "Build pthreads debugging support"
365         default n
366         depends on UCLIBC_HAS_THREADS
367         help
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.
372
373           IMPORTANT NOTE!  Because gdb must dlopen() the libthread_db library,
374           you must compile gdb with uClibc in order for pthread debugging to
375           work properly.
376
377           If you are doing development and want to debug applications using
378           uClibc's pthread library, answer Y.  Otherwise, answer N.
379
380 config LINUXTHREADS_OLD
381         bool "Use the older (stable) version of linuxthreads"
382         default y
383         depends on UCLIBC_HAS_THREADS
384         help
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.
388
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).
393
394 config UCLIBC_HAS_LFS
395         bool "Large File Support"
396         default y
397         help
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.
402
403 choice
404         prompt "Malloc Implementation"
405         default MALLOC if ! ARCH_USE_MMU
406         default MALLOC_STANDARD if ARCH_USE_MMU
407         help
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.
412
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.
420
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
426           for uClibc.
427
428           If unsure, answer "malloc-standard".
429
430 config MALLOC
431         bool "malloc"
432
433 config MALLOC_SIMPLE
434         bool "malloc-simple"
435
436 config MALLOC_STANDARD
437         bool "malloc-standard"
438         depends on ARCH_USE_MMU
439
440 endchoice
441
442 config MALLOC_GLIBC_COMPAT
443         bool "Malloc returns live pointer for malloc(0)"
444         default n
445         help
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
450           serious problems.
451
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.
459
460 config UCLIBC_DYNAMIC_ATEXIT
461         bool "Dynamic atexit() Support"
462         default y
463         help
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
471           static executables.
472
473           Unless you use uClibc with C++, you should probably answer N.
474
475 config COMPAT_ATEXIT
476         bool "Old (visible) atexit Support"
477         default n
478         help
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.
481
482 config UCLIBC_SUSV3_LEGACY
483         bool "Enable SuSv3 LEGACY functions"
484         default n
485         help
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.
490
491 config UCLIBC_SUSV3_LEGACY_MACROS
492         bool "Enable SuSv3 LEGACY macros"
493         default n
494         help
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.
498
499 config UCLIBC_HAS_SHADOW
500         bool "Shadow Password Support"
501         default y
502         help
503           Answer N if you do not need shadow password support.
504           Most people will answer Y.
505
506 config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
507         bool "Support for program_invocation_name"
508         default n
509         help
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.
514
515           At startup, these external strings are automatically set
516           up based on the value of ARGV[0].
517
518           If unsure, just answer N.
519
520 config UCLIBC_HAS___PROGNAME
521         bool "Support for __progname"
522         default y
523         depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
524         help
525           Some packages (like openssh) like to peek into internal libc
526           symbols to make their output a bit more user friendly.
527
528           At startup, __progname is automatically set up based on the
529           value of ARGV[0].
530
531           If unsure, just answer N.
532
533 config UNIX98PTY_ONLY
534         bool "Support only Unix 98 PTYs"
535         default y
536         help
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.
540
541 config ASSUME_DEVPTS
542         bool "Assume that /dev/pts is a devpts or devfs file system"
543         default y
544         help
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.
549
550           Most people should answer Y.
551
552 config UCLIBC_HAS_TM_EXTENSIONS
553         bool "Support 'struct tm' timezone extension fields"
554         default y
555         help
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
560           code.
561
562           To strictly follow the SuSv3 standard, leave this disabled.
563           Most people will probably want to answer Y.
564
565 config UCLIBC_HAS_TZ_CACHING
566         bool "Enable caching of the last valid timezone 'TZ' string"
567         default y
568         help
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.
572
573           Most people will answer Y.
574
575 config UCLIBC_HAS_TZ_FILE
576         bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
577         default y
578         help
579           Answer Y to enable the setting of a default timezone for uClibc.
580
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.
584
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.
590
591           Simply doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
592           See
593           http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
594           for details on valid settings of 'TZ'.
595
596           Most people will answer Y.
597
598 config UCLIBC_HAS_TZ_FILE_READ_MANY
599         bool "Repeatedly read the '/etc/TZ' file"
600         depends on UCLIBC_HAS_TZ_FILE
601         default y
602         help
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
607           of the file change.
608
609           Most people will answer Y.
610
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
614         default "/etc/TZ"
615         help
616           This is the path to the 'TZ' file.
617
618           Most people will use the default of '/etc/TZ'.
619
620 endmenu
621
622 menu "Advanced Library Settings"
623
624 config UCLIBC_PWD_BUFFER_SIZE
625         int "Buffer size for getpwnam() and friends"
626         default 256
627         range 12 1024
628         help
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
632           parameter.
633
634 config UCLIBC_GRP_BUFFER_SIZE
635         int "Buffer size for getgrnam() and friends"
636         default 256
637         range 256 1024
638         help
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
642           parameter.
643
644 endmenu
645
646 menu "Networking Support"
647
648 config UCLIBC_HAS_IPV6
649         bool "IP version 6 Support"
650         default n
651         help
652           If you want to include support for the next version of the Internet
653           Protocol (IP version 6) then answer Y.
654
655           Most people should answer N.
656
657 config UCLIBC_HAS_RPC
658         bool "Remote Procedure Call (RPC) support"
659         default n
660         help
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.
665
666 config UCLIBC_HAS_FULL_RPC
667         bool "Full RPC support"
668         depends on UCLIBC_HAS_RPC
669         default y if !HAVE_SHARED
670         help
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.
674
675 config UCLIBC_HAS_REENTRANT_RPC
676         bool "Reentrant RPC support"
677         depends on UCLIBC_HAS_RPC
678         default y if !HAVE_SHARED
679         help
680           Most packages utilize the normal (non-reentrant) RPC functions, but 
681           some (like exportfs from nfs-utils) need these reentrant versions.  
682
683           Most people can safely answer N.
684
685 config UCLIBC_USE_NETLINK
686         bool "Use netlink to query interfaces"
687         default n
688         help
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.
695
696           Most people can safely answer N.
697
698 config UCLIBC_HAS_BSD_RES_CLOSE
699         bool "Support res_close() (bsd-compat)"
700         default n
701         help
702           Answer Y if you desperately want to support BSD compatibility in
703           the network code.
704
705           Most people will say N.
706
707 endmenu
708
709
710 menu "String and Stdio Support"
711
712 config UCLIBC_HAS_STRING_GENERIC_OPT
713         bool "Use glibc generic string functions"
714         default y
715         help
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.
719
720           Many people will answer Y.
721
722 config UCLIBC_HAS_STRING_ARCH_OPT
723         bool "Use arch-specific string functions"
724         default y
725         help
726           Answer Y to use the arch-specific string functions instead of the
727           base uClibc versions, which are optimized exclusively for size.
728
729           Most people will answer Y, as this has been default behavior
730           for some time.
731
732 config UCLIBC_HAS_CTYPE_TABLES
733         bool "Use Table Versions Of 'ctype.h' Functions."
734         default y
735         help
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.
739
740           Most people will answer Y.
741
742 config UCLIBC_HAS_CTYPE_SIGNED
743         bool "Support Signed Characters In 'ctype.h' Functions."
744         depends UCLIBC_HAS_CTYPE_TABLES
745         default y
746         help
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'.
752
753           Most people will answer Y.
754
755 choice
756         prompt "ctype argument checking"
757         depends UCLIBC_HAS_CTYPE_TABLES
758         default UCLIBC_HAS_CTYPE_UNSAFE
759         help
760           Please select the invalid arg behavior you want for the 'ctype' functions.
761
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.
765
766           NOTE: This only affects the 'ctype' _functions_.  It does not affect
767           the macro implementations.
768
769 config UCLIBC_HAS_CTYPE_UNSAFE
770         bool "Do not check -- unsafe"
771
772 config UCLIBC_HAS_CTYPE_CHECKED
773         bool "Detect and handle appropriately"
774
775 config UCLIBC_HAS_CTYPE_ENFORCED
776         bool "Issue a diagnostic and abort()"
777
778 endchoice
779
780
781 config UCLIBC_HAS_WCHAR
782         bool "Wide Character Support"
783         default n
784         help
785           Answer Y to enable wide character support.  This will make uClibc
786           much larger.  It is also currently required for locale support.
787
788           Most people will answer N.
789
790 config UCLIBC_HAS_LOCALE
791         bool "Locale Support"
792         select UCLIBC_HAS_WCHAR
793         select UCLIBC_HAS_CTYPE_TABLES
794         default n
795         help
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.
799
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).
804
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.
808
809           Answer Y to enable locale support.  Most people will answer N.
810
811 config UCLIBC_PREGENERATED_LOCALE_DATA
812         bool "Use Pre-generated Locale Data"
813         depends on UCLIBC_HAS_LOCALE
814         default n
815         help
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
820           data.
821
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).
825
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
829         default n
830         help
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/
836           directory.
837
838           Go ahead and make life easy for yourself... Answer Y.
839
840 config UCLIBC_HAS_XLOCALE
841         bool "Extended Locale Support (experimental/incomplete)"
842         depends on UCLIBC_HAS_LOCALE
843         default n
844         help
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().
848
849           Most people will answer N.
850
851 config UCLIBC_HAS_HEXADECIMAL_FLOATS
852         bool "Support hexadecimal float notation"
853         depends UCLIBC_HAS_CTYPE_TABLES
854         depends on UCLIBC_HAS_FLOATS
855         default n
856         help
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.
861
862           Most people will answer N.
863
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
868         default n
869         help
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.
873
874           Most people will answer N.
875
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
879         default y
880         help
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
884           non-grouped number.
885
886           Most people will answer N.
887
888 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
889         bool "Support glibc's register_printf_function() (glibc-compat)"
890         depends on !USE_OLD_VFPRINTF
891         default n
892         help
893           Answer Y to support glibc's register_printf_function() to allow an
894           application to add its own printf conversion specifiers.
895
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.
900
901           Most people will answer N.
902
903 config USE_OLD_VFPRINTF
904         bool "Use the old vfprintf implementation"
905         depends on !UCLIBC_HAS_WCHAR
906         default n
907         help
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.
911
912           Most people will answer N.
913
914 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
915         int "Maximum number of positional args.  Either 0 or >= 9."
916         depends on !USE_OLD_VFPRINTF
917         default 9
918         help
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.
925
926           Most people will answer 9.
927
928
929 config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
930         bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
931         default n
932         help
933           NOTE!!!  Currently Not Implemented!!! Just A Place Holder!!  NOTE!!!
934           NOTE!!!  Conflicts with an ANSI/ISO C99 scanf flag!!         NOTE!!!
935
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.
939
940           Most people will answer N.
941
942 choice
943         prompt "Stdio buffer size"
944         default UCLIBC_HAS_STDIO_BUFSIZ_4096
945         help
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.
949
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.
953
954 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
955         bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
956         depends !UCLIBC_HAS_WCHAR
957
958 config UCLIBC_HAS_STDIO_BUFSIZ_256
959         bool "256 (minimum ANSI/ISO C99 value)"
960
961 config UCLIBC_HAS_STDIO_BUFSIZ_512
962         bool "512"
963
964 config UCLIBC_HAS_STDIO_BUFSIZ_1024
965         bool "1024"
966
967 config UCLIBC_HAS_STDIO_BUFSIZ_2048
968         bool "2048"
969
970 config UCLIBC_HAS_STDIO_BUFSIZ_4096
971         bool "4096"
972
973 config UCLIBC_HAS_STDIO_BUFSIZ_8192
974         bool "8192"
975
976 # If you add more choices, you will need to update uClibc_stdio.h.
977
978 endchoice
979
980 choice
981         prompt "Stdio builtin buffer size (uClibc-specific)"
982         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
983         default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
984         help
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.
988
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.
991
992           Most people will answer None.
993
994 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
995         bool "None"
996
997 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
998         bool "4"
999
1000 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
1001         bool "8"
1002
1003 # If you add more choices, you will need to update uClibc_stdio.h.
1004
1005 endchoice
1006
1007 config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
1008         bool "Attempt to shutdown stdio subsystem when abort() is called."
1009         default n
1010         help
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".
1014
1015           Most people will answer N.
1016
1017 config UCLIBC_HAS_STDIO_GETC_MACRO
1018         bool "Provide a macro version of getc()"
1019         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1020         default y
1021         help
1022           Provide a macro version of getc().
1023
1024           Most people will answer Y.
1025
1026 config UCLIBC_HAS_STDIO_PUTC_MACRO
1027         bool "Provide a macro version of putc()"
1028         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
1029         default y
1030         help
1031           Provide a macro version of putc().
1032
1033           Most people will answer Y.
1034
1035 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
1036         bool "Support auto-r/w transition"
1037         default y
1038         help
1039           Answer Y to enable the stdio subsystem to automaticly transition
1040           between reading and writing.  This relaxes the ANSI/ISO C99 requirement:
1041
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.
1049
1050           Most people will answer Y.
1051
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
1055         default n
1056         help
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.
1060
1061           Most people will answer N.
1062
1063 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
1064         bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
1065         default n
1066         help
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.
1070
1071           Most people will answer N.
1072
1073 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
1074         bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
1075         default n
1076         help
1077           Answer Y to support the glibc 'custom stream' extension functions
1078           fmemopen(), open_memstream(), and fopencookie().
1079
1080           NOTE: There are some minor differences regarding seeking behavior.
1081
1082           Most people will answer N.
1083
1084 config UCLIBC_HAS_PRINTF_M_SPEC
1085         bool "Support the '%m' specifier in printf format strings (glibc-compat)"
1086         default n
1087         help
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'.
1091
1092           Most people will answer N.
1093
1094 config UCLIBC_HAS_ERRNO_MESSAGES
1095         bool "Include the errno message text in the library"
1096         default y
1097         help
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>'.
1101
1102           Most people will answer Y.
1103
1104 config UCLIBC_HAS_SYS_ERRLIST
1105         bool "Support sys_errlist[] (obsolete-compat)"
1106         depends on UCLIBC_HAS_ERRNO_MESSAGES
1107         default n
1108         help
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.
1112
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.
1115
1116           Most people will answer N.
1117
1118           Application writers: use the strerror(3) function.
1119
1120 config UCLIBC_HAS_SIGNUM_MESSAGES
1121         bool "Include the signum message text in the library"
1122         default y
1123         help
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>'.
1127
1128           Most people will answer Y.
1129
1130 config UCLIBC_HAS_SYS_SIGLIST
1131         bool "Support sys_siglist[] (bsd-compat)"
1132         depends on UCLIBC_HAS_SIGNUM_MESSAGES
1133         default n
1134         help
1135           Answer Y if you want to support sys_siglist[].
1136
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.
1139
1140           Most people will answer N.
1141
1142 config UCLIBC_HAS_GETTEXT_AWARENESS
1143         bool "Include gettext awareness"
1144         depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
1145         default n
1146         help
1147           NOTE!!!  Not yet integrated with strerror and strsignal.  NOTE!!!
1148
1149           Answer Y if you want to include weak stub gettext support and
1150           make the *strerror*() and strsignal() functions gettext-aware.
1151
1152           Currently, to get functional gettext functionality you will need
1153           to use gnu gettext.
1154
1155           Most people will answer N.
1156
1157 config UCLIBC_HAS_GNU_GETOPT
1158         bool "Support gnu getopt"
1159         default y
1160         help
1161           Answer Y if you want to include full gnu getopt() instead of a
1162           (much smaller) SUSv3 compatible getopt().
1163
1164           Most people will answer Y.
1165
1166 config UCLIBC_HAS_GETOPT_LONG
1167         bool "Support getopt_long/getopt_long_only"
1168         depends !UCLIBC_HAS_GNU_GETOPT
1169         default y
1170         help
1171           Answer Y if you want to include getopt_long[_only() used by many
1172           apps, even busybox.
1173
1174           Most people will answer Y.
1175
1176 config UCLIBC_HAS_GNU_GETSUBOPT
1177         bool "Support glibc getsubopt"
1178         default y
1179         help
1180           Answer Y if you want to include glibc getsubopt() instead of a
1181           smaller SUSv3 compatible getsubopt().
1182
1183           Most people will answer Y.
1184 endmenu
1185
1186
1187 menu "Big and Tall"
1188
1189 config UCLIBC_HAS_REGEX
1190         bool "Regular Expression Support"
1191         default y
1192         help
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.
1197
1198 config UCLIBC_HAS_REGEX_OLD
1199         bool "Use the older (stable) regular expression code"
1200         depends on UCLIBC_HAS_REGEX
1201         default y
1202         help
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.
1208
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).
1212
1213 config UCLIBC_HAS_FNMATCH
1214         bool "fnmatch Support"
1215         default y
1216         help
1217           POSIX fnmatch.
1218
1219 config UCLIBC_HAS_FNMATCH_OLD
1220         bool "Use the older (stable) fnmatch code"
1221         depends on UCLIBC_HAS_FNMATCH
1222         default y
1223         help
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.
1229
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).
1233
1234 config UCLIBC_HAS_WORDEXP
1235         bool "Support the wordexp() interface"
1236         depends on UCLIBC_HAS_GLOB
1237         default n
1238         help
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.
1243
1244           This interface is rarely used, and very large.  Unless you have a
1245           pressing need for wordexp(), you should probably answer N.
1246
1247 config UCLIBC_HAS_FTW
1248         bool "Support the ftw() and nftw() interfaces"
1249         default n
1250         help
1251           The SuSv3 ftw() and nftw() interfaces are used to recursively descend
1252           directory paths while repeatedly calling a function.
1253
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.
1256
1257 config UCLIBC_HAS_GLOB
1258         bool "Support the glob() interface"
1259         depends on UCLIBC_HAS_FNMATCH
1260         default y
1261         help
1262
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.
1266
1267           Most people will answer Y.
1268
1269 config UCLIBC_HAS_GNU_GLOB
1270         bool "Support gnu glob() interface"
1271         depends on UCLIBC_HAS_GLOB
1272         default n
1273         help
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.
1277
1278           Answer Y if you want to include full gnu glob() instead of the smaller SUSv3
1279           compatible glob().
1280
1281           Most people will answer N.
1282
1283 endmenu
1284
1285
1286
1287
1288 menu "Library Installation Options"
1289
1290 config SHARED_LIB_LOADER_PREFIX
1291         string "Shared library loader path"
1292         depends on HAVE_SHARED
1293         default "$(RUNTIME_PREFIX)lib"
1294         help
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.
1298
1299           For a typical target system this should be set to "/lib", such that
1300           'make install' will install /lib/ld-uClibc.so.0.
1301
1302           BIG FAT WARNING:
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
1305           run.
1306
1307 config RUNTIME_PREFIX
1308         string "uClibc runtime library directory"
1309         default "/usr/$(TARGET_ARCH)-linux-uclibc/"
1310         help
1311           RUNTIME_PREFIX is the directory into which the uClibc runtime
1312           libraries will be installed.   The result will look something
1313           like the following:
1314               $(RUNTIME_PREFIX)/
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...
1321
1322           For a typical target system this should be set to "/", such that
1323           'make install' will install /lib/libuClibc-<VERSION>.so
1324
1325 config DEVEL_PREFIX
1326         string "uClibc development environment directory"
1327         default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
1328         help
1329           DEVEL_PREFIX is the directory into which the uClibc development
1330           environment will be installed.   The result will look something
1331           like the following:
1332               $(DEVEL_PREFIX)/
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.
1337
1338           For a typical target system this should be set to "/usr", such that
1339           'make install' will install /usr/include/<header files>.
1340
1341 endmenu
1342
1343
1344 menu "Security options"
1345
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
1351         default n
1352         help
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).
1359
1360 config UCLIBC_HAS_ARC4RANDOM
1361         bool "Include the arc4random() function"
1362         default n
1363         help
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.
1370
1371           Most people will answer N.
1372
1373 config HAVE_NO_SSP
1374         bool
1375         default n
1376
1377 config UCLIBC_HAS_SSP
1378         bool "Support for propolice smashing stack protector"
1379         depends on !HAVE_NO_SSP
1380         default n
1381         help
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.
1387
1388 config UCLIBC_HAS_SSP_COMPAT
1389         bool "Support for gcc-3.x propolice smashing stack protector"
1390         depends on UCLIBC_HAS_SSP
1391         default n
1392         help
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.
1401
1402 config SSP_QUICK_CANARY
1403         bool "Use simple guard values without accessing /dev/urandom"
1404         depends on UCLIBC_HAS_SSP
1405         default n
1406         help
1407           Use gettimeofday(2) to define the __guard without accessing
1408           /dev/urandom.
1409           WARNING: This makes smashing stack protector vulnerable to timing
1410                 attacks.
1411           Most people will answer N.
1412
1413 choice
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
1418         help
1419           "abort" use SIGABRT to block offending programs.
1420           This is the default implementation.
1421
1422           "segfault" use SIGSEGV to block offending programs.
1423           Use this for debugging.
1424
1425           If unsure, answer "abort".
1426
1427 config PROPOLICE_BLOCK_ABRT
1428         bool "abort"
1429
1430 config PROPOLICE_BLOCK_SEGV
1431         bool "segfault"
1432
1433 endchoice
1434
1435 config UCLIBC_BUILD_SSP
1436         bool "Build uClibc with propolice protection"
1437         depends on UCLIBC_HAS_SSP
1438         default n
1439         help
1440           Build all libraries and executables with propolice protection enabled.
1441
1442 config UCLIBC_BUILD_RELRO
1443         bool "Build uClibc with RELRO"
1444         depends on HAVE_SHARED
1445         default y
1446         help
1447           Build all libraries and executables with -z relro.
1448
1449 config UCLIBC_BUILD_NOW
1450         bool "Build uClibc with NOW"
1451         depends on HAVE_SHARED
1452         default n
1453         help
1454           Build all libraries and executables with -z now.
1455
1456 config UCLIBC_BUILD_NOEXECSTACK
1457         bool "Build uClibc with noexecstack marking"
1458         default y
1459         help
1460           Mark all assembler files as noexecstack. This will result in marking
1461           all libraries and executables built against uClibc not requiring
1462           executable stack.
1463
1464 endmenu
1465
1466 menu "uClibc development/debugging options"
1467
1468 config CROSS_COMPILER_PREFIX
1469         string "Cross-compiling toolchain prefix"
1470         default ""
1471         help
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.
1475
1476 config UCLIBC_EXTRA_CFLAGS
1477         string "Enter any extra CFLAGS to use to build uClibc"
1478         default ""
1479         help
1480           Add any additional CFLAGS to be used to build uClibc.
1481
1482 config DODEBUG
1483         bool "Build uClibc with debugging symbols"
1484         default n
1485         select EXTRA_WARNINGS
1486         help
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.
1492
1493           Otherwise, answer N.
1494
1495 config DODEBUG_PT
1496         bool "Build pthread with debugging output"
1497         depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
1498         default n
1499         help
1500           Enable debug output in libpthread.  This is only useful when doing 
1501           development in libpthread itself.
1502
1503           Otherwise, answer N.
1504
1505 config DOSTRIP
1506         bool "Strip libraries and executables"
1507         default y
1508         depends on !DODEBUG
1509         help
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.
1514
1515 config DOASSERTS
1516         bool "Build uClibc with run-time assertion testing"
1517         default n
1518         help
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.
1523
1524 config SUPPORT_LD_DEBUG
1525         bool "Build the shared library loader with debugging support"
1526         depends on HAVE_SHARED
1527         default n
1528         help
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
1534           the stderr.
1535
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!
1544
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.
1549
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
1554
1555           If you are doing development and want to debug uClibc's shared library
1556           loader, answer Y.  Mere mortals answer N.
1557
1558 config SUPPORT_LD_DEBUG_EARLY
1559         bool "Build the shared library loader with early debugging support"
1560         depends on HAVE_SHARED
1561         default n
1562         help
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.
1571
1572 config UCLIBC_MALLOC_DEBUGGING
1573         bool "Build malloc with debugging support"
1574         depends MALLOC || MALLOC_STANDARD
1575         default n
1576         help
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.
1580
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
1587
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.
1590
1591 config WARNINGS
1592         string "Compiler Warnings"
1593         default "-Wall"
1594         help
1595           Set this to the set of gcc warnings you wish to see while compiling.
1596
1597 config EXTRA_WARNINGS
1598         bool "Enable extra annoying warnings"
1599         default n
1600         help
1601           If you wish to build with extra warnings enabled, say Y here.
1602
1603 config DOMULTI
1604         bool "Compile all sources at once into an object"
1605         default n
1606         help
1607           Set this to compile all sources at once into an object (IMA).
1608
1609 config UCLIBC_MJN3_ONLY
1610         bool "Manuel's hidden warnings"
1611         default n
1612         help
1613           Answer Y here to see all Manuel's personal notes, warnings, and todos.
1614
1615           Most people will answer N.
1616
1617 endmenu