summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toolchain/uClibc/Config.in8
-rw-r--r--toolchain/uClibc/Makefile20
-rw-r--r--toolchain/uClibc/config-nptl/arm25
-rw-r--r--toolchain/uClibc/config-nptl/arm.storm26
-rw-r--r--toolchain/uClibc/config-nptl/armeb25
-rw-r--r--toolchain/uClibc/config-nptl/avr3210
-rw-r--r--toolchain/uClibc/config-nptl/common185
-rw-r--r--toolchain/uClibc/config-nptl/cris6
-rw-r--r--toolchain/uClibc/config-nptl/i38624
-rw-r--r--toolchain/uClibc/config-nptl/i68624
-rw-r--r--toolchain/uClibc/config-nptl/mips17
-rw-r--r--toolchain/uClibc/config-nptl/mipsel17
-rw-r--r--toolchain/uClibc/config-nptl/powerpc7
-rw-r--r--toolchain/uClibc/config-nptl/x86_647
-rw-r--r--toolchain/uClibc/patches-nptl/110-compat_macros.patch51
-rw-r--r--toolchain/uClibc/patches-nptl/120-adjtimex.patch14
-rw-r--r--toolchain/uClibc/patches-nptl/130-compile_fix.patch36
17 files changed, 495 insertions, 7 deletions
diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in
index 0eee41e7b9..c4f41aedb6 100644
--- a/toolchain/uClibc/Config.in
+++ b/toolchain/uClibc/Config.in
@@ -21,13 +21,19 @@ choice
endchoice
+config UCLIBC_VERSION_NPTL
+ bool "Use NPTL branch"
+ depends on TOOLCHAINOPTS && USE_UCLIBC
+ depends on UCLIBC_VERSION_0_9_30
+
+
config UCLIBC_EXTRA_VERSION
string
prompt "Extra uClibc version"
depends on TOOLCHAINOPTS && USE_UCLIBC
default "snapshot" if UCLIBC_VERSION_SNAPSHOT
default ".2" if UCLIBC_VERSION_0_9_28
- default ".1" if UCLIBC_VERSION_0_9_30
+ default ".1" if UCLIBC_VERSION_0_9_30 && !UCLIBC_VERSION_NPTL
default ""
help
Default for version 0.9.28 is ".02", for daily snapshot it's just "snapshot"
diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile
index 906767da22..e7304a171c 100644
--- a/toolchain/uClibc/Makefile
+++ b/toolchain/uClibc/Makefile
@@ -11,6 +11,14 @@ PKG_NAME:=uClibc
PKG_VERSION:=$(call qstrip,$(CONFIG_UCLIBC_VERSION))
PKG_EXTRAVERSION:=$(call qstrip,$(CONFIG_UCLIBC_EXTRA_VERSION))
PKG_VERSION_SNAPSHOT:=$(call qstrip,$(CONFIG_UCLIBC_VERSION_SNAPSHOT))
+ifeq ($(CONFIG_UCLIBC_VERSION_NPTL),y)
+ PKG_SOURCE_URL:=http://www.uclibc.org/svn/branches/uClibc-nptl
+ PKG_SOURCE_PROTO:=svn
+ PKG_SOURCE_VERSION:=25804
+ PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)+nptl
+ PKG_SOURCE:=$(PKG_NAME)-nptl-r$(PKG_SOURCE_VERSION).tar.gz
+ PKG_EXTRAVERSION:=
+else
ifeq ($(PKG_VERSION_SNAPSHOT),y)
PKG_SOURCE_URL:=http://www.uclibc.org/downloads/snapshots
PKG_SOURCE:=uClibc-snapshot.tar.bz2
@@ -18,8 +26,13 @@ else
PKG_SOURCE_URL:=http://www.uclibc.org/downloads
PKG_SOURCE:=uClibc-$(PKG_VERSION)$(PKG_EXTRAVERSION).tar.bz2
endif
+endif
PATCH_DIR:=$(firstword $(wildcard ./patches-$(PKG_VERSION)$(PKG_EXTRAVERSION) ./patches-$(PKG_VERSION)))
CONFIG_DIR:=$(firstword $(wildcard ./config-$(PKG_VERSION)$(PKG_EXTRAVERSION) ./config-$(PKG_VERSION)))
+PATCH_DIR:=$(if $(CONFIG_UCLIBC_VERSION_NPTL),./patches-nptl,$(PATCH_DIR))
+CONFIG_DIR:=$(if $(CONFIG_UCLIBC_VERSION_NPTL),./config-nptl,$(CONFIG_DIR))
+PATCH_DIR:=$(if $(PKG_VERSION_SNAPSHOT),,$(PATCH_DIR))
+CONFIG_DIR:=$(if $(PKG_VERSION_SNAPSHOT),./config-0.9.30,$(CONFIG_DIR))
PKG_MD5SUM_0.9.28.2 = 959f25286e317f0d9e2103445c5a14c2
PKG_MD5SUM_0.9.28.3 = 428405a36b4662980d9343b32089b5a6
@@ -27,16 +40,11 @@ PKG_MD5SUM_0.9.29 = 61dc55f43b17a38a074f347e74095b20
PKG_MD5SUM_0.9.30 = e5766e2566e0297adebebbcc0aba1f2d
PKG_MD5SUM=$(PKG_MD5SUM_$(PKG_VERSION)$(PKG_EXTRAVERSION))
-ifeq ($(PKG_VERSION_SNAPSHOT),y)
- PATCH_DIR:=
- CONFIG_DIR:=./config-0.9.30
- PKG_MD5SUM:=
-endif
ifeq ($(PKG_VERSION_SNAPSHOT),y)
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/uClibc-$(PKG_EXTRAVERSION)
else
- HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/uClibc-$(PKG_VERSION)$(PKG_EXTRAVERSION)
+ HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/uClibc-$(PKG_VERSION)$(PKG_EXTRAVERSION)$(if $(CONFIG_UCLIBC_VERSION_NPTL),+nptl)
endif
include $(INCLUDE_DIR)/toolchain-build.mk
diff --git a/toolchain/uClibc/config-nptl/arm b/toolchain/uClibc/config-nptl/arm
new file mode 100644
index 0000000000..d26b075b45
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/arm
@@ -0,0 +1,25 @@
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM_CORTEX_M1 is not set
+# CONFIG_ARM_CORTEX_M3 is not set
+# CONFIG_ARM_EABI is not set
+# CONFIG_ARM_IWMMXT is not set
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_SA110 is not set
+# CONFIG_ARM_SA1100 is not set
+CONFIG_ARM_XSCALE=y
+# CONFIG_GENERIC_ARM is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
diff --git a/toolchain/uClibc/config-nptl/arm.storm b/toolchain/uClibc/config-nptl/arm.storm
new file mode 100644
index 0000000000..8043cf61b7
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/arm.storm
@@ -0,0 +1,26 @@
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM7TDMI is not set
+CONFIG_ARM920T=y
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM_CORTEX_M1 is not set
+# CONFIG_ARM_CORTEX_M3 is not set
+# CONFIG_ARM_EABI is not set
+# CONFIG_ARM_IWMMXT is not set
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_SA110 is not set
+# CONFIG_ARM_SA1100 is not set
+# CONFIG_ARM_XSCALE is not set
+# CONFIG_GENERIC_ARM is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
+# USE_BX is not set
diff --git a/toolchain/uClibc/config-nptl/armeb b/toolchain/uClibc/config-nptl/armeb
new file mode 100644
index 0000000000..ba3ea5c845
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/armeb
@@ -0,0 +1,25 @@
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_ARM10T is not set
+# CONFIG_ARM1136JF_S is not set
+# CONFIG_ARM1176JZF_S is not set
+# CONFIG_ARM1176JZ_S is not set
+# CONFIG_ARM610 is not set
+# CONFIG_ARM710 is not set
+# CONFIG_ARM720T is not set
+# CONFIG_ARM7TDMI is not set
+# CONFIG_ARM920T is not set
+# CONFIG_ARM922T is not set
+# CONFIG_ARM926T is not set
+# CONFIG_ARM_CORTEX_M1 is not set
+# CONFIG_ARM_CORTEX_M3 is not set
+# CONFIG_ARM_EABI is not set
+# CONFIG_ARM_IWMMXT is not set
+CONFIG_ARM_OABI=y
+# CONFIG_ARM_SA110 is not set
+# CONFIG_ARM_SA1100 is not set
+CONFIG_ARM_XSCALE=y
+# CONFIG_GENERIC_ARM is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
diff --git a/toolchain/uClibc/config-nptl/avr32 b/toolchain/uClibc/config-nptl/avr32
new file mode 100644
index 0000000000..bf7907aed9
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/avr32
@@ -0,0 +1,10 @@
+ARCH_BIG_ENDIAN=y
+CONFIG_AVR32_AP7=y
+FORCE_SHAREABLE_TEXT_SEGMENTS=y
+LINKRELAX=y
+TARGET_ARCH="avr32"
+TARGET_avr32=y
+UCLIBC_HAS_FPU=y
+# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set
+# UCLIBC_HAS_STRING_ARCH_OPT is not set
+UNIX98PTY_ONLY=y
diff --git a/toolchain/uClibc/config-nptl/common b/toolchain/uClibc/config-nptl/common
new file mode 100644
index 0000000000..f516343fd3
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/common
@@ -0,0 +1,185 @@
+# ARCH_ANY_ENDIAN is not set
+ARCH_HAS_MMU=y
+# ARCH_HAS_NO_LDSO is not set
+# ARCH_HAS_NO_SHARED is not set
+# ARCH_LITTLE_ENDIAN is not set
+ARCH_USE_MMU=y
+# ARCH_WANTS_BIG_ENDIAN is not set
+# ARCH_WANTS_LITTLE_ENDIAN is not set
+ASSUME_DEVPTS=y
+COMPAT_ATEXIT=y
+CROSS_COMPILER_PREFIX=""
+DEVEL_PREFIX="/usr/"
+# DOASSERTS is not set
+# DODEBUG is not set
+# DODEBUG_PT is not set
+# DOMULTI is not set
+DOPIC=y
+DOSTRIP=y
+DO_C99_MATH=y
+# EXTRA_WARNINGS is not set
+FORCE_OPTIONS_FOR_ARCH=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+# HAS_NO_THREADS is not set
+HAVE_DOT_CONFIG=y
+# HAVE_NO_PIC is not set
+# HAVE_NO_SSP is not set
+HAVE_SHARED=y
+KERNEL_HEADERS="."
+LDSO_BASE_FILENAME="ld.so"
+LDSO_CACHE_SUPPORT=y
+# LDSO_GNU_HASH_SUPPORT is not set
+LDSO_LDD_SUPPORT=y
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+LDSO_RUNPATH=y
+LINUXTHREADS_NEW=y
+# LINUXTHREADS_OLD is not set
+# MALLOC is not set
+MALLOC_GLIBC_COMPAT=y
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+# PTHREADS_DEBUG_SUPPORT is not set
+RUNTIME_PREFIX="/"
+SHARED_LIB_LOADER_PREFIX="/lib"
+# SUPPORT_LD_DEBUG is not set
+# SUPPORT_LD_DEBUG_EARLY is not set
+TARGET_SUBARCH=""
+# TARGET_alpha is not set
+# TARGET_arm is not set
+# TARGET_avr32 is not set
+# TARGET_bfin is not set
+# TARGET_cris is not set
+# TARGET_e1 is not set
+# TARGET_frv is not set
+# TARGET_h8300 is not set
+# TARGET_hppa is not set
+# TARGET_i386 is not set
+# TARGET_i960 is not set
+# TARGET_ia64 is not set
+# TARGET_m68k is not set
+# TARGET_microblaze is not set
+# TARGET_mips is not set
+# TARGET_nios is not set
+# TARGET_nios2 is not set
+# TARGET_powerpc is not set
+# TARGET_sh is not set
+# TARGET_sh64 is not set
+# TARGET_sparc is not set
+# TARGET_v850 is not set
+# TARGET_vax is not set
+# TARGET_x86_64 is not set
+# TARGET_xtensa is not set
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_BUILD_NOEXECSTACK=y
+# UCLIBC_BUILD_NOW is not set
+# UCLIBC_BUILD_PIE is not set
+UCLIBC_BUILD_RELRO=y
+UCLIBC_CTOR_DTOR=y
+UCLIBC_DYNAMIC_ATEXIT=y
+UCLIBC_EXTRA_CFLAGS=""
+UCLIBC_GRP_BUFFER_SIZE=256
+# UCLIBC_HAS_ADVANCED_REALTIME is not set
+# UCLIBC_HAS_ARC4RANDOM is not set
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+UCLIBC_HAS_COMPAT_RES_STATE=y
+UCLIBC_HAS_CRYPT=y
+UCLIBC_HAS_CRYPT_IMPL=y
+UCLIBC_HAS_CTYPE_CHECKED=y
+# UCLIBC_HAS_CTYPE_ENFORCED is not set
+UCLIBC_HAS_CTYPE_SIGNED=y
+UCLIBC_HAS_CTYPE_TABLES=y
+# UCLIBC_HAS_CTYPE_UNSAFE is not set
+UCLIBC_HAS_EPOLL=y
+UCLIBC_HAS_ERRNO_MESSAGES=y
+# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set
+# UCLIBC_HAS_FENV is not set
+UCLIBC_HAS_FLOATS=y
+UCLIBC_HAS_FNMATCH=y
+UCLIBC_HAS_FNMATCH_OLD=y
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_FTW=y
+UCLIBC_HAS_FULL_RPC=y
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+UCLIBC_HAS_GLOB=y
+UCLIBC_HAS_GNU_ERROR=y
+UCLIBC_HAS_GNU_GETOPT=y
+UCLIBC_HAS_GNU_GETSUBOPT=y
+UCLIBC_HAS_GNU_GLOB=y
+UCLIBC_HAS_HEXADECIMAL_FLOATS=y
+UCLIBC_HAS_IPV4=y
+UCLIBC_HAS_IPV6=y
+UCLIBC_HAS_LFS=y
+# UCLIBC_HAS_LOCALE is not set
+UCLIBC_HAS_NETWORK_SUPPORT=y
+# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set
+# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set
+UCLIBC_HAS_PRINTF_M_SPEC=y
+# UCLIBC_HAS_PROFILING is not set
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
+UCLIBC_HAS_PTY=y
+UCLIBC_HAS_REALTIME=y
+# UCLIBC_HAS_REENTRANT_RPC is not set
+UCLIBC_HAS_REGEX=y
+UCLIBC_HAS_REGEX_OLD=y
+UCLIBC_HAS_RPC=y
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+UCLIBC_HAS_SHADOW=y
+UCLIBC_HAS_SIGNUM_MESSAGES=y
+UCLIBC_HAS_SOCKET=y
+UCLIBC_HAS_SOFT_FLOAT=y
+# UCLIBC_HAS_SSP is not set
+UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
+# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
+UCLIBC_HAS_STDIO_BUFSIZ_4096=y
+# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
+# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
+# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
+UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
+UCLIBC_HAS_STDIO_FUTEXES=y
+UCLIBC_HAS_STDIO_GETC_MACRO=y
+UCLIBC_HAS_STDIO_PUTC_MACRO=y
+# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
+UCLIBC_HAS_STRING_ARCH_OPT=y
+UCLIBC_HAS_STRING_GENERIC_OPT=y
+# UCLIBC_HAS_STUBS is not set
+UCLIBC_HAS_SYSLOG=y
+# UCLIBC_HAS_SYS_ERRLIST is not set
+# UCLIBC_HAS_SYS_SIGLIST is not set
+UCLIBC_HAS_THREADS=y
+UCLIBC_HAS_THREADS_NATIVE=y
+UCLIBC_HAS_TLS=y
+UCLIBC_HAS_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+UCLIBC_HAS_WCHAR=y
+UCLIBC_HAS_WORDEXP=y
+# UCLIBC_HAS_XATTR is not set
+UCLIBC_HAS___PROGNAME=y
+# UCLIBC_LINUX_MODULE_24 is not set
+UCLIBC_LINUX_SPECIFIC=y
+# UCLIBC_MALLOC_DEBUGGING is not set
+# UCLIBC_MJN3_ONLY is not set
+# UCLIBC_NTP_LEGACY is not set
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_PWD_BUFFER_SIZE=256
+# UCLIBC_STATIC_LDCONFIG is not set
+# UCLIBC_SUPPORT_AI_ADDRCONFIG is not set
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_SUSV3_LEGACY_MACROS=y
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_SV4_DEPRECATED is not set
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+UCLIBC_USE_NETLINK=y
+# UNIX98PTY_ONLY is not set
+USE_BX=y
+WARNINGS="-Wall"
diff --git a/toolchain/uClibc/config-nptl/cris b/toolchain/uClibc/config-nptl/cris
new file mode 100644
index 0000000000..b9ea676fcd
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/cris
@@ -0,0 +1,6 @@
+ARCH_LITTLE_ENDIAN=y
+CONFIG_CRIS=y
+# CONFIG_CRISV32 is not set
+TARGET_ARCH="cris"
+TARGET_cris=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-nptl/i386 b/toolchain/uClibc/config-nptl/i386
new file mode 100644
index 0000000000..521ce8c250
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/i386
@@ -0,0 +1,24 @@
+ARCH_LITTLE_ENDIAN=y
+# CONFIG_386 is not set
+CONFIG_486=y
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+# CONFIG_686 is not set
+# CONFIG_CRUSOE is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_ELAN is not set
+# CONFIG_GENERIC_386 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_NEHEMIAH is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_WINCHIPC6 is not set
+LINUXTHREADS_NEW=y
+# LINUXTHREADS_OLD is not set
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/config-nptl/i686 b/toolchain/uClibc/config-nptl/i686
new file mode 100644
index 0000000000..22379f4a85
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/i686
@@ -0,0 +1,24 @@
+ARCH_LITTLE_ENDIAN=y
+# CONFIG_386 is not set
+# CONFIG_486 is not set
+# CONFIG_586 is not set
+# CONFIG_586MMX is not set
+CONFIG_686=y
+# CONFIG_CRUSOE is not set
+# CONFIG_CYRIXIII is not set
+# CONFIG_ELAN is not set
+# CONFIG_GENERIC_386 is not set
+# CONFIG_K6 is not set
+# CONFIG_K7 is not set
+# CONFIG_NEHEMIAH is not set
+# CONFIG_PENTIUM4 is not set
+# CONFIG_PENTIUMII is not set
+# CONFIG_PENTIUMIII is not set
+# CONFIG_WINCHIP2 is not set
+# CONFIG_WINCHIPC6 is not set
+LINUXTHREADS_NEW=y
+# LINUXTHREADS_OLD is not set
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/config-nptl/mips b/toolchain/uClibc/config-nptl/mips
new file mode 100644
index 0000000000..7398c66929
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/mips
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+CONFIG_MIPS_ISA_MIPS32=y
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+# CONFIG_MIPS_ISA_MIPS64 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-nptl/mipsel b/toolchain/uClibc/config-nptl/mipsel
new file mode 100644
index 0000000000..7648f396ba
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/mipsel
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+CONFIG_MIPS_ISA_MIPS32=y
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+# CONFIG_MIPS_ISA_MIPS64 is not set
+# CONFIG_MIPS_N32_ABI is not set
+# CONFIG_MIPS_N64_ABI is not set
+CONFIG_MIPS_O32_ABI=y
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-nptl/powerpc b/toolchain/uClibc/config-nptl/powerpc
new file mode 100644
index 0000000000..4e5cd43ba4
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/powerpc
@@ -0,0 +1,7 @@
+ARCH_BIG_ENDIAN=y
+CONFIG_CLASSIC=y
+# CONFIG_E500 is not set
+TARGET_ARCH="powerpc"
+TARGET_SUBARCH="classic"
+TARGET_powerpc=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/config-nptl/x86_64 b/toolchain/uClibc/config-nptl/x86_64
new file mode 100644
index 0000000000..20a18f1a07
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/x86_64
@@ -0,0 +1,7 @@
+ARCH_LITTLE_ENDIAN=y
+# LINUXTHREADS_NEW is not set
+TARGET_ARCH="x86_64"
+TARGET_x86_64=y
+UCLIBC_BSD_SPECIFIC=y
+UCLIBC_HAS_FPU=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/patches-nptl/110-compat_macros.patch b/toolchain/uClibc/patches-nptl/110-compat_macros.patch
new file mode 100644
index 0000000000..7659e465cc
--- /dev/null
+++ b/toolchain/uClibc/patches-nptl/110-compat_macros.patch
@@ -0,0 +1,51 @@
+--- ./include/string.h.orig 2008-06-08 22:38:53.000000000 +0200
++++ ./include/string.h 2009-01-02 16:09:03.000000000 +0100
+@@ -355,18 +355,40 @@
+ /* Find the last occurrence of C in S (same as strrchr). */
+ extern char *rindex (__const char *__s, int __c)
+ __THROW __attribute_pure__ __nonnull ((1));
+-# else
+-# ifdef __UCLIBC_SUSV3_LEGACY_MACROS__
++# elif defined(__UCLIBC_SUSV3_LEGACY_MACROS__) && !defined(_STRINGS_H)
+ /* bcopy/bzero/bcmp/index/rindex are marked LEGACY in SuSv3.
+ * They are replaced as proposed by SuSv3. Don't sync this part
+ * with glibc and keep it in sync with strings.h. */
+
+-# define bcopy(src,dest,n) (memmove((dest), (src), (n)), (void) 0)
+-# define bzero(s,n) (memset((s), '\0', (n)), (void) 0)
+-# define bcmp(s1,s2,n) memcmp((s1), (s2), (size_t)(n))
+-# define index(s,c) strchr((s), (c))
+-# define rindex(s,c) strrchr((s), (c))
+-# endif
++/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
++static __inline__ void bcopy (__const void *__src, void *__dest, size_t __n)
++{
++ memmove(__dest, __src, __n);
++}
++
++/* Set N bytes of S to 0. */
++static __inline__ void bzero (void *__s, size_t __n)
++{
++ memset(__s, 0, __n);
++}
++
++/* Compare N bytes of S1 and S2 (same as memcmp). */
++static __inline__ int bcmp (__const void *__s1, __const void *__s2, size_t __n)
++{
++ return memcmp(__s1, __s2, __n);
++}
++
++/* Find the first occurrence of C in S (same as strchr). */
++static __inline__ char *index (__const char *__s, int __c)
++{
++ return strchr(__s, __c);
++}
++
++/* Find the last occurrence of C in S (same as strrchr). */
++static __inline__ char *rindex (__const char *__s, int __c)
++{
++ return strrchr(__s, __c);
++}
+ # endif
+
+ /* Return the position of the first bit set in I, or 0 if none are set.
diff --git a/toolchain/uClibc/patches-nptl/120-adjtimex.patch b/toolchain/uClibc/patches-nptl/120-adjtimex.patch
new file mode 100644
index 0000000000..5127701dfc
--- /dev/null
+++ b/toolchain/uClibc/patches-nptl/120-adjtimex.patch
@@ -0,0 +1,14 @@
+Index: uClibc-0.9.29/include/sys/timex.h
+===================================================================
+--- uClibc-0.9.29.orig/include/sys/timex.h 2007-12-30 17:34:21.983513096 +0100
++++ uClibc-0.9.29/include/sys/timex.h 2007-12-30 17:34:32.180094169 +0100
+@@ -116,7 +116,8 @@
+
+ __BEGIN_DECLS
+
+-extern int __adjtimex (struct timex *__ntx) __THROW;
++#undef __adjtimex
++#define __adjtimex adjtimex
+ extern int adjtimex (struct timex *__ntx) __THROW;
+
+ extern int ntp_gettime (struct ntptimeval *__ntv) __THROW;
diff --git a/toolchain/uClibc/patches-nptl/130-compile_fix.patch b/toolchain/uClibc/patches-nptl/130-compile_fix.patch
new file mode 100644
index 0000000000..ed3812a8ea
--- /dev/null
+++ b/toolchain/uClibc/patches-nptl/130-compile_fix.patch
@@ -0,0 +1,36 @@
+--- a/librt/mq_receive.c
++++ b/librt/mq_receive.c
+@@ -6,7 +6,8 @@
+ #include <stddef.h>
+ #include <sys/syscall.h>
+ #include <mqueue.h>
+-#warning FIXME: hard dependency on ADVANCED REALTIME feature
++
++#ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
+
+ librt_hidden_proto(mq_timedreceive)
+
+@@ -44,3 +45,5 @@ ssize_t mq_receive(mqd_t mqdes, char *ms
+ {
+ return mq_timedreceive(mqdes, msg_ptr, msg_len, msg_prio, NULL);
+ }
++
++#endif /* __UCLIBC_HAS_ADVANCED_REALTIME__ */
+--- a/librt/mq_send.c
++++ b/librt/mq_send.c
+@@ -6,7 +6,8 @@
+ #include <stddef.h>
+ #include <sys/syscall.h>
+ #include <mqueue.h>
+-#warning FIXME: hard dependency on ADVANCED REALTIME feature
++
++#ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
+
+ librt_hidden_proto(mq_timedsend)
+
+@@ -43,3 +44,5 @@ int mq_send(mqd_t mqdes, const char *msg
+ {
+ return mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio, NULL);
+ }
++
++#endif /* __UCLIBC_HAS_ADVANCED_REALTIME__ */