From c527fd1f14c27855a37f2e8ac5346ce8d940ced2 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Thu, 16 Oct 2014 03:05:19 +0200 Subject: initial commit for Enea Linux 4.0-140929 Migrated from the internal git server on the daisy-enea-point-release branch Signed-off-by: Tudor Florea --- .../0001-eglibc-menuconfig-support.patch | 912 +++++++++++++++++++++ 1 file changed, 912 insertions(+) create mode 100644 meta/recipes-core/eglibc/eglibc-2.19/0001-eglibc-menuconfig-support.patch (limited to 'meta/recipes-core/eglibc/eglibc-2.19/0001-eglibc-menuconfig-support.patch') diff --git a/meta/recipes-core/eglibc/eglibc-2.19/0001-eglibc-menuconfig-support.patch b/meta/recipes-core/eglibc/eglibc-2.19/0001-eglibc-menuconfig-support.patch new file mode 100644 index 0000000000..4559a110fb --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.19/0001-eglibc-menuconfig-support.patch @@ -0,0 +1,912 @@ +Pulled from +http://www.eglibc.org/archives/patches/msg01042.html + +Upstream-Status: Pending +Signed-off-by: Khem + +Hi, + +This patch adds 'make menuconfig' support to EGLIBC. + + +EGLIBC can re-use the Linux kernel kconfig host tools ('conf' and 'mconf') unmodified, by passing appropriate environment variables and with some pre- and post-processing on the input/output config files. + +There are three new make targets supported, which all are defined in the new libc/options-config/Makefile, which is included by the top-level libc/Makefile: + +- 'make defconfig'. This passes 'libc/option-groups.defaults' to 'conf' as a default config, and outputs 'option-groups.config' to the top-level build directory, which will be the same as the default config. + +- 'make config'. This is the same line-oriented interface as in the Linux kernel. Input and output is 'option-groups.config' in the top-level build directory. + +- 'make menuconfig'. This is the same menu-based interface as in the Linux kernel. Input and output is 'option-groups.config' in the top-level build directory. + + +Pre-Processing: + + +The Linux kernel kconfig tools expect a prefix of "CONFIG_" on all config option names, but EGLIBC expects a prefix of "OPTION_". The pre-processing script, libc/options-config/config-preproc.pl, simply replaces "CONFIG_ with "OPTION_" in the given config file. The libc/options-config/Makefile passes the script output to a temporary config file, which is then passed to 'conf' or 'mconf'. + +Post-Processing (libc/options-config/config-postproc.pl): + + +- Disabled options are output as a comment line of the form "# CONFIG_FOO is not set". This needs to be changed to an explicit "CONFIG_FOO=n" in order to be compatible with 'option-groups.awk' which generates the option-groups.h header. + +- "CONFIG_" prefix is changed back to "OPTION_". + + +- The kconfig tools will not output anything for options that depend on a parent option, when the parent option is disabled. This implicit disable must be converted to an explicit "CONFIG_FOO=n" in order to be compatible with the way EGLIBC overrides the default option settings in 'libc/option-groups.defaults' with those in 'option-groups.config'. + + +A new configure option, '--with-kconfig=', tells EGLIBC where to find the pre-built 'conf' and 'mconf' host tools from Linux kernel builds. + +libc/EGLIBC.cross-building is updated to include instructions for using '--with-kconfig' for the final EGLIBC build, and shows how and when to run 'make *config'. + +libc/EGLIBC.option-groups is updated to include new information on the menuconfig support. + +Thanks, + +attached is the updated patch to address above issues. + +Steve + +-- +Steve Longerbeam | Senior Embedded Engineer, ESD Services +Mentor Embedded(tm) | 46871 Bayside Parkway, Fremont, CA 94538 +P 510.354.5838 | M 408.410.2735 +Nucleus(r) | Linux(r) | Android(tm) | Services | UI | Multi-OS + + +Index: libc/EGLIBC.cross-building +=================================================================== +--- libc.orig/EGLIBC.cross-building ++++ libc/EGLIBC.cross-building +@@ -243,9 +243,29 @@ full EGLIBC build: + > $src/libc/configure \ + > --prefix=/usr \ + > --with-headers=$sysroot/usr/include \ ++ > --with-kconfig=$obj/linux/scripts/kconfig \ + > --build=$build \ + > --host=$target \ + > --disable-profile --without-gd --without-cvs --enable-add-ons ++ ++Note the additional '--with-kconfig' option. This tells EGLIBC where to ++find the host config tools used by the kernel 'make config' and 'make ++menuconfig'. These tools can be re-used by EGLIBC for its own 'make ++*config' support, which will create 'option-groups.config' for you. ++But first make sure those tools have been built by running some ++dummy 'make *config' calls in the kernel directory: ++ ++ $ cd $obj/linux ++ $ PATH=$tools/bin:$PATH make config \ ++ > ARCH=$linux_arch CROSS_COMPILE=$target- \ ++ $ PATH=$tools/bin:$PATH make menuconfig \ ++ > ARCH=$linux_arch CROSS_COMPILE=$target- \ ++ ++Now we can configure and build the full EGLIBC: ++ ++ $ cd $obj/eglibc ++ $ PATH=$tools/bin:$PATH make defconfig ++ $ PATH=$tools/bin:$PATH make menuconfig + $ PATH=$tools/bin:$PATH make + $ PATH=$tools/bin:$PATH make install install_root=$sysroot + +Index: libc/configure.ac +=================================================================== +--- libc.orig/configure.ac ++++ libc/configure.ac +@@ -127,6 +127,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], +Index: libc/config.make.in +=================================================================== +--- libc.orig/config.make.in ++++ libc/config.make.in +@@ -45,6 +45,8 @@ sysincludes = @SYSINCLUDES@ + c++-sysincludes = @CXX_SYSINCLUDES@ + all-warnings = @all_warnings@ + ++kconfig_tools = @KCONFIG_TOOLS@ ++ + have-z-combreloc = @libc_cv_z_combreloc@ + have-z-execstack = @libc_cv_z_execstack@ + have-Bgroup = @libc_cv_Bgroup@ +Index: libc/options-config/config-postproc.pl +=================================================================== +--- /dev/null ++++ libc/options-config/config-postproc.pl +@@ -0,0 +1,54 @@ ++#!/usr/bin/perl ++ ++$usage = "usage: $0 \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($_ ne $_[0], @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 () { ++ 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, 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 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) { ++ print "OPTION_$opt=n\n"; ++} +Index: libc/options-config/config-preproc.pl +=================================================================== +--- /dev/null ++++ libc/options-config/config-preproc.pl +@@ -0,0 +1,8 @@ ++#!/usr/bin/perl ++ ++if (@ARGV) { ++ while (<>) { ++ s/OPTION_/CONFIG_/g; ++ print; ++ } ++} +Index: libc/options-config/Makefile +=================================================================== +--- /dev/null ++++ libc/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 +Index: libc/option-groups.def +=================================================================== +--- libc.orig/option-groups.def ++++ libc/option-groups.def +@@ -4,19 +4,19 @@ + # + # An entry of the form: + # +-# config OPTION_GROUP_NAME ++# 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 OPTION_GROUP_NAME, with ++# 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' line, indicating which other options ++# 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. + # +@@ -41,9 +41,9 @@ + # although this simply reestablishes the value already set by + # 'option-groups.defaults'. + +-config OPTION_EGLIBC_ADVANCED_INET6 ++config EGLIBC_ADVANCED_INET6 + bool "IPv6 Advanced Sockets API support (RFC3542)" +- depends OPTION_EGLIBC_INET ++ depends on EGLIBC_INET + help + This option group includes the functions specified by RFC 3542, + "Advanced Sockets Application Program Interface (API) for +@@ -71,7 +71,7 @@ config OPTION_EGLIBC_ADVANCED_INET6 + inet6_rth_segments + inet6_rth_space + +-config OPTION_EGLIBC_BACKTRACE ++config EGLIBC_BACKTRACE + bool "Functions for producing backtraces" + help + This option group includes functions for producing a list of +@@ -85,7 +85,7 @@ config OPTION_EGLIBC_BACKTRACE + backtrace_symbols + backtrace_symbols_fd + +-config OPTION_EGLIBC_BIG_MACROS ++config EGLIBC_BIG_MACROS + bool "Use extensive inline code" + help + This option group specifies whether certain pieces of code +@@ -93,7 +93,7 @@ config OPTION_EGLIBC_BIG_MACROS + group is not selected, function calls will be used instead, + hence reducing the library footprint. + +-config OPTION_EGLIBC_BSD ++config EGLIBC_BSD + bool "BSD-specific functions, and their compatibility stubs" + help + This option group includes functions specific to BSD kernels. +@@ -109,10 +109,9 @@ config OPTION_EGLIBC_BSD + revoke + setlogin + +-config OPTION_EGLIBC_CXX_TESTS ++config EGLIBC_CXX_TESTS + bool "Tests that link against the standard C++ library." +- depends OPTION_POSIX_WIDE_CHAR_DEVICE_IO +- depends OPTION_EGLIBC_LIBM ++ 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 +@@ -121,23 +120,22 @@ config OPTION_EGLIBC_CXX_TESTS + run. + + The standard C++ library depends on the math library 'libm' and +- the wide character I/O functions included in EGLIBC. If those +- option groups are disabled, this test must also be disabled. ++ the wide character I/O functions included in EGLIBC. So those ++ option groups must be enabled if this test is enabled. + +-config OPTION_EGLIBC_CATGETS ++config EGLIBC_CATGETS + bool "Functions for accessing message catalogs" +- depends OPTION_EGLIBC_LOCALE_CODE ++ 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 OPTION_EGLIBC_LOCALE_CODE +- option group; if you disable that, you must also disable this. ++ This option group depends on the EGLIBC_LOCALE_CODE ++ option group. + +-config OPTION_EGLIBC_CHARSETS ++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 +@@ -198,16 +196,16 @@ config OPTION_EGLIBC_CHARSETS + WCHAR_T - EGLIBC's internal form (target-endian, + 32-bit ISO 10646) + +-config OPTION_EGLIBC_CRYPT ++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 OPTION_EGLIBC_CRYPT_UFC ++config EGLIBC_CRYPT_UFC + bool "Ultra fast `crypt' implementation" +- depends OPTION_EGLIBC_CRYPT ++ depends on EGLIBC_CRYPT + help + This option group provides ultra fast DES-based implementation of + the `crypt' function. When this option group is disabled, +@@ -216,7 +214,7 @@ config OPTION_EGLIBC_CRYPT_UFC + errno to ENOSYS if /salt/ passed does not correspond to either MD5, + SHA-256 or SHA-512 algorithm. + +-config OPTION_EGLIBC_DB_ALIASES ++config EGLIBC_DB_ALIASES + bool "Functions for accessing the mail aliases database" + help + This option group includues functions for looking up mail +@@ -233,7 +231,7 @@ config OPTION_EGLIBC_DB_ALIASES + When this option group is disabled, the NSS service libraries + also lack support for querying their mail alias tables. + +-config OPTION_EGLIBC_ENVZ ++config EGLIBC_ENVZ + bool "Functions for handling envz-style environment vectors." + help + This option group contains functions for creating and operating +@@ -248,7 +246,7 @@ config OPTION_EGLIBC_ENVZ + envz_entry envz_remove + envz_get envz_strip + +-config OPTION_EGLIBC_FCVT ++config EGLIBC_FCVT + bool "Functions for converting floating-point numbers to strings" + help + This option group includes functions for converting +@@ -262,14 +260,14 @@ config OPTION_EGLIBC_FCVT + fcvt_r qfcvt_r + gcvt qgcvt + +-config OPTION_EGLIBC_FMTMSG ++config EGLIBC_FMTMSG + bool "Functions for formatting messages" + help + This option group includes the following functions: + + addseverity fmtmsg + +-config OPTION_EGLIBC_FSTAB ++config EGLIBC_FSTAB + bool "Access functions for 'fstab'" + help + This option group includes functions for reading the mount +@@ -283,7 +281,7 @@ config OPTION_EGLIBC_FSTAB + getfsent setfsent + getfsfile + +-config OPTION_EGLIBC_FTRAVERSE ++config EGLIBC_FTRAVERSE + bool "Functions for traversing file hierarchies" + help + This option group includes functions for traversing file +@@ -297,9 +295,9 @@ config OPTION_EGLIBC_FTRAVERSE + fts_set nftw64 + fts_close + +-config OPTION_EGLIBC_GETLOGIN ++config EGLIBC_GETLOGIN + bool "The getlogin function" +- depends OPTION_EGLIBC_UTMP ++ depends on EGLIBC_UTMP + help + This function group includes the 'getlogin' and 'getlogin_r' + functions, which return the user name associated by the login +@@ -309,17 +307,17 @@ config OPTION_EGLIBC_GETLOGIN + fall back on 'getlogin' to find the user's login name for tilde + expansion when the 'HOME' environment variable is not set. + +-config OPTION_EGLIBC_IDN ++config EGLIBC_IDN + bool "International domain names support" + help + This option group includes the `libcidn' library which + provides support for international domain names. + +-config OPTION_EGLIBC_INET ++config EGLIBC_INET + bool "Networking support" + help + This option group includes networking-specific functions and +- data. With OPTION_EGLIBC_INET disabled, the EGLIBC ++ data. With EGLIBC_INET disabled, the EGLIBC + installation and API changes as follows: + + - The following libraries are not installed: +@@ -439,14 +437,14 @@ config OPTION_EGLIBC_INET + use Unix-domain sockets to communicate with the syslog daemon; + syslog is valuable in non-networked contexts. + +-config OPTION_EGLIBC_INET_ANL ++config EGLIBC_INET_ANL + bool "Asynchronous name lookup" +- depends OPTION_EGLIBC_INET ++ depends on EGLIBC_INET + help + This option group includes the `libanl' library which + provides support for asynchronous name lookup. + +-config OPTION_EGLIBC_LIBM ++config EGLIBC_LIBM + bool "libm (math library)" + help + This option group includes the 'libm' library, containing +@@ -464,7 +462,7 @@ config OPTION_EGLIBC_LIBM + group, you will not be able to build 'libstdc++' against the + resulting EGLIBC installation. + +-config OPTION_EGLIBC_LOCALES ++config EGLIBC_LOCALES + bool "Locale definitions" + help + This option group includes all locale definitions other than +@@ -472,17 +470,17 @@ config OPTION_EGLIBC_LOCALES + only the "C" locale is supported. + + +-config OPTION_EGLIBC_LOCALE_CODE ++config EGLIBC_LOCALE_CODE + bool "Locale functions" +- depends OPTION_POSIX_C_LANG_WIDE_CHAR ++ depends on POSIX_C_LANG_WIDE_CHAR + help + This option group includes locale support functions, programs, +- and libraries. With OPTION_EGLIBC_LOCALE_FUNCTIONS disabled, ++ 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 OPTION_EGLIBC_LOCALE_CODE disabled, the following ++ With EGLIBC_LOCALE_CODE disabled, the following + functions are omitted from libc: + + duplocale localeconv nl_langinfo rpmatch strfmon_l +@@ -491,46 +489,43 @@ config OPTION_EGLIBC_LOCALE_CODE + Furthermore, only the LC_CTYPE and LC_TIME categories of the + standard "C" locale are available. + +- The OPTION_EGLIBC_CATGETS option group depends on this option +- group; if you disable OPTION_EGLIBC_LOCALE_CODE, you must also +- disable OPTION_EGLIBC_CATGETS. ++ The EGLIBC_CATGETS option group depends on this option group. ++ + +-config OPTION_EGLIBC_MEMUSAGE ++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. + +- OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE ++ EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE + + 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. OPTION_EGLIBC_MEMUSAGE_DEFAULT_BUFFER_SIZE option ++ 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 OPTION_EGLIBC_NIS ++config EGLIBC_NIS + bool "Support for NIS, NIS+, and the special 'compat' services." +- depends OPTION_EGLIBC_INET +- depends OPTION_EGLIBC_SUNRPC ++ 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 OPTION_EGLIBC_INET option ++ This option group depends on the EGLIBC_INET option + group; you must enable that to enable this option group. + +-config OPTION_EGLIBC_NSSWITCH ++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; +@@ -544,12 +539,12 @@ config OPTION_EGLIBC_NSSWITCH + 'option-groups.config' file must set the following two + variables: + +- OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG ++ EGLIBC_NSSWITCH_FIXED_CONFIG + + 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 OPTION_EGLIBC_NSSWITCH were enabled, and ++ 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 +@@ -567,7 +562,7 @@ config OPTION_EGLIBC_NSSWITCH + you will probably want to delete references to databases not + needed on your system. + +- OPTION_EGLIBC_NSSWITCH_FIXED_FUNCTIONS ++ EGLIBC_NSSWITCH_FIXED_FUNCTIONS + + The EGLIBC build process uses this file to decide which + functions to make available from which service libraries. +@@ -585,28 +580,28 @@ config OPTION_EGLIBC_NSSWITCH + 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 OPTION_EGLIBC_NSSWITCH_FIXED_CONFIG ++ 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 OPTION_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. ++ 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 OPTION_EGLIBC_RCMD ++config EGLIBC_RCMD + bool "Support for 'rcmd' and related library functions" +- depends OPTION_EGLIBC_INET ++ depends on EGLIBC_INET + help + This option group includes functions for running commands on + remote machines via the 'rsh' protocol, and doing authentication +@@ -622,7 +617,7 @@ config OPTION_EGLIBC_RCMD + rresvport ruserpass + rresvport_af + +-config OPTION_EGLIBC_RTLD_DEBUG ++config EGLIBC_RTLD_DEBUG + bool "Runtime linker debug print outs" + help + This option group enables debug output of the runtime linker +@@ -633,7 +628,7 @@ config OPTION_EGLIBC_RTLD_DEBUG + the `ldd' utility which may also be used by the prelinker. + In particular, the `--unused' ldd option will not work correctly. + +-config OPTION_EGLIBC_SPAWN ++config EGLIBC_SPAWN + bool "Support for POSIX posix_spawn functions" + help + This option group includes the POSIX functions for executing +@@ -669,7 +664,7 @@ config OPTION_EGLIBC_SPAWN + disabled, those programs will only operate on uncompressed + charmap files. + +-config OPTION_EGLIBC_STREAMS ++config EGLIBC_STREAMS + bool "Support for accessing STREAMS." + help + This option group includes functions for reading and writing +@@ -685,14 +680,14 @@ config OPTION_EGLIBC_STREAMS + isastream fdetach + putmsg + +-config OPTION_EGLIBC_SUNRPC ++config EGLIBC_SUNRPC + bool "Support for the Sun 'RPC' protocol." +- depends OPTION_EGLIBC_INET ++ depends on EGLIBC_INET + help + This option group includes support for the Sun RPC protocols, + including the 'rpcgen' and 'rpcinfo' programs. + +-config OPTION_EGLIBC_UTMP ++config EGLIBC_UTMP + bool "Older access functions for 'utmp' login records" + help + This option group includes the older 'utent' family of +@@ -719,9 +714,9 @@ config OPTION_EGLIBC_UTMP + + libutil.so (and libutil.a) + +-config OPTION_EGLIBC_UTMPX ++config EGLIBC_UTMPX + bool "POSIX access functions for 'utmp' login records" +- depends OPTION_EGLIBC_UTMP ++ depends on EGLIBC_UTMP + help + This option group includes the POSIX functions for reading and + writing user login records in the 'utmp' file (usually +@@ -742,21 +737,21 @@ config OPTION_EGLIBC_UTMPX + updwtmpx + utmpxname + +-config OPTION_EGLIBC_WORDEXP ++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 OPTION_POSIX_C_LANG_WIDE_CHAR ++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 +- OPTION_POSIX_WIDE_CHAR_DEVICE_IO option group. ++ POSIX_WIDE_CHAR_DEVICE_IO option group. + + This option group includes the following functions: + +@@ -778,14 +773,14 @@ config OPTION_POSIX_C_LANG_WIDE_CHAR + mbrlen wcscoll wcstol + mbrtowc wcscpy wcstold + +-config OPTION_POSIX_REGEXP ++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 OPTION_POSIX_REGEXP disabled, the following functions are ++ With POSIX_REGEXP disabled, the following functions are + omitted from libc: + + re_comp re_max_failures regcomp +@@ -799,9 +794,9 @@ config OPTION_POSIX_REGEXP + header file, 'compile', 'step', and 'advance', is + omitted. + +-config OPTION_POSIX_REGEXP_GLIBC ++config POSIX_REGEXP_GLIBC + bool "Regular expressions from GLIBC" +- depends OPTION_POSIX_REGEXP ++ depends on POSIX_REGEXP + help + This option group specifies which regular expression + library to use. The choice is between regex +@@ -810,9 +805,9 @@ config OPTION_POSIX_REGEXP_GLIBC + optimized for speed; regex from libiberty is more than twice + as small while still is enough for most practical purposes. + +-config OPTION_POSIX_WIDE_CHAR_DEVICE_IO ++config POSIX_WIDE_CHAR_DEVICE_IO + bool "Input and output functions for wide characters" +- depends OPTION_POSIX_C_LANG_WIDE_CHAR ++ depends on POSIX_C_LANG_WIDE_CHAR + help + This option group includes functions for reading and writing + wide characters to and from streams. +Index: libc/Makefile +=================================================================== +--- libc.orig/Makefile ++++ libc/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 +Index: libc/configure +=================================================================== +--- libc.orig/configure ++++ libc/configure +@@ -621,6 +621,7 @@ KSH + libc_cv_have_bash2 + BASH_SHELL + libc_cv_gcc_static_libgcc ++KCONFIG_TOOLS + CXX_SYSINCLUDES + SYSINCLUDES + AUTOCONF +@@ -734,6 +735,7 @@ with_fp + with_binutils + with_selinux + with_headers ++with_kconfig + with_default_link + enable_sanity_checks + enable_shared +@@ -1438,6 +1440,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 + +@@ -3401,6 +3406,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 : +Index: libc/EGLIBC.option-groups +=================================================================== +--- libc.orig/EGLIBC.option-groups ++++ libc/EGLIBC.option-groups +@@ -56,33 +56,9 @@ disable option groups one by one, until + + The Option Groups + +-EGLIBC currently implements the following option groups, also +-documented in the file 'option-groups.def': +- +-OPTION_EGLIBC_CATGETS +- This option group includes functions for accessing message +- catalogs: catopen, catclose, and catgets. +- +-OPTION_EGLIBC_LOCALES +- This option group includes all locale definitions other than +- those for the "C" locale. If this option group is omitted, then +- only the "C" locale is supported. +- +-OPTION_EGLIBC_LIBM +- 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. ++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 +@@ -110,6 +86,18 @@ data, but include mathematical functions + 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. +@@ -132,22 +120,3 @@ under development. + + We have used the system to subset some portions of EGLIBC's + functionality. It needs to be extended to cover more of the library. +- +-At the moment, EGLIBC performs no sanity checks on the contents of +-'option-groups.config'; if an option group's name is mistyped, the +-option group is silently included in the build. EGLIBC should check +-that all variables set in 'option-groups.config' are proper option +-group names, and that their values are appropriate. +- +-Some portions of EGLIBC depend on others; for example, the Sun Remote +-Procedure Call functions in 'sunrpc' depend on the networking +-functions in 'inet'. The sanity checking described above should check +-that the selection configuration satisfies dependencies within EGLIBC, +-and produce a legible error message if it does not. At the moment, +-inconsistent configurations produce link errors late in the build +-process. +- +-The Linux kernel's configuration system provides interactive +-interfaces for creating and modifying configuration files (which also +-perform the sanity checking and dependency tracking described above). +-EGLIBC should provide similar interfaces. -- cgit v1.2.3-54-g00ecf