OSDN Git Service

Add back in table-less ctype funcs for those interested in minimizing
[uclinux-h8/uclibc-ng.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 config HAVE_DOT_CONFIG
6         bool
7         default y
8
9
10 menu "General Library Settings"
11
12 config DOPIC
13         bool "Generate Position Independent Code (PIC)"
14         default y
15         depends !HAVE_NO_PIC
16         help
17           If you wish to build uClibc with support for shared libraries then
18           answer Y here.  If you only want to build uClibc as a static library,
19           then answer N.
20
21 config HAVE_SHARED
22         bool "Enable support for shared libraries"
23         depends on DOPIC
24         default y
25         help
26           If you wish to build uClibc with support for shared libraries then
27           answer Y here.  If you only want to build uClibc as a static library,
28           then answer N.
29
30 config ADD_LIBGCC_FUNCTIONS
31         bool "Add unresolved libgcc symbols to uClibc"
32         depends on HAVE_SHARED
33         default n
34         help
35           If you answer Y here, all unresolved functions provided by the libgcc
36           library that are used by uClibc will be added directly into the
37           uClibc library.  If your gcc compiler only provides a static libgcc
38           library, then enabling this option can reduce the size of your
39           binaries by preventing these functions from being staticly linked
40           into every binary.  If you have compiled uClibc as PIC code, one
41           potential size effect of this option is that you may end up adding
42           non-PIC libgcc code into your shared uClibc library, resulting in a
43           non shareable text segment (thereby wasting a bunch of ram).  If your
44           compiler supports a shared libgcc library, you should certainly leave
45           this option disabled.  Regardless, the safest answer is N.
46
47 config BUILD_UCLIBC_LDSO
48         bool "Compile native shared library loader"
49         depends on HAVE_SHARED
50         default y
51         help
52           uClibc has a native shared library loader for some architectures.
53           If you answer Y here, the uClibc native shared library loader will
54           be built for your target architecture.  If this option is available,
55           to you, then you almost certainly want to answer Y.
56
57 config FORCE_SHAREABLE_TEXT_SEGMENTS
58         bool "Only load shared libraries which can share their text segment"
59         depends on BUILD_UCLIBC_LDSO && UCLIBC_COMPLETELY_PIC && !ADD_LIBGCC_SYMBOLS
60         default n
61         help
62           If you answer Y here, the uClibc native shared library loader will
63           only load shared libraries, which do not need to modify any non-writable
64           segments. These libraries haven't set the DT_TEXTREL tag in the dynamic
65           section (==> objdump). So all your libraries must be compiled with
66           -fPIC or -fpic, and all assembler function must be written as position
67           independent code (PIC). 
68           Enabling this option will makes uClibc's shared library loader a
69           little bit smaller and guarantee that no memory will be wasted by badly
70           coded shared libraries.
71
72 config LDSO_LDD_SUPPORT
73         bool "Native shared library loader 'ldd' support"
74         depends on BUILD_UCLIBC_LDSO
75         default y
76         help
77           Enable this to enable all the code needed to support traditional ldd,
78           which executes the shared library loader to resolve all dependencies
79           and then provide a list of shared libraries that are required for an
80           application to function.  Disabling this option will makes uClibc's
81           shared library loader a little bit smaller.  Most people will answer Y.
82
83 config UCLIBC_CTOR_DTOR
84         bool "Support global constructors and destructors"
85         default y
86         help
87           If you wish to build uClibc with support for global constructor
88           (ctor) and global destructor (dtor) support, then answer Y here.
89           When ctor/dtor support is enabled, binaries linked with uClibc must
90           also be linked with crtbegin.o and crtend.o which are provided by gcc
91           (the "*startfile:" and "*endfile:" settings in your gcc specs file
92           may need to be adjusted to include these files).  This support will
93           also add a small amount of additional size to each binary compiled vs
94           uClibc.  If you will be using uClibc with C++, or if you need the gcc
95           __attribute__((constructor)) and __attribute__((destructor)) to work,
96           then you definitely want to answer Y here.  If you don't need ctors
97           or dtors and want your binaries to be as small as possible, then
98           answer N.
99
100 config UCLIBC_PROFILING
101         bool "Support gprof profiling"
102         default y
103         help
104           If you wish to build uClibc with support for application profiling
105           using the gprof tool, then you should enable this feature.  Then in
106           addition to building uClibc with profiling support, you will also
107           need to recompile all your shared libraries with the profiling
108           enabled version of uClibc.  To add profiling support to your
109           applications, you must compile things using the gcc options
110           "-fprofile-arcs  -pg".  Then when you run your applications, a
111           gmon.out file will be generated which can then be analyzed by
112           'gprof'.  
113
114           These exist a number of less invasive alternatives that do not
115           require your to specially instrument your application, and recompile
116           and relink everything.  
117           
118           Many people have had good results using the combination of Valgrind 
119           to generate profiling information and KCachegrind for analysis:
120                   http://developer.kde.org/~sewardj/
121                   http://kcachegrind.sourceforge.net/
122
123           The OProfile system-wide profiler is another alternative:
124                   http://oprofile.sourceforge.net/
125
126           Prospect is another alternative based on OProfile:
127                   http://prospect.sourceforge.net/
128
129           And the Linux Trace Toolkit (LTT) is also a fine tool:
130                 http://www.opersys.com/LTT/
131
132           If none of these tools do what you need, you can of course enable
133           this option, rebuild everything, and use 'gprof'.  There is both a
134           size and performance penelty to profiling your applications this way,
135           so most people should answer N.
136
137 config UCLIBC_HAS_THREADS
138         bool "POSIX Threading Support"
139         default y
140         help
141           If you want to compile uClibc with pthread support, then answer Y.  
142           This will increase the size of uClibc by adding a bunch of locking
143           to critical data structures, and adding extra code to ensure that
144           functions are properly reentrant.
145
146           If your applications require pthreads, answer Y.
147
148 config PTHREADS_DEBUG_SUPPORT
149         bool "Build pthreads debugging support"
150         default n
151         depends on UCLIBC_HAS_THREADS
152         help
153           Say Y here if you wish to be able to debug applications that use
154           uClibc's pthreads library.  By enabling this option, a library 
155           named libthread_db will be built.  This library will be dlopen()'d
156           by gdb and will allow gdb to debug the threads in your application.
157
158           IMPORTANT NOTE!  Because gdb must dlopen() the libthread_db library,
159           you must compile gdb with uClibc in order for pthread debugging to
160           work properly.
161
162           If you are doing development and want to debug applications using
163           uClibc's pthread library, answer Y.  Otherwise, answer N.
164
165 config UCLIBC_HAS_LFS
166         bool "Large File Support"
167         default y
168         help
169           If you wish to build uClibc with support for accessing large files 
170           (i.e. files greater then 2 GiB) then answer Y.  Do not enable this 
171           if you are using an older Linux kernel (2.0.x) that lacks large file 
172           support.  Enabling this option will increase the size of uClibc.
173
174 choice
175         prompt "Malloc Implementation"
176         default MALLOC_930716
177         help
178           "malloc" use mmap for all allocations and so works very well on MMU-less
179           systems that do not support the brk() system call.   It is pretty smart
180           about reusing already allocated memory, and minimizing memory wastage.
181
182           "malloc-930716" is derived from libc-5.3.12 and uses the brk() system call
183           for all memory allocations.  This makes it very fast.  It is also pretty
184           smart about reusing already allocated memory, and minimizing memory wastage.
185           Because this uses brk() it will not work on uClinux MMU-less systems.
186
187           If unsure, answer "malloc".
188
189 config MALLOC
190         bool "malloc"
191
192 config MALLOC_930716
193         bool "malloc-930716"
194         depends on UCLIBC_HAS_MMU
195
196 endchoice
197
198 config MALLOC_GLIBC_COMPAT
199         bool "Malloc returns live pointer for malloc(0)"
200         default n
201         help
202           The behavior of malloc(0) is listed as implementation-defined by
203           SuSv3.  Glibc returns a valid pointer to something, while uClibc
204           normally return a NULL.  I personally feel glibc's behavior is
205           not particularly safe, and allows buggy applications to hide very
206           serious problems.
207
208           When this option is enabled, uClibc will act just like glibc, and
209           return a live pointer when someone calls malloc(0).  This pointer
210           provides a malloc'ed area with a size of 1 byte.  This feature is
211           mostly useful when dealing with applications using autoconf's broken
212           AC_FUNC_MALLOC macro (which  redefines malloc as rpl_malloc if it
213           does not detect glibc style returning-a-valid-pointer-for-malloc(0)
214           behavior).  Most people can safely answer N.
215
216 config UCLIBC_DYNAMIC_ATEXIT
217         bool "Dynamic atexit() Support"
218         default y
219         help
220           When this option is enabled, uClibc will support an infinite number,
221           of atexit() and on_exit() functions, limited only by your available
222           memory.  This can be important when uClibc is used with C++, since
223           global destructors are implemented via atexit(), and it is quite
224           possible to exceed the default number when this option is disabled.
225           Enabling this option adds a few bytes, and more significantly makes
226           atexit and on_exit depend on malloc, which can be bad when compiling 
227           static executables.
228
229           Unless you use uClibc with C++, you should probably answer N.
230
231
232 config HAS_SHADOW
233         bool "Shadow Password Support"
234         default y
235         help
236           Answer N if you do not need shadow password support.  
237           Most people will answer Y.
238
239 config UNIX98PTY_ONLY
240         bool "Support only Unix 98 PTYs"
241         default y
242         help
243           If you want to support only Unix 98 PTYs enable this.  Some older
244           applications may need this disabled.  For most current programs, 
245           you can generally answer Y.
246
247 config ASSUME_DEVPTS
248         bool "Assume that /dev/pts is a devpts or devfs file system"
249         default y
250         help
251           Enable this if /dev/pts is on a devpts or devfs filesystem.  Both
252           these filesystems automatically manage permissions on the /dev/pts 
253           devices.  You may need to mount your devpts or devfs filesystem on
254           /dev/pts for this to work.
255
256           Most people should answer Y.
257
258 config UCLIBC_HAS_TM_EXTENSIONS
259         bool "Support 'struct tm' timezone extension fields"
260         default y
261         help
262           Enabling this option adds fields to 'struct tm' in time.h for
263           tracking the number of seconds east of UTC, and an abbreviation for
264           the current timezone.  These fields are not specified by the SuSv3
265           standard, but they are commonly used in both GNU and BSD application
266           code.
267
268           To strictly follow the SuSv3 standard, leave this disabled.
269           Most people will probably want to answer Y.
270
271 config UCLIBC_HAS_TZ_CACHING
272         bool "Enable caching of the last valid timezone 'TZ' string"
273         default y
274         help
275           Answer Y to enable caching of the last valid 'TZ' string describing
276           the timezone setting.  This allows a quick string compare to avoid
277           repeated parsing of unchanged 'TZ' strings when tzset() is called.
278
279           Most people will answer Y.
280
281 config UCLIBC_HAS_TZ_FILE
282         bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
283         default y
284         help
285           Answer Y to enable the setting of a default timezone for uClibc.
286
287           Ordinarily, uClibc gets the timezone information exclusively from the
288           'TZ' environment variable.  In particular, there is no support for
289           the zoneinfo directory tree or the /etc/timezone file used by glibc.
290
291           With this option enabled, uClibc will use the value stored in the
292           file '/etc/TZ' (default path) to obtain timezone information if the
293           'TZ' environment variable is missing or has an invalid value.  The
294           file consists of a single line (newline required) of text describing
295           the timezone in the format specified for the TZ environment variable.
296
297           Simply doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
298           See
299           http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
300           for details on valid settings of 'TZ'.
301
302           Most people will answer Y.
303
304 config UCLIBC_HAS_TZ_FILE_READ_MANY
305         bool "Repeatedly read the '/etc/TZ' file"
306         depends on UCLIBC_HAS_TZ_FILE
307         default y
308         help
309           Answer Y to enable repeated reading of the '/etc/TZ' file even after
310           a valid value has been read.  This incurs the overhead of an open/read/close
311           for each tzset() call (explicit or implied).  However, setting this
312           will allows applications to update their timezone information if the contents
313           of the file change.
314
315           Most people will answer Y.
316
317 config UCLIBC_TZ_FILE_PATH
318         string "Path to the 'TZ' file for setting the global timezone"
319         depends on UCLIBC_HAS_TZ_FILE
320         default "/etc/TZ"
321         help
322           This is the path to the 'TZ' file.
323
324           Most people will use the default of '/etc/TZ'.
325
326 endmenu
327
328 menu "Networking Support"
329
330 config UCLIBC_HAS_IPV6
331         bool "IP version 6 Support"
332         default n
333         help
334           If you want to include support for the next version of the Internet
335           Protocol (IP version 6) then answer Y.
336           
337           Most people should answer N.
338
339 config UCLIBC_HAS_RPC
340         bool "Remote Procedure Call (RPC) support"
341         default n
342         help
343           If you want to include RPC support, enable this.  RPC is rarely used 
344           for anything except for the NFS filesystem.  Unless you plan to use NFS, 
345           you can probably leave this set to N and save some space.  If you need
346           to use NFS then you should answer Y.
347
348 config UCLIBC_HAS_FULL_RPC
349         bool "Full RPC support"
350         depends on UCLIBC_HAS_RPC
351         default y if !HAVE_SHARED
352         help
353           Normally we enable just enough RPC support for things like rshd and
354           nfs mounts to work.  If you find you need the rest of the RPC stuff, 
355           then enable this option.  Most people can safely answer N.
356
357 endmenu
358
359
360 menu "String and Stdio Support"
361
362 config UCLIBC_HAS_CTYPE_TABLES
363         bool "Use Table Versions Of 'ctype.h' Functions."
364         default y
365         help
366           Answer Y to use table versions of the 'ctype.h' functions.
367           While the non-table versions are often smaller when building
368           staticly linked apps, they work only in stub locale mode.
369           
370           Most people will answer Y.
371
372 config UCLIBC_HAS_CTYPE_SIGNED
373         bool "Support Signed Characters In 'ctype.h' Functions."
374         depends UCLIBC_HAS_CTYPE_TABLES
375         default y
376         help
377           Answer Y to enable support for passing signed char values to
378           the 'ctype.h' functions.  ANSI/ISO C99 and SUSv3 specify that
379           these functions are only defined for unsigned char values and
380           EOF.  However, glibc allows negative signed char values as well
381           in order to support 'broken old programs'.
382
383           Most people will answer Y.
384
385 choice
386         prompt "ctype argument checking"
387         depends UCLIBC_HAS_CTYPE_TABLES
388         default UCLIBC_HAS_CTYPE_UNSAFE
389         help
390           Please select the invalid arg behavior you want for the 'ctype' functions.
391
392           The 'ctype' functions are now implemented using table lookups, with
393           the arg being the index.  This can result in incorrect memory accesses
394           or even segfaults for args outside of the allowed range.
395
396           NOTE: This only affects the 'ctype' _functions_.  It does not affect
397           the macro implementations.
398
399 config UCLIBC_HAS_CTYPE_UNSAFE
400         bool "Do not check -- unsafe"
401
402 config UCLIBC_HAS_CTYPE_CHECKED
403         bool "Detect and handle appropriately"
404
405 config UCLIBC_HAS_CTYPE_ENFORCED
406         bool "Issue a diagnostic and abort()"
407
408 endchoice
409
410
411 config UCLIBC_HAS_WCHAR
412         bool "Wide Character Support"
413         select UCLIBC_HAS_CTYPE_TABLES
414         default n
415         help
416           Answer Y to enable wide character support.  This will make uClibc 
417           much larger.  It is also currently required for locale support.
418
419           Most people will answer N.
420
421 config UCLIBC_HAS_LOCALE
422         bool "Locale Support (experimental/incomplete)"
423         select UCLIBC_HAS_WCHAR
424         default n
425         help
426           Answer Y to enable locale support.  This will make uClibc much
427           bigger.  uClibc's locale support is still under development.
428
429           Most people will wisely answer N.
430
431 config UCLIBC_HAS_XLOCALE
432         bool "Extended Locale Support (experimental/incomplete)"
433         depends on UCLIBC_HAS_LOCALE
434         default n
435         help
436           Answer Y to enable extended locale support similar to that provided
437           by glibc.  This is primarily intended to support libstd++ functionality.
438           However, it also allows thread-specific locale selection via uselocale().
439
440           Most people will answer N.
441
442 config UCLIBC_HAS_HEXADECIMAL_FLOATS
443         bool "Support hexadecimal float notation"
444         depends UCLIBC_HAS_CTYPE_TABLES
445         depends on UCLIBC_HAS_FLOATS
446         default n
447         help
448           Answer Y to enable support for hexadecimal float notation in the
449           (wchar and) char string to floating point conversion functions, as
450            well as support for the %a and %A conversion specifiers in the
451            *printf() and *scanf() functions.
452
453           Most people will answer N.
454
455 config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
456         bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
457         depends on UCLIBC_HAS_LOCALE
458         depends on UCLIBC_HAS_FLOATS
459         default n
460         help
461           Answer Y to enable support for glibc's \"'\" flag for allowing locale-specific
462           digit grouping in base 10 integer conversions and appropriate floating point
463           conversions in the *printf() and *scanf() functions.
464
465           Most people will answer N.
466
467 config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
468         bool "Do not require digit grouping when the \"'\" flag is specified"
469         depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
470         default y
471         help
472           Answer Y to make digit grouping optional when the \"'\" flag is specified.
473           This is the standard glibc behavior.  If the initial string of digits
474           exceeds the maximum group number, the input will be treated as a normal
475           non-grouped number.
476
477           Most people will answer N.
478
479 config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
480         bool "Support glibc's register_printf_function() (glibc-compat)"
481         depends on !USE_OLD_VFPRINTF
482         default n
483         help
484           Answer Y to support glibc's register_printf_function() to allow an
485           application to add its own printf conversion specifiers.
486
487           NOTE: This implementation limits the number or registered specifiers to 10.
488           NOTE: This implementation requires new conversion specifiers to be ASCII
489                 characters (0-0x7f).  This is to avoid problems with processing
490                 format strings in locales with different multibyte conversions.
491
492           Most people will answer N.
493
494 config USE_OLD_VFPRINTF
495         bool "Use the old vfprintf implementation"
496         depends on !UCLIBC_HAS_WCHAR
497         default n
498         help
499           Set to true to use the old vfprintf instead of the new.  This is roughly
500           C89 compliant with some extensions, and is much smaller.  However, it does
501           not support wide chars, positional args, or glibc custom printf specifiers.
502
503           Most people will answer N.
504
505 config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
506         int "Maximum number of positional args.  Either 0 or >= 9."
507         depends on !USE_OLD_VFPRINTF
508         default 9
509         help
510           Set the maximum number of positional args supported by the printf/scanf
511           functions.  The Single Unix Specification Version 3 requires a minimum
512           value of 9.  Setting this to a value lower than 9 will disable positional
513           arg support and cause the NL_ARGMAX macro in limits.h to be #undef'd.
514           WARNING!  The workspace to support positional args is currently allocated
515           on the stack.  You probably don't want to set this to too high a value.
516
517           Most people will answer 9.
518
519
520 config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
521         bool "Support glibc's 'a' flag for scanf string conversions"
522         default n
523         help
524           NOTE!!!  Currently Not Implemented!!! Just A Place Holder!!  NOTE!!!
525
526           Answer Y to enable support for glibc's 'a' flag for the scanf string
527           conversions '%s', '%[', '%ls', '%l[', and '%S'.  This is used to
528           auto-allocate sufficient memory to hold the data retrieved.
529
530           Most people will answer N.
531
532 choice
533         prompt "Stdio buffer size"
534         default UCLIBC_HAS_STDIO_BUFSIZ_256
535         help
536           Please select a value for BUFSIZ.  This will be used by the
537           stdio subsystem as the default buffer size for a file, and
538           affects fopen(), setvbuf(), etc.
539
540           NOTE: Setting this to 'none' will disable buffering completely.
541           However, BUFSIZ will still be defined in stdio.h as 256 because
542           many applications use this value.
543
544 config UCLIBC_HAS_STDIO_BUFSIZ_NONE
545         bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
546         depends !UCLIBC_HAS_WCHAR
547
548 config UCLIBC_HAS_STDIO_BUFSIZ_256
549         bool "256 (minimum ANSI/ISO C99 value)"
550
551 config UCLIBC_HAS_STDIO_BUFSIZ_512
552         bool "512"
553
554 config UCLIBC_HAS_STDIO_BUFSIZ_1024
555         bool "1024"
556
557 config UCLIBC_HAS_STDIO_BUFSIZ_2048
558         bool "2048"
559
560 config UCLIBC_HAS_STDIO_BUFSIZ_4096
561         bool "4096"
562
563 config UCLIBC_HAS_STDIO_BUFSIZ_8192
564         bool "8192"
565
566 # If you add more choices, you will need to update uClibc_stdio.h.
567
568 endchoice
569
570 choice
571         prompt "Stdio builtin buffer size (uClibc-specific)"
572         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
573         default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
574         help
575           When a FILE is created with fopen(), an attempt is made to allocate
576           a BUFSIZ buffer for it.  If the allocation fails, fopen() will still
577           succeed but the FILE will be unbuffered.
578
579           This option adds a small amount of space to each FILE to act as an
580           emergeny buffer in the event of a buffer allocation failure.
581
582           Most people will answer None.
583
584 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
585         bool "None"
586
587 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
588         bool "4"
589
590 config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
591         bool "8"
592
593 # If you add more choices, you will need to update uClibc_stdio.h.
594
595 endchoice
596
597 config UCLIBC_HAS_STDIO_GETC_MACRO
598         bool "Provide a macro version of getc()"
599         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
600         default y
601         help
602           Provide a macro version of getc().
603
604           Most people will answer Y.
605
606 config UCLIBC_HAS_STDIO_PUTC_MACRO
607         bool "Provide a macro version of putc()"
608         depends !UCLIBC_HAS_STDIO_BUFSIZ_NONE
609         default y
610         help
611           Provide a macro version of putc().
612
613           Most people will answer Y.
614
615 config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
616         bool "Support auto-r/w transition"
617         default y
618         help
619           Answer Y to enable the stdio subsystem to automaticly transition
620           between reading and writing.  This relaxes the ANSI/ISO C99 requirement:
621
622           When a file is opened with update mode ('+' as the second or third character
623           in the list of mode argument values), both input and output may be performed
624           on the associated stream. However, output shall not be directly followed by
625           input without an intervening call to the fflush function or to a file
626           positioning function (fseek, fsetpos, or rewind), and input shall not be
627           directly followed by output without an intervening call to a file positioning
628           function, unless the input operation encounters end­of­file.
629
630           Most people will answer Y.
631
632 config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
633         bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
634         depends on UCLIBC_HAS_LFS
635         default n
636         help
637           Answer Y to enable a uClibc-specific extension to allow passing an
638           additional 'F' flag in the mode string for fopen() to specify that
639           the file should be open()ed with the O_LARGEFILE flag set.
640
641           Most people will answer N.
642
643 config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
644         bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
645         default n
646         help
647           Answer Y to support a glibc extension to allow passing
648           additional 'x' flag in the mode string for fopen() to specify that
649           the file should be open()ed with the O_EXCL flag set.
650
651           Most people will answer N.
652
653 config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
654         bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
655         default n
656         help
657           Answer Y to support the glibc 'custom stream' extension functions
658           fmemopen(), open_memstream(), and fopencookie().
659
660           NOTE: There are some minor differences regarding seeking behavior.
661
662           Most people will answer N.
663
664 config UCLIBC_HAS_PRINTF_M_SPEC
665         bool "Support the '%m' specifier in printf format strings (glibc-compat)"
666         default n
667         help
668           Answer Y to support a glibc extension to interpret '%m' in printf
669           format strings as an instruction to output the error message string
670           (as generated by strerror) corresponding to the current value of 'errno'.
671
672           Most people will answer N.
673
674 config UCLIBC_HAS_ERRNO_MESSAGES
675         bool "Include the errno message text in the library"
676         default y
677         help
678           Answer Y if you want to include the errno message text in the
679           library.  This adds about 3K to the library, but enables strerror()
680           to generate text other than 'Unknown error <number>'.
681
682           Most people will answer Y.
683
684 config UCLIBC_HAS_SYS_ERRLIST
685         bool "Support sys_errlist[] (obsolete-compat)"
686         depends on UCLIBC_HAS_ERRNO_MESSAGES
687         default n
688         help
689           Answer Y if you want to support the obsolete sys_errlist[].
690           This adds about 0.5k to the library, except for the mips
691           arch where it adds over 4K.
692
693           WARNING!  In the future, support for sys_errlist[] may be unavailable
694           in at least some configurations.  In fact, it may be removed altogether.
695
696           Most people will answer N.
697
698 config UCLIBC_HAS_SIGNUM_MESSAGES
699         bool "Include the signum message text in the library"
700         default y
701         help
702           Answer Y if you want to include the signum message text in the
703           library.  This adds about 0.5K to the library, but enables strsignal()
704           to generate text other than 'Unknown signal <number>'.
705
706           Most people will answer Y.
707
708 config UCLIBC_HAS_SYS_SIGLIST
709         bool "Support sys_siglist[] (bsd-compat)"
710         depends on UCLIBC_HAS_SIGNUM_MESSAGES
711         default n
712         help
713           Answer Y if you want to support sys_siglist[].
714
715           WARNING!  In the future, support for sys_siglist[] may be unavailable
716           in at least some configurations.  In fact, it may be removed altogether.
717
718           Most people will answer N.
719
720 config UCLIBC_HAS_GETTEXT_AWARENESS
721         bool "Include gettext awareness"
722         depends on UCLIBC_HAS_LOCALE
723         default n
724         help
725           NOTE!!!  Not yet integrated with strerror and strsignal.  NOTE!!!
726
727           Answer Y if you want to include weak stub gettext support and
728           make the *strerror*() and strsignal() functions gettext-aware.
729
730           Currently, to get functional gettext functionality you will need
731           to use gnu gettext.
732
733           Most people will answer N.
734
735 config UCLIBC_HAS_GNU_GETOPT
736         bool "Support gnu getopt"
737         default y
738         help
739           Answer Y if you want to include full gnu getopt() instead of a
740           (much smaller) SUSv3 compatible getopt().
741
742           Most people will answer Y.
743
744 endmenu
745
746
747 menu "Big and Tall"
748
749 config UCLIBC_HAS_REGEX
750         bool "Regular Expression Support"
751         default y
752         help
753           POSIX regular expression code is really big -- 27k all by itself.
754           If you don't use regular expressions, turn this off and save space.
755           Of course, if you only staticly link, leave this on, since it will
756           only be included in your apps if you use regular expressions.
757
758 config UCLIBC_HAS_WORDEXP
759         bool "Support the wordexp() interface"
760         default n
761         help
762           The SuSv3 wordexp() interface performs word expansions per the  Shell
763           and Utilities volume of IEEE Std 1003.1-2001, Section 2.6.  It is
764           intended for use by applications that want to implement all of the
765           standard Bourne shell expansions on input data.
766
767           This interface is rarely used, and very large.  Unless you have a
768           pressing need for wordexp(), you should probably answer N.
769
770 config UCLIBC_HAS_FTW
771         bool "Support the ftw() and nftw() interfaces"
772         default n
773         help
774           The SuSv3 ftw() and nftw() interfaces are used to recursively descend 
775           directory paths while repeatedly calling a function.
776
777           This interface is rarely used, and adds around 4.5k.  Unless you have
778           a pressing need for ftw() or nftw(), you should probably answer N.
779
780 config UCLIBC_HAS_GLOB
781         bool "Support the glob() interface"
782         default y
783         help
784
785           The glob interface is somewhat large (weighing in at about 4k).  It
786           is used fairly often, but is an option since people wanting to go for
787           absolute minimum size may wish to omit it. 
788
789           Most people will answer Y.
790
791 endmenu
792
793
794
795
796 menu "Library Installation Options"
797
798 config SHARED_LIB_LOADER_PATH
799         string "Shared library loader path"
800         depends on BUILD_UCLIBC_LDSO
801         default "$(DEVEL_PREFIX)/lib"
802         help
803           When using shared libraries, this path is the location where the
804           shared library will be invoked.  This value will be compiled into
805           every binary compiled with uClibc.
806
807           BIG FAT WARNING:
808           If you do not have a shared library loader with the correct name
809           sitting in the directory this points to, your binaries will not 
810           run.
811
812 config SYSTEM_LDSO
813         string "System shared library loader"
814         depends on HAVE_SHARED && !BUILD_UCLIBC_LDSO
815         default "/lib/ld-linux.so.2"
816         help
817           If you are using shared libraries, but do not want/have a native
818           uClibc shared library loader, please specify the name of your
819           target system's shared library loader here...
820
821           BIG FAT WARNING:
822           If you do not have a shared library loader with the correct name
823           sitting in the directory this points to, your binaries will not 
824           run.
825
826 config DEVEL_PREFIX
827         string "uClibc development environment directory"
828         default "/usr/$(TARGET_ARCH)-linux-uclibc"
829         help
830           DEVEL_PREFIX is the directory into which the uClibc development
831           environment will be installed.   The result will look something
832           like the following:
833               $(DEVEL_PREFIX)/
834                   lib/            <contains all runtime and static libs>
835                   include/        <Where all the header files go>
836           This value is used by the 'make install' Makefile target.  Since this
837           directory is compiled into the uclibc cross compiler spoofer, you
838           have to recompile uClibc if you change this value...
839
840 config SYSTEM_DEVEL_PREFIX
841         string "uClibc development environment system directory"
842         default "$(DEVEL_PREFIX)"
843         help
844           SYSTEM_DEVEL_PREFIX is the directory prefix used when installing
845           bin/arch-uclibc-gcc, bin/arch-uclibc-ld, etc.   This is only used by
846           the 'make install' target, and is not compiled into anything.  This
847           defaults to $(DEVEL_PREFIX), but makers of .rpms and .debs may want
848           to set this to "/usr" instead.
849
850 config DEVEL_TOOL_PREFIX
851         string "uClibc development environment tool directory"
852         default "$(DEVEL_PREFIX)/usr"
853         help
854           DEVEL_TOOL_PREFIX is the directory prefix used when installing
855           bin/gcc, bin/ld, etc.   This is only used by the 'make install'
856           target, and is not compiled into anything.  This defaults to
857           $(DEVEL_PREFIX)/usr, but makers of .rpms and .debs may want to
858           set this to something else.
859
860 endmenu
861
862 menu "uClibc development/debugging options"
863
864 config DODEBUG
865         bool "Build uClibc with debugging symbols"
866         default n
867         help
868           Say Y here if you wish to compile uClibc with debugging symbols.
869           This will allow you to use a debugger to examine uClibc internals
870           while applications are running.  This increases the size of the
871           library considerably and should only be used when doing development.
872           If you are doing development and want to debug uClibc, answer Y.
873
874           Otherwise, answer N.
875
876 config DOASSERTS
877         bool "Build uClibc with run-time assertion testing"
878         default n
879         help
880           Say Y here to include runtime assertion tests.
881           This enables runtime assertion testing in some code, which can
882           increase the size of the library and incur runtime overhead.
883           If you say N, then this testing will be disabled.
884
885 config SUPPORT_LD_DEBUG
886         bool "Build the shared library loader with debugging support"
887         depends on BUILD_UCLIBC_LDSO
888         default n
889         help
890           Answer Y here to enable all the extra code needed to debug the uClibc
891           native shared library loader.  The level of debugging noise that is
892           generated depends on the LD_DEBUG environment variable...  Just set
893           LD_DEBUG to something like: 'LD_DEBUG=token1,token2,..  prog' to
894           debug your application.  Diagnostic messages will then be printed to
895           the stderr.
896
897           For now these debugging tokens are available:
898             detail        provide more information for some options
899             move          display copy processing
900             symbols       display symbol table processing
901             reloc         display relocation processing; detail shows the relocation patch
902             nofixups      never fixes up jump relocations
903             bindings      displays the resolve processing (function calls); detail shows the relocation patch
904             all           Enable everything!
905
906           The additional environment variable:
907             LD_DEBUG_OUTPUT=file
908           redirects the diagnostics to an output file created using
909           the specified name and the process id as a suffix.
910
911           An excellent start is simply:
912             $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
913           or to log everything to a file named 'logfile', try this
914             $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
915
916           If you are doing development and want to debug uClibc's shared library
917           loader, answer Y.  Mere mortals answer N.
918
919 config SUPPORT_LD_DEBUG_EARLY
920         bool "Build the shared library loader with early debugging support"
921         depends on BUILD_UCLIBC_LDSO
922         default n
923         help
924           Answer Y here to if you find the uClibc shared library loader is
925           crashing or otherwise not working very early on.  This is typical
926           only when starting a new port when you haven't figured out how to
927           properly get the values for argc, argv, environ, etc.  This method
928           allows a degree of visibility into the very early shared library
929           loader initialization process.  If you are doing development and want
930           to debug the uClibc shared library loader early initialization,
931           answer Y.  Mere mortals answer N.
932
933 config UCLIBC_MALLOC_DEBUGGING
934         bool "Build malloc with debugging support"
935         depends MALLOC
936         default n
937         help
938           Answer Y here to compile extra debugging support code into malloc.
939           Malloc debugging output may then be enabled at runtime using
940           the MALLOC_DEBUG environment variable.  Because this increases
941           the size of malloc appreciably (due to strings etc), you
942           should say N unless you need to debug a malloc problem.
943
944 config UCLIBC_MJN3_ONLY
945         bool "Manuel's hidden warnings"
946         default n
947         help
948           Answer Y here to see all Manuel's personal notes, warnings, and todos.
949
950           Most people will answer N.
951
952 endmenu