aboutsummaryrefslogtreecommitdiff
path: root/toolchain
diff options
context:
space:
mode:
authorGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2010-12-13 17:27:44 +0100
committerGravatar Peter Korsgaard <jacmet@sunsite.dk>2010-12-13 22:26:41 +0100
commit9eaad202f1579630598c160952da4b29e56d5bdb (patch)
tree226dc901ba77cb5ee26b048f080c006e7d3c57b7 /toolchain
parenta72a670489547a3ca645ff7c3a0d9c3fb66eab51 (diff)
downloadbuildroot-9eaad202f1579630598c160952da4b29e56d5bdb.tar.gz
buildroot-9eaad202f1579630598c160952da4b29e56d5bdb.tar.bz2
toolchain: rework thread options
The selection of linuxthreads, linuxthreads old or NPTL doesn't make a lot of sense for external toolchains. So, instead, we : * Introduce an hidden BR2_TOOLCHAIN_HAS_THREADS option, which must be selected by toolchain specific options when thread support is available. Package needing to test thread support should use this option. * Move the none/linuxthreads/linuxthreads old/NPTL selection to Buildroot internal toolchain configuration. * Add an option in external toolchain to tell if thread support is available or not in the external toolchain. We assume that glibc without threads is not possible, as Ulrich Drepper said in http://sourceware.org/ml/libc-alpha/2005-08/msg00091.html ffmpeg, dmalloc and openvpn are fixed to use the new BR2_TOOLCHAIN_HAS_THREADS option. For openvpn, --enable-threads=posix is no longer used, as the configure script doesn't even understand this option. 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/Makefile.in6
-rw-r--r--toolchain/gcc/gcc-uclibc-4.x.mk6
-rw-r--r--toolchain/toolchain-buildroot/Config.in.227
-rw-r--r--toolchain/toolchain-common.in29
-rw-r--r--toolchain/toolchain-external/Config.in9
-rw-r--r--toolchain/toolchain-external/ext-tool.mk2
6 files changed, 46 insertions, 33 deletions
diff --git a/toolchain/Makefile.in b/toolchain/Makefile.in
index 371509f4eb..2cb6e95f21 100644
--- a/toolchain/Makefile.in
+++ b/toolchain/Makefile.in
@@ -1,9 +1,3 @@
-ifeq ($(BR2_PTHREADS_NONE),y)
-THREADS:=--disable-threads
-else
-THREADS:=--enable-threads
-endif
-
BR2_CONFIGURE_DEVEL_SYSROOT=--with-sysroot=$(TOOLCHAIN_DIR)/uClibc_dev/
BR2_CONFIGURE_STAGING_SYSROOT=--with-sysroot=$(STAGING_DIR)
BR2_CONFIGURE_BUILD_TOOLS=--with-build-time-tools=$(STAGING_DIR)/usr/$(REAL_GNU_TARGET_NAME)/bin
diff --git a/toolchain/gcc/gcc-uclibc-4.x.mk b/toolchain/gcc/gcc-uclibc-4.x.mk
index eec652343e..5f69906cab 100644
--- a/toolchain/gcc/gcc-uclibc-4.x.mk
+++ b/toolchain/gcc/gcc-uclibc-4.x.mk
@@ -138,6 +138,12 @@ else
GCC_TLS:=--disable-tls
endif
+ifeq ($(BR2_PTHREADS_NONE),y)
+THREADS:=--disable-threads
+else
+THREADS:=--enable-threads
+endif
+
ifeq ($(BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE),y)
GCC_DECIMAL_FLOAT:=--disable-decimal-float
endif
diff --git a/toolchain/toolchain-buildroot/Config.in.2 b/toolchain/toolchain-buildroot/Config.in.2
index f1b0a7c58c..fe93e70d51 100644
--- a/toolchain/toolchain-buildroot/Config.in.2
+++ b/toolchain/toolchain-buildroot/Config.in.2
@@ -76,6 +76,33 @@ config BR2_TOOLCHAIN_BUILDROOT_USE_SSP
See http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
for details.
+choice
+ prompt "Thread library implementation"
+ default BR2_PTHREADS_OLD
+ help
+ Use this option to select the thread library implementation
+ that should be used in your toolchain. Not all thread
+ variants work with all versions of uClibc, the "linuxthreads
+ (stable/old)" may be a working fallback if you need
+ threading at all.
+
+ config BR2_PTHREADS_NONE
+ bool "none"
+
+ config BR2_PTHREADS
+ bool "linuxthreads"
+ select BR2_TOOLCHAIN_HAS_THREADS
+
+ config BR2_PTHREADS_OLD
+ bool "linuxthreads (stable/old)"
+ select BR2_TOOLCHAIN_HAS_THREADS
+
+ config BR2_PTHREADS_NATIVE
+ bool "Native POSIX Threading (NPTL)"
+ select BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_UCLIBC_VERSION_SNAPSHOT
+endchoice
+
source "toolchain/elf2flt/Config.in"
source "toolchain/mklibs/Config.in"
source "toolchain/sstrip/Config.in"
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index 5502ab4ff7..34d70a0fae 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -26,6 +26,9 @@ config BR2_PROGRAM_INVOCATION
config BR2_INSTALL_LIBSTDCPP
bool
+config BR2_TOOLCHAIN_HAS_THREADS
+ bool
+
config BR2_ENABLE_LOCALE_PURGE
bool "Purge unwanted locales"
help
@@ -76,32 +79,6 @@ config BR2_SOFT_FLOAT
functions, then everything will need to be compiled with soft
floating point support (-msoft-float).
-choice
- prompt "Thread library implementation"
- default BR2_PTHREADS_OLD
- help
- If you are building your own toolchain then select the type of
- libpthreads you want to use.
- Not all thread variants work with all versions of uClibc,
- the "linuxthreads (stable/old)" may be a working fallback
- if you need threading at all.
- If you have an external binary toolchain then select the type
- of libpthreads it was built with.
-
- config BR2_PTHREADS_NONE
- bool "none"
-
- config BR2_PTHREADS
- bool "linuxthreads"
-
- config BR2_PTHREADS_OLD
- bool "linuxthreads (stable/old)"
-
- config BR2_PTHREADS_NATIVE
- bool "Native POSIX Threading (NPTL)"
- depends on BR2_UCLIBC_VERSION_SNAPSHOT
-endchoice
-
config BR2_TARGET_OPTIMIZATION
string "Target Optimizations"
default "-pipe"
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index bd22e0cc38..2ed65bf305 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -149,6 +149,7 @@ config BR2_TOOLCHAIN_EXTERNAL_GLIBC
select BR2_USE_WCHAR
select BR2_ENABLE_LOCALE
select BR2_PROGRAM_INVOCATION
+ select BR2_TOOLCHAIN_HAS_THREADS
config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
bool
@@ -220,6 +221,14 @@ config BR2_TOOLCHAIN_EXTERNAL_PROGRAM_INVOCATION
invocation support. If you don't know, leave the default
value, Buildroot will tell you if it's correct or not.
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+ bool "Toolchain has threads support?"
+ select BR2_TOOLCHAIN_HAS_THREADS
+ help
+ Select this option if your external toolchain has thread
+ support. If you don't know, leave the default value,
+ Buildroot will tell you if it's correct or not.
+
endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_CXX
diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk
index 027fbbdf58..d6153f14d1 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/ext-tool.mk
@@ -53,7 +53,7 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
USR_LIB_EXTERNAL_LIBS+=libstdc++.so
endif
-ifneq ($(BR2_PTHREADS_NONE),y)
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
LIB_EXTERNAL_LIBS+=libpthread.so
ifeq ($(BR2_PACKAGE_GDB_SERVER),y)
LIB_EXTERNAL_LIBS+=libthread_db.so