diff options
-rw-r--r-- | config/libc.in | 53 | ||||
-rw-r--r-- | config/libc/eglibc.in | 12 | ||||
-rw-r--r-- | config/libc/glibc-eglibc.in-common (renamed from config/libc/glibc-eglibc-common.in) | 0 | ||||
-rw-r--r-- | config/libc/glibc.in | 22 | ||||
-rw-r--r-- | config/libc/uClibc.in | 7 | ||||
-rw-r--r-- | kconfig/kconfig.mk | 10 | ||||
-rw-r--r-- | scripts/build/libc/glibc.sh | 2 |
7 files changed, 36 insertions, 70 deletions
diff --git a/config/libc.in b/config/libc.in index 27228d13..a3739903 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 bf0e4ed0..bcda3384 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 61becfb4..61becfb4 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 250a56bc..12c3192d 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 a84fae26..c3784f93 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 cdd8c874..f20f7e75 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 844f9495..32e12f6d 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 |