toolchain: introduce a toolchain knob for NPTL
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 18 Feb 2014 21:08:59 +0000 (22:08 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Sat, 22 Feb 2014 22:39:01 +0000 (23:39 +0100)
As our architecture support expands to a number of architectures that
do not implement NPTL threading, and the number of packages that
depend on NPTL specific features, it has become necessary to be able
to know whether the toolchain has NPTL support or not.

This commit adds a new BR2_TOOLCHAIN_HAS_THREADS_NPTL hidden Config.in
option that allows packages to know whether NPTL is available or not.

This hidden option is:

 * Automatically enabled when glibc/eglibc or musl toolchains are
   used, either internal or external.

 * Automatically enabled when an internal uClibc toolchain with NPTL
   support is configured. It is left disabled otherwise for internal
   uClibc toolchains.

 * Configured according to a visible Config.in option for custom
   external uClibc toolchains.

[Peter: factor _EXTERNAL_HAS_THREADS in single if as suggested by Arnout]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/uclibc/Config.in
toolchain/Config.in
toolchain/helpers.mk
toolchain/toolchain-common.in
toolchain/toolchain-external/Config.in

index 860e4103d2255d3e51f686fba4ea254d98a73d2d..2b93660d1d9fa31ad96d5a1ca8beaa6f5115c6b5 100644 (file)
@@ -124,6 +124,7 @@ choice
        config BR2_PTHREADS_NATIVE
                bool "Native POSIX Threading (NPTL)"
                select BR2_TOOLCHAIN_HAS_THREADS
+               select BR2_TOOLCHAIN_HAS_THREADS_NPTL
                depends on !BR2_arc
                depends on !BR2_avr32
                depends on !BR2_bfin
index bbfd367a48bc13d26a5e3797d5b1f5e432247cc4..44f3ac66d81ee79cd3421111724b66e3843e32dd 100644 (file)
@@ -9,6 +9,7 @@ config BR2_TOOLCHAIN_USES_GLIBC
        select BR2_ENABLE_LOCALE
        select BR2_TOOLCHAIN_HAS_THREADS
        select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+       select BR2_TOOLCHAIN_HAS_THREADS_NPTL
        select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
        select BR2_TOOLCHAIN_HAS_SSP
 
@@ -23,6 +24,7 @@ config BR2_TOOLCHAIN_USES_MUSL
        select BR2_ENABLE_LOCALE
        select BR2_TOOLCHAIN_HAS_THREADS
        select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+       select BR2_TOOLCHAIN_HAS_THREADS_NPTL
 
 choice
        prompt "Toolchain type"
index faa9d907451285f2519b6f2b45e89af073be22e5..892ab4befda1adba353e08f04aac179b3fb08679 100644 (file)
@@ -268,6 +268,7 @@ check_uclibc = \
        $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\
        $(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\
        $(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\
+       $(call check_uclibc_feature,__UCLIBC_HAS_THREADS_NATIVE__,BR2_TOOLCHAIN_HAS_THREADS_NPTL,$${UCLIBC_CONFIG_FILE},NPTL thread support) ;\
        $(call check_uclibc_feature,__UCLIBC_HAS_SSP__,BR2_TOOLCHAIN_HAS_SSP,$${UCLIBC_CONFIG_FILE},Stack Smashing Protection support)
 
 #
index 8435a65a49758b3a4286afc3942d5469f2ae9426..c4e38902a2e825c1025a7d1827e6e8d806ac4b57 100644 (file)
@@ -29,6 +29,9 @@ config BR2_TOOLCHAIN_HAS_THREADS
 config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
        bool
 
+config BR2_TOOLCHAIN_HAS_THREADS_NPTL
+       bool
+
 config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
        bool
 
index f02f89b39c68f3b0a00eeeccfc1762b86d6b718c..90bcc3b9e8e9b2dd9c8c9f25bb535a1c3c482060 100644 (file)
@@ -996,9 +996,10 @@ config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
          support. If you don't know, leave the default value,
          Buildroot will tell you if it's correct or not.
 
+if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
 config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
        bool "Toolchain has threads debugging support?"
-       depends on BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
        select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
        default y
        help
@@ -1006,6 +1007,18 @@ config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
          debugging 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_NPTL
+       bool "Toolchain has NPTL threads support?"
+       select BR2_TOOLCHAIN_HAS_THREADS_NPTL
+       default y
+       help
+         Select this option if your external toolchain uses the NPTL
+         (Native Posix Thread Library) implementation of Posix
+         threads. If you don't know, leave the default value,
+         Buildroot will tell you if it's correct or not.
+
+endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
 config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
        bool "Toolchain has SSP support?"
        select BR2_TOOLCHAIN_HAS_SSP