mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-06-14 05:18:17 +00:00
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:
@ -2,10 +2,7 @@
|
|||||||
|
|
||||||
config LIBC
|
config LIBC
|
||||||
string
|
string
|
||||||
default "none" if BARE_METAL
|
default "none" if BARE_METAL
|
||||||
default "glibc" if LIBC_GLIBC
|
|
||||||
default "eglibc" if LIBC_EGLIBC
|
|
||||||
default "uClibc" if LIBC_UCLIBC
|
|
||||||
|
|
||||||
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
|
So if you want to be able to re-build your toolchain later, you will
|
||||||
have to save your C library tarball by yourself.
|
have to save your C library tarball by yourself.
|
||||||
|
|
||||||
choice
|
source config.gen/libc.in
|
||||||
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
|
|
||||||
|
|
||||||
comment "Common C library options"
|
comment "Common C library options"
|
||||||
|
|
||||||
@ -96,23 +63,11 @@ config THREADS_NONE
|
|||||||
|
|
||||||
endchoice
|
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,
|
# Hack: mconf does not allow to include a file multiple times,
|
||||||
# so include glibc and eglibc common options from here, rather
|
# so include glibc and eglibc common options from here, rather
|
||||||
# than from each config files.
|
# than from each config files.
|
||||||
if LIBC_GLIBC || LIBC_EGLIBC
|
if LIBC_glibc || LIBC_eglibc
|
||||||
source config/libc/glibc-eglibc-common.in
|
source config/libc/glibc-eglibc.in-common
|
||||||
endif
|
|
||||||
|
|
||||||
if LIBC_UCLIBC
|
|
||||||
source config/libc/uClibc.in
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -1,6 +1,16 @@
|
|||||||
|
# EXPERIMENTAL
|
||||||
# eglibc options
|
# 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
|
choice
|
||||||
bool
|
bool
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
# glibc options
|
# 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
|
choice
|
||||||
bool
|
bool
|
||||||
@ -60,18 +65,3 @@ config LIBC_VERSION
|
|||||||
# CT_INSERT_VERSION_STRING_ABOVE
|
# CT_INSERT_VERSION_STRING_ABOVE
|
||||||
# Don't remove above line!
|
# 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
|
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
# uClibc options
|
# 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
|
choice
|
||||||
bool
|
bool
|
||||||
|
@ -20,13 +20,15 @@ endif
|
|||||||
|
|
||||||
# Build a list of all config files
|
# Build a list of all config files
|
||||||
ARCH_CONFIG_FILES = $(wildcard $(CT_LIB_DIR)/config/arch/*.in)
|
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)
|
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')
|
STATIC_CONFIG_FILES = $(shell find $(CT_LIB_DIR)/config -type f -name '*.in')
|
||||||
GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \
|
GEN_CONFIG_FILES=$(CT_TOP_DIR)/config.gen/arch.in \
|
||||||
$(CT_TOP_DIR)/config.gen/kernel.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/tools.in \
|
||||||
$(CT_TOP_DIR)/config.gen/debug.in
|
$(CT_TOP_DIR)/config.gen/debug.in
|
||||||
|
|
||||||
@ -35,6 +37,7 @@ CONFIG_FILES=$(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
|
|||||||
# Build list of items
|
# Build list of items
|
||||||
ARCHS = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
|
ARCHS = $(patsubst $(CT_LIB_DIR)/config/arch/%.in,%,$(ARCH_CONFIG_FILES))
|
||||||
KERNELS = $(patsubst $(CT_LIB_DIR)/config/kernel/%.in,%,$(KERNEL_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))
|
DEBUGS = $(patsubst $(CT_LIB_DIR)/config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
|
||||||
TOOLS = $(patsubst $(CT_LIB_DIR)/config/tools/%.in,%,$(TOOL_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)
|
$(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))
|
$(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:
|
# Function build_gen_menu_in:
|
||||||
# $1 : destination file
|
# $1 : destination file
|
||||||
# $2 : name of entries family (eg. Tools, Debug...)
|
# $2 : name of entries family (eg. Tools, Debug...)
|
||||||
|
@ -282,7 +282,7 @@ do_libc_start_files() {
|
|||||||
# Super-H really needs to set configparms as of gcc-3.4/glibc-2.3.2
|
# 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
|
# note: this is awkward, doesn't work well if you need more than one
|
||||||
# line in configparms
|
# 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_forced_unwind=yes" > config.cache
|
||||||
echo "libc_cv_c_cleanup=yes" >> config.cache
|
echo "libc_cv_c_cleanup=yes" >> config.cache
|
||||||
|
Reference in New Issue
Block a user