Generate the choice menu for C libraries, the same way arch and kernels are generated.

/trunk/kconfig/kconfig.mk          |   10     8     2     0 ++++++--
 /trunk/scripts/build/libc/glibc.sh |    2     1     1     0 +-
 /trunk/config/libc/glibc.in        |   22     6    16     0 +++++-------------
 /trunk/config/libc/uClibc.in       |    7     6     1     0 +++++-
 /trunk/config/libc/eglibc.in       |   12    11     1     0 +++++++++-
 /trunk/config/libc.in              |   53     4    49     0 +++-----------------------------------------
 6 files changed, 36 insertions(+), 70 deletions(-)
This commit is contained in:
Yann E. MORIN" 2008-10-13 11:23:51 +00:00
parent f9838b0853
commit d2fe51a715
7 changed files with 36 additions and 70 deletions

View File

@ -2,10 +2,7 @@
config LIBC
string
default "none" if BARE_METAL
default "glibc" if LIBC_GLIBC
default "eglibc" if LIBC_EGLIBC
default "uClibc" if LIBC_UCLIBC
default "none" if BARE_METAL
if ! BARE_METAL
@ -25,37 +22,7 @@ config LIBC_VERSION
So if you want to be able to re-build your toolchain later, you will
have to save your C library tarball by yourself.
choice
bool
prompt "C-library to use:"
default LIBC_GLIBC
config LIBC_GLIBC
bool
prompt "glibc"
select LIBC_SUPPORT_NPTL
select LIBC_SUPPORT_LINUXTHREADS
config LIBC_EGLIBC
bool
prompt "eglibc (EXPERIMENTAL)"
select LIBC_SUPPORT_NPTL
select LIBC_SUPPORT_LINUXTHREADS
depends on EXPERIMENTAL
help
EGLIBC (Embedded GLIBC) is a variant of the standard GNU GLIBC
that is designed to work well on embedded systems. EGLIBC strives
to be source and binary compatible with GLIBC. Its goals include
a reduced footprint, configurable components, and improved
cross-compilation support. EGLIBC also includes some embedded ports
(such as e500/spe) that are normally separate add-ons of GLIBC.
config LIBC_UCLIBC
bool
prompt "uClibc"
select LIBC_SUPPORT_LINUXTHREADS
endchoice
source config.gen/libc.in
comment "Common C library options"
@ -96,23 +63,11 @@ config THREADS_NONE
endchoice
if LIBC_GLIBC
source config/libc/glibc.in
endif
if LIBC_EGLIBC
source config/libc/eglibc.in
endif
# Hack: mconf does not allow to include a file multiple times,
# so include glibc and eglibc common options from here, rather
# than from each config files.
if LIBC_GLIBC || LIBC_EGLIBC
source config/libc/glibc-eglibc-common.in
endif
if LIBC_UCLIBC
source config/libc/uClibc.in
if LIBC_glibc || LIBC_eglibc
source config/libc/glibc-eglibc.in-common
endif
endmenu

View File

@ -1,6 +1,16 @@
# EXPERIMENTAL
# eglibc options
comment "eglibc specific options"
config LIBC_eglibc
select LIBC_SUPPORT_NPTL
select LIBC_SUPPORT_LINUXTHREADS
help
EGLIBC (Embedded GLIBC) is a variant of the standard GNU GLIBC
that is designed to work well on embedded systems. EGLIBC strives
to be source and binary compatible with GLIBC. Its goals include
a reduced footprint, configurable components, and improved
cross-compilation support. EGLIBC also includes some embedded ports
(such as e500/spe) that are normally separate add-ons of GLIBC.
choice
bool

View File

@ -1,6 +1,11 @@
# glibc options
comment "glibc specific options"
config LIBC_glibc
select LIBC_SUPPORT_NPTL
select LIBC_SUPPORT_LINUXTHREADS
help
The de-facto standard for Linux distributions.
Feature-rich, but large... Most usefull for desktop-like systems.
choice
bool
@ -60,18 +65,3 @@ config LIBC_VERSION
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!
# Please note: This is not used for now (no sh support).
config LIBC_GLIBC_CONFIGPARMS
string
# prompt "Extra config params (READ HELP)"
default "" if ARCH != "sh3" && ARCH != "sh4"
default "no-z-defs=yes" if ARCH = "sh3" || ARCH = "sh4"
help
Some architectures need to set options in the file configparms.
This is the case for sh3/4, which really need to set configparms as of
gcc-3.4/glibc-2.3.2.
Unless you are building a toolchain for sh3/4, you should leave that empty.
Note: this is awkward, doesn't work well if you need more than one
line in configparms

View File

@ -1,6 +1,11 @@
# uClibc options
comment "uClibc specific options"
config LIBC_uClibc
select LIBC_SUPPORT_LINUXTHREADS
help
The de-facto standard for embeded linux systems.
Highly configurable, thus as feature-rich as you need, without
compromising for size.
choice
bool

View File

@ -20,13 +20,15 @@ endif
# Build a list of all config files
ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
KERNEL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
KERNEL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)
LIBC_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/libc/*.in)
DEBUG_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/debug/*.in)
TOOL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
TOOL_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/tools/*.in)
STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \
$(CT_TOP_DIR)/config.gen/kernel.in \
$(CT_TOP_DIR)/config.gen/libc.in \
$(CT_TOP_DIR)/config.gen/tools.in \
$(CT_TOP_DIR)/config.gen/debug.in
@ -35,6 +37,7 @@ CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
# Build list of items
ARCHS = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
LIBCS = $(patsubst $(CT_LIB_DIR)/config/libc/%.in,%,$(LIBC_CONFIG_FILES))
DEBUGS = $(patsubst $(CT_LIB_DIR)/config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
TOOLS = $(patsubst $(CT_LIB_DIR)/config/tools/%.in,%,$(TOOL_CONFIG_FILES))
@ -96,6 +99,9 @@ $(CT_TOP_DIR)/config.gen/arch.in: $(ARCH_CONFIG_FILES)
$(CT_TOP_DIR)/config.gen/kernel.in: $(KERNEL_CONFIG_FILES)
$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),Target OS,KERNEL,config/kernel,$(KERNELS))
$(CT_TOP_DIR)/config.gen/libc.in: $(LIBC_CONFIG_FILES)
$(call build_gen_choice_in,$(patsubst $(CT_TOP_DIR)/%,%,$@),C library,LIBC,config/libc,$(LIBCS))
# Function build_gen_menu_in:
# $1 : destination file
# $2 : name of entries family (eg. Tools, Debug...)

View File

@ -282,7 +282,7 @@ do_libc_start_files() {
# Super-H really needs to set configparms as of gcc-3.4/glibc-2.3.2
# note: this is awkward, doesn't work well if you need more than one
# line in configparms
echo ${CT_LIBC_GLIBC_CONFIGPARMS} > configparms
[ "${CT_ARCH_sh}" = "y" ] && echo "no-z-defs=yes" > configparms
echo "libc_cv_forced_unwind=yes" > config.cache
echo "libc_cv_c_cleanup=yes" >> config.cache