summaryrefslogtreecommitdiffstats
path: root/toolchain
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2013-06-30 21:29:12 +0200
committerPeter Korsgaard <jacmet@sunsite.dk>2013-07-04 11:08:27 +0200
commit8d29893893fe25461abef645bfd38bf2f49c59a4 (patch)
treebe15b85d95cfecbda3f0ca34736aed8775b8a7dd /toolchain
parent413ecfa80faf29b55a94b666c97efea0dc8162d9 (diff)
downloadbuildroot-novena-8d29893893fe25461abef645bfd38bf2f49c59a4.tar.gz
buildroot-novena-8d29893893fe25461abef645bfd38bf2f49c59a4.zip
eglibc: enable support in the Buildroot toolchain backend
Using the newly introduced 'eglibc' package, this commit enables the option of building a toolchain using the eglibc C library in the Buildroot toolchain backend. In details, this commit: * Creates a choice to select uClibc or eglibc in the Buildroot toolchain backend (in toolchain/toolchain-buildroot/Config.in), and removes the fact that the Buildroot toolchain backend forcefully enables uClibc (toolchain/Config.in). * Creates a BUILDROOT_LIBC variables, which points to the package implementing the C library (i.e either 'uclibc' or 'eglibc'). * Modifies the gcc-final and gcc-intermediate makefiles to use the BUILDROOT_LIBC variable instead of hardcoding the use of uclibc. * Ensures that TLS support is always enabled when building eglibc. [Peter: fix commit text to refer to BUILDROOT_LIBC] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/Config.in1
-rw-r--r--toolchain/toolchain-buildroot.mk4
-rw-r--r--toolchain/toolchain-buildroot/Config.in40
3 files changed, 44 insertions, 1 deletions
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 448bccc79..53d25736c 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -27,7 +27,6 @@ config BR2_TOOLCHAIN_BUILDROOT
bool "Buildroot toolchain"
depends on !BR2_microblaze && !BR2_aarch64
select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
- select BR2_TOOLCHAIN_USES_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL
bool "External toolchain"
diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk
index e7241bfcf..3a0580066 100644
--- a/toolchain/toolchain-buildroot.mk
+++ b/toolchain/toolchain-buildroot.mk
@@ -2,4 +2,8 @@
# build of binutils, uClibc, kernel headers and all the intermediate
# gcc steps.
+include toolchain/helpers.mk
+
+BUILDROOT_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
+
toolchain-buildroot: host-gcc-final
diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index 416695b1a..396a434ac 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -2,7 +2,47 @@
if BR2_TOOLCHAIN_BUILDROOT
source "package/linux-headers/Config.in.host"
+
+choice
+ prompt "C library"
+
+config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
+ bool "uClibc"
+ select BR2_TOOLCHAIN_USES_UCLIBC
+ help
+ This option selects uClibc as the C library for the
+ cross-compilation toolchain.
+
+ http://uclibc.org
+
+config BR2_TOOLCHAIN_BUILDROOT_EGLIBC
+ bool "eglibc (experimental)"
+ depends on BR2_arm || BR2_armeb || BR2_aarch64 || \
+ BR2_i386 || BR2_mips || BR2_mipsel || \
+ BR2_mips64 || BR2_mips64el || BR2_powerpc || \
+ BR2_sh || BR2_sh64 || BR2_sparc || \
+ BR2_x86_64
+ select BR2_TOOLCHAIN_USES_GLIBC
+ # our eglibc.mk enables RPC support
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ help
+ This option selects eglibc as the C library for the
+ cross-compilation toolchain.
+
+ The eglibc support in the Buildroot toolchain backend is
+ very recent, and therefore marked experimental.
+
+ http://eglibc.org
+
+endchoice
+
+config BR2_TOOLCHAIN_BUILDROOT_LIBC
+ string
+ default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
+ default "eglibc" if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
+
source "package/uclibc/Config.in"
+
source "package/binutils/Config.in.host"
source "package/gcc/Config.in.host"
endif