summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/libc.in53
-rw-r--r--config/libc/eglibc.in12
-rw-r--r--config/libc/glibc-eglibc.in-common (renamed from config/libc/glibc-eglibc-common.in)0
-rw-r--r--config/libc/glibc.in22
-rw-r--r--config/libc/uClibc.in7
-rw-r--r--kconfig/kconfig.mk10
-rw-r--r--scripts/build/libc/glibc.sh2
7 files changed, 36 insertions, 70 deletions
diff --git a/config/libc.in b/config/libc.in
index 27228d1..a373990 100644
--- a/config/libc.in
+++ b/config/libc.in
@@ -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
diff --git a/config/libc/eglibc.in b/config/libc/eglibc.in
index bf0e4ed..bcda338 100644
--- a/config/libc/eglibc.in
+++ b/config/libc/eglibc.in
@@ -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
diff --git a/config/libc/glibc-eglibc-common.in b/config/libc/glibc-eglibc.in-common
index 61becfb..61becfb 100644
--- a/config/libc/glibc-eglibc-common.in
+++ b/config/libc/glibc-eglibc.in-common
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 250a56b..12c3192 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -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
diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in
index a84fae2..c3784f9 100644
--- a/config/libc/uClibc.in
+++ b/config/libc/uClibc.in
@@ -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
diff --git a/kconfig/kconfig.mk b/kconfig/kconfig.mk
index cdd8c87..f20f7e7 100644
--- a/kconfig/kconfig.mk
+++ b/kconfig/kconfig.mk
@@ -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...)
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 844f949..32e12f6 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -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