diff options
Diffstat (limited to 'meta/recipes-core/glibc/glibc/0019-eglibc-Bring-Eglibc-option-group-infrastructure-to-g.patch')
-rw-r--r-- | meta/recipes-core/glibc/glibc/0019-eglibc-Bring-Eglibc-option-group-infrastructure-to-g.patch | 1436 |
1 files changed, 0 insertions, 1436 deletions
diff --git a/meta/recipes-core/glibc/glibc/0019-eglibc-Bring-Eglibc-option-group-infrastructure-to-g.patch b/meta/recipes-core/glibc/glibc/0019-eglibc-Bring-Eglibc-option-group-infrastructure-to-g.patch deleted file mode 100644 index dcb80f9c80..0000000000 --- a/meta/recipes-core/glibc/glibc/0019-eglibc-Bring-Eglibc-option-group-infrastructure-to-g.patch +++ /dev/null @@ -1,1436 +0,0 @@ -From aa7c5fe86d04584a9aed4dc40ba856c65a1ef9c4 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Wed, 18 Mar 2015 00:45:18 +0000 -Subject: [PATCH 19/27] eglibc: Bring Eglibc option group infrastructure to - glibc - -Upstream-Status: Pending - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- - EGLIBC.option-groups | 122 ++++++ - Makefile | 1 + - config.make.in | 2 + - configure | 13 + - configure.ac | 10 + - option-groups.def | 868 ++++++++++++++++++++++++++++++++++++++ - option-groups.defaults | 47 +++ - option-groups.mak | 41 ++ - options-config/Makefile | 55 +++ - options-config/config-postproc.pl | 58 +++ - options-config/config-preproc.pl | 8 + - scripts/option-groups.awk | 63 +++ - 12 files changed, 1288 insertions(+) - create mode 100644 EGLIBC.option-groups - create mode 100644 option-groups.def - create mode 100644 option-groups.defaults - create mode 100644 option-groups.mak - create mode 100644 options-config/Makefile - create mode 100644 options-config/config-postproc.pl - create mode 100644 options-config/config-preproc.pl - create mode 100644 scripts/option-groups.awk - -diff --git a/EGLIBC.option-groups b/EGLIBC.option-groups -new file mode 100644 -index 0000000..6a50b8d ---- /dev/null -+++ b/EGLIBC.option-groups -@@ -0,0 +1,122 @@ -+ -*- mode: text -*- -+ -+ The EGLIBC Component Configuration System -+ Jim Blandy <jimb@codesourcery.com> -+ -+Introduction -+ -+The GNU C library (GLIBC) provides a broad range of functionality, -+ranging from internationalization support to transcendental -+mathematical functions. Its website boasts that "nearly all known and -+useful functions from any other C library are available." This -+exhaustive approach has been one of GLIBC's strengths on desktop and -+server systems, but it has also given GLIBC a large footprint, both in -+memory and on disk, making it a challenge to use in embedded systems -+with limited resources. -+ -+The Embedded GNU C library (EGLIBC) is a variant of the GNU C library -+designed to work well on embedded systems. In particular, EGLIBC's -+component configuration system allows embedded developers to build -+customized versions of the library that include only the features -+their application uses, reducing its space requirements. -+ -+EGLIBC's component configuration system categorizes the library's -+functions into "option groups", and allows you to include or exclude -+option groups individually. Some option groups depend on others; -+EGLIBC tracks these relationships, and ensures that the selected -+configuration yields a functioning library. -+ -+ -+Consistent and Predictable Behavior -+ -+A flexible configuration system is a mixed blessing: if the options -+offered are poorly designed, it can be hard to see which choices will -+have the desired effects, and choices with obscure consequences can -+make debugging difficult. EGLIBC's configuration follows some general -+principles to reduce these risks: -+ -+- EGLIBC has a single default configuration for each target -+ architecture. -+ -+- In the default configuration, all option groups are enabled, and -+ EGLIBC is upwardly API- and ABI-compatible with GLIBC. -+ -+- As much as possible, configurations only affect what functions are -+ present, not how they behave. If the system works with an option -+ group disabled, it will still work with it enabled. -+ -+- As much as possible, configurations only select option groups --- -+ they do not describe characteristics of the target architecture. -+ -+These rules mean that you have a simple debugging strategy available -+if you suspect that your EGLIBC configuration might be the source of a -+problem: fall back to the default configuration, re-test, and then -+disable option groups one by one, until the problem reappears. -+ -+ -+The Option Groups -+ -+To see the current full list of implemented option groups, refer to the -+file 'option-groups.def' at the top of the source tree, or run -+'make menuconfig' from the top-level build directory. -+ -+The POSIX.1-2001 specification includes a suggested partition of all -+the functions in the POSIX C API into option groups: math functions -+like 'sin' and 'cos'; networking functions like 'socket' and -+'connect'; and so on. EGLIBC could use this partitioning as the basis -+for future option groups. -+ -+ -+Implementation -+ -+The EGLIBC component configuration system resembles the approach used -+by the Linux kernel to select device drivers, network protocols, and -+other features. A file named 'option-groups.config' in the top-level -+build directory contains assignments to Make variables, each of which -+enables or disables a particular option group. If the variable's -+value is set to 'y', then the option group is enabled; if it set to -+anything else, the option group is omitted. The file -+'option-groups.defaults', at the top of the source tree, establishes -+default values for all variables; all option groups are enabled by -+default. -+ -+For example, the following 'option-groups.config' would omit locale -+data, but include mathematical functions, and everything else: -+ -+ OPTION_EGLIBC_LOCALES = n -+ OPTION_EGLIBC_LIBM = y -+ -+Like the Linux kernel, EGLIBC supports a similar set of '*config' make -+targets to make it easier to create 'option-groups.config', with all -+dependencies between option groups automatically satisfied. Run -+'make help' to see the list of supported make config targets. For -+example, 'make menuconfig' will update the current config utilising a -+menu based program. -+ -+The option group names and their type (boolean, int, hex, string), help -+description, and dependencies with other option groups, are described by -+'option-groups.def' at the top of the source tree, analogous to the -+'Kconfig' files in the Linux kernel. -+ -+In general, each option group variable controls whether a given set of -+object files in EGLIBC is compiled and included in the final -+libraries, or omitted from the build. -+ -+Each subdirectory's Makefile categorizes its routines, libraries, and -+executables by option group. For example, EGLIBC's 'math/Makefile' -+places the 'libm' library in the OPTION_EGLIBC_LIBM group as follows: -+ -+ extra-libs-$(OPTION_EGLIBC_LIBM) := libm -+ -+Finally, common code in 'Makerules' cites the value of the variable -+'extra-libs-y', selecting only those libraries that belong to enabled -+option groups to be built. -+ -+ -+Current Status and Future Directions -+ -+The EGLIBC component configuration system described here is still -+under development. -+ -+We have used the system to subset some portions of EGLIBC's -+Index: libc/configure.ac -diff --git a/Makefile b/Makefile -index 658ccfa..f906391 100644 ---- a/Makefile -+++ b/Makefile -@@ -24,6 +24,7 @@ endif - - include Makeconfig - -+include options-config/Makefile - - # This is the default target; it makes everything except the tests. - .PHONY: all -diff --git a/config.make.in b/config.make.in -index a9f5696..294f8d1 100644 ---- a/config.make.in -+++ b/config.make.in -@@ -47,6 +47,8 @@ c++-sysincludes = @CXX_SYSINCLUDES@ - all-warnings = @all_warnings@ - enable-werror = @enable_werror@ - -+kconfig_tools = @KCONFIG_TOOLS@ -+ - have-z-combreloc = @libc_cv_z_combreloc@ - have-z-execstack = @libc_cv_z_execstack@ - have-Bgroup = @libc_cv_Bgroup@ -diff --git a/configure b/configure -index 7d7299a..4116404 100755 ---- a/configure -+++ b/configure -@@ -641,6 +641,7 @@ INSTALL_INFO - PERL - BASH_SHELL - libc_cv_gcc_static_libgcc -+KCONFIG_TOOLS - CXX_SYSINCLUDES - SYSINCLUDES - AUTOCONF -@@ -755,6 +756,7 @@ with_fp - with_binutils - with_selinux - with_headers -+with_kconfig - with_default_link - enable_sanity_checks - enable_shared -@@ -1459,6 +1461,9 @@ Optional Packages: - --with-selinux if building with SELinux support - --with-headers=PATH location of system headers to use (for example - /usr/src/linux/include) [default=compiler default] -+ --with-kconfig=PATH location of kconfig tools to use (from Linux kernel -+ builds) to re-use for configuring EGLIBC option -+ groups - --with-default-link do not use explicit linker scripts - --with-cpu=CPU select code for CPU variant - -@@ -3517,6 +3522,14 @@ fi - - - -+# Check whether --with-kconfig was given. -+if test "${with_kconfig+set}" = set; then -+ withval=$with_kconfig; KCONFIG_TOOLS=$withval -+else -+ KCONFIG_TOOLS='' -+fi -+ -+ - - # Check whether --with-default-link was given. - if test "${with_default_link+set}" = set; then : -diff --git a/configure.ac b/configure.ac -index a467a69..fc0ed4d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -136,6 +136,16 @@ AC_ARG_WITH([headers], - [sysheaders='']) - AC_SUBST(sysheaders) - -+AC_ARG_WITH([kconfig], -+ AC_HELP_STRING([--with-kconfig=PATH], -+ [location of kconfig tools to use (from Linux -+ kernel builds) to re-use for configuring EGLIBC -+ option groups]), -+ [KCONFIG_TOOLS=$withval], -+ [KCONFIG_TOOLS='']) -+AC_SUBST(KCONFIG_TOOLS) -+ -+ - AC_SUBST(use_default_link) - AC_ARG_WITH([default-link], - AC_HELP_STRING([--with-default-link], -diff --git a/option-groups.def b/option-groups.def -new file mode 100644 -index 0000000..6aebd94 ---- /dev/null -+++ b/option-groups.def -@@ -0,0 +1,868 @@ -+# This file documents the option groups EGLIBC currently supports, in -+# a format akin to the Linux Kconfig system's. The syntax may change -+# over time. -+# -+# An entry of the form: -+# -+# config GROUP_NAME -+# bool "one-line explanation of what this option group controls" -+# help -+# Multi-line help explaining the option group's meaning in -+# some detail, terminated by indentation level. -+# -+# defines an option group whose variable is GROUP_NAME, with -+# meaningful values 'y' (enabled) and 'n' (disabled). The -+# documentation is formatted to be consumed by some sort of -+# interactive configuration interface, but EGLIBC doesn't have such an -+# interface yet. -+# -+# An option may have a 'depends on' line, indicating which other options -+# must also be enabled if this option is. At present, EGLIBC doesn't -+# check that these dependencies are satisfied. -+# -+# Option group variables get their default values from the file -+# 'option-groups.defaults', in the top directory of the EGLIBC source -+# tree. By default, all EGLIBC option groups are enabled --- their -+# variables are set to 'y'. -+# -+# After including 'option-groups.defaults', the EGLIBC make machinery -+# includes the file 'option-groups.config' from the top of the build -+# tree, if it is present. Developers can place assignments to option -+# group variables in that file to override the defaults. For example, -+# to disable an option group, place a line of the form: -+# -+# OPTION_GROUP_NAME = n -+# -+# in 'option-groups.config' at the top of your build tree. To -+# explicitly enable an option group, you may also write: -+# -+# OPTION_GROUP_NAME = y -+# -+# although this simply reestablishes the value already set by -+# 'option-groups.defaults'. -+ -+config EGLIBC_ADVANCED_INET6 -+ bool "IPv6 Advanced Sockets API support (RFC3542)" -+ depends on EGLIBC_INET -+ help -+ This option group includes the functions specified by RFC 3542, -+ "Advanced Sockets Application Program Interface (API) for -+ IPv6". -+ -+ This option group includes the following functions: -+ -+ inet6_opt_append -+ inet6_opt_find -+ inet6_opt_finish -+ inet6_opt_get_val -+ inet6_opt_init -+ inet6_option_alloc -+ inet6_option_append -+ inet6_option_find -+ inet6_option_init -+ inet6_option_next -+ inet6_option_space -+ inet6_opt_next -+ inet6_opt_set_val -+ inet6_rth_add -+ inet6_rth_getaddr -+ inet6_rth_init -+ inet6_rth_reverse -+ inet6_rth_segments -+ inet6_rth_space -+ -+config EGLIBC_BACKTRACE -+ bool "Functions for producing backtraces" -+ help -+ This option group includes functions for producing a list of -+ the function calls that are currently active in a thread, from -+ within the thread itself. These functions are often used -+ within signal handlers, to produce diagnostic output. -+ -+ This option group includes the following functions: -+ -+ backtrace -+ backtrace_symbols -+ backtrace_symbols_fd -+ -+config EGLIBC_BIG_MACROS -+ bool "Use extensive inline code" -+ help -+ This option group specifies whether certain pieces of code -+ should be inlined to achieve maximum speed. If this option -+ group is not selected, function calls will be used instead, -+ hence reducing the library footprint. -+ -+config EGLIBC_BSD -+ bool "BSD-specific functions, and their compatibility stubs" -+ help -+ This option group includes functions specific to BSD kernels. -+ A number of these functions have stub versions that are also -+ included in libraries built for non-BSD systems for -+ compatibility. -+ -+ This option group includes the following functions: -+ -+ chflags -+ fchflags -+ lchmod -+ revoke -+ setlogin -+ -+config EGLIBC_CXX_TESTS -+ bool "Tests that link against the standard C++ library." -+ depends on POSIX_WIDE_CHAR_DEVICE_IO && EGLIBC_LIBM -+ help -+ This option group does not include any C library functions; -+ instead, it controls which EGLIBC tests an ordinary 'make -+ tests' runs. With this group disabled, tests that would -+ normally link against the standard C++ library are not -+ run. -+ -+ The standard C++ library depends on the math library 'libm' and -+ the wide character I/O functions included in EGLIBC. So those -+ option groups must be enabled if this test is enabled. -+ -+config EGLIBC_CATGETS -+ bool "Functions for accessing message catalogs" -+ depends on EGLIBC_LOCALE_CODE -+ help -+ This option group includes functions for accessing message -+ catalogs: catopen, catclose, and catgets. -+ -+ This option group depends on the EGLIBC_LOCALE_CODE -+ option group. -+ -+config EGLIBC_CHARSETS -+ bool "iconv/gconv character set conversion libraries" -+ help -+ This option group includes support for character sets other -+ than ASCII (ANSI_X3.4-1968) and Unicode and ISO-10646 in their -+ various encodings. This affects both the character sets -+ supported by the wide and multibyte character functions, and -+ those supported by the 'iconv' functions. -+ -+ With this option group disabled, EGLIBC supports only the -+ following character sets: -+ -+ ANSI_X3.4 - ASCII -+ ANSI_X3.4-1968 -+ ANSI_X3.4-1986 -+ ASCII -+ CP367 -+ CSASCII -+ IBM367 -+ ISO-IR-6 -+ ISO646-US -+ ISO_646.IRV:1991 -+ OSF00010020 -+ US -+ US-ASCII -+ -+ 10646-1:1993 - ISO 10646, in big-endian UCS4 form -+ 10646-1:1993/UCS4 -+ CSUCS4 -+ ISO-10646 -+ ISO-10646/UCS4 -+ OSF00010104 -+ OSF00010105 -+ OSF00010106 -+ UCS-4 -+ UCS-4BE -+ UCS4 -+ -+ UCS-4LE - ISO 10646, in little-endian UCS4 form -+ -+ ISO-10646/UTF-8 - ISO 10646, in UTF-8 form -+ ISO-10646/UTF8 -+ ISO-IR-193 -+ OSF05010001 -+ UTF-8 -+ UTF8 -+ -+ ISO-10646/UCS2 - ISO 10646, in target-endian UCS2 form -+ OSF00010100 -+ OSF00010101 -+ OSF00010102 -+ UCS-2 -+ UCS2 -+ -+ UCS-2BE - ISO 10646, in big-endian UCS2 form -+ UNICODEBIG -+ -+ UCS-2LE - ISO 10646, in little-endian UCS2 form -+ UNICODELITTLE -+ -+ WCHAR_T - EGLIBC's internal form (target-endian, -+ 32-bit ISO 10646) -+ -+config EGLIBC_CRYPT -+ bool "Encryption library" -+ help -+ This option group includes the `libcrypt' library which -+ provides functions for one-way encryption. Supported -+ encryption algorithms include MD5, SHA-256, SHA-512 and DES. -+ -+config EGLIBC_CRYPT_UFC -+ bool "Ultra fast `crypt' implementation" -+ depends on EGLIBC_CRYPT -+ help -+ This option group provides ultra fast DES-based implementation of -+ the `crypt' function. When this option group is disabled, -+ (a) the library will not provide the setkey[_r] and encrypt[_r] -+ functions and (b) the crypt[_r] function will return NULL and set the -+ errno to ENOSYS if /salt/ passed does not correspond to either MD5, -+ SHA-256 or SHA-512 algorithm. -+ -+config EGLIBC_DB_ALIASES -+ bool "Functions for accessing the mail aliases database" -+ help -+ This option group includues functions for looking up mail -+ aliases in '/etc/aliases' or using nsswitch. It includes the -+ following functions: -+ -+ endaliasent -+ getaliasbyname -+ getaliasbyname_r -+ getaliasent -+ getaliasent_r -+ setaliasent -+ -+ When this option group is disabled, the NSS service libraries -+ also lack support for querying their mail alias tables. -+ -+config EGLIBC_ENVZ -+ bool "Functions for handling envz-style environment vectors." -+ help -+ This option group contains functions for creating and operating -+ on envz vectors. An "envz vector" is a vector of strings in a -+ contiguous block of memory, where each element is a name-value -+ pair, and elements are separated from their neighbors by null -+ characters. -+ -+ This option group includes the following functions: -+ -+ envz_add envz_merge -+ envz_entry envz_remove -+ envz_get envz_strip -+ -+config EGLIBC_FCVT -+ bool "Functions for converting floating-point numbers to strings" -+ help -+ This option group includes functions for converting -+ floating-point numbers to strings. -+ -+ This option group includes the following functions: -+ -+ ecvt qecvt -+ ecvt_r qecvt_r -+ fcvt qfcvt -+ fcvt_r qfcvt_r -+ gcvt qgcvt -+ -+config EGLIBC_FMTMSG -+ bool "Functions for formatting messages" -+ help -+ This option group includes the following functions: -+ -+ addseverity fmtmsg -+ -+config EGLIBC_FSTAB -+ bool "Access functions for 'fstab'" -+ help -+ This option group includes functions for reading the mount -+ point specification table, '/etc/fstab'. These functions are -+ not included in the POSIX standard, which provides the -+ 'getmntent' family of functions instead. -+ -+ This option group includes the following functions: -+ -+ endfsent getfsspec -+ getfsent setfsent -+ getfsfile -+ -+config EGLIBC_FTRAVERSE -+ bool "Functions for traversing file hierarchies" -+ help -+ This option group includes functions for traversing file -+ UNIX file hierachies. -+ -+ This option group includes the following functions: -+ -+ fts_open ftw -+ fts_read nftw -+ fts_children ftw64 -+ fts_set nftw64 -+ fts_close -+ -+config EGLIBC_GETLOGIN -+ bool "The getlogin function" -+ depends on EGLIBC_UTMP -+ help -+ This function group includes the 'getlogin' and 'getlogin_r' -+ functions, which return the user name associated by the login -+ activity with the current process's controlling terminal. -+ -+ With this option group disabled, the 'glob' function will not -+ fall back on 'getlogin' to find the user's login name for tilde -+ expansion when the 'HOME' environment variable is not set. -+ -+config EGLIBC_IDN -+ bool "International domain names support" -+ help -+ This option group includes the `libcidn' library which -+ provides support for international domain names. -+ -+config EGLIBC_INET -+ bool "Networking support" -+ help -+ This option group includes networking-specific functions and -+ data. With EGLIBC_INET disabled, the EGLIBC -+ installation and API changes as follows: -+ -+ - The following libraries are not installed: -+ -+ libnsl -+ libnss_compat -+ libnss_dns -+ libnss_hesiod -+ libnss_nis -+ libnss_nisplus -+ libresolv -+ -+ - The following functions and variables are omitted from libc: -+ -+ authdes_create hstrerror svc_fdset -+ authdes_getucred htonl svc_getreq -+ authdes_pk_create htons svc_getreq_common -+ authnone_create if_freenameindex svc_getreq_poll -+ authunix_create if_indextoname svc_getreqset -+ authunix_create_default if_nameindex svc_max_pollfd -+ bindresvport if_nametoindex svc_pollfd -+ callrpc in6addr_any svcraw_create -+ cbc_crypt in6addr_loopback svc_register -+ clnt_broadcast inet6_opt_append svc_run -+ clnt_create inet6_opt_find svc_sendreply -+ clnt_pcreateerror inet6_opt_finish svctcp_create -+ clnt_perrno inet6_opt_get_val svcudp_bufcreate -+ clnt_perror inet6_opt_init svcudp_create -+ clntraw_create inet6_option_alloc svcudp_enablecache -+ clnt_spcreateerror inet6_option_append svcunix_create -+ clnt_sperrno inet6_option_find svcunixfd_create -+ clnt_sperror inet6_option_init svc_unregister -+ clnttcp_create inet6_option_next user2netname -+ clntudp_bufcreate inet6_option_space xdecrypt -+ clntudp_create inet6_opt_next xdr_accepted_reply -+ clntunix_create inet6_opt_set_val xdr_array -+ des_setparity inet6_rth_add xdr_authdes_cred -+ ecb_crypt inet6_rth_getaddr xdr_authdes_verf -+ endaliasent inet6_rth_init xdr_authunix_parms -+ endhostent inet6_rth_reverse xdr_bool -+ endnetent inet6_rth_segments xdr_bytes -+ endnetgrent inet6_rth_space xdr_callhdr -+ endprotoent inet_addr xdr_callmsg -+ endrpcent inet_aton xdr_char -+ endservent inet_lnaof xdr_cryptkeyarg -+ ether_aton inet_makeaddr xdr_cryptkeyarg2 -+ ether_aton_r inet_netof xdr_cryptkeyres -+ ether_hostton inet_network xdr_des_block -+ ether_line inet_nsap_addr xdr_double -+ ether_ntoa inet_nsap_ntoa xdr_enum -+ ether_ntoa_r inet_ntoa xdr_float -+ ether_ntohost inet_ntop xdr_free -+ freeaddrinfo inet_pton xdr_getcredres -+ freeifaddrs innetgr xdr_hyper -+ gai_strerror iruserok xdr_int -+ getaddrinfo iruserok_af xdr_int16_t -+ getaliasbyname key_decryptsession xdr_int32_t -+ getaliasbyname_r key_decryptsession_pk xdr_int64_t -+ getaliasent key_encryptsession xdr_int8_t -+ getaliasent_r key_encryptsession_pk xdr_keybuf -+ gethostbyaddr key_gendes xdr_key_netstarg -+ gethostbyaddr_r key_get_conv xdr_key_netstres -+ gethostbyname key_secretkey_is_set xdr_keystatus -+ gethostbyname2 key_setnet xdr_long -+ gethostbyname2_r key_setsecret xdr_longlong_t -+ gethostbyname_r netname2host xdrmem_create -+ gethostent netname2user xdr_netnamestr -+ gethostent_r ntohl xdr_netobj -+ getifaddrs ntohs xdr_opaque -+ getipv4sourcefilter passwd2des xdr_opaque_auth -+ get_myaddress pmap_getmaps xdr_pmap -+ getnameinfo pmap_getport xdr_pmaplist -+ getnetbyaddr pmap_rmtcall xdr_pointer -+ getnetbyaddr_r pmap_set xdr_quad_t -+ getnetbyname pmap_unset xdrrec_create -+ getnetbyname_r rcmd xdrrec_endofrecord -+ getnetent rcmd_af xdrrec_eof -+ getnetent_r registerrpc xdrrec_skiprecord -+ getnetgrent res_init xdr_reference -+ getnetgrent_r rexec xdr_rejected_reply -+ getnetname rexec_af xdr_replymsg -+ getprotobyname rexecoptions xdr_rmtcall_args -+ getprotobyname_r rpc_createerr xdr_rmtcallres -+ getprotobynumber rresvport xdr_short -+ getprotobynumber_r rresvport_af xdr_sizeof -+ getprotoent rtime xdrstdio_create -+ getprotoent_r ruserok xdr_string -+ getpublickey ruserok_af xdr_u_char -+ getrpcbyname ruserpass xdr_u_hyper -+ getrpcbyname_r setaliasent xdr_u_int -+ getrpcbynumber sethostent xdr_uint16_t -+ getrpcbynumber_r setipv4sourcefilter xdr_uint32_t -+ getrpcent setnetent xdr_uint64_t -+ getrpcent_r setnetgrent xdr_uint8_t -+ getrpcport setprotoent xdr_u_long -+ getsecretkey setrpcent xdr_u_longlong_t -+ getservbyname setservent xdr_union -+ getservbyname_r setsourcefilter xdr_unixcred -+ getservbyport svcauthdes_stats xdr_u_quad_t -+ getservbyport_r svcerr_auth xdr_u_short -+ getservent svcerr_decode xdr_vector -+ getservent_r svcerr_noproc xdr_void -+ getsourcefilter svcerr_noprog xdr_wrapstring -+ h_errlist svcerr_progvers xencrypt -+ h_errno svcerr_systemerr xprt_register -+ herror svcerr_weakauth xprt_unregister -+ h_nerr svc_exit -+ host2netname svcfd_create -+ -+ - The rpcgen, nscd, and rpcinfo commands are not installed. -+ -+ - The 'rpc' file (a text file listing RPC services) is not installed. -+ -+ Socket-related system calls do not fall in this option group, -+ because many are also used for other inter-process -+ communication mechanisms. For example, the 'syslog' routines -+ use Unix-domain sockets to communicate with the syslog daemon; -+ syslog is valuable in non-networked contexts. -+ -+config EGLIBC_INET_ANL -+ bool "Asynchronous name lookup" -+ depends on EGLIBC_INET -+ help -+ This option group includes the `libanl' library which -+ provides support for asynchronous name lookup. -+ -+config EGLIBC_LIBM -+ bool "libm (math library)" -+ help -+ This option group includes the 'libm' library, containing -+ mathematical functions. If this option group is omitted, then -+ an EGLIBC installation does not include shared or unshared versions -+ of the math library. -+ -+ Note that this does not remove all floating-point related -+ functionality from EGLIBC; for example, 'printf' and 'scanf' -+ can still print and read floating-point values with this option -+ group disabled. -+ -+ Note that the ISO Standard C++ library 'libstdc++' depends on -+ EGLIBC's math library 'libm'. If you disable this option -+ group, you will not be able to build 'libstdc++' against the -+ resulting EGLIBC installation. -+ -+config EGLIBC_LOCALES -+ bool "Locale definitions" -+ help -+ This option group includes all locale definitions other than -+ that for the "C" locale. If this option group is omitted, then -+ only the "C" locale is supported. -+ -+ -+config EGLIBC_LOCALE_CODE -+ bool "Locale functions" -+ depends on POSIX_C_LANG_WIDE_CHAR -+ help -+ This option group includes locale support functions, programs, -+ and libraries. With EGLIBC_LOCALE_CODE disabled, -+ EGLIBC supports only the 'C' locale (also known as 'POSIX'), -+ and ignores the settings of the 'LANG' and 'LC_*' environment -+ variables. -+ -+ With EGLIBC_LOCALE_CODE disabled, the following -+ functions are omitted from libc: -+ -+ duplocale localeconv nl_langinfo rpmatch strfmon_l -+ freelocale newlocale nl_langinfo_l strfmon uselocale -+ -+ Furthermore, only the LC_CTYPE and LC_TIME categories of the -+ standard "C" locale are available. -+ -+ The EGLIBC_CATGETS option group depends on this option group. -+ -+ -+config EGLIBC_MEMUSAGE -+ bool "Memory profiling library" -+ help -+ This option group includes the `libmemusage' library and -+ the `memusage' and `memusagestat' utilities. -+ These components provide memory profiling functions. -+ -+config EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE -+ int "Memory profiling library buffer size" -+ depends on EGLIBC_MEMUSAGE -+ default "32768" -+ help -+ Libmemusage library buffers the profiling data in memory -+ before writing it out to disk. By default, the library -+ allocates 1.5M buffer, which can be substantial for some -+ systems. EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE option -+ allows to change the default buffer size. It specifies -+ the number of entries the buffer should have. -+ On most architectures one buffer entry amounts to 48 bytes, -+ so setting this option to the value of 512 will reduce the size of -+ the memory buffer to 24K. -+ -+config EGLIBC_NIS -+ bool "Support for NIS, NIS+, and the special 'compat' services." -+ depends on EGLIBC_INET && EGLIBC_SUNRPC -+ help -+ This option group includes the NIS, NIS+, and 'compat' Name -+ Service Switch service libraries. When it is disabled, those -+ services libraries are not installed; you should remove any -+ references to them from your 'nsswitch.conf' file. -+ -+ This option group depends on the EGLIBC_INET option -+ group; you must enable that to enable this option group. -+ -+config EGLIBC_NSSWITCH -+ bool "Name service switch (nsswitch) support" -+ help -+ This option group includes support for the 'nsswitch' facility. -+ With this option group enabled, all EGLIBC functions for -+ accessing various system databases (passwords and groups; -+ networking; aliases; public keys; and so on) consult the -+ '/etc/nsswitch.conf' configuration file to decide how to handle -+ queries. -+ -+ With this option group disabled, EGLIBC uses a fixed list of -+ services to satisfy queries on each database, as requested by -+ configuration files specified when EGLIBC is built. Your -+ 'option-groups.config' file must set the following two -+ variables: -+ -+config EGLIBC_NSSWITCH_FIXED_CONFIG -+ string "Nsswitch fixed config filename" -+ depends on !EGLIBC_NSSWITCH -+ default "" -+ help -+ Set this to the name of a file whose contents observe the -+ same syntax as an ordinary '/etc/nsswitch.conf' file. The -+ EGLIBC build process parses this file just as EGLIBC would -+ at run time if EGLIBC_NSSWITCH were enabled, and -+ produces a C library that uses the nsswitch service -+ libraries to search for database entries as this file -+ specifies, instead of consulting '/etc/nsswitch.conf' at run -+ time. -+ -+ This should be an absolute filename. The EGLIBC build -+ process may use it from several different working -+ directories. It may include references to Makefile -+ variables like 'common-objpfx' (the top of the build tree, -+ with a trailing slash), or '..' (the top of the source tree, -+ with a trailing slash). -+ -+ The EGLIBC source tree includes a sample configuration file -+ named 'nss/fixed-nsswitch.conf'; for simple configurations, -+ you will probably want to delete references to databases not -+ needed on your system. -+ -+config EGLIBC_NSSWITCH_FIXED_FUNCTIONS -+ string "Nsswitch fixed functions filename" -+ depends on !EGLIBC_NSSWITCH -+ default "" -+ help -+ The EGLIBC build process uses this file to decide which -+ functions to make available from which service libraries. -+ The file 'nss/fixed-nsswitch.functions' serves as a sample -+ configuration file for this setting, and explains its syntax -+ and meaning in more detail. -+ -+ This should be an absolute file name. The EGLIBC build -+ process may use it from several different working -+ directories. It may include references to Makefile -+ variables like 'common-objpfx' (the top of the build tree, -+ with a trailing slash), or '..' (the top of the source tree, -+ with a trailing slash). -+ -+ Be sure to mention each function in each service you wish to -+ use. If you do not mention a service's function here, the -+ EGLIBC database access functions will not find it, even if -+ it is listed in the EGLIBC_NSSWITCH_FIXED_CONFIG -+ file. -+ -+ In this arrangement, EGLIBC will not use the 'dlopen' and -+ 'dlsym' functions to find database access functions. Instead, -+ libc hard-codes references to the service libraries' database -+ access functions. You must explicitly link your program -+ against the name service libraries (those whose names start -+ with 'libnss_', in the sysroot's '/lib' directory) whose -+ functions you intend to use. This arrangement helps -+ system-wide static analysis tools decide which functions a -+ system actually uses. -+ -+ Note that some nsswitch service libraries require other option -+ groups to be enabled; for example, the EGLIBC_INET -+ option group must be enabled to use the 'libnss_dns.so.2' -+ service library, which uses the Domain Name System network -+ protocol to answer queries. -+ -+config EGLIBC_RCMD -+ bool "Support for 'rcmd' and related library functions" -+ depends on EGLIBC_INET -+ help -+ This option group includes functions for running commands on -+ remote machines via the 'rsh' protocol, and doing authentication -+ related to those functions. This also includes functions that -+ use the 'rexec' protocol. -+ -+ This option group includes the following functions: -+ -+ rcmd ruserok -+ rcmd_af ruserok_af -+ rexec iruserok -+ rexec_af iruserok_af -+ rresvport ruserpass -+ rresvport_af -+ -+config EGLIBC_RTLD_DEBUG -+ bool "Runtime linker debug print outs" -+ help -+ This option group enables debug output of the runtime linker -+ which is activated via LD_DEBUG and LD_TRACE_PRELINKING -+ environment variables. Disabling this option group yields -+ a smaller runtime linker binary. -+ BEWARE: Disabling this option group is likely to break -+ the `ldd' utility which may also be used by the prelinker. -+ In particular, the `--unused' ldd option will not work correctly. -+ -+config EGLIBC_SPAWN -+ bool "Support for POSIX posix_spawn functions" -+ help -+ This option group includes the POSIX functions for executing -+ programs in child processes without using 'fork' or 'vfork'. -+ -+ This option group includes the following functions: -+ -+ posix_spawn -+ posix_spawnattr_destroy -+ posix_spawnattr_getflags -+ posix_spawnattr_getpgroup -+ posix_spawnattr_getschedparam -+ posix_spawnattr_getschedpolicy -+ posix_spawnattr_getsigdefault -+ posix_spawnattr_getsigmask -+ posix_spawnattr_init -+ posix_spawnattr_setflags -+ posix_spawnattr_setpgroup -+ posix_spawnattr_setschedparam -+ posix_spawnattr_setschedpolicy -+ posix_spawnattr_setsigdefault -+ posix_spawnattr_setsigmask -+ posix_spawn_file_actions_addclose -+ posix_spawn_file_actions_adddup2 -+ posix_spawn_file_actions_addopen -+ posix_spawn_file_actions_destroy -+ posix_spawn_file_actions_init -+ posix_spawnp -+ -+ This option group also provides the ability for the iconv, -+ localedef, and locale programs to operate transparently on -+ compressed charset definitions. When this option group is -+ disabled, those programs will only operate on uncompressed -+ charmap files. -+ -+config EGLIBC_STREAMS -+ bool "Support for accessing STREAMS." -+ help -+ This option group includes functions for reading and writing -+ messages to and from STREAMS. The STREAMS interface provides a -+ uniform mechanism for implementing networking services and other -+ character-based I/O. (STREAMS are not to be confused with -+ <stdio.h> FILE objects, also called 'streams'.) -+ -+ This option group includes the following functions: -+ -+ getmsg putpmsg -+ getpmsg fattach -+ isastream fdetach -+ putmsg -+ -+config EGLIBC_SUNRPC -+ bool "Support for the Sun 'RPC' protocol." -+ depends on EGLIBC_INET -+ help -+ This option group includes support for the Sun RPC protocols, -+ including the 'rpcgen' and 'rpcinfo' programs. -+ -+config EGLIBC_UTMP -+ bool "Older access functions for 'utmp' login records" -+ help -+ This option group includes the older 'utent' family of -+ functions for accessing user login records in the 'utmp' file. -+ POSIX omits these functions in favor of the 'utxent' family, -+ and they are obsolete on systems other than Linux. -+ -+ This option group includes the following functions: -+ -+ endutent -+ getutent -+ getutent_r -+ getutid -+ getutid_r -+ getutline -+ getutline_r -+ logwtmp -+ pututline -+ setutent -+ updwtmp -+ utmpname -+ -+ This option group includes the following libraries: -+ -+ libutil.so (and libutil.a) -+ -+config EGLIBC_UTMPX -+ bool "POSIX access functions for 'utmp' login records" -+ depends on EGLIBC_UTMP -+ help -+ This option group includes the POSIX functions for reading and -+ writing user login records in the 'utmp' file (usually -+ '/var/run/utmp'). The POSIX functions operate on 'struct -+ utmpx' structures, as opposed to the family of older 'utent' -+ functions, which operate on 'struct utmp' structures. -+ -+ This option group includes the following functions: -+ -+ endutxent -+ getutmp -+ getutmpx -+ getutxent -+ getutxid -+ getutxline -+ pututxline -+ setutxent -+ updwtmpx -+ utmpxname -+ -+config EGLIBC_WORDEXP -+ bool "Shell-style word expansion" -+ help -+ This option group includes the 'wordexp' function for -+ performing word expansion in the manner of the shell, and the -+ accompanying 'wordfree' function. -+ -+config POSIX_C_LANG_WIDE_CHAR -+ bool "ISO C library wide character functions, excluding I/O" -+ help -+ This option group includes the functions defined by the ISO C -+ standard for working with wide and multibyte characters in -+ memory. Functions for reading and writing wide and multibyte -+ characters from and to files call in the -+ POSIX_WIDE_CHAR_DEVICE_IO option group. -+ -+ This option group includes the following functions: -+ -+ btowc mbsinit wcscspn wcstoll -+ iswalnum mbsrtowcs wcsftime wcstombs -+ iswalpha mbstowcs wcslen wcstoul -+ iswblank mbtowc wcsncat wcstoull -+ iswcntrl swprintf wcsncmp wcstoumax -+ iswctype swscanf wcsncpy wcsxfrm -+ iswdigit towctrans wcspbrk wctob -+ iswgraph towlower wcsrchr wctomb -+ iswlower towupper wcsrtombs wctrans -+ iswprint vswprintf wcsspn wctype -+ iswpunct vswscanf wcsstr wmemchr -+ iswspace wcrtomb wcstod wmemcmp -+ iswupper wcscat wcstof wmemcpy -+ iswxdigit wcschr wcstoimax wmemmove -+ mblen wcscmp wcstok wmemset -+ mbrlen wcscoll wcstol -+ mbrtowc wcscpy wcstold -+ -+config POSIX_REGEXP -+ bool "Regular expressions" -+ help -+ This option group includes the POSIX regular expression -+ functions, and the associated non-POSIX extensions and -+ compatibility functions. -+ -+ With POSIX_REGEXP disabled, the following functions are -+ omitted from libc: -+ -+ re_comp re_max_failures regcomp -+ re_compile_fastmap re_search regerror -+ re_compile_pattern re_search_2 regexec -+ re_exec re_set_registers regfree -+ re_match re_set_syntax rpmatch -+ re_match_2 re_syntax_options -+ -+ Furthermore, the compatibility regexp interface defined in the -+ <regexp.h> header file, 'compile', 'step', and 'advance', is -+ omitted. -+ -+config POSIX_REGEXP_GLIBC -+ bool "Regular expressions from GLIBC" -+ depends on POSIX_REGEXP -+ help -+ This option group specifies which regular expression -+ library to use. The choice is between regex -+ implementation from GLIBC and regex implementation from -+ libiberty. The GLIBC variant is fully POSIX conformant and -+ optimized for speed; regex from libiberty is more than twice -+ as small while still is enough for most practical purposes. -+ -+config POSIX_WIDE_CHAR_DEVICE_IO -+ bool "Input and output functions for wide characters" -+ depends on POSIX_C_LANG_WIDE_CHAR -+ help -+ This option group includes functions for reading and writing -+ wide characters to and from <stdio.h> streams. -+ -+ This option group includes the following functions: -+ -+ fgetwc fwprintf putwchar vwscanf -+ fgetws fwscanf ungetwc wprintf -+ fputwc getwc vfwprintf wscanf -+ fputws getwchar vfwscanf -+ fwide putwc vwprintf -+ -+ This option group further includes the following unlocked -+ variants of the above functions: -+ -+ fgetwc_unlocked getwc_unlocked -+ fgetws_unlocked getwchar_unlocked -+ fputwc_unlocked putwc_unlocked -+ fputws_unlocked putwchar_unlocked -+ -+ Note that the GNU standard C++ library, 'libstdc++.so', uses -+ some of these functions; you will not be able to link or run -+ C++ programs if you disable this option group. -+ -+ This option group also affects the behavior of the following -+ functions: -+ -+ fdopen -+ fopen -+ fopen64 -+ freopen -+ freopen64 -+ -+ These functions all take an OPENTYPE parameter which may -+ contain a string of the form ",ccs=CHARSET", indicating that -+ the underlying file uses the character set named CHARSET. -+ This produces a wide-oriented stream, which is only useful -+ when the functions included in this option group are present. -+ If the user attempts to open a file specifying a character set -+ in the OPENTYPE parameter, and EGLIBC was built with this -+ option group disabled, the function returns NULL, and sets -+ errno to EINVAL. -+ -+ -+# This helps Emacs users browse this file using the page motion commands -+# and commands like 'pages-directory'. -+# Local Variables: -+# page-delimiter: "^config\\s-" -+# End: -diff --git a/option-groups.defaults b/option-groups.defaults -new file mode 100644 -index 0000000..8141201 ---- /dev/null -+++ b/option-groups.defaults -@@ -0,0 +1,47 @@ -+# This file sets default values for all option group variables -+# mentioned in option-groups.def; see that file for a description of -+# each option group. -+# -+# Subdirectory makefiles include this file before including the user's -+# settings from option-groups.config at the top of the build tree; -+# that file need only refer to those options whose default settings -+# are to be changed. -+# -+# By default, all option groups are enabled. -+OPTION_EGLIBC_ADVANCED_INET6 = y -+OPTION_EGLIBC_BACKTRACE = y -+OPTION_EGLIBC_BIG_MACROS = y -+OPTION_EGLIBC_BSD = y -+OPTION_EGLIBC_CXX_TESTS = y -+OPTION_EGLIBC_CATGETS = y -+OPTION_EGLIBC_CHARSETS = y -+OPTION_EGLIBC_CRYPT = y -+OPTION_EGLIBC_CRYPT_UFC = y -+OPTION_EGLIBC_DB_ALIASES = y -+OPTION_EGLIBC_ENVZ = y -+OPTION_EGLIBC_FCVT = y -+OPTION_EGLIBC_FMTMSG = y -+OPTION_EGLIBC_FSTAB = y -+OPTION_EGLIBC_FTRAVERSE = y -+OPTION_EGLIBC_GETLOGIN = y -+OPTION_EGLIBC_IDN = y -+OPTION_EGLIBC_INET = y -+OPTION_EGLIBC_INET_ANL = y -+OPTION_EGLIBC_LIBM = y -+OPTION_EGLIBC_LOCALES = y -+OPTION_EGLIBC_LOCALE_CODE = y -+OPTION_EGLIBC_MEMUSAGE = y -+OPTION_EGLIBC_NIS = y -+OPTION_EGLIBC_NSSWITCH = y -+OPTION_EGLIBC_RCMD = y -+OPTION_EGLIBC_RTLD_DEBUG = y -+OPTION_EGLIBC_SPAWN = y -+OPTION_EGLIBC_STREAMS = y -+OPTION_EGLIBC_SUNRPC = y -+OPTION_EGLIBC_UTMP = y -+OPTION_EGLIBC_UTMPX = y -+OPTION_EGLIBC_WORDEXP = y -+OPTION_POSIX_C_LANG_WIDE_CHAR = y -+OPTION_POSIX_REGEXP = y -+OPTION_POSIX_REGEXP_GLIBC = y -+OPTION_POSIX_WIDE_CHAR_DEVICE_IO = y -diff --git a/option-groups.mak b/option-groups.mak -new file mode 100644 -index 0000000..f83e0c1 ---- /dev/null -+++ b/option-groups.mak -@@ -0,0 +1,41 @@ -+# Setup file for subdirectory Makefiles that define EGLIBC option groups. -+ -+# EGLIBC shouldn't need to override this. However, the -+# cross-build-friendly localedef includes this makefile to get option -+# group variable definitions; it uses a single build tree for all the -+# multilibs, and needs to be able to specify a different option group -+# configuration file for each multilib. -+option_group_config_file ?= $(objdir)/option-groups.config -+ -+# Read the default settings for all options. -+# We're included before ../Rules, so we can't assume $(..) is set. -+include $(firstword $(..) ../)option-groups.defaults -+ -+# Read the developer's option group selections, overriding the -+# defaults from option-groups.defaults. -+-include $(option_group_config_file) -+ -+# $(call option-disabled, VAR) is 'y' if VAR is not 'y', or 'n' otherwise. -+# VAR should be a variable name, not a variable reference; this is -+# less general, but more terse for the intended use. -+# You can use it to add a file to a list if an option group is -+# disabled, like this: -+# routines-$(call option-disabled, OPTION_POSIX_C_LANG_WIDE_CHAR) += ... -+define option-disabled -+$(firstword $(subst y,n,$(filter y,$($(strip $(1))))) y) -+endef -+ -+# Establish 'routines-y', etc. as simply-expanded variables. -+aux-y := -+extra-libs-others-y := -+extra-libs-y := -+extra-objs-y := -+install-bin-y := -+install-others-y := -+install-sbin-y := -+others-y := -+others-pie-y := -+routines-y := -+test-srcs-y := -+tests-y := -+xtests-y := -diff --git a/options-config/Makefile b/options-config/Makefile -new file mode 100644 -index 0000000..db00708 ---- /dev/null -+++ b/options-config/Makefile -@@ -0,0 +1,55 @@ -+# =========================================================================== -+# EGLIBC option-groups configuration targets -+# These targets are included from top-level makefile -+ -+ifneq ($(kconfig_tools),) -+ifneq (no,$(PERL)) -+ -+ocdir := options-config -+ -+OconfigDefaults := option-groups.defaults -+OconfigDefaults_tmp := $(common-objpfx).tmp.defconfig -+OconfigDef := option-groups.def -+Oconfig := $(common-objpfx)option-groups.config -+Oconfig_tmp := $(common-objpfx).tmp.config -+ -+conf := $(kconfig_tools)/conf -+mconf := $(kconfig_tools)/mconf -+ -+preproc := $(PERL) $(ocdir)/config-preproc.pl -+postproc := $(PERL) $(ocdir)/config-postproc.pl -+ -+PHONY += defconfig config menuconfig -+ -+defconfig: $(conf) $(OconfigDefaults) $(OconfigDef) -+ rm -f $(OconfigDefaults_tmp) -+ rm -f $(Oconfig_tmp) -+ $(preproc) $(OconfigDefaults) > $(OconfigDefaults_tmp) -+ KCONFIG_CONFIG=$(Oconfig_tmp) $< --defconfig=$(OconfigDefaults_tmp) \ -+ $(OconfigDef) -+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig) -+ rm $(Oconfig_tmp) -+ rm $(OconfigDefaults_tmp) -+ -+config: $(conf) $(OconfigDefaults) $(OconfigDef) -+ rm -f $(Oconfig_tmp) -+ $(preproc) $(wildcard $(Oconfig)) > $(Oconfig_tmp) -+ KCONFIG_CONFIG=$(Oconfig_tmp) $< --oldaskconfig $(OconfigDef) -+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig) -+ rm $(Oconfig_tmp) -+ -+menuconfig: $(mconf) $(OconfigDefaults) $(OconfigDef) -+ rm -f $(Oconfig_tmp) -+ $(preproc) $(wildcard $(Oconfig)) > $(Oconfig_tmp) -+ KCONFIG_CONFIG=$(Oconfig_tmp) $< $(OconfigDef) -+ $(postproc) $(OconfigDefaults) $(Oconfig_tmp) > $(Oconfig) -+ rm $(Oconfig_tmp) -+ -+# Help text used by make help -+help: -+ @echo ' defconfig - New config with default from default config' -+ @echo ' config - Update current config utilising a line-oriented program' -+ @echo ' menuconfig - Update current config utilising a menu based program' -+ -+endif -+endif -diff --git a/options-config/config-postproc.pl b/options-config/config-postproc.pl -new file mode 100644 -index 0000000..4dd1c63 ---- /dev/null -+++ b/options-config/config-postproc.pl -@@ -0,0 +1,58 @@ -+#!/usr/bin/perl -+ -+$usage = "usage: $0 <default config file> <config file>\n"; -+ -+die "$usage" unless @ARGV; -+$defaults = shift @ARGV; -+die "$usage" unless @ARGV; -+die "Could not open $ARGV[0]" unless -T $ARGV[0]; -+ -+sub yank { -+ @option = grep(!($_ =~ /$_[0]\s*=/), @option); -+} -+ -+open(DEFAULTS, $defaults) || die "Could not open $defaults\n"; -+ -+# get the full list of available options using the default config file -+$i = 0; -+while (<DEFAULTS>) { -+ if (/^\s*OPTION_(\w+\s*=.*$)/) { -+ $option[$i++] = $1; -+ } -+} -+ -+# now go through the config file, making the necessary changes -+while (<>) { -+ if (/Linux Kernel Configuration/) { -+ # change title -+ s/Linux Kernel/Option Groups/; -+ print; -+ } elsif (/^\s*CONFIG_(\w+)\s*=/) { -+ # this is an explicit option set line, change CONFIG_ to OPTION_ -+ # before printing and remove this option from option list -+ $opt = $1; -+ yank($opt); -+ s/CONFIG_/OPTION_/g; -+ print; -+ } elsif (/^\s*#\s+CONFIG_(\w+) is not set/) { -+ # this is a comment line for an unset boolean option, change CONFIG_ -+ # to OPTION_, remove this option from option list, and convert to -+ # explicit OPTION_FOO=n -+ $opt = $1; -+ yank($opt); -+ s/CONFIG_/OPTION_/g; -+ print "OPTION_$opt=n\n"; -+ } else { -+ print; -+ } -+} -+ -+# any boolean options left in @options, are options that were not mentioned in -+# the config file, and implicitly that means the option must be set =n, -+# so do that here. -+foreach $opt (@option) { -+ if ($opt =~ /=\s*[yn]/) { -+ $opt =~ s/=\s*[yn]/=n/; -+ print "OPTION_$opt\n"; -+ } -+} -diff --git a/options-config/config-preproc.pl b/options-config/config-preproc.pl -new file mode 100644 -index 0000000..b83bb85 ---- /dev/null -+++ b/options-config/config-preproc.pl -@@ -0,0 +1,8 @@ -+#!/usr/bin/perl -+ -+if (@ARGV) { -+ while (<>) { -+ s/OPTION_/CONFIG_/g; -+ print; -+ } -+} -diff --git a/scripts/option-groups.awk b/scripts/option-groups.awk -new file mode 100644 -index 0000000..533af0c ---- /dev/null -+++ b/scripts/option-groups.awk -@@ -0,0 +1,63 @@ -+# option-groups.awk --- generate option group header file -+# Given input files containing makefile-style assignments to variables, -+# print out a header file that #defines an appropriate preprocessor -+# symbol for each variable left set to 'y'. -+ -+BEGIN { FS="=" } -+ -+# Trim spaces. -+{ gsub (/[[:blank:]]/, "") } -+ -+# Skip comments. -+/^#/ { next } -+ -+# Process assignments. -+NF == 2 { -+ vars[$1] = $2 -+} -+ -+# Print final values. -+END { -+ print "/* This file is automatically generated by scripts/option-groups.awk" -+ print " in the EGLIBC source tree." -+ print "" -+ print " It defines macros that indicate which EGLIBC option groups were" -+ print " configured in 'option-groups.config' when this C library was" -+ print " built. For each option group named OPTION_foo, it #defines" -+ print " __OPTION_foo to be 1 if the group is enabled, or #defines that" -+ print " symbol to be 0 if the group is disabled. */" -+ print "" -+ print "#ifndef __GNU_OPTION_GROUPS_H" -+ print "#define __GNU_OPTION_GROUPS_H" -+ print "" -+ -+ # Produce a sorted list of variable names. -+ i=0 -+ for (var in vars) -+ names[i++] = var -+ n = asort (names) -+ -+ for (i = 1; i <= n; i++) -+ { -+ var = names[i] -+ if (var ~ /^OPTION_/) -+ { -+ if (vars[var] == "y") -+ print "#define __" var " 1" -+ else if (vars[var] == "n") -+ print "#define __" var " 0" -+ else if (vars[var] ~ /^[0-9]+/ || -+ vars[var] ~ /^0x[0-9aAbBcCdDeEfF]+/ || -+ vars[var] ~ /^\"/) -+ print "#define __" var " " vars[var] -+ else -+ print "/* #undef __" var " */" -+ # Ignore variables that don't have boolean, int, hex, or -+ # string values. Ideally, this would be driven by the types -+ # given in option-groups.def. -+ } -+ } -+ -+ print "" -+ print "#endif /* __GNU_OPTION_GROUPS_H */" -+} --- -2.1.4 - |