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

