65473afee4
uClibc-ng does not support linuxthreads or linuxthreads.old on architectures that have NPTL support. This creates another complicated dependency: dependeing on the uClibc version being used, not the same thread implementations are available. In order to handle this situation, this patch introduces three hidden booleans: - BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS - BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD - BR2_UCLIBC_VERSION_SUPPORTS_NPTL They are selected by the different uClibc versions, depending on which thread implementation they support on the different architectures. Then, the choice of the thread implementation can rely on those booleans to know if a given thread implementation is available in the current architecture / uClibc version selection. This makes sure that unusable thread implementation do not get selected, therefore fixing build issues such as: http://autobuild.buildroot.org/results/89e/89e423bee040cbce3e82cd89f1191efaac490c0d/ The support table is as follows (only taking into account architectures that allow the selection of BR2_TOOLCHAIN_BUILDROOT_UCLIBC, other architectures are not considered) : ----uclibc---- uclibc-xtensa- --uclibc-arc-- --uclibc-ng--- LT LT.old NPTL LT LT.old NPTL LT LT.old NPTL LT LT.old NPTL arc(le|eb) y y n n n n (1) arm(eb) y y y n y y (2) bfin n y n y y n i386 y y y n n y (3) m68k y y y y y n mips(64)(el) y y y n n y powerpc y y y n n y sh y y y n n y sparc y y y n n y xtensa n y n n n y x86_64 y y y n n y (1) : uclibc-ng only has NPTL support for ARC but it requires a more recent compiler version that hasn't been officially released by Synopsys. (2) : the general idea of uclibc-ng is to only support NPTL on architectures where it is available. However, in order to support ARM noMMU platforms, LT.old support has been kept on ARM. (3) : except i386 itself, which doesn't have what's needed for NPTL support. i386 is simply not supported by uclibc-ng basically. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
281 lines
8.8 KiB
Plaintext
281 lines
8.8 KiB
Plaintext
if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
|
|
|
# For legal-info
|
|
config BR2_PACKAGE_UCLIBC
|
|
bool
|
|
default y
|
|
|
|
comment "uClibc Options"
|
|
|
|
config BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS
|
|
bool
|
|
|
|
config BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
|
|
bool
|
|
|
|
config BR2_UCLIBC_VERSION_SUPPORTS_NPTL
|
|
bool
|
|
|
|
choice
|
|
prompt "uClibc C library Version"
|
|
default BR2_UCLIBC_VERSION_0_9_33
|
|
help
|
|
Select the version of uClibc you wish to use.
|
|
|
|
config BR2_UCLIBC_VERSION_0_9_33
|
|
bool "uClibc 0.9.33.x"
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS \
|
|
if !BR2_bfin
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_NPTL \
|
|
if !BR2_bfin && !BR2_x86_i386
|
|
depends on !(BR2_arc || BR2_xtensa)
|
|
|
|
config BR2_UCLIBC_VERSION_ARC_GIT
|
|
bool "uClibc Git ARC"
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
|
|
depends on BR2_arc
|
|
|
|
config BR2_UCLIBC_NG_VERSION_1_0_0
|
|
bool "uClibc-ng 1.0.0"
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS \
|
|
if BR2_bfin || BR2_m68k
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD \
|
|
if BR2_bfin || BR2_m68k || BR2_arm || BR2_armeb
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_NPTL \
|
|
if !BR2_arc && !BR2_bfin && !BR2_m68k && !BR2_x86_i386
|
|
|
|
config BR2_UCLIBC_VERSION_XTENSA_GIT
|
|
bool "uClibc Git Xtensa"
|
|
depends on BR2_xtensa
|
|
select BR2_UCLIBC_SUPPORTS_LINUXTHREADS_OLD
|
|
|
|
config BR2_UCLIBC_VERSION_SNAPSHOT
|
|
bool "daily snapshot"
|
|
select BR2_UCLIBC_SUPPORTS_LINUXTHREADS if !BR2_bfin && !BR2_xtensa
|
|
select BR2_UCLIBC_SUPPORTS_LINUXTHREADS_OLD
|
|
select BR2_UCLIBC_VERSION_SUPPORTS_NPTL \
|
|
if !BR2_bfin && !BR2_x86_i386 && !BR2_xtensa
|
|
depends on !(BR2_arc)
|
|
|
|
endchoice
|
|
|
|
config BR2_USE_UCLIBC_SNAPSHOT
|
|
string "Date (yyyymmdd) of snapshot or 'snapshot' for latest"
|
|
default "snapshot"
|
|
depends on BR2_UCLIBC_VERSION_SNAPSHOT
|
|
help
|
|
Use latest snapshot or one from a specific date?
|
|
|
|
config BR2_UCLIBC_VERSION_STRING
|
|
string
|
|
default 0.9.33.2 if BR2_UCLIBC_VERSION_0_9_33
|
|
default "arc-2014.12" if BR2_UCLIBC_VERSION_ARC_GIT
|
|
default 1.0.0 if BR2_UCLIBC_NG_VERSION_1_0_0
|
|
default "7bf35c8b7d4a1f97174eb49f47f33946b282114c" if BR2_UCLIBC_VERSION_XTENSA_GIT
|
|
default BR2_USE_UCLIBC_SNAPSHOT if BR2_UCLIBC_VERSION_SNAPSHOT
|
|
|
|
config BR2_UCLIBC_CONFIG
|
|
string "uClibc configuration file to use?"
|
|
default "package/uclibc/uClibc-0.9.33.config" if BR2_UCLIBC_VERSION_0_9_33
|
|
default "package/uclibc/uClibc-ng-1.0.0.config" if BR2_UCLIBC_NG_VERSION_1_0_0
|
|
default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_ARC_GIT
|
|
default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_SNAPSHOT
|
|
default "package/uclibc/uClibc-snapshot.config" if BR2_UCLIBC_VERSION_XTENSA_GIT
|
|
help
|
|
Some people may wish to use their own modified uClibc configuration
|
|
file and will specify their config file location with this option.
|
|
See also docs/README in this package.
|
|
If unsure, use the default.
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_LARGEFILE
|
|
bool "Enable large file (files > 2 GB) support"
|
|
select BR2_LARGEFILE
|
|
help
|
|
Enable this option if you want your toolchain to support
|
|
files bigger than 2 GB.
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_INET_IPV6
|
|
bool "Enable IPv6 support"
|
|
select BR2_INET_IPV6
|
|
help
|
|
Enable this option if you want your toolchain to support
|
|
IPv6.
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_INET_RPC
|
|
bool "Enable RPC support"
|
|
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
|
|
help
|
|
Enable this option if you want your toolchain to support
|
|
RPC (needed for NFS, for example).
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_WCHAR
|
|
bool "Enable WCHAR support"
|
|
select BR2_USE_WCHAR
|
|
help
|
|
Enable this option if you want your toolchain to support
|
|
wide characters (i.e characters longer than 8 bits, needed
|
|
for locale support).
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_LOCALE
|
|
bool "Enable toolchain locale/i18n support"
|
|
select BR2_TOOLCHAIN_BUILDROOT_WCHAR
|
|
select BR2_ENABLE_LOCALE
|
|
help
|
|
Enable this option if you want your toolchain to support
|
|
localization and internationalization.
|
|
|
|
choice
|
|
prompt "Thread library implementation"
|
|
default BR2_PTHREADS_NATIVE if BR2_UCLIBC_VERSION_SUPPORTS_NPTL
|
|
default BR2_PTHREADS_OLD if BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
|
|
default BR2_PTHREADS if BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS
|
|
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
|
|
depends on BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS
|
|
|
|
config BR2_PTHREADS_OLD
|
|
bool "linuxthreads (stable/old)"
|
|
select BR2_TOOLCHAIN_HAS_THREADS
|
|
depends on BR2_UCLIBC_VERSION_SUPPORTS_LINUXTHREADS_OLD
|
|
|
|
config BR2_PTHREADS_NATIVE
|
|
bool "Native POSIX Threading (NPTL)"
|
|
select BR2_TOOLCHAIN_HAS_THREADS
|
|
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
|
|
depends on BR2_UCLIBC_VERSION_SUPPORTS_NPTL
|
|
endchoice
|
|
|
|
config BR2_PTHREAD_DEBUG
|
|
bool "Thread library debugging"
|
|
depends on BR2_PTHREADS || BR2_PTHREADS_OLD || BR2_PTHREADS_NATIVE
|
|
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
|
|
help
|
|
Build the thread library with debugging enabled.
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_USE_SSP
|
|
bool "Enable stack protection support"
|
|
select BR2_TOOLCHAIN_HAS_SSP
|
|
help
|
|
Enable stack smashing protection support using GCCs
|
|
-fstack-protector-all option in uClibc.
|
|
|
|
See http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
|
|
for details.
|
|
|
|
config BR2_UCLIBC_INSTALL_UTILS
|
|
bool "Compile and install uClibc utilities"
|
|
depends on !BR2_bfin
|
|
default y
|
|
help
|
|
Enabling this option will compile and install the getconf,
|
|
ldconfig and ldd uClibc utilities for the target.
|
|
|
|
You can save ~32 KiB in target space by disabling them since
|
|
they're normally not needed.
|
|
|
|
config BR2_UCLIBC_INSTALL_TEST_SUITE
|
|
bool "Compile and install uClibc tests"
|
|
select BR2_PACKAGE_MAKE
|
|
depends on BR2_USE_MMU # make
|
|
help
|
|
Enabling this option will compile and install the uClibc test suite.
|
|
This is useful if you want to check if the uClibc library is working
|
|
for your architecture and/or help developing uClibc.
|
|
|
|
The test suite will be installed into /root/uClibc directory. To run
|
|
the test suite enter the /root/uClibc/test directory and type
|
|
"make UCLIBC_ONLY=1 CC=/bin/true check".
|
|
|
|
See the /root/uClibc/test/README for additional information.
|
|
|
|
This is not needed at all for normal builds, so you can safely say no
|
|
if you do not plan to dig into your C library.
|
|
|
|
# Mapping from the Buildroot architecture configuration options to the
|
|
# uClibc architecture names.
|
|
config BR2_UCLIBC_TARGET_ARCH
|
|
string
|
|
default arc if BR2_arcle || BR2_arceb
|
|
default arm if BR2_arm || BR2_armeb
|
|
default bfin if BR2_bfin
|
|
default m68k if BR2_m68k
|
|
default mips if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
|
|
default powerpc if BR2_powerpc
|
|
default sh if BR2_sh
|
|
default sparc if BR2_sparc
|
|
default xtensa if BR2_xtensa
|
|
default i386 if BR2_i386
|
|
default x86_64 if BR2_x86_64
|
|
|
|
config BR2_UCLIBC_ARC_TYPE
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "arc"
|
|
default "ARC_CPU_700" if BR2_arc750d
|
|
default "ARC_CPU_700" if BR2_arc770d
|
|
default "ARC_CPU_HS" if BR2_archs38
|
|
|
|
config BR2_UCLIBC_ARM_BX
|
|
bool
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "arm"
|
|
default y if (BR2_ARM_CPU_HAS_THUMB || BR2_ARM_CPU_HAS_THUMB2)
|
|
|
|
config BR2_UCLIBC_MIPS_ABI
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "mips"
|
|
default O32 if BR2_MIPS_OABI32
|
|
default N32 if BR2_MIPS_NABI32
|
|
default N64 if BR2_MIPS_NABI64
|
|
|
|
config BR2_UCLIBC_MIPS_ISA
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "mips"
|
|
default MIPS32 if BR2_mips_32
|
|
default MIPS32R2 if BR2_mips_32r2
|
|
default MIPS64 if BR2_mips_64
|
|
|
|
config BR2_UCLIBC_SH_TYPE
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "sh"
|
|
default SH2A if BR2_sh2a
|
|
default SH4 if BR2_sh4 || BR2_sh4eb
|
|
|
|
config BR2_UCLIBC_SPARC_TYPE
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "sparc"
|
|
default V7 if BR2_sparc_v7 || BR2_sparc_sparchfleon || BR2_sparc_sparcsfleon
|
|
default V8 if BR2_sparc_v8 || BR2_sparc_sparchfleonv8 || BR2_sparc_sparcsfleonv8
|
|
|
|
config BR2_UCLIBC_POWERPC_TYPE
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "powerpc"
|
|
default CLASSIC if !BR2_powerpc_8540 && !BR2_powerpc_8548
|
|
default E500 if BR2_powerpc_8540 || BR2_powerpc_8548
|
|
|
|
config BR2_UCLIBC_X86_TYPE
|
|
string
|
|
depends on BR2_UCLIBC_TARGET_ARCH = "i386"
|
|
default 386 if BR2_x86_i386
|
|
default 486 if BR2_x86_i486
|
|
default 586 if BR2_x86_i586
|
|
default 586MMX if BR2_x86_pentium_mmx
|
|
default 686 if BR2_x86_i686 || BR2_x86_pentiumpro
|
|
default PENTIUMII if BR2_x86_pentium2
|
|
default PENTIUMIII if BR2_x86_pentium3
|
|
default PENTIUM4 if BR2_x86_pentium4 || BR2_x86_pentium_m || \
|
|
BR2_x86_nocona || BR2_x86_core2 || BR2_x86_corei7
|
|
|
|
endif # BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|