diff mbox

[OpenWrt-Devel] toolchain/uClibc: Add uClibc snapshot as selectable version

Message ID 20150304191348.GA23225@ubuntu
State Rejected
Headers show

Commit Message

Jeff Waugh March 4, 2015, 7:13 p.m. UTC
Hi all,

One for discussion, I'm sure. :-)

There hasn't been a uClibc release since May 2012, but some useful things have
landed in git since then... for example, make/get/setcontext are necessary for
uClibc + gccgo/libgo (c.f. my last patch set).

This adds a non-default option for a known-good nightly snapshot. I'm sure you
will have comments on some of the... hmm... odd things I've done. Let me know!

I suspect the nightly snapshot tarballs will disappear (it looks like they're
rolled over after a couple of weeks), so it might be best to change this to a
git checkout. But I did it this way to get it ready for feedback.

Thanks,
Jeff


Signed-off-by: Jeff Waugh <jdub@bethesignal.org>
---
 toolchain/uClibc/Config.in                     |   4 +
 toolchain/uClibc/Config.version                |   4 +
 toolchain/uClibc/common.mk                     |  11 ++
 toolchain/uClibc/config-20150304/arm           |   7 +
 toolchain/uClibc/config-20150304/armeb         |   7 +
 toolchain/uClibc/config-20150304/avr32         |  12 ++
 toolchain/uClibc/config-20150304/common        | 214 +++++++++++++++++++++++++
 toolchain/uClibc/config-20150304/cris          |   8 +
 toolchain/uClibc/config-20150304/debug         |   6 +
 toolchain/uClibc/config-20150304/i386          |  21 +++
 toolchain/uClibc/config-20150304/i686          |  21 +++
 toolchain/uClibc/config-20150304/m68k          |   6 +
 toolchain/uClibc/config-20150304/mips          |  17 ++
 toolchain/uClibc/config-20150304/mips64        |  17 ++
 toolchain/uClibc/config-20150304/mips64.32     |  18 +++
 toolchain/uClibc/config-20150304/mips64.64     |  18 +++
 toolchain/uClibc/config-20150304/mips64.n32    |  18 +++
 toolchain/uClibc/config-20150304/mips64el      |  17 ++
 toolchain/uClibc/config-20150304/mips64el.32   |  18 +++
 toolchain/uClibc/config-20150304/mips64el.64   |  18 +++
 toolchain/uClibc/config-20150304/mips64el.n32  |  18 +++
 toolchain/uClibc/config-20150304/mipsel        |  17 ++
 toolchain/uClibc/config-20150304/mipsel.cobalt |  17 ++
 toolchain/uClibc/config-20150304/powerpc       |   6 +
 toolchain/uClibc/config-20150304/powerpc.e500  |   6 +
 toolchain/uClibc/config-20150304/sparc         |   8 +
 toolchain/uClibc/config-20150304/sparc.leon    |   8 +
 toolchain/uClibc/config-20150304/x86_64        |   6 +
 28 files changed, 548 insertions(+)
 create mode 100644 toolchain/uClibc/config-20150304/arm
 create mode 100644 toolchain/uClibc/config-20150304/armeb
 create mode 100644 toolchain/uClibc/config-20150304/avr32
 create mode 100644 toolchain/uClibc/config-20150304/common
 create mode 100644 toolchain/uClibc/config-20150304/cris
 create mode 100644 toolchain/uClibc/config-20150304/debug
 create mode 100644 toolchain/uClibc/config-20150304/i386
 create mode 100644 toolchain/uClibc/config-20150304/i686
 create mode 100644 toolchain/uClibc/config-20150304/m68k
 create mode 100644 toolchain/uClibc/config-20150304/mips
 create mode 100644 toolchain/uClibc/config-20150304/mips64
 create mode 100644 toolchain/uClibc/config-20150304/mips64.32
 create mode 100644 toolchain/uClibc/config-20150304/mips64.64
 create mode 100644 toolchain/uClibc/config-20150304/mips64.n32
 create mode 100644 toolchain/uClibc/config-20150304/mips64el
 create mode 100644 toolchain/uClibc/config-20150304/mips64el.32
 create mode 100644 toolchain/uClibc/config-20150304/mips64el.64
 create mode 100644 toolchain/uClibc/config-20150304/mips64el.n32
 create mode 100644 toolchain/uClibc/config-20150304/mipsel
 create mode 100644 toolchain/uClibc/config-20150304/mipsel.cobalt
 create mode 100644 toolchain/uClibc/config-20150304/powerpc
 create mode 100644 toolchain/uClibc/config-20150304/powerpc.e500
 create mode 100644 toolchain/uClibc/config-20150304/sparc
 create mode 100644 toolchain/uClibc/config-20150304/sparc.leon
 create mode 100644 toolchain/uClibc/config-20150304/x86_64

Comments

Dirk Neukirchen March 4, 2015, 8:04 p.m. UTC | #1
On 04.03.2015 20:13, Jeff Waugh wrote:
> There hasn't been a uClibc release since May 2012, but some useful things have
> landed in git since then... for example, make/get/setcontext are necessary for
> uClibc + gccgo/libgo (c.f. my last patch set).
> 
> This adds a non-default option for a known-good nightly snapshot. I'm sure you
> will have comments on some of the... hmm... odd things I've done. Let me know!

adding uclibc snapshots maybe other (patched) variants 
might improve .... well some things (quality ? pressure to release new stable version?)

uclibc version "problems" affect other uclibc users too [0],[1],[2]
and this came up regularly in the past and its a little bit messy
to have potentially slightly different uclibc versions between projects
[3][4] (hoping that these are the correct uclibc patch/variants links for buildroot
and yocto project)

Its probably a good thing to get easier access to a uclibc variant than using 
- "abandoned" eglibc = bad ("EGLIBC is no longer developed and such goals 
  are now being addressed directly in GLIBC. ")
- musl ("experimental")

[0] http://lists.uclibc.org/pipermail/uclibc/2014-February/048252.html
[1] http://lists.uclibc.org/pipermail/uclibc/2015-February/048769.html
[2] http://lists.uclibc.org/pipermail/uclibc/2014-July/048399.html

[3] http://git.buildroot.net/buildroot/tree/package/uclibc
[4] http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/recipes-core/uclibc/uclibc-git
Jeff Waugh March 5, 2015, 2:13 a.m. UTC | #2
On Thu, Mar 5, 2015 at 7:04 AM, Dirk Neukirchen <dirkneukirchen@web.de>
wrote:

> Its probably a good thing to get easier access to a uclibc variant than
> using
> - "abandoned" eglibc = bad ("EGLIBC is no longer developed and such goals
>   are now being addressed directly in GLIBC. ")
>

By the way, I've also been working on a patch to re-introduce glibc. I'll
send that through soon. :-)
Jeff Waugh March 5, 2015, 2:19 a.m. UTC | #3
On Thu, Mar 5, 2015 at 7:04 AM, Dirk Neukirchen <dirkneukirchen@web.de>
wrote:

> adding uclibc snapshots maybe other (patched) variants
> might improve .... well some things (quality ? pressure to release new
> stable version?)
>

So we have some options:

1) use uclibc-snapshot.tar.bz2 instead of a dated, known working version
(though we can't check the md5sum)
2) use uclibc git at a specific revision
3) use uclibc git at head
4) anything I don't know about? uclibc-ng?

I'm leaning towards (2) at this point, and will send through a patch for
that.
Jeff Waugh March 5, 2015, 3:52 a.m. UTC | #4
On Thu, Mar 5, 2015 at 1:19 PM, Jeff Waugh <jdub@bethesignal.org> wrote:

> 1) use uclibc-snapshot.tar.bz2 instead of a dated, known working version
> (though we can't check the md5sum)
> 2) use uclibc git at a specific revision
> 3) use uclibc git at head
> 4) anything I don't know about? uclibc-ng?
>
> I'm leaning towards (2) at this point, and will send through a patch for
> that.
>

It's a pity that (1) is just *so* easy. And although it won't produce
like-for-like builds from a fresh checkout of OpenWrt, if you've already
downloaded the snapshot tarballs then your own builds will be
like-for-like. At least in that context.
Felix Fietkau March 17, 2015, 8:51 a.m. UTC | #5
On 2015-03-05 03:19, Jeff Waugh wrote:
> On Thu, Mar 5, 2015 at 7:04 AM, Dirk Neukirchen <dirkneukirchen@web.de
> <mailto:dirkneukirchen@web.de>> wrote:
> 
>     adding uclibc snapshots maybe other (patched) variants
>     might improve .... well some things (quality ? pressure to release
>     new stable version?)
> 
> 
> So we have some options:
> 
> 1) use uclibc-snapshot.tar.bz2 instead of a dated, known working version
> (though we can't check the md5sum)
> 2) use uclibc git at a specific revision
> 3) use uclibc git at head
> 4) anything I don't know about? uclibc-ng?
> 
> I'm leaning towards (2) at this point, and will send through a patch for
> that.
Option 1) may seem easy in the short term, but it gets messed up so
easily. We also have a policy to not have any moving-target packages in
the same way, so I'm even less inclined to accept it for a libc.
Same issue with 3).
Integrating a uclibc fork like -ng is probably also a waste of time.

Did you see any real improvements with the snapshot that you used in
your patch?

FWIW, I consider uClibc a dead end for OpenWrt. After the CC release is
done, I want to push for switching to musl by default and fix the
remaining issues with that.
Unlike uclibc, musl has decent code and an active maintainer and
developer community.
Unlike glibc, musl is quite small - actually comparable in size to uClibc.

In terms of performance, I expect musl to beat both glibc and uClibc.

- Felix
Jeff Waugh March 17, 2015, 9:16 a.m. UTC | #6
On Tue, Mar 17, 2015 at 7:51 PM, Felix Fietkau <nbd@openwrt.org> wrote:

> Did you see any real improvements with the snapshot that you used in
> your patch?
>

The main thing for me was presence of get/set/makecontext support.
Definitely agree about the moving target problem.


> FWIW, I consider uClibc a dead end for OpenWrt. After the CC release is
> done, I want to push for switching to musl by default and fix the
> remaining issues with that.
>

Alrighty, that makes sense. Thanks for your feedback.

I'll probably leave further work on musl vs. gccgo/libc to someone else,
and focus on making sure it's nicely integrated at least with glibc.

Thanks,
Jeff
diff mbox

Patch

diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in
index 08ea00a..3bd14bd 100644
--- a/toolchain/uClibc/Config.in
+++ b/toolchain/uClibc/Config.in
@@ -11,6 +11,10 @@  choice
 		select UCLIBC_VERSION_0_9_33
 		bool "uClibc 0.9.33.2"
 
+	config UCLIBC_USE_VERSION_20150304
+		select UCLIBC_VERSION_20150304
+		bool "uClibc snapshot (2015-03-14)"
+
 endchoice
 
 # Debug version.
diff --git a/toolchain/uClibc/Config.version b/toolchain/uClibc/Config.version
index dd302f2..56af6b4 100644
--- a/toolchain/uClibc/Config.version
+++ b/toolchain/uClibc/Config.version
@@ -1,9 +1,13 @@ 
 config UCLIBC_VERSION
 	string
 	depends on USE_UCLIBC
+	default "20150304"       if UCLIBC_VERSION_20150304
 	default "0.9.33.2"       if UCLIBC_VERSION_0_9_33
 	default "0.9.33.2"
 
 config UCLIBC_VERSION_0_9_33
 	default y if !TOOLCHAINOPTS && USE_UCLIBC
 	bool
+
+config UCLIBC_VERSION_20150304
+	bool
diff --git a/toolchain/uClibc/common.mk b/toolchain/uClibc/common.mk
index 435e4c2..0d9bec3 100644
--- a/toolchain/uClibc/common.mk
+++ b/toolchain/uClibc/common.mk
@@ -15,7 +15,14 @@  LIBC_SO_VERSION:=$(PKG_VERSION)
 PATCH_DIR:=$(PATH_PREFIX)/patches-$(PKG_VERSION)
 CONFIG_DIR:=$(PATH_PREFIX)/config-$(PKG_VERSION)
 
+PKG_SNAPSHOT:=$(if $(findstring .,$(PKG_VERSION)),,y)
+ifdef $(PKG_SNAPSHOT)
+PKG_SOURCE_URL:=http://www.uclibc.org/downloads/snapshots/
+LIBC_SO_VERSION:=0.9.34-git
+endif
+
 PKG_MD5SUM_0.9.33.2 = a338aaffc56f0f5040e6d9fa8a12eda1
+PKG_MD5SUM_20150304 = ad1ad727ea92da600554991bee60eff2
 PKG_MD5SUM=$(PKG_MD5SUM_$(PKG_VERSION))
 
 HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION)
@@ -69,6 +76,10 @@  define Host/Prepare
 			$(QUILT_CMD) push -a; \
 		fi
 	)
+	$(if $(PKG_SNAPSHOT), \
+		rm -d $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION); \
+		mv $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION)
+	)
 	ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
 endef
 
diff --git a/toolchain/uClibc/config-20150304/arm b/toolchain/uClibc/config-20150304/arm
new file mode 100644
index 0000000..b68617b
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/arm
@@ -0,0 +1,7 @@ 
+ARCH_ANY_ENDIAN=y
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# COMPILE_IN_THUMB_MODE is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
+# USE_BX is not set
diff --git a/toolchain/uClibc/config-20150304/armeb b/toolchain/uClibc/config-20150304/armeb
new file mode 100644
index 0000000..d4932e8
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/armeb
@@ -0,0 +1,7 @@ 
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_WANTS_BIG_ENDIAN=y
+# COMPILE_IN_THUMB_MODE is not set
+TARGET_ARCH="arm"
+TARGET_arm=y
+# USE_BX is not set
diff --git a/toolchain/uClibc/config-20150304/avr32 b/toolchain/uClibc/config-20150304/avr32
new file mode 100644
index 0000000..729fbc9
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/avr32
@@ -0,0 +1,12 @@ 
+ARCH_BIG_ENDIAN=y
+CONFIG_AVR32_AP7=y
+FORCE_SHAREABLE_TEXT_SEGMENTS=y
+LINKRELAX=y
+LINUXTHREADS_OLD=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
+# UCLIBC_HAS_THREADS_NATIVE is not set
+UNIX98PTY_ONLY=y
diff --git a/toolchain/uClibc/config-20150304/common b/toolchain/uClibc/config-20150304/common
new file mode 100644
index 0000000..1bb9cc5
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/common
@@ -0,0 +1,214 @@ 
+# 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 is not set
+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
+# DO_XSI_MATH is not set
+# EXTRA_WARNINGS is not set
+FORCE_OPTIONS_FOR_ARCH=y
+# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
+# HARDWIRED_ABSPATH 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_LD_LIBRARY_PATH=y
+LDSO_LDD_SUPPORT=y
+# LDSO_NO_CLEANUP is not set
+# LDSO_PRELINK_SUPPORT is not set
+# LDSO_PRELOAD_FILE_SUPPORT is not set
+# LDSO_PRELOAD_ENV_SUPPORT is not set
+LDSO_RUNPATH=y
+# LDSO_SEARCH_INTERP_PATH is not set
+# LDSO_STANDALONE_SUPPORT is not set
+# LINUXTHREADS_NEW is not set
+# LINUXTHREADS_OLD is not set
+# UCLIBC_HAS_BACKTRACE is not set
+UCLIBC_HAS_THREADS_NATIVE=y
+# MALLOC is not set
+MALLOC_GLIBC_COMPAT=y
+# MALLOC_SIMPLE is not set
+MALLOC_STANDARD=y
+MULTILIB_DIR="lib"
+PTHREADS_DEBUG_SUPPORT=y
+RUNTIME_PREFIX="/"
+# 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_c6x 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=y
+# UCLIBC_HAS_ARC4RANDOM is not set
+UCLIBC_HAS_BSD_ERR=y
+UCLIBC_HAS_BSD_RES_CLOSE=y
+# UCLIBC_HAS_COMPAT_RES_STATE is not set
+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_CLOSEEXEC_MODE is not set
+UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
+# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
+# UCLIBC_HAS_FPU is not set
+UCLIBC_HAS_FTS=y
+UCLIBC_HAS_FTW=y
+# UCLIBC_HAS_FULL_RPC is not set
+UCLIBC_HAS_GETPT=y
+UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
+UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
+# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set
+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_LIBNSL_STUB=y
+UCLIBC_HAS_LIBRESOLV_STUB=y
+UCLIBC_HAS_LIBUTIL=y
+# UCLIBC_HAS_LOCALE is not set
+# UCLIBC_BUILD_ALL_LOCALE is not set
+# UCLIBC_BUILD_MINIMAL_LOCALE is not set
+# UCLIBC_PREGENERATED_LOCALE_DATA is not set
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
+UCLIBC_HAS_NETWORK_SUPPORT=y
+UCLIBC_HAS_NFTW=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_RESOLVER_SUPPORT=y
+# UCLIBC_HAS_RPC is not set
+UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
+# UCLIBC_HAS_SHA256_CRYPT_IMPL is not set
+# UCLIBC_HAS_SHA512_CRYPT_IMPL is not set
+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_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_TM_EXTENSIONS=y
+UCLIBC_HAS_TZ_CACHING=y
+UCLIBC_HAS_TZ_FILE=y
+UCLIBC_HAS_TZ_FILE_READ_MANY=y
+# UCLIBC_HAS_UTMPX is not set
+UCLIBC_HAS_WCHAR=y
+UCLIBC_HAS_WORDEXP=y
+# UCLIBC_HAS_XATTR is not set
+# UCLIBC_HAS_XLOCALE is not set
+UCLIBC_HAS___PROGNAME=y
+# UCLIBC_LINUX_MODULE_24 is not set
+UCLIBC_LINUX_MODULE_26=y
+UCLIBC_LINUX_SPECIFIC=y
+# UCLIBC_MALLOC_DEBUGGING is not set
+# UCLIBC_MJN3_ONLY is not set
+# UCLIBC_NTP_LEGACY is not set
+# USE_OLD_VFPRINTF is not set
+UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
+UCLIBC_PWD_BUFFER_SIZE=256
+# UCLIBC_STATIC_LDCONFIG is not set
+# UCLIBC_STRICT_HEADERS is not set
+UCLIBC_SUPPORT_AI_ADDRCONFIG=y
+UCLIBC_SUSV3_LEGACY=y
+UCLIBC_SUSV3_LEGACY_MACROS=y
+UCLIBC_SUSV4_LEGACY=y
+# UCLIBC_SV4_DEPRECATED is not set
+UCLIBC_HAS_CONTEXT_FUNCS=y
+UCLIBC_TZ_FILE_PATH="/etc/TZ"
+# UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set
+UCLIBC_USE_NETLINK=y
+# UNIX98PTY_ONLY is not set
+USE_BX=y
+WARNINGS="-Wall"
diff --git a/toolchain/uClibc/config-20150304/cris b/toolchain/uClibc/config-20150304/cris
new file mode 100644
index 0000000..4164484
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/cris
@@ -0,0 +1,8 @@ 
+ARCH_LITTLE_ENDIAN=y
+CONFIG_CRIS=y
+# CONFIG_CRISV32 is not set
+LINUXTHREADS_OLD=y
+TARGET_ARCH="cris"
+TARGET_cris=y
+UCLIBC_HAS_FPU=y
+# UCLIBC_HAS_THREADS_NATIVE is not set
diff --git a/toolchain/uClibc/config-20150304/debug b/toolchain/uClibc/config-20150304/debug
new file mode 100644
index 0000000..b366e66
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/debug
@@ -0,0 +1,6 @@ 
+DODEBUG=y
+DODEBUG_PT=y
+PTHREADS_DEBUG_SUPPORT=y
+SUPPORT_LD_DEBUG=y
+SUPPORT_LD_DEBUG_EARLY=y
+UCLIBC_MALLOC_DEBUGGING=y
diff --git a/toolchain/uClibc/config-20150304/i386 b/toolchain/uClibc/config-20150304/i386
new file mode 100644
index 0000000..5ef264c
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/i386
@@ -0,0 +1,21 @@ 
+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
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/i686 b/toolchain/uClibc/config-20150304/i686
new file mode 100644
index 0000000..ba615f6
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/i686
@@ -0,0 +1,21 @@ 
+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
+TARGET_ARCH="i386"
+TARGET_i386=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/m68k b/toolchain/uClibc/config-20150304/m68k
new file mode 100644
index 0000000..14ce5ae
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/m68k
@@ -0,0 +1,6 @@ 
+ARCH_BIG_ENDIAN=y
+LINUXTHREADS_OLD=y
+TARGET_ARCH="m68k"
+TARGET_SUBARCH=""
+TARGET_m68k=y
+# UCLIBC_HAS_THREADS_NATIVE is not set
diff --git a/toolchain/uClibc/config-20150304/mips b/toolchain/uClibc/config-20150304/mips
new file mode 100644
index 0000000..7398c66
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/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-20150304/mips64 b/toolchain/uClibc/config-20150304/mips64
new file mode 100644
index 0000000..fa5bee3
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64
@@ -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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64.32 b/toolchain/uClibc/config-20150304/mips64.32
new file mode 100644
index 0000000..03f7fba
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64.32
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# 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
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64.64 b/toolchain/uClibc/config-20150304/mips64.64
new file mode 100644
index 0000000..7b66c2f
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64.64
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64.n32 b/toolchain/uClibc/config-20150304/mips64.n32
new file mode 100644
index 0000000..84a5de6
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64.n32
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+CONFIG_MIPS_N32_ABI=y
+# CONFIG_MIPS_N64_ABI is not set
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64el b/toolchain/uClibc/config-20150304/mips64el
new file mode 100644
index 0000000..1ca764f
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64el
@@ -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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64el.32 b/toolchain/uClibc/config-20150304/mips64el.32
new file mode 100644
index 0000000..73b1f9f
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64el.32
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# 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
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64el.64 b/toolchain/uClibc/config-20150304/mips64el.64
new file mode 100644
index 0000000..790f210
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64el.64
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mips64el.n32 b/toolchain/uClibc/config-20150304/mips64el.n32
new file mode 100644
index 0000000..c2929bf
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mips64el.n32
@@ -0,0 +1,18 @@ 
+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 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+CONFIG_MIPS_N32_ABI=y
+# CONFIG_MIPS_N64_ABI is not set
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+TARGET_SUBARCH="mips64"
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-20150304/mipsel b/toolchain/uClibc/config-20150304/mipsel
new file mode 100644
index 0000000..7648f39
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/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-20150304/mipsel.cobalt b/toolchain/uClibc/config-20150304/mipsel.cobalt
new file mode 100644
index 0000000..323b0aa
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/mipsel.cobalt
@@ -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=y
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# 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-20150304/powerpc b/toolchain/uClibc/config-20150304/powerpc
new file mode 100644
index 0000000..5b1292d
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/powerpc
@@ -0,0 +1,6 @@ 
+ARCH_BIG_ENDIAN=y
+CONFIG_CLASSIC=y
+# CONFIG_E500 is not set
+TARGET_ARCH="powerpc"
+TARGET_SUBARCH="classic"
+TARGET_powerpc=y
diff --git a/toolchain/uClibc/config-20150304/powerpc.e500 b/toolchain/uClibc/config-20150304/powerpc.e500
new file mode 100644
index 0000000..a835c3d
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/powerpc.e500
@@ -0,0 +1,6 @@ 
+ARCH_BIG_ENDIAN=y
+# CONFIG_CLASSIC is not set
+CONFIG_E500=y
+TARGET_ARCH="powerpc"
+TARGET_SUBARCH="classic"
+TARGET_powerpc=y
diff --git a/toolchain/uClibc/config-20150304/sparc b/toolchain/uClibc/config-20150304/sparc
new file mode 100644
index 0000000..e1596c4
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/sparc
@@ -0,0 +1,8 @@ 
+ARCH_BIG_ENDIAN=y
+# CONFIG_SPARC_V7 is not set
+# CONFIG_SPARC_V8 is not set
+CONFIG_SPARC_V9=y
+# CONFIG_SPARC_V9B is not set
+TARGET_ARCH="sparc"
+TARGET_sparc=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/config-20150304/sparc.leon b/toolchain/uClibc/config-20150304/sparc.leon
new file mode 100644
index 0000000..eb725ac
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/sparc.leon
@@ -0,0 +1,8 @@ 
+ARCH_BIG_ENDIAN=y
+# CONFIG_SPARC_V7 is not set
+CONFIG_SPARC_V8=y
+# CONFIG_SPARC_V9 is not set
+# CONFIG_SPARC_V9B is not set
+TARGET_ARCH="sparc"
+TARGET_sparc=y
+UCLIBC_HAS_LONG_DOUBLE_MATH=y
diff --git a/toolchain/uClibc/config-20150304/x86_64 b/toolchain/uClibc/config-20150304/x86_64
new file mode 100644
index 0000000..92f0e65
--- /dev/null
+++ b/toolchain/uClibc/config-20150304/x86_64
@@ -0,0 +1,6 @@ 
+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