Explorar o código

bump buildroot and Qt

Reinhard Russinger %!s(int64=4) %!d(string=hai) anos
pai
achega
2ff4eba65f
Modificáronse 61 ficheiros con 2297 adicións e 12892 borrados
  1. 5 7
      Make-bb-kernel_noRT.sh
  2. 1 1
      board/GfA/Display001/BUILD
  3. 13 0
      board/GfA/Display001/linux_4.4.94_rt19/linux-032-fix-gcc-8.patch
  4. 38 0
      board/GfA/Display001/linux_4.4.94_rt19/linux-033-fix-syscall-return-binutils-2.29.patch
  5. 10 7
      board/GfA/Display001/rootfs/etc/init.d/S99tunslip6
  6. 9 6
      board/GfA/Display001/rootfs/etc/init.d/S99xDb
  7. 9 6
      board/GfA/Display001/rootfs/etc/init.d/S99yDb
  8. 87 0
      board/GfA/Display001/uboot_2013.10/uboot-009-gcc7.patch
  9. 87 0
      board/GfA/Display001/uboot_2013.10/uboot-010-gcc9.patch
  10. 87 0
      board/GfA/Display001/uboot_2013.10/uboot-011-gcc8.patch
  11. 0 29
      build_kernel.sh.patch
  12. 0 36
      build_kernel_44104rt.sh.patch
  13. 14 119
      configs/Display001_4.4.104-bone-rt-21_Qt5.15.2_defconfig
  14. 0 468
      configs/Display001_4.4.104_rt21_Qt5.7_defconfig
  15. 1 1
      package/gfaipc/gfaipc.mk
  16. 1 1
      package/gfamininet/gfamininet.mk
  17. 1 1
      package/gfanet/gfanet.mk
  18. 1 0
      package/gfaqt/Config.in
  19. 2 2
      package/gfaqt/gfaqt.mk
  20. 1 1
      package/gfasitarautils/gfasitarautils.mk
  21. 1 1
      package/gfatimer/gfatimer.mk
  22. 0 9344
      patches/0001-GfA-wrk-changes-and-setup.patch
  23. 1437 0
      patches/0001-Helper-Scripts.patch
  24. 0 15
      patches/0002-mysql-add-innodb-engine-to-package.patch
  25. 0 66
      patches/0004-libmodbus-GfA-fflush-for-debug.patch
  26. 0 58
      patches/0005-GfA-empty-input-queue-on-CRC-error.patch
  27. 0 45
      patches/0006-change-source-ref-of-expect-package.patch
  28. 0 24
      patches/0007-change-source-ref-of-qt-5.7.0.patch
  29. 0 73
      patches/0009-uboot-tools-add-GfA-env.patch
  30. 0 228
      patches/0010-libmodbus-from-GfA-repo.patch
  31. 0 98
      patches/0011-wlan-autoconfig.patch
  32. 0 49
      patches/0012-libmodbus_test-Update-dmsmasq.patch
  33. 0 332
      patches/0014-chroot_env_for_rootfs_update.patch
  34. 0 23
      patches/0015-set_my_cnf_for_GfA_logger.patch
  35. 0 27
      patches/0016-set-rtc-from-display_gsm.patch
  36. 0 36
      patches/0017-set-mysql-and-pstgres-owner-for-datadir.patch
  37. 0 29
      patches/0018-minicom-lrz-lsz-instead-of-rx-sx.patch
  38. 0 21
      patches/0019-chroot-700_ssh_exclude_ssh.patch
  39. 0 71
      patches/0020-update-ca-certificates-to20190110.patch
  40. 0 177
      patches/0021-bump-libvncserver-to-0.9.12.patch
  41. 0 21
      patches/0022-CrossCompile-fixes.patch
  42. 0 14
      patches/0024-add-dependency-bluez-tools.patch
  43. 0 209
      patches/0024-civetweb-to-v1.11.patch
  44. 0 129
      patches/0024-mmc-tools-new-version.patch
  45. 0 77
      patches/0025-CrossCompile-fixes.patch
  46. 0 146
      patches/0026-MakeTOOLCHAIN.patch
  47. 0 12
      patches/0027-qt57-archive-path-changed.patch
  48. 0 762
      patches/0028-Update-Script-New.patch
  49. 0 37
      patches/0029-add-contiki-settings-for-crosscompile.patch
  50. 2 10
      patches/0101-libvncserver-force-threads.patch
  51. 38 0
      patches/0102-revert-pulseaudio-to-12.2-due-to-compile-issues-in-q.patch
  52. 118 0
      patches/0104-gfx-settings-for-GfA.patch
  53. 43 0
      patches/0105-evtest-SW_IO1-SW_IO4.patch
  54. 46 0
      patches/0106-libmodbus-GfA.patch
  55. 15 0
      patches/0107-ti-gfx-wrong-source-path.patch
  56. 140 0
      patches/0108-revert-to-glibc-2.30-due-to-time64-issues.patch
  57. 20 29
      patches/0109-kernel-haders-r2_485-and-IN1-IN4-headersettings.patch
  58. 0 18
      patches/0110-netplug-handle-st-downandout.patch
  59. 25 0
      patches/0110-python-pyudef-fix_syntax_error.patch
  60. 0 26
      patches/0111-change-package-urls.patch
  61. 45 0
      patches/0111-qtwebenine-use-only-3-Cpu-s.patch

+ 5 - 7
Make-bb-kernel_noRT_Qt5.7.sh → Make-bb-kernel_noRT.sh

@@ -20,12 +20,10 @@
 #!/bin/bash
 #!/bin/bash
 GFAWRKDIR=`pwd`
 GFAWRKDIR=`pwd`
 cd ..
 cd ..
-rm -rf buildroot57
-#git clone git://git.buildroot.net/buildroot ./buildroot57
-##git clone ssh://gogs@gogs.reru.org:2222/PUBLIC_REPOS/buildroot.git ./buildroot57
-git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot57
-cd buildroot57
-git checkout 2016.11.3 -b gfawrk
+rm -rf buildroot
+git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot
+cd buildroot
+git checkout -b gfawrk
 for i in ../GfA/patches/*.patch
 for i in ../GfA/patches/*.patch
 do
 do
 	echo "==Apply patch : <$i> =="
 	echo "==Apply patch : <$i> =="
@@ -36,6 +34,6 @@ chmod a+x *.sh
 cp ../GfA/configs/* ./configs
 cp ../GfA/configs/* ./configs
 git add .
 git add .
 git commit -m "GfA wrk changes and setup"
 git commit -m "GfA wrk changes and setup"
-make BR2_EXTERNAL=../GfA Display001_4.4.145_bone23_Qt5.7_defconfig
+make BR2_EXTERNAL=../GfA Display001_4.4.104-bone-rt-21_Qt5.15.2_defconfig
 cd $GFAWRKDIR
 cd $GFAWRKDIR
 #------
 #------

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-679
+804

+ 13 - 0
board/GfA/Display001/linux_4.4.94_rt19/linux-032-fix-gcc-8.patch

@@ -0,0 +1,13 @@
+diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
+index 35c9db85..cd8b5891 100644
+--- a/arch/arm/include/asm/uaccess.h
++++ b/arch/arm/include/asm/uaccess.h
+@@ -251,7 +251,7 @@ extern int __put_user_8(void *, unsigned long long);
+ 	({								\
+ 		unsigned long __limit = current_thread_info()->addr_limit - 1; \
+ 		const typeof(*(p)) __user *__tmp_p = (p);		\
+-		register const typeof(*(p)) __r2 asm("r2") = (x);	\
++		register typeof(*(p)) __r2 asm("r2") = (x);	\
+ 		register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \
+ 		register unsigned long __l asm("r1") = __limit;		\
+ 		register int __e asm("r0");				\

+ 38 - 0
board/GfA/Display001/linux_4.4.94_rt19/linux-033-fix-syscall-return-binutils-2.29.patch

@@ -0,0 +1,38 @@
+diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
+index c3bd6cb..d9298bf 100644
+--- a/arch/arm/kernel/entry-common.S
++++ b/arch/arm/kernel/entry-common.S
+@@ -32,6 +32,7 @@
+  * features make this path too inefficient.
+  */
+ ret_fast_syscall:
++__ret_fast_syscall:
+  UNWIND(.fnstart	)
+  UNWIND(.cantunwind	)
+ 	disable_irq_notrace			@ disable interrupts
+@@ -59,6 +60,7 @@ fast_work_pending:
+  * r0 first to avoid needing to save registers around each C function call.
+  */
+ ret_fast_syscall:
++__ret_fast_syscall:
+  UNWIND(.fnstart	)
+  UNWIND(.cantunwind	)
+ 	str	r0, [sp, #S_R0 + S_OFF]!	@ save returned r0
+@@ -229,7 +231,7 @@ local_restart:
+ 	bne	__sys_trace
+ 
+ 	cmp	scno, #NR_syscalls		@ check upper syscall limit
+-	badr	lr, ret_fast_syscall		@ return address
++	badr	lr, __ret_fast_syscall		@ return address
+ 	ldrcc	pc, [tbl, scno, lsl #2]		@ call sys_* routine
+ 
+ 	add	r1, sp, #S_OFF
+@@ -251,7 +253,7 @@ local_restart:
+ 9001:
+ 	sub	lr, lr, #4
+ 	str	lr, [sp, #S_PC]
+-	b	ret_fast_syscall
++	b	__ret_fast_syscall
+ #endif
+ ENDPROC(vector_swi)
+ 

+ 10 - 7
board/GfA/Display001/rootfs/etc/init.d/S99tunslip6

@@ -3,6 +3,7 @@
 # Start App	
 # Start App	
 #
 #
 #
 #
+BASEBOARD=`cat /tmp/BASEBOARD`
 APPNAME=tunslip6
 APPNAME=tunslip6
 APPBIN=/root/tunslip6 # full qualified applicationpath
 APPBIN=/root/tunslip6 # full qualified applicationpath
 APPPAR="-v4 -s /dev/ttyO2  fd00::1/64"
 APPPAR="-v4 -s /dev/ttyO2  fd00::1/64"
@@ -10,13 +11,15 @@ APPPAR="-v4 -s /dev/ttyO2  fd00::1/64"
 
 
 case "$1" in
 case "$1" in
   start)
   start)
-	echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
-        echo -e "Starting ${APPNAME} ...\n"
-	if [ ! -f ${APPBIN} ]; then
-		echo -e "Program ${APPBIN} doesn't exist \n"
-		exit 1
-	fi 
-        screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+       if [ "$BASEBOARD" == "GFA_RF_CAPE" ]; then
+		echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
+	        echo -e "Starting ${APPNAME} ...\n"
+		if [ ! -f ${APPBIN} ]; then
+			echo -e "Program ${APPBIN} doesn't exist \n"
+			exit 1
+		fi 
+	        screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+	fi
         exit 0
         exit 0
         ;;
         ;;
   stop)
   stop)

+ 9 - 6
board/GfA/Display001/rootfs/etc/init.d/S99xDb

@@ -3,6 +3,7 @@
 # Start App	
 # Start App	
 #/sub_client  -h localhost  -t '#'
 #/sub_client  -h localhost  -t '#'
 #
 #
+BASEBOARD=`cat /tmp/BASEBOARD
 APPNAME=sub_client
 APPNAME=sub_client
 APPBIN=/root/sub_client # full qualified applicationpath
 APPBIN=/root/sub_client # full qualified applicationpath
 APPPAR=" -h localhost -t '#'"
 APPPAR=" -h localhost -t '#'"
@@ -10,12 +11,14 @@ APPPAR=" -h localhost -t '#'"
 
 
 case "$1" in
 case "$1" in
   start)
   start)
-        echo -e "Starting ${APPNAME} ...\n"
-	if [ ! -f ${APPBIN} ]; then
-		echo -e "Program ${APPBIN} doesn't exist \n"
-		exit 1
-	fi 
-        screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+	if [ "$BASEBOARD" == "GFA_RF_CAPE" ]; then
+        	echo -e "Starting ${APPNAME} ...\n"
+		if [ ! -f ${APPBIN} ]; then
+			echo -e "Program ${APPBIN} doesn't exist \n"
+			exit 1
+		fi 
+	        screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+	fi
         exit 0
         exit 0
         ;;
         ;;
   stop)
   stop)

+ 9 - 6
board/GfA/Display001/rootfs/etc/init.d/S99yDb

@@ -3,6 +3,7 @@
 # Start App	
 # Start App	
 #/sub_client  -h localhost  -t '#'
 #/sub_client  -h localhost  -t '#'
 #
 #
+BASEBOARD=`cat /tmp/BASEBOARD`
 APPNAME=pub_client
 APPNAME=pub_client
 APPBIN=/root/sub_client # full qualified applicationpath
 APPBIN=/root/sub_client # full qualified applicationpath
 APPPAR="-h 10.51.42.1 -t '#' -v"
 APPPAR="-h 10.51.42.1 -t '#' -v"
@@ -10,12 +11,14 @@ APPPAR="-h 10.51.42.1 -t '#' -v"
 
 
 case "$1" in
 case "$1" in
   start)
   start)
-        echo -e "Starting ${APPNAME} ...\n"
-	if [ ! -f ${APPBIN} ]; then
-		echo -e "Program ${APPBIN} doesn't exist \n"
-		exit 1
-	fi 
-        screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+	if [ "$BASEBOARD" == "GFA_RF_CAPE" ]; then
+        	echo -e "Starting ${APPNAME} ...\n"
+		if [ ! -f ${APPBIN} ]; then
+			echo -e "Program ${APPBIN} doesn't exist \n"
+			exit 1
+		fi 
+        	screen -dmS ${APPNAME} sh -c "while true; do ${APPBIN} ${APPPAR}; echo '${APPNAME} stopped--> restart'; sleep 2;done"
+	fi        	
         exit 0
         exit 0
         ;;
         ;;
   stop)
   stop)

+ 87 - 0
board/GfA/Display001/uboot_2013.10/uboot-009-gcc7.patch

@@ -0,0 +1,87 @@
+From 4de8e7a1fb120b4f6b4052e84c600eeb7969dc4d Mon Sep 17 00:00:00 2001
+From: Florin Sarbu <florin@resin.io>
+Date: Sat, 28 Feb 2018 11:50:33 +0100
+Subject: [PATCH] Add compiler-gcc7.h header file
+
+This file is derived from compiler-gcc5.h
+
+Upstream-Status: Inappropriate [upstream u-boot does not use compiler-gccX.h anymore]
+Signed-off-by: Florin Sarbu <florin@resin.io>
+---
+ include/linux/compiler-gcc7.h | 65 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 65 insertions(+)
+ create mode 100644 include/linux/compiler-gcc7.h
+
+diff --git a/include/linux/compiler-gcc7.h b/include/linux/compiler-gcc7.h
+new file mode 100644
+index 0000000..622117b
+--- /dev/null
++++ b/include/linux/compiler-gcc7.h
+@@ -0,0 +1,65 @@
++#ifndef __LINUX_COMPILER_H
++#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
++#endif
++
++#define __used				__attribute__((__used__))
++#define __must_check			__attribute__((warn_unused_result))
++#define __compiler_offsetof(a, b)	__builtin_offsetof(a, b)
++
++/* Mark functions as cold. gcc will assume any path leading to a call
++   to them will be unlikely.  This means a lot of manual unlikely()s
++   are unnecessary now for any paths leading to the usual suspects
++   like BUG(), printk(), panic() etc. [but let's keep them for now for
++   older compilers]
++
++   Early snapshots of gcc 4.3 don't support this and we can't detect this
++   in the preprocessor, but we can live with this because they're unreleased.
++   Maketime probing would be overkill here.
++
++   gcc also has a __attribute__((__hot__)) to move hot functions into
++   a special section, but I don't see any sense in this right now in
++   the kernel context */
++#define __cold			__attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++
++/*
++ * Mark a position in code as unreachable.  This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ *
++ * Early snapshots of gcc 4.5 don't support this and we can't detect
++ * this in the preprocessor, but we can live with this because they're
++ * unreleased.  Really, we need to have autoconf for the kernel.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone	__attribute__((__noclone__))
++
++/*
++ * Tell the optimizer that something else uses this function or variable.
++ */
++#define __visible __attribute__((externally_visible))
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#define __HAVE_BUILTIN_BSWAP16__
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
+-- 
+2.7.4

+ 87 - 0
board/GfA/Display001/uboot_2013.10/uboot-010-gcc9.patch

@@ -0,0 +1,87 @@
+From 4de8e7a1fb120b4f6b4052e84c600eeb7969dc4d Mon Sep 17 00:00:00 2001
+From: Florin Sarbu <florin@resin.io>
+Date: Sat, 28 Feb 2018 11:50:33 +0100
+Subject: [PATCH] Add compiler-gcc9.h header file
+
+This file is derived from compiler-gcc5.h
+
+Upstream-Status: Inappropriate [upstream u-boot does not use compiler-gccX.h anymore]
+Signed-off-by: Florin Sarbu <florin@resin.io>
+---
+ include/linux/compiler-gcc9.h | 65 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 65 insertions(+)
+ create mode 100644 include/linux/compiler-gcc9.h
+
+diff --git a/include/linux/compiler-gcc9.h b/include/linux/compiler-gcc9.h
+new file mode 100644
+index 0000000..622117b
+--- /dev/null
++++ b/include/linux/compiler-gcc9.h
+@@ -0,0 +1,65 @@
++#ifndef __LINUX_COMPILER_H
++#error "Please don't include <linux/compiler-gcc9.h> directly, include <linux/compiler.h> instead."
++#endif
++
++#define __used				__attribute__((__used__))
++#define __must_check			__attribute__((warn_unused_result))
++#define __compiler_offsetof(a, b)	__builtin_offsetof(a, b)
++
++/* Mark functions as cold. gcc will assume any path leading to a call
++   to them will be unlikely.  This means a lot of manual unlikely()s
++   are unnecessary now for any paths leading to the usual suspects
++   like BUG(), printk(), panic() etc. [but let's keep them for now for
++   older compilers]
++
++   Early snapshots of gcc 4.3 don't support this and we can't detect this
++   in the preprocessor, but we can live with this because they're unreleased.
++   Maketime probing would be overkill here.
++
++   gcc also has a __attribute__((__hot__)) to move hot functions into
++   a special section, but I don't see any sense in this right now in
++   the kernel context */
++#define __cold			__attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++
++/*
++ * Mark a position in code as unreachable.  This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ *
++ * Early snapshots of gcc 4.5 don't support this and we can't detect
++ * this in the preprocessor, but we can live with this because they're
++ * unreleased.  Really, we need to have autoconf for the kernel.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone	__attribute__((__noclone__))
++
++/*
++ * Tell the optimizer that something else uses this function or variable.
++ */
++#define __visible __attribute__((externally_visible))
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#define __HAVE_BUILTIN_BSWAP16__
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
+-- 
+2.7.4

+ 87 - 0
board/GfA/Display001/uboot_2013.10/uboot-011-gcc8.patch

@@ -0,0 +1,87 @@
+From 4de8e7a1fb120b4f6b4052e84c600eeb7969dc4d Mon Sep 17 00:00:00 2001
+From: Florin Sarbu <florin@resin.io>
+Date: Sat, 28 Feb 2018 11:50:33 +0100
+Subject: [PATCH] Add compiler-gcc8.h header file
+
+This file is derived from compiler-gcc5.h
+
+Upstream-Status: Inappropriate [upstream u-boot does not use compiler-gccX.h anymore]
+Signed-off-by: Florin Sarbu <florin@resin.io>
+---
+ include/linux/compiler-gcc8.h | 65 +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 65 insertions(+)
+ create mode 100644 include/linux/compiler-gcc8.h
+
+diff --git a/include/linux/compiler-gcc8.h b/include/linux/compiler-gcc8.h
+new file mode 100644
+index 0000000..622117b
+--- /dev/null
++++ b/include/linux/compiler-gcc8.h
+@@ -0,0 +1,65 @@
++#ifndef __LINUX_COMPILER_H
++#error "Please don't include <linux/compiler-gcc8.h> directly, include <linux/compiler.h> instead."
++#endif
++
++#define __used				__attribute__((__used__))
++#define __must_check			__attribute__((warn_unused_result))
++#define __compiler_offsetof(a, b)	__builtin_offsetof(a, b)
++
++/* Mark functions as cold. gcc will assume any path leading to a call
++   to them will be unlikely.  This means a lot of manual unlikely()s
++   are unnecessary now for any paths leading to the usual suspects
++   like BUG(), printk(), panic() etc. [but let's keep them for now for
++   older compilers]
++
++   Early snapshots of gcc 4.3 don't support this and we can't detect this
++   in the preprocessor, but we can live with this because they're unreleased.
++   Maketime probing would be overkill here.
++
++   gcc also has a __attribute__((__hot__)) to move hot functions into
++   a special section, but I don't see any sense in this right now in
++   the kernel context */
++#define __cold			__attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++
++/*
++ * Mark a position in code as unreachable.  This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ *
++ * Early snapshots of gcc 4.5 don't support this and we can't detect
++ * this in the preprocessor, but we can live with this because they're
++ * unreleased.  Really, we need to have autoconf for the kernel.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone	__attribute__((__noclone__))
++
++/*
++ * Tell the optimizer that something else uses this function or variable.
++ */
++#define __visible __attribute__((externally_visible))
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#define __HAVE_BUILTIN_BSWAP16__
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
+-- 
+2.7.4

+ 0 - 29
build_kernel.sh.patch

@@ -1,29 +0,0 @@
-diff --git a/build_kernel.sh b/build_kernel.sh
-index df9f455..86bc6da 100755
---- a/build_kernel.sh
-+++ b/build_kernel.sh
-@@ -19,7 +19,7 @@
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- # THE SOFTWARE.
--
-+AUTO_BUILD=1
- DIR=$PWD
- git_bin=$(which git)
- 
-@@ -251,11 +251,11 @@ fi
- if [  -f "${DIR}/.yakbuild" ] ; then
- 	BUILD=$(echo ${kernel_tag} | sed 's/[^-]*//'|| true)
- fi
--make_kernel
--make_modules_pkg
--make_firmware_pkg
-+#make_kernel
-+#make_modules_pkg
-+#make_firmware_pkg
- if grep -q dtbs "${DIR}/KERNEL/arch/${KERNEL_ARCH}/Makefile"; then
--	make_dtbs_pkg
-+#	make_dtbs_pkg
- fi
- echo "-----------------------------"
- echo "Script Complete"

+ 0 - 36
build_kernel_44104rt.sh.patch

@@ -1,36 +0,0 @@
-diff --git a/build_kernel.sh b/build_kernel.sh
-index dff6f56..2b199d1 100755
---- a/build_kernel.sh
-+++ b/build_kernel.sh
-@@ -235,6 +235,7 @@ fi
- 
- #unset FULL_REBUILD
- FULL_REBUILD=1
-+AUTO_BUILD=1
- if [ "${FULL_REBUILD}" ] ; then
- 	/bin/sh -e "${DIR}/scripts/git.sh" || { exit 1 ; }
- 
-@@ -251,15 +252,15 @@ fi
- if [  -f "${DIR}/.yakbuild" ] ; then
- 	BUILD=$(echo ${kernel_tag} | sed 's/[^-]*//'|| true)
- fi
--make_kernel
--make_modules_pkg
--if [ -f "${DIR}/KERNEL/scripts/Makefile.fwinst" ] ; then
-+#make_kernel
-+#make_modules_pkg
-+#if [ -f "${DIR}/KERNEL/scripts/Makefile.fwinst" ] ; then
- 	#Finally nuked in v4.14.0-rc0 merge...
--	make_firmware_pkg
--fi
--if grep -q dtbs "${DIR}/KERNEL/arch/${KERNEL_ARCH}/Makefile"; then
--	make_dtbs_pkg
--fi
-+#	make_firmware_pkg
-+#fi
-+#if grep -q dtbs "${DIR}/KERNEL/arch/${KERNEL_ARCH}/Makefile"; then
-+#	make_dtbs_pkg
-+#fi
- echo "-----------------------------"
- echo "Script Complete"
- echo "${KERNEL_UTS}" > kernel_version

+ 14 - 119
configs/Display001_4.4.145_bone23_Qt5.7_defconfig → configs/Display001_4.4.104-bone-rt-21_Qt5.15.2_defconfig

@@ -2,17 +2,15 @@ BR2_arm=y
 BR2_cortex_a8=y
 BR2_cortex_a8=y
 BR2_ARM_INSTRUCTIONS_THUMB2=y
 BR2_ARM_INSTRUCTIONS_THUMB2=y
 BR2_DL_DIR="~/buildroot_dl"
 BR2_DL_DIR="~/buildroot_dl"
-BR2_HOST_DIR="/opt/GfA/TC_L44104_C493_QT57_GfA_v1_0"
+BR2_HOST_DIR="/opt/GfA/TC_L44104_C930_QT5-15-2_GfA_v1_0"
 # BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
 # BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
 BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
 BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
 BR2_KERNEL_HEADERS_4_4=y
 BR2_KERNEL_HEADERS_4_4=y
-BR2_GLIBC_VERSION_2_24=y
-BR2_BINUTILS_VERSION_2_27_X=y
-BR2_GCC_VERSION_4_9_3=y
+BR2_BINUTILS_VERSION_2_32_X=y
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_HOST_GDB=y
 BR2_PACKAGE_HOST_GDB_TUI=y
 BR2_PACKAGE_HOST_GDB_TUI=y
-BR2_PACKAGE_HOST_GDB_PYTHON=y
+BR2_PACKAGE_HOST_GDB_PYTHON3=y
 BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
 BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
 BR2_TARGET_OPTIMIZATION="-pipe"
 BR2_TARGET_OPTIMIZATION="-pipe"
 BR2_TARGET_GENERIC_HOSTNAME="GfA"
 BR2_TARGET_GENERIC_HOSTNAME="GfA"
@@ -36,42 +34,22 @@ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.
 BR2_LINUX_KERNEL_UIMAGE=y
 BR2_LINUX_KERNEL_UIMAGE=y
 BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
 BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
-BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
 BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7_rs485.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_2020.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_cape.dts"
 BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7_rs485.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_2020.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_cape.dts"
 BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
 BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
 BR2_PACKAGE_FFMPEG_GPL=y
 BR2_PACKAGE_FFMPEG_GPL=y
 BR2_PACKAGE_FFMPEG_NONFREE=y
 BR2_PACKAGE_FFMPEG_NONFREE=y
 BR2_PACKAGE_FFMPEG_FFPLAY=y
 BR2_PACKAGE_FFMPEG_FFPLAY=y
-BR2_PACKAGE_FFMPEG_FFSERVER=y
 BR2_PACKAGE_FFMPEG_FFPROBE=y
 BR2_PACKAGE_FFMPEG_FFPROBE=y
 BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
 BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
 BR2_PACKAGE_FFMPEG_POSTPROC=y
 BR2_PACKAGE_FFMPEG_POSTPROC=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
-BR2_PACKAGE_GST1_PLUGINS_BAD=y
-BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
-BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
-BR2_PACKAGE_MPD=y
-BR2_PACKAGE_MPLAYER=y
 BR2_PACKAGE_MPV=y
 BR2_PACKAGE_MPV=y
 BR2_PACKAGE_VLC=y
 BR2_PACKAGE_VLC=y
 BR2_PACKAGE_WAVPACK=y
 BR2_PACKAGE_WAVPACK=y
 BR2_PACKAGE_GZIP=y
 BR2_PACKAGE_GZIP=y
-BR2_PACKAGE_LZ4=y
 BR2_PACKAGE_LZIP=y
 BR2_PACKAGE_LZIP=y
 BR2_PACKAGE_LZOP=y
 BR2_PACKAGE_LZOP=y
 BR2_PACKAGE_P7ZIP=y
 BR2_PACKAGE_P7ZIP=y
-BR2_PACKAGE_UNRAR=y
 BR2_PACKAGE_UNZIP=y
 BR2_PACKAGE_UNZIP=y
 BR2_PACKAGE_ZIP=y
 BR2_PACKAGE_ZIP=y
 BR2_PACKAGE_GDB=y
 BR2_PACKAGE_GDB=y
@@ -98,7 +76,6 @@ BR2_PACKAGE_EXFAT=y
 BR2_PACKAGE_EXFAT_UTILS=y
 BR2_PACKAGE_EXFAT_UTILS=y
 BR2_PACKAGE_F2FS_TOOLS=y
 BR2_PACKAGE_F2FS_TOOLS=y
 BR2_PACKAGE_FLASHBENCH=y
 BR2_PACKAGE_FLASHBENCH=y
-BR2_PACKAGE_MAKEDEVS=y
 BR2_PACKAGE_MMC_UTILS=y
 BR2_PACKAGE_MMC_UTILS=y
 BR2_PACKAGE_DEJAVU=y
 BR2_PACKAGE_DEJAVU=y
 BR2_PACKAGE_FONT_AWESOME=y
 BR2_PACKAGE_FONT_AWESOME=y
@@ -106,71 +83,36 @@ BR2_PACKAGE_DIRECTFB=y
 BR2_PACKAGE_DIRECTFB_DIVINE=y
 BR2_PACKAGE_DIRECTFB_DIVINE=y
 BR2_PACKAGE_DIRECTFB_SAWMAN=y
 BR2_PACKAGE_DIRECTFB_SAWMAN=y
 BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
 BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
-BR2_PACKAGE_EFL=y
-BR2_PACKAGE_EFL_FB=y
-BR2_PACKAGE_EFL_WEBP=y
 BR2_PACKAGE_FB_TEST_APP=y
 BR2_PACKAGE_FB_TEST_APP=y
 BR2_PACKAGE_FBTERM=y
 BR2_PACKAGE_FBTERM=y
 BR2_PACKAGE_FBV=y
 BR2_PACKAGE_FBV=y
 BR2_PACKAGE_LINUX_FUSION=y
 BR2_PACKAGE_LINUX_FUSION=y
 BR2_PACKAGE_PSPLASH=y
 BR2_PACKAGE_PSPLASH=y
-BR2_PACKAGE_SDL_DIRECTFB=y
-BR2_PACKAGE_SDL_GFX=y
-BR2_PACKAGE_SDL_IMAGE=y
-BR2_PACKAGE_SDL_IMAGE_GIF=y
-BR2_PACKAGE_SDL_IMAGE_JPEG=y
-BR2_PACKAGE_SDL_IMAGE_LBM=y
-BR2_PACKAGE_SDL_IMAGE_PCX=y
-BR2_PACKAGE_SDL_IMAGE_PNG=y
-BR2_PACKAGE_SDL_IMAGE_PNM=y
-BR2_PACKAGE_SDL_IMAGE_TARGA=y
-BR2_PACKAGE_SDL_IMAGE_TIFF=y
-BR2_PACKAGE_SDL_IMAGE_WEBP=y
-BR2_PACKAGE_SDL_IMAGE_XCF=y
-BR2_PACKAGE_SDL_IMAGE_XPM=y
-BR2_PACKAGE_SDL_IMAGE_XV=y
-BR2_PACKAGE_SDL_MIXER=y
-BR2_PACKAGE_SDL_NET=y
-BR2_PACKAGE_SDL_SOUND=y
-BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
-BR2_PACKAGE_SDL_TTF=y
-BR2_PACKAGE_SDL2=y
 BR2_PACKAGE_SDL2_DIRECTFB=y
 BR2_PACKAGE_SDL2_DIRECTFB=y
 BR2_PACKAGE_SDL2_GFX=y
 BR2_PACKAGE_SDL2_GFX=y
 BR2_PACKAGE_SDL2_IMAGE=y
 BR2_PACKAGE_SDL2_IMAGE=y
 BR2_PACKAGE_SDL2_TTF=y
 BR2_PACKAGE_SDL2_TTF=y
 BR2_PACKAGE_QT5=y
 BR2_PACKAGE_QT5=y
-BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
+BR2_PACKAGE_QT53D=y
 BR2_PACKAGE_QT5BASE_MYSQL=y
 BR2_PACKAGE_QT5BASE_MYSQL=y
 BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
 BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
-BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
-BR2_PACKAGE_QT5BASE_EGLFS=y
-BR2_PACKAGE_QT5BASE_FONTCONFIG=y
 BR2_PACKAGE_QT5BASE_GIF=y
 BR2_PACKAGE_QT5BASE_GIF=y
 BR2_PACKAGE_QT5BASE_JPEG=y
 BR2_PACKAGE_QT5BASE_JPEG=y
 BR2_PACKAGE_QT5BASE_PNG=y
 BR2_PACKAGE_QT5BASE_PNG=y
-BR2_PACKAGE_QT53D=y
-BR2_PACKAGE_QT5CANVAS3D=y
-BR2_PACKAGE_QT5CONNECTIVITY=y
+BR2_PACKAGE_QT5CHARTS=y
 BR2_PACKAGE_QT5ENGINIO=y
 BR2_PACKAGE_QT5ENGINIO=y
 BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
 BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
 BR2_PACKAGE_QT5IMAGEFORMATS=y
 BR2_PACKAGE_QT5IMAGEFORMATS=y
 BR2_PACKAGE_QT5LOCATION=y
 BR2_PACKAGE_QT5LOCATION=y
 BR2_PACKAGE_QT5MULTIMEDIA=y
 BR2_PACKAGE_QT5MULTIMEDIA=y
-BR2_PACKAGE_QT5QUICKCONTROLS=y
 BR2_PACKAGE_QT5SENSORS=y
 BR2_PACKAGE_QT5SENSORS=y
 BR2_PACKAGE_QT5SERIALBUS=y
 BR2_PACKAGE_QT5SERIALBUS=y
-BR2_PACKAGE_QT5WAYLAND=y
-BR2_PACKAGE_QT5SVG=y
 BR2_PACKAGE_QT5TOOLS=y
 BR2_PACKAGE_QT5TOOLS=y
 BR2_PACKAGE_QT5TOOLS_QTPATHS=y
 BR2_PACKAGE_QT5TOOLS_QTPATHS=y
 BR2_PACKAGE_QT5TOOLS_QTPLUGININFO=y
 BR2_PACKAGE_QT5TOOLS_QTPLUGININFO=y
-BR2_PACKAGE_QT5WEBENGINE=y
 BR2_PACKAGE_QT5VIRTUALKEYBOARD=y
 BR2_PACKAGE_QT5VIRTUALKEYBOARD=y
-BR2_PACKAGE_QT5CHARTS=y
-BR2_PACKAGE_QT5DATAVIS3D=y
-BR2_PACKAGE_QT5QUICKCONTROLS2=y
-BR2_PACKAGE_TEKUI=y
+BR2_PACKAGE_QT5WAYLAND=y
+BR2_PACKAGE_QT5WEBENGINE=y
 BR2_PACKAGE_WESTON=y
 BR2_PACKAGE_WESTON=y
 BR2_PACKAGE_AM33X_CM3=y
 BR2_PACKAGE_AM33X_CM3=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
 BR2_PACKAGE_LINUX_FIRMWARE=y
@@ -218,12 +160,11 @@ BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
 BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
 BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
 BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
 BR2_PACKAGE_AM335X_PRU_PACKAGE=y
 BR2_PACKAGE_AM335X_PRU_PACKAGE=y
-BR2_PACKAGE_DEVMEM2=y
 BR2_PACKAGE_EVTEST=y
 BR2_PACKAGE_EVTEST=y
 BR2_PACKAGE_I2C_TOOLS=y
 BR2_PACKAGE_I2C_TOOLS=y
-BR2_PACKAGE_INPUT_TOOLS=y
 BR2_PACKAGE_KBD=y
 BR2_PACKAGE_KBD=y
 BR2_PACKAGE_LIBUIO=y
 BR2_PACKAGE_LIBUIO=y
+BR2_PACKAGE_LINUXCONSOLETOOLS=y
 BR2_PACKAGE_LSUIO=y
 BR2_PACKAGE_LSUIO=y
 BR2_PACKAGE_MINICOM=y
 BR2_PACKAGE_MINICOM=y
 BR2_PACKAGE_PARTED=y
 BR2_PACKAGE_PARTED=y
@@ -255,18 +196,13 @@ BR2_PACKAGE_TCL=y
 BR2_PACKAGE_EXPECT=y
 BR2_PACKAGE_EXPECT=y
 BR2_PACKAGE_TCLLIB=y
 BR2_PACKAGE_TCLLIB=y
 BR2_PACKAGE_LIBMPD=y
 BR2_PACKAGE_LIBMPD=y
-BR2_PACKAGE_OPUS=y
 BR2_PACKAGE_TAGLIB=y
 BR2_PACKAGE_TAGLIB=y
 BR2_PACKAGE_LIBZIP=y
 BR2_PACKAGE_LIBZIP=y
 BR2_PACKAGE_SNAPPY=y
 BR2_PACKAGE_SNAPPY=y
 BR2_PACKAGE_SZIP=y
 BR2_PACKAGE_SZIP=y
 BR2_PACKAGE_GNUTLS_TOOLS=y
 BR2_PACKAGE_GNUTLS_TOOLS=y
-BR2_PACKAGE_LIBNSS=y
 BR2_PACKAGE_LIBSHA1=y
 BR2_PACKAGE_LIBSHA1=y
 BR2_PACKAGE_LIBSSH2=y
 BR2_PACKAGE_LIBSSH2=y
-BR2_PACKAGE_OPENSSL_BIN=y
-BR2_PACKAGE_OPENSSL_ENGINES=y
-BR2_PACKAGE_MYSQL_SERVER=y
 BR2_PACKAGE_SQLITE_NO_SYNC=y
 BR2_PACKAGE_SQLITE_NO_SYNC=y
 BR2_PACKAGE_LIBCONFIG=y
 BR2_PACKAGE_LIBCONFIG=y
 BR2_PACKAGE_CAIRO_TEE=y
 BR2_PACKAGE_CAIRO_TEE=y
@@ -283,11 +219,8 @@ BR2_PACKAGE_GD_PNGTOGD=y
 BR2_PACKAGE_GD_PNGTOGD2=y
 BR2_PACKAGE_GD_PNGTOGD2=y
 BR2_PACKAGE_GD_WEBPNG=y
 BR2_PACKAGE_GD_WEBPNG=y
 BR2_PACKAGE_GDK_PIXBUF=y
 BR2_PACKAGE_GDK_PIXBUF=y
-BR2_PACKAGE_HARFBUZZ=y
-BR2_PACKAGE_LIBDRM=y
 BR2_PACKAGE_LIBDRM_OMAP=y
 BR2_PACKAGE_LIBDRM_OMAP=y
 BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
 BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
-BR2_PACKAGE_WEBP_DEMUX=y
 BR2_PACKAGE_DTC=y
 BR2_PACKAGE_DTC=y
 BR2_PACKAGE_DTC_PROGRAMS=y
 BR2_PACKAGE_DTC_PROGRAMS=y
 BR2_PACKAGE_LIBGUDEV=y
 BR2_PACKAGE_LIBGUDEV=y
@@ -299,11 +232,10 @@ BR2_PACKAGE_LIBV4L=y
 BR2_PACKAGE_JANSSON=y
 BR2_PACKAGE_JANSSON=y
 BR2_PACKAGE_LIBXSLT=y
 BR2_PACKAGE_LIBXSLT=y
 BR2_PACKAGE_LIBMPEG2=y
 BR2_PACKAGE_LIBMPEG2=y
-BR2_PACKAGE_LIBVPX=y
 BR2_PACKAGE_LIBYUV=y
 BR2_PACKAGE_LIBYUV=y
 BR2_PACKAGE_CANFESTIVAL=y
 BR2_PACKAGE_CANFESTIVAL=y
 BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
 BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
-BR2_PACKAGE_CURL=y
+BR2_PACKAGE_LIBCURL_CURL=y
 BR2_PACKAGE_LIBGSASL=y
 BR2_PACKAGE_LIBGSASL=y
 BR2_PACKAGE_LIBIDN=y
 BR2_PACKAGE_LIBIDN=y
 BR2_PACKAGE_LIBIDN_BINARY=y
 BR2_PACKAGE_LIBIDN_BINARY=y
@@ -326,36 +258,7 @@ BR2_PACKAGE_PAHO_MQTT_C=y
 BR2_PACKAGE_ZEROMQ=y
 BR2_PACKAGE_ZEROMQ=y
 BR2_PACKAGE_ZEROMQ_NORM=y
 BR2_PACKAGE_ZEROMQ_NORM=y
 BR2_PACKAGE_ZEROMQ_PGM=y
 BR2_PACKAGE_ZEROMQ_PGM=y
-BR2_PACKAGE_BOOST_ATOMIC=y
-BR2_PACKAGE_BOOST_CHRONO=y
-BR2_PACKAGE_BOOST_CONTAINER=y
-BR2_PACKAGE_BOOST_CONTEXT=y
-BR2_PACKAGE_BOOST_COROUTINE=y
-BR2_PACKAGE_BOOST_COROUTINE2=y
-BR2_PACKAGE_BOOST_DATE_TIME=y
-BR2_PACKAGE_BOOST_EXCEPTION=y
-BR2_PACKAGE_BOOST_FILESYSTEM=y
-BR2_PACKAGE_BOOST_GRAPH=y
-BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
-BR2_PACKAGE_BOOST_IOSTREAMS=y
-BR2_PACKAGE_BOOST_LOCALE=y
-BR2_PACKAGE_BOOST_LOG=y
-BR2_PACKAGE_BOOST_MATH=y
-BR2_PACKAGE_BOOST_METAPARSE=y
-BR2_PACKAGE_BOOST_MPI=y
-BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
-BR2_PACKAGE_BOOST_PYTHON=y
-BR2_PACKAGE_BOOST_RANDOM=y
-BR2_PACKAGE_BOOST_REGEX=y
-BR2_PACKAGE_BOOST_SERIALIZATION=y
-BR2_PACKAGE_BOOST_SIGNALS=y
-BR2_PACKAGE_BOOST_SYSTEM=y
-BR2_PACKAGE_BOOST_THREAD=y
-BR2_PACKAGE_BOOST_TIMER=y
-BR2_PACKAGE_BOOST_TYPE_ERASURE=y
-BR2_PACKAGE_BOOST_WAVE=y
 BR2_PACKAGE_ELFUTILS=y
 BR2_PACKAGE_ELFUTILS=y
-BR2_PACKAGE_LIBCAP_TOOLS=y
 BR2_PACKAGE_LIBICAL=y
 BR2_PACKAGE_LIBICAL=y
 BR2_PACKAGE_POCO=y
 BR2_PACKAGE_POCO=y
 BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
 BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
@@ -365,9 +268,6 @@ BR2_PACKAGE_POCO_DATA_MYSQL=y
 BR2_PACKAGE_PROTOBUF=y
 BR2_PACKAGE_PROTOBUF=y
 BR2_PACKAGE_PROTOBUF_C=y
 BR2_PACKAGE_PROTOBUF_C=y
 BR2_PACKAGE_NCURSES_WCHAR=y
 BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_NCURSES_TARGET_PANEL=y
-BR2_PACKAGE_NCURSES_TARGET_FORM=y
-BR2_PACKAGE_NCURSES_TARGET_MENU=y
 BR2_PACKAGE_NCURSES_TARGET_PROGS=y
 BR2_PACKAGE_NCURSES_TARGET_PROGS=y
 BR2_PACKAGE_FETCHMAIL=y
 BR2_PACKAGE_FETCHMAIL=y
 BR2_PACKAGE_HEIRLOOM_MAILX=y
 BR2_PACKAGE_HEIRLOOM_MAILX=y
@@ -376,10 +276,6 @@ BR2_PACKAGE_MSMTP=y
 BR2_PACKAGE_MUTT=y
 BR2_PACKAGE_MUTT=y
 BR2_PACKAGE_MUTT_IMAP=y
 BR2_PACKAGE_MUTT_IMAP=y
 BR2_PACKAGE_MUTT_POP3=y
 BR2_PACKAGE_MUTT_POP3=y
-BR2_PACKAGE_BLUEZ_UTILS_COMPAT=y
-BR2_PACKAGE_BLUEZ_UTILS_AUDIO=y
-BR2_PACKAGE_BLUEZ_UTILS_USB=y
-BR2_PACKAGE_BLUEZ_UTILS_GATT=y
 BR2_PACKAGE_BRIDGE_UTILS=y
 BR2_PACKAGE_BRIDGE_UTILS=y
 BR2_PACKAGE_CAN_UTILS=y
 BR2_PACKAGE_CAN_UTILS=y
 BR2_PACKAGE_CIVETWEB=y
 BR2_PACKAGE_CIVETWEB=y
@@ -397,14 +293,13 @@ BR2_PACKAGE_HTTPING_TFO=y
 BR2_PACKAGE_IFTOP=y
 BR2_PACKAGE_IFTOP=y
 BR2_PACKAGE_IFUPDOWN=y
 BR2_PACKAGE_IFUPDOWN=y
 BR2_PACKAGE_IPROUTE2=y
 BR2_PACKAGE_IPROUTE2=y
-BR2_PACKAGE_IPSEC_TOOLS=y
-BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
 BR2_PACKAGE_IPTABLES=y
 BR2_PACKAGE_IPTABLES=y
 BR2_PACKAGE_IW=y
 BR2_PACKAGE_IW=y
 BR2_PACKAGE_LRZSZ=y
 BR2_PACKAGE_LRZSZ=y
 BR2_PACKAGE_MINIDLNA=y
 BR2_PACKAGE_MINIDLNA=y
 BR2_PACKAGE_MOSQUITTO=y
 BR2_PACKAGE_MOSQUITTO=y
 BR2_PACKAGE_NETPLUG=y
 BR2_PACKAGE_NETPLUG=y
+BR2_PACKAGE_NETSTAT_NAT=y
 BR2_PACKAGE_NTP=y
 BR2_PACKAGE_NTP=y
 BR2_PACKAGE_NTP_NTPDATE=y
 BR2_PACKAGE_NTP_NTPDATE=y
 BR2_PACKAGE_NTP_NTPTIME=y
 BR2_PACKAGE_NTP_NTPTIME=y
@@ -429,15 +324,13 @@ BR2_PACKAGE_WPA_SUPPLICANT=y
 BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
 BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
 BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
 BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
 BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
 BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
-BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
 BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
 BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
 BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
 BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
 BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
 BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
 BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
 BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
 BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
 BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
 BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
 BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
-BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
-BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
+BR2_PACKAGE_WPA_SUPPLICANT_DBUS=y
 BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
 BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
 BR2_PACKAGE_WPAN_TOOLS=y
 BR2_PACKAGE_WPAN_TOOLS=y
 BR2_PACKAGE_BASH=y
 BR2_PACKAGE_BASH=y
@@ -451,12 +344,14 @@ BR2_PACKAGE_UTIL_LINUX_SETTERM=y
 BR2_PACKAGE_JOE=y
 BR2_PACKAGE_JOE=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2=y
 BR2_TARGET_ROOTFS_EXT2_4=y
 BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="1400M"
 BR2_TARGET_ROOTFS_TAR_GZIP=y
 BR2_TARGET_ROOTFS_TAR_GZIP=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
 BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
 BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
 BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
 BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
+BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
 # BR2_TARGET_UBOOT_FORMAT_BIN is not set
 # BR2_TARGET_UBOOT_FORMAT_BIN is not set
 BR2_TARGET_UBOOT_FORMAT_IMG=y
 BR2_TARGET_UBOOT_FORMAT_IMG=y
 BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
 BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
@@ -468,6 +363,7 @@ BR2_PACKAGE_HOST_DTC=y
 BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_GENIMAGE=y
 BR2_PACKAGE_HOST_MTOOLS=y
 BR2_PACKAGE_HOST_MTOOLS=y
 BR2_PACKAGE_APPLICATIONLAUNCHER=y
 BR2_PACKAGE_APPLICATIONLAUNCHER=y
+BR2_PACKAGE_GFASQLPLUGIN=y
 BR2_PACKAGE_QTFREEVIRTUALKEYBOARD=y
 BR2_PACKAGE_QTFREEVIRTUALKEYBOARD=y
 BR2_PACKAGE_GFABROWSER=y
 BR2_PACKAGE_GFABROWSER=y
 # BR2_PACKAGE_LIBGFAIPC is not set
 # BR2_PACKAGE_LIBGFAIPC is not set
@@ -478,4 +374,3 @@ BR2_PACKAGE_GFASITARAUTILS=y
 BR2_PACKAGE_GFAQT=y
 BR2_PACKAGE_GFAQT=y
 BR2_PACKAGE_GFAMININET=y
 BR2_PACKAGE_GFAMININET=y
 BR2_PACKAGE_GFATIMER=y
 BR2_PACKAGE_GFATIMER=y
-BR2_PACKAGE_GFANET=y

+ 0 - 468
configs/Display001_4.4.104_rt21_Qt5.7_defconfig

@@ -1,468 +0,0 @@
-BR2_arm=y
-BR2_cortex_a8=y
-BR2_ARM_INSTRUCTIONS_THUMB2=y
-BR2_DL_DIR="~/buildroot_dl"
-BR2_HOST_DIR="/opt/GfA/TC_L44104_C540_QT57"
-# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
-BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
-BR2_KERNEL_HEADERS_4_4=y
-BR2_GLIBC_VERSION_2_24=y
-BR2_BINUTILS_VERSION_2_27_X=y
-BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_PACKAGE_HOST_GDB=y
-BR2_PACKAGE_HOST_GDB_TUI=y
-BR2_PACKAGE_HOST_GDB_PYTHON=y
-BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
-BR2_TARGET_OPTIMIZATION="-pipe"
-BR2_TARGET_GENERIC_HOSTNAME="GfA"
-BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
-BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
-BR2_TARGET_GENERIC_ROOT_PASSWD="root"
-BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
-BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
-# BR2_ENABLE_LOCALE_PURGE is not set
-BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
-BR2_TARGET_LOCALTIME="Europe/Vienna"
-BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://gogs.reru.org/GfA/linux_kernel.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v4.4.104-bone-rt-r21"
-BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.104_rt21"
-BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.104_rt_defconfig"
-BR2_LINUX_KERNEL_UIMAGE=y
-BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
-BR2_LINUX_KERNEL_DTS_SUPPORT=y
-BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7_rs485.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10_30Hz.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_30Hz.dts"
-BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
-BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-BR2_PACKAGE_FFMPEG_GPL=y
-BR2_PACKAGE_FFMPEG_NONFREE=y
-BR2_PACKAGE_FFMPEG_FFPLAY=y
-BR2_PACKAGE_FFMPEG_FFSERVER=y
-BR2_PACKAGE_FFMPEG_FFPROBE=y
-BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
-BR2_PACKAGE_FFMPEG_POSTPROC=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
-BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
-BR2_PACKAGE_GST1_PLUGINS_BAD=y
-BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
-BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
-BR2_PACKAGE_MPD=y
-BR2_PACKAGE_MPLAYER=y
-BR2_PACKAGE_MPV=y
-BR2_PACKAGE_VLC=y
-BR2_PACKAGE_WAVPACK=y
-BR2_PACKAGE_GZIP=y
-BR2_PACKAGE_LZ4=y
-BR2_PACKAGE_LZIP=y
-BR2_PACKAGE_LZOP=y
-BR2_PACKAGE_P7ZIP=y
-BR2_PACKAGE_UNRAR=y
-BR2_PACKAGE_UNZIP=y
-BR2_PACKAGE_ZIP=y
-BR2_PACKAGE_GDB=y
-BR2_PACKAGE_GDB_DEBUGGER=y
-BR2_PACKAGE_STRACE=y
-BR2_PACKAGE_BINUTILS=y
-BR2_PACKAGE_BINUTILS_TARGET=y
-BR2_PACKAGE_CMAKE_CTEST=y
-BR2_PACKAGE_GETTEXT=y
-BR2_PACKAGE_GIT=y
-BR2_PACKAGE_MAKE=y
-BR2_PACKAGE_PATCH=y
-BR2_PACKAGE_SED=y
-BR2_PACKAGE_TREE=y
-BR2_PACKAGE_CIFS_UTILS=y
-BR2_PACKAGE_DOSFSTOOLS=y
-BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
-BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
-BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
-BR2_PACKAGE_E2FSPROGS=y
-BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
-BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
-BR2_PACKAGE_EXFAT=y
-BR2_PACKAGE_EXFAT_UTILS=y
-BR2_PACKAGE_F2FS_TOOLS=y
-BR2_PACKAGE_FLASHBENCH=y
-BR2_PACKAGE_MAKEDEVS=y
-BR2_PACKAGE_MMC_UTILS=y
-BR2_PACKAGE_DEJAVU=y
-BR2_PACKAGE_FONT_AWESOME=y
-BR2_PACKAGE_DIRECTFB=y
-BR2_PACKAGE_DIRECTFB_DIVINE=y
-BR2_PACKAGE_DIRECTFB_SAWMAN=y
-BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
-BR2_PACKAGE_EFL=y
-BR2_PACKAGE_EFL_FB=y
-BR2_PACKAGE_EFL_WEBP=y
-BR2_PACKAGE_FB_TEST_APP=y
-BR2_PACKAGE_FBTERM=y
-BR2_PACKAGE_FBV=y
-BR2_PACKAGE_LINUX_FUSION=y
-BR2_PACKAGE_PSPLASH=y
-BR2_PACKAGE_SDL_DIRECTFB=y
-BR2_PACKAGE_SDL_GFX=y
-BR2_PACKAGE_SDL_IMAGE=y
-BR2_PACKAGE_SDL_IMAGE_GIF=y
-BR2_PACKAGE_SDL_IMAGE_JPEG=y
-BR2_PACKAGE_SDL_IMAGE_LBM=y
-BR2_PACKAGE_SDL_IMAGE_PCX=y
-BR2_PACKAGE_SDL_IMAGE_PNG=y
-BR2_PACKAGE_SDL_IMAGE_PNM=y
-BR2_PACKAGE_SDL_IMAGE_TARGA=y
-BR2_PACKAGE_SDL_IMAGE_TIFF=y
-BR2_PACKAGE_SDL_IMAGE_WEBP=y
-BR2_PACKAGE_SDL_IMAGE_XCF=y
-BR2_PACKAGE_SDL_IMAGE_XPM=y
-BR2_PACKAGE_SDL_IMAGE_XV=y
-BR2_PACKAGE_SDL_MIXER=y
-BR2_PACKAGE_SDL_NET=y
-BR2_PACKAGE_SDL_SOUND=y
-BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
-BR2_PACKAGE_SDL_TTF=y
-BR2_PACKAGE_SDL2=y
-BR2_PACKAGE_SDL2_DIRECTFB=y
-BR2_PACKAGE_SDL2_GFX=y
-BR2_PACKAGE_SDL2_IMAGE=y
-BR2_PACKAGE_SDL2_TTF=y
-BR2_PACKAGE_QT5=y
-BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
-BR2_PACKAGE_QT5BASE_MYSQL=y
-BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
-BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
-BR2_PACKAGE_QT5BASE_EGLFS=y
-BR2_PACKAGE_QT5BASE_FONTCONFIG=y
-BR2_PACKAGE_QT5BASE_GIF=y
-BR2_PACKAGE_QT5BASE_JPEG=y
-BR2_PACKAGE_QT5BASE_PNG=y
-BR2_PACKAGE_QT53D=y
-BR2_PACKAGE_QT5CANVAS3D=y
-BR2_PACKAGE_QT5CONNECTIVITY=y
-BR2_PACKAGE_QT5ENGINIO=y
-BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
-BR2_PACKAGE_QT5IMAGEFORMATS=y
-BR2_PACKAGE_QT5LOCATION=y
-BR2_PACKAGE_QT5MULTIMEDIA=y
-BR2_PACKAGE_QT5QUICKCONTROLS=y
-BR2_PACKAGE_QT5SENSORS=y
-BR2_PACKAGE_QT5SERIALBUS=y
-BR2_PACKAGE_QT5WAYLAND=y
-BR2_PACKAGE_QT5SVG=y
-BR2_PACKAGE_QT5TOOLS=y
-BR2_PACKAGE_QT5TOOLS_QTPATHS=y
-BR2_PACKAGE_QT5TOOLS_QTPLUGININFO=y
-BR2_PACKAGE_QT5WEBENGINE=y
-BR2_PACKAGE_QT5VIRTUALKEYBOARD=y
-BR2_PACKAGE_QT5CHARTS=y
-BR2_PACKAGE_QT5DATAVIS3D=y
-BR2_PACKAGE_QT5QUICKCONTROLS2=y
-BR2_PACKAGE_TEKUI=y
-BR2_PACKAGE_WESTON=y
-BR2_PACKAGE_AM33X_CM3=y
-BR2_PACKAGE_LINUX_FIRMWARE=y
-BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
-BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
-BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
-BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
-BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
-BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
-BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
-BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
-BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
-BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
-BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
-BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
-BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
-BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
-BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
-BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
-BR2_PACKAGE_AM335X_PRU_PACKAGE=y
-BR2_PACKAGE_DEVMEM2=y
-BR2_PACKAGE_EVTEST=y
-BR2_PACKAGE_I2C_TOOLS=y
-BR2_PACKAGE_INPUT_TOOLS=y
-BR2_PACKAGE_KBD=y
-BR2_PACKAGE_LIBUIO=y
-BR2_PACKAGE_LSUIO=y
-BR2_PACKAGE_MINICOM=y
-BR2_PACKAGE_PARTED=y
-BR2_PACKAGE_RS485CONF=y
-BR2_PACKAGE_SISPMCTL=y
-BR2_PACKAGE_SPI_TOOLS=y
-BR2_PACKAGE_TI_GFX=y
-BR2_PACKAGE_TI_GFX_EGLIMAGE=y
-BR2_PACKAGE_TI_GFX_ES8=y
-BR2_PACKAGE_TI_UTILS=y
-BR2_PACKAGE_UBOOT_TOOLS=y
-BR2_PACKAGE_USB_MODESWITCH_DATA=y
-BR2_PACKAGE_USBMOUNT=y
-BR2_PACKAGE_USBUTILS=y
-BR2_PACKAGE_PYTHON=y
-BR2_PACKAGE_PYTHON_BZIP2=y
-BR2_PACKAGE_PYTHON_BSDDB=y
-BR2_PACKAGE_PYTHON_CODECSCJK=y
-BR2_PACKAGE_PYTHON_CURSES=y
-BR2_PACKAGE_PYTHON_READLINE=y
-BR2_PACKAGE_PYTHON_SSL=y
-BR2_PACKAGE_PYTHON_SQLITE=y
-BR2_PACKAGE_PYTHON_PYEXPAT=y
-BR2_PACKAGE_PYTHON_HASHLIB=y
-BR2_PACKAGE_PYTHON_PAHO_MQTT=y
-BR2_PACKAGE_PYTHON_PYUDEV=y
-BR2_PACKAGE_TCL=y
-BR2_PACKAGE_EXPECT=y
-BR2_PACKAGE_TCLLIB=y
-BR2_PACKAGE_LIBMPD=y
-BR2_PACKAGE_OPUS=y
-BR2_PACKAGE_TAGLIB=y
-BR2_PACKAGE_LIBZIP=y
-BR2_PACKAGE_SNAPPY=y
-BR2_PACKAGE_SZIP=y
-BR2_PACKAGE_GNUTLS_TOOLS=y
-BR2_PACKAGE_LIBNSS=y
-BR2_PACKAGE_LIBSHA1=y
-BR2_PACKAGE_LIBSSH2=y
-BR2_PACKAGE_OPENSSL_BIN=y
-BR2_PACKAGE_OPENSSL_ENGINES=y
-BR2_PACKAGE_MYSQL_SERVER=y
-BR2_PACKAGE_SQLITE_NO_SYNC=y
-BR2_PACKAGE_LIBCONFIG=y
-BR2_PACKAGE_CAIRO_TEE=y
-BR2_PACKAGE_GD=y
-BR2_PACKAGE_GD_ANNOTATE=y
-BR2_PACKAGE_GD_GD2COPYPAL=y
-BR2_PACKAGE_GD_GD2TOGIF=y
-BR2_PACKAGE_GD_GD2TOPNG=y
-BR2_PACKAGE_GD_GDCMPGIF=y
-BR2_PACKAGE_GD_GDPARTTOPNG=y
-BR2_PACKAGE_GD_GDTOPNG=y
-BR2_PACKAGE_GD_GIFTOGD2=y
-BR2_PACKAGE_GD_PNGTOGD=y
-BR2_PACKAGE_GD_PNGTOGD2=y
-BR2_PACKAGE_GD_WEBPNG=y
-BR2_PACKAGE_GDK_PIXBUF=y
-BR2_PACKAGE_HARFBUZZ=y
-BR2_PACKAGE_LIBDRM=y
-BR2_PACKAGE_LIBDRM_OMAP=y
-BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
-BR2_PACKAGE_WEBP_DEMUX=y
-BR2_PACKAGE_DTC=y
-BR2_PACKAGE_DTC_PROGRAMS=y
-BR2_PACKAGE_LIBGUDEV=y
-BR2_PACKAGE_LIBHID=y
-BR2_PACKAGE_LIBIIO=y
-BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
-BR2_PACKAGE_LIBQMI=y
-BR2_PACKAGE_LIBV4L=y
-BR2_PACKAGE_JANSSON=y
-BR2_PACKAGE_LIBXSLT=y
-BR2_PACKAGE_LIBMPEG2=y
-BR2_PACKAGE_LIBVPX=y
-BR2_PACKAGE_LIBYUV=y
-BR2_PACKAGE_CANFESTIVAL=y
-BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
-BR2_PACKAGE_CURL=y
-BR2_PACKAGE_LIBGSASL=y
-BR2_PACKAGE_LIBIDN=y
-BR2_PACKAGE_LIBIDN_BINARY=y
-BR2_PACKAGE_LIBMBUS=y
-BR2_PACKAGE_LIBMICROHTTPD=y
-BR2_PACKAGE_LIBMICROHTTPD_SSL=y
-BR2_PACKAGE_LIBMODBUS=y
-BR2_PACKAGE_LIBPJSIP=y
-BR2_PACKAGE_LIBRSYNC=y
-BR2_PACKAGE_LIBSOUP=y
-BR2_PACKAGE_LIBVNCSERVER=y
-BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
-BR2_PACKAGE_NEON=y
-BR2_PACKAGE_NEON_ZLIB=y
-BR2_PACKAGE_NEON_SSL=y
-BR2_PACKAGE_NEON_LIBXML2=y
-BR2_PACKAGE_NSS_PAM_LDAPD=y
-BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
-BR2_PACKAGE_PAHO_MQTT_C=y
-BR2_PACKAGE_ZEROMQ=y
-BR2_PACKAGE_ZEROMQ_NORM=y
-BR2_PACKAGE_ZEROMQ_PGM=y
-BR2_PACKAGE_BOOST_ATOMIC=y
-BR2_PACKAGE_BOOST_CHRONO=y
-BR2_PACKAGE_BOOST_CONTAINER=y
-BR2_PACKAGE_BOOST_CONTEXT=y
-BR2_PACKAGE_BOOST_COROUTINE=y
-BR2_PACKAGE_BOOST_COROUTINE2=y
-BR2_PACKAGE_BOOST_DATE_TIME=y
-BR2_PACKAGE_BOOST_EXCEPTION=y
-BR2_PACKAGE_BOOST_FILESYSTEM=y
-BR2_PACKAGE_BOOST_GRAPH=y
-BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
-BR2_PACKAGE_BOOST_IOSTREAMS=y
-BR2_PACKAGE_BOOST_LOCALE=y
-BR2_PACKAGE_BOOST_LOG=y
-BR2_PACKAGE_BOOST_MATH=y
-BR2_PACKAGE_BOOST_METAPARSE=y
-BR2_PACKAGE_BOOST_MPI=y
-BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
-BR2_PACKAGE_BOOST_PYTHON=y
-BR2_PACKAGE_BOOST_RANDOM=y
-BR2_PACKAGE_BOOST_REGEX=y
-BR2_PACKAGE_BOOST_SERIALIZATION=y
-BR2_PACKAGE_BOOST_SIGNALS=y
-BR2_PACKAGE_BOOST_SYSTEM=y
-BR2_PACKAGE_BOOST_THREAD=y
-BR2_PACKAGE_BOOST_TIMER=y
-BR2_PACKAGE_BOOST_TYPE_ERASURE=y
-BR2_PACKAGE_BOOST_WAVE=y
-BR2_PACKAGE_ELFUTILS=y
-BR2_PACKAGE_LIBCAP_TOOLS=y
-BR2_PACKAGE_LIBICAL=y
-BR2_PACKAGE_POCO=y
-BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
-BR2_PACKAGE_POCO_ZIP=y
-BR2_PACKAGE_POCO_DATA_SQLITE=y
-BR2_PACKAGE_POCO_DATA_MYSQL=y
-BR2_PACKAGE_PROTOBUF=y
-BR2_PACKAGE_PROTOBUF_C=y
-BR2_PACKAGE_NCURSES_WCHAR=y
-BR2_PACKAGE_NCURSES_TARGET_PANEL=y
-BR2_PACKAGE_NCURSES_TARGET_FORM=y
-BR2_PACKAGE_NCURSES_TARGET_MENU=y
-BR2_PACKAGE_NCURSES_TARGET_PROGS=y
-BR2_PACKAGE_FETCHMAIL=y
-BR2_PACKAGE_HEIRLOOM_MAILX=y
-BR2_PACKAGE_LIBESMTP=y
-BR2_PACKAGE_MSMTP=y
-BR2_PACKAGE_MUTT=y
-BR2_PACKAGE_MUTT_IMAP=y
-BR2_PACKAGE_MUTT_POP3=y
-BR2_PACKAGE_BLUEZ_UTILS_COMPAT=y
-BR2_PACKAGE_BLUEZ_UTILS_AUDIO=y
-BR2_PACKAGE_BLUEZ_UTILS_USB=y
-BR2_PACKAGE_BLUEZ_UTILS_GATT=y
-BR2_PACKAGE_BRIDGE_UTILS=y
-BR2_PACKAGE_CAN_UTILS=y
-BR2_PACKAGE_CIVETWEB=y
-BR2_PACKAGE_CIVETWEB_WITH_LUA=y
-BR2_PACKAGE_CONNTRACK_TOOLS=y
-BR2_PACKAGE_CRDA=y
-BR2_PACKAGE_DNSMASQ=y
-BR2_PACKAGE_ETHTOOL=y
-BR2_PACKAGE_GESFTPSERVER=y
-BR2_PACKAGE_HOSTAPD=y
-BR2_PACKAGE_HOSTAPD_EAP=y
-BR2_PACKAGE_HOSTAPD_WPS=y
-BR2_PACKAGE_HTTPING=y
-BR2_PACKAGE_HTTPING_TFO=y
-BR2_PACKAGE_IFTOP=y
-BR2_PACKAGE_IFUPDOWN=y
-BR2_PACKAGE_IPROUTE2=y
-BR2_PACKAGE_IPSEC_TOOLS=y
-BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
-BR2_PACKAGE_IPTABLES=y
-BR2_PACKAGE_IW=y
-BR2_PACKAGE_LRZSZ=y
-BR2_PACKAGE_MINIDLNA=y
-BR2_PACKAGE_MOSQUITTO=y
-BR2_PACKAGE_NETPLUG=y
-BR2_PACKAGE_NTP=y
-BR2_PACKAGE_NTP_NTPDATE=y
-BR2_PACKAGE_NTP_NTPTIME=y
-BR2_PACKAGE_OPENSSH=y
-BR2_PACKAGE_OPENVPN=y
-BR2_PACKAGE_OPENVPN_SMALL=y
-BR2_PACKAGE_PPPD=y
-BR2_PACKAGE_PPPD_FILTER=y
-BR2_PACKAGE_PPPD_RADIUS=y
-BR2_PACKAGE_PPTP_LINUX=y
-BR2_PACKAGE_RSYNC=y
-BR2_PACKAGE_SER2NET=y
-BR2_PACKAGE_TFTPD=y
-BR2_PACKAGE_TINC=y
-BR2_PACKAGE_WGET=y
-BR2_PACKAGE_WIRELESS_TOOLS=y
-BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
-BR2_PACKAGE_WPA_SUPPLICANT=y
-BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
-BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
-BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
-BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
-BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
-BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
-BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
-BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
-BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
-BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
-BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
-BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
-BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
-BR2_PACKAGE_BASH=y
-BR2_PACKAGE_SCREEN=y
-BR2_PACKAGE_SUDO=y
-BR2_PACKAGE_ATTR=y
-BR2_PACKAGE_HTOP=y
-BR2_PACKAGE_KEYUTILS=y
-BR2_PACKAGE_POLKIT=y
-BR2_PACKAGE_UTIL_LINUX_SETTERM=y
-BR2_PACKAGE_JOE=y
-BR2_TARGET_ROOTFS_EXT2=y
-BR2_TARGET_ROOTFS_EXT2_4=y
-BR2_TARGET_ROOTFS_TAR_GZIP=y
-BR2_TARGET_UBOOT=y
-BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
-BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
-BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
-# BR2_TARGET_UBOOT_FORMAT_BIN is not set
-BR2_TARGET_UBOOT_FORMAT_IMG=y
-BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
-BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
-BR2_TARGET_UBOOT_SPL=y
-BR2_TARGET_UBOOT_SPL_NAME="MLO"
-BR2_PACKAGE_HOST_DOSFSTOOLS=y
-BR2_PACKAGE_HOST_DTC=y
-BR2_PACKAGE_HOST_GENIMAGE=y
-BR2_PACKAGE_HOST_MTOOLS=y
-BR2_PACKAGE_WT=y
-BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
-BR2_PACKAGE_GFA_ADDONS=y
-BR2_PACKAGE_QMLPLUGINS=y
-BR2_PACKAGE_LIBULFIUS=y

+ 1 - 1
package/gfaipc/gfaipc.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFAIPC_VERSION = master
+GFAIPC_VERSION = V1.4.0
 GFAIPC_SITE = https://gogs.reru.org/GfA/libgfaipc.git
 GFAIPC_SITE = https://gogs.reru.org/GfA/libgfaipc.git
 GFAIPC_SITE_METHOD = git
 GFAIPC_SITE_METHOD = git
 GFAIPC_DEPENDENCIES = qt5base
 GFAIPC_DEPENDENCIES = qt5base

+ 1 - 1
package/gfamininet/gfamininet.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFAMININET_VERSION = master
+GFAMININET_VERSION = V1.0.0
 GFAMININET_SITE = https://gogs.reru.org/GfA/libgfamininet.git
 GFAMININET_SITE = https://gogs.reru.org/GfA/libgfamininet.git
 GFAMININET_SITE_METHOD = git
 GFAMININET_SITE_METHOD = git
 GFAMININET_DEPENDENCIES = qt5base
 GFAMININET_DEPENDENCIES = qt5base

+ 1 - 1
package/gfanet/gfanet.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFANET_VERSION = master
+GFANET_VERSION = V1.0.0
 GFANET_SITE = https://gogs.reru.org/GfA/libgfaNET.git
 GFANET_SITE = https://gogs.reru.org/GfA/libgfaNET.git
 GFANET_SITE_METHOD = git
 GFANET_SITE_METHOD = git
 GFANET_DEPENDENCIES = qt5base
 GFANET_DEPENDENCIES = qt5base

+ 1 - 0
package/gfaqt/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_GFAQT
 config BR2_PACKAGE_GFAQT
 	bool "GfAQT"
 	bool "GfAQT"
 	select BR2_PACKAGE_QT5BASE
 	select BR2_PACKAGE_QT5BASE
+	select BR2_PACKAGE_GFANET
 	help
 	help
 	  
 	  
 	  GfA QT Tools
 	  GfA QT Tools

+ 2 - 2
package/gfaqt/gfaqt.mk

@@ -4,10 +4,10 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFAQT_VERSION = master
+GFAQT_VERSION = V1.2.0
 GFAQT_SITE = https://gogs.reru.org/GfA/libgfaqt.git
 GFAQT_SITE = https://gogs.reru.org/GfA/libgfaqt.git
 GFAQT_SITE_METHOD = git
 GFAQT_SITE_METHOD = git
-GFAQT_DEPENDENCIES = qt5base
+GFAQT_DEPENDENCIES = qt5base gfanet
 GFAQT_INSTALL_STAGING = YES
 GFAQT_INSTALL_STAGING = YES
 GFAQT_INSTALL_TARGET = YES
 GFAQT_INSTALL_TARGET = YES
 
 

+ 1 - 1
package/gfasitarautils/gfasitarautils.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFASITARAUTILS_VERSION = master
+GFASITARAUTILS_VERSION = V1.0.0
 GFASITARAUTILS_SITE = https://gogs.reru.org/GfA/libgfasitarautils.git
 GFASITARAUTILS_SITE = https://gogs.reru.org/GfA/libgfasitarautils.git
 GFASITARAUTILS_SITE_METHOD = git
 GFASITARAUTILS_SITE_METHOD = git
 GFASITARAUTILS_DEPENDENCIES = qt5base
 GFASITARAUTILS_DEPENDENCIES = qt5base

+ 1 - 1
package/gfatimer/gfatimer.mk

@@ -4,7 +4,7 @@
 #
 #
 ################################################################################
 ################################################################################
 
 
-GFATIMER_VERSION = master
+GFATIMER_VERSION = V1.0.0
 GFATIMER_SITE = https://gogs.reru.org/GfA/libgfatimer.git
 GFATIMER_SITE = https://gogs.reru.org/GfA/libgfatimer.git
 GFATIMER_SITE_METHOD = git
 GFATIMER_SITE_METHOD = git
 GFATIMER_DEPENDENCIES = qt5base
 GFATIMER_DEPENDENCIES = qt5base

+ 0 - 9344
patches/0001-GfA-wrk-changes-and-setup.patch

@@ -1,9344 +0,0 @@
-From c551f18b3e88ab555b24376240d09e10da767311 Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Sun, 18 Feb 2018 21:06:05 +0100
-Subject: [PATCH] GfA wrk changes and setup
-
----
- CrossCompile.sh                                    |  41 ++
- MakeDTSUpdate.sh                                   |  58 ++
- MakeIMAGE.sh                                       | 106 ++++
- MakeLegalInfo.sh                                   |  17 +
- MakeRootfsUpdate.sh                                |  73 +++
- MapImage.sh                                        |  41 ++
- UpdateDTS.sh.in                                    | 126 ++++
- UpdateRootfs.sh.in                                 | 209 +++++++
- ...cache-flush-management-symbols-when-MULTI.patch |  34 +
- configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig  | 447 +++++++++++++
- configs/Display001_4.4.104_rt21_Qt5.7_defconfig    | 460 ++++++++++++++
- configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig   | 449 +++++++++++++
- package/fontconfig/001-mtime-always-ok.patch       |  12 +
- package/fontconfig/fontconfig.mk                   |   2 +-
- package/gcc/4.9.1/100-uclibc-conf.patch            |  15 +
- package/gcc/4.9.1/301-missing-execinfo_h.patch     |  13 +
- package/gcc/4.9.1/302-c99-snprintf.patch           |  13 +
- package/gcc/4.9.1/810-arm-softfloat-libgcc.patch   |  30 +
- package/gcc/4.9.1/830-arm_unbreak_armv4t.patch     |  13 +
- .../840-microblaze-enable-dwarf-eh-support.patch   | 169 +++++
- package/gcc/4.9.1/841-PR60102.patch                | 388 ++++++++++++
- package/gcc/4.9.1/900-musl-support.patch           | 696 +++++++++++++++++++++
- .../powerpc-link-with-math-lib.patch.conditional   | 122 ++++
- package/gcc/4.9.3/100-uclibc-conf.patch            |  15 +
- ...00-powerpc-link-with-math-lib.patch.conditional | 122 ++++
- package/gcc/4.9.3/111-pr65730.patch                |  37 ++
- ...gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch |  29 +
- package/gcc/4.9.3/130-pr43538.patch                |  25 +
- ...tizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch |  37 ++
- package/gcc/4.9.3/301-missing-execinfo_h.patch     |  13 +
- package/gcc/4.9.3/810-arm-softfloat-libgcc.patch   |  30 +
- package/gcc/4.9.3/830-arm_unbreak_armv4t.patch     |  13 +
- .../840-microblaze-enable-dwarf-eh-support.patch   | 169 +++++
- package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch   | 255 ++++++++
- package/gcc/4.9.3/860-cilk-wchar.patch             |  56 ++
- .../870-xtensa-add-mauto-litpools-option.patch     | 290 +++++++++
- .../871-xtensa-reimplement-register-spilling.patch |  76 +++
- ...unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch |  33 +
- .../gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch  |  40 ++
- .../gcc/4.9.3/874-xtensa-add-uclinux-support.patch | 174 ++++++
- .../gcc/4.9.3/880-nios2_legitimize_address.patch   |  49 ++
- package/gcc/4.9.3/890-fix-m68k-compile.patch       |  15 +
- package/gcc/4.9.3/900-musl-support.patch           | 640 +++++++++++++++++++
- .../4.9.3/920-libgcc-remove-unistd-header.patch    |  12 +
- .../930-libgcc-disable-split-stack-nothreads.patch |  14 +
- package/gcc/Config.in.host                         |  28 +
- package/gcc/gcc.hash                               |   4 +
- .../2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch | 174 ++++++
- .../glibc/2.18-svnr23787/0002-accept-make4.patch   |  33 +
- .../glibc/2.18-svnr23787/0003-CVE-2014-6040.patch  | 141 +++++
- .../glibc/2.18-svnr23787/0004-CVE-2014-9402.patch  |  20 +
- .../glibc/2.18-svnr23787/0005-CVE-2015-1472.patch  |  88 +++
- .../2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch | 174 ++++++
- .../glibc/2.19-svnr25243/0002-CVE-2014-6040.patch  | 141 +++++
- .../glibc/2.19-svnr25243/0003-CVE-2014-9402.patch  |  20 +
- .../glibc/2.19-svnr25243/0004-CVE-2015-1472.patch  |  88 +++
- .../glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch  | 236 +++++++
- .../0002-microblaze-include-unix-sysdep.h.patch    |  43 ++
- package/glibc/glibc/Config.in                      |  56 ++
- package/glibc/glibc/glibc.hash                     |   8 +
- package/glibc/glibc/glibc.mk                       | 155 +++++
- package/glibc/glibc/nsswitch.conf                  |  13 +
- package/libmodbus/001-GfA-echo-rtu.patch           | 105 ++++
- .../linux-017-omap_serial_for_rs485.patch          |  12 +
- package/mutt/mutt.mk                               |  20 +-
- package/qt5/Config.in                              |  10 +-
- package/qt5/qt5.mk                                 |   6 +-
- package/qt5/qt53d/qt53d.hash                       |   3 +-
- ...ndard-compiler-flags-for-the-host-build.__patch |  44 ++
- package/qt5/qt5base/Config.in                      |   2 +-
- package/qt5/qt5base/qmake.conf                     |   1 -
- package/qt5/qt5base/qt5base.hash                   |   3 +-
- package/qt5/qt5base/qt5base.mk                     |  15 +-
- package/qt5/qt5canvas3d/qt5canvas3d.hash           |   3 +-
- package/qt5/qt5charts/Config.in                    |  18 +
- package/qt5/qt5charts/qt5charts.mk                 |  39 ++
- package/qt5/qt5connectivity/Config.in              |  12 +-
- package/qt5/qt5connectivity/qt5connectivity.hash   |   3 +-
- package/qt5/qt5connectivity/qt5connectivity.mk     |  36 +-
- package/qt5/qt5datavis3d/Config.in                 |  17 +
- package/qt5/qt5datavis3d/qt5datavis3d.mk           |  39 ++
- package/qt5/qt5declarative/qt5declarative.hash     |   3 +-
- package/qt5/qt5enginio/qt5enginio.hash             |   3 +-
- package/qt5/qt5enginio/qt5enginio.mk               |   2 +-
- .../qt5graphicaleffects/qt5graphicaleffects.hash   |   3 +-
- package/qt5/qt5imageformats/qt5imageformats.hash   |   3 +-
- package/qt5/qt5location/qt5location.hash           |   3 +-
- package/qt5/qt5multimedia/Config.in                |   1 -
- package/qt5/qt5multimedia/qt5multimedia.hash       |   3 +-
- package/qt5/qt5quickcontrols/qt5quickcontrols.hash |   3 +-
- .../qt5/qt5quickcontrols2/qt5quickcontrols2.hash   |   3 +-
- package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk |  11 +-
- package/qt5/qt5sensors/qt5sensors.hash             |   3 +-
- package/qt5/qt5serialbus/Config.in                 |   4 -
- package/qt5/qt5serialbus/qt5serialbus.hash         |   3 +-
- package/qt5/qt5serialport/qt5serialport.hash       |   3 +-
- package/qt5/qt5svg/qt5svg.hash                     |   3 +-
- .../0001-Disable-qdoc-needs-qtdeclarative.patch    |  30 +
- package/qt5/qt5tools/qt5tools.hash                 |   2 -
- package/qt5/qt5tools/qt5tools.hash__               |   2 +
- package/qt5/qt5virtualkeyboard/Config.in           |  10 +
- .../qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk   |  39 ++
- package/qt5/qt5wayland/Config.in                   |  14 +
- package/qt5/qt5wayland/qt5wayland.mk               |  35 ++
- package/qt5/qt5webchannel/qt5webchannel.hash       |   3 +-
- .../001-chromium-glibc-2.24-issue.patch            |  14 +
- .../001-delegate_frame_node_fence_sync.patch       |  20 +
- package/qt5/qt5webengine/Config.in                 |  17 +
- .../patches_save/001-allow-arm-compiler.patch      |  26 +
- .../patches_save/002-buildroot-python-bz2.patch    |  11 +
- .../patches_save/002-move_icu_to_56_1.patch        |  43 ++
- .../patches_save/003-egl_khr_reusable_sync.patch   |  14 +
- .../patches_save/004-allow-egl-surface.patch       | 166 +++++
- package/qt5/qt5webengine/qt5webengine.__hash       |   2 +
- package/qt5/qt5webengine/qt5webengine.mk           |  70 +++
- .../0004-Fix-linking-with-libpthread.patch         |  34 +
- package/qt5/qt5webkit/Config.in                    |   6 +-
- package/qt5/qt5webkit/qt5webkit.hash               |   3 +-
- package/qt5/qt5webkit/qt5webkit.mk                 |  22 +-
- package/qt5/qt5websockets/qt5websockets.hash       |   3 +-
- package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash     |   3 +-
- package/ti-gfx/S80ti-gfx                           |  10 +
- package/ti-gfx/powervr.ini                         |   4 +-
- package/ti-sgx-km/ti-sgx-km.mk                     |   7 +-
- package/ti-sgx-um/ti-sgx-um.mk                     |   1 +
- package/tinc/tinc.hash                             |   2 +-
- package/tinc/tinc.mk                               |   2 +-
- 127 files changed, 8019 insertions(+), 138 deletions(-)
- create mode 100755 CrossCompile.sh
- create mode 100755 MakeDTSUpdate.sh
- create mode 100755 MakeIMAGE.sh
- create mode 100755 MakeLegalInfo.sh
- create mode 100755 MakeRootfsUpdate.sh
- create mode 100755 MapImage.sh
- create mode 100644 UpdateDTS.sh.in
- create mode 100644 UpdateRootfs.sh.in
- create mode 100644 board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
- create mode 100644 configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
- create mode 100644 configs/Display001_4.4.104_rt21_Qt5.7_defconfig
- create mode 100644 configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
- create mode 100644 package/fontconfig/001-mtime-always-ok.patch
- create mode 100644 package/gcc/4.9.1/100-uclibc-conf.patch
- create mode 100644 package/gcc/4.9.1/301-missing-execinfo_h.patch
- create mode 100644 package/gcc/4.9.1/302-c99-snprintf.patch
- create mode 100644 package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
- create mode 100644 package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
- create mode 100644 package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
- create mode 100644 package/gcc/4.9.1/841-PR60102.patch
- create mode 100644 package/gcc/4.9.1/900-musl-support.patch
- create mode 100644 package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
- create mode 100644 package/gcc/4.9.3/100-uclibc-conf.patch
- create mode 100644 package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
- create mode 100644 package/gcc/4.9.3/111-pr65730.patch
- create mode 100644 package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
- create mode 100644 package/gcc/4.9.3/130-pr43538.patch
- create mode 100644 package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
- create mode 100644 package/gcc/4.9.3/301-missing-execinfo_h.patch
- create mode 100644 package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
- create mode 100644 package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
- create mode 100644 package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
- create mode 100644 package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
- create mode 100644 package/gcc/4.9.3/860-cilk-wchar.patch
- create mode 100644 package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
- create mode 100644 package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
- create mode 100644 package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
- create mode 100644 package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
- create mode 100644 package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
- create mode 100644 package/gcc/4.9.3/880-nios2_legitimize_address.patch
- create mode 100644 package/gcc/4.9.3/890-fix-m68k-compile.patch
- create mode 100644 package/gcc/4.9.3/900-musl-support.patch
- create mode 100644 package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
- create mode 100644 package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
- create mode 100644 package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
- create mode 100644 package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
- create mode 100644 package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
- create mode 100644 package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
- create mode 100644 package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
- create mode 100644 package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
- create mode 100644 package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
- create mode 100644 package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
- create mode 100644 package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
- create mode 100644 package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
- create mode 100644 package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
- create mode 100644 package/glibc/glibc/Config.in
- create mode 100644 package/glibc/glibc/glibc.hash
- create mode 100644 package/glibc/glibc/glibc.mk
- create mode 100644 package/glibc/glibc/nsswitch.conf
- create mode 100644 package/libmodbus/001-GfA-echo-rtu.patch
- create mode 100644 package/linux-headers/linux-017-omap_serial_for_rs485.patch
- create mode 100644 package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
- create mode 100644 package/qt5/qt5charts/Config.in
- create mode 100644 package/qt5/qt5charts/qt5charts.mk
- create mode 100644 package/qt5/qt5datavis3d/Config.in
- create mode 100644 package/qt5/qt5datavis3d/qt5datavis3d.mk
- create mode 100644 package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
- delete mode 100644 package/qt5/qt5tools/qt5tools.hash
- create mode 100644 package/qt5/qt5tools/qt5tools.hash__
- create mode 100644 package/qt5/qt5virtualkeyboard/Config.in
- create mode 100644 package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
- create mode 100644 package/qt5/qt5wayland/Config.in
- create mode 100644 package/qt5/qt5wayland/qt5wayland.mk
- create mode 100644 package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
- create mode 100644 package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
- create mode 100644 package/qt5/qt5webengine/Config.in
- create mode 100644 package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
- create mode 100644 package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
- create mode 100644 package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
- create mode 100644 package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
- create mode 100644 package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
- create mode 100644 package/qt5/qt5webengine/qt5webengine.__hash
- create mode 100644 package/qt5/qt5webengine/qt5webengine.mk
- create mode 100644 package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
-
-diff --git a/CrossCompile.sh b/CrossCompile.sh
-new file mode 100755
-index 0000000..a2feabc
---- /dev/null
-+++ b/CrossCompile.sh
-@@ -0,0 +1,41 @@
-+#! /bin/bash
-+#
-+#
-+
-+WRKDIR=`pwd`
-+CMDDIR=`dirname $0`
-+cd $CMDDIR
-+
-+TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
-+echo $TOOLCHAIN
-+
-+if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
-+	export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
-+else
-+	export SYSROOT=$TOOLCHAIN/usr/bin
-+fi
-+
-+export PATH=$PATH:$SYSROOT
-+
-+export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
-+export ARCH=arm
-+export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
-+export BB_KERNEL_SOURCES=$KERNELDIR
-+export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
-+export CC_FULLPATH="${SYSROOT}${CROSS_COMPILE}"
-+#--- gnupru
-+export PASM=pasm
-+##export PSYSROOT=/home/ru/pru/pru-gcc/bin
-+export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
-+export PATH=$PSYSROOT:$PATH
-+
-+export PCROSS_COMPILE=pru-
-+export PARCH=pru
-+
-+cd $WRKDIR
-+if [ $# -eq "0" ] 
-+then
-+PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
-+else
-+$1
-+fi
-diff --git a/MakeDTSUpdate.sh b/MakeDTSUpdate.sh
-new file mode 100755
-index 0000000..f25b04b
---- /dev/null
-+++ b/MakeDTSUpdate.sh
-@@ -0,0 +1,58 @@
-+#!/bin/bash
-+WRKDIR=/tmp/XXXUpdateDTS
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+UPDATE_BINARY=$WRKDIR/dest/UpdateDTS.tar.Z
-+UPDATE_FILENAME="../UpdateDTS_$BUILD.sh"
-+UPDATE_IN_SCRIPT="UpdateDTS.sh.in"
-+
-+rm -rf $WRKDIR
-+mkdir -p $WRKDIR/dest
-+
-+cp ./output/images/*.dtb $WRKDIR
-+
-+tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
-+
-+# Check for payload format option (default is binary).
-+binary=1
-+uuencode=0
-+
-+if [[ "$1" == '--binary' ]]; then
-+	binary=1
-+	uuencode=0
-+	shift
-+fi
-+if [[ "$1" == '--uuencode' ]]; then
-+	binary=0
-+	uuencode=1
-+	shift
-+fi
-+
-+if [[ ! -f $UPDATE_BINARY ]]; then
-+	echo "       UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
-+	echo "Usage: $0 [--binary | --uuencode]"
-+	exit 1
-+fi
-+
-+
-+if [[ $binary -ne 0 ]]; then
-+	# Append binary data.
-+	sed \
-+		-e 's/uuencode=./uuencode=0/' \
-+		-e 's/binary=./binary=1/' \
-+			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
-+	echo "PAYLOAD:" >> $UPDATE_FILENAME
-+
-+	cat $UPDATE_BINARY >> $UPDATE_FILENAME
-+fi
-+if [[ $uuencode -ne 0 ]]; then
-+	# Append uuencoded data.
-+	sed \
-+		-e 's/uuencode=./uuencode=1/' \
-+		-e 's/binary=./binary=0/' \
-+			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
-+	echo "PAYLOAD:" >> $UPDATE_FILENAME
-+
-+	cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
-+fi
-+
-+chmod a+x $UPDATE_FILENAME
-diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
-new file mode 100755
-index 0000000..4935386
---- /dev/null
-+++ b/MakeIMAGE.sh
-@@ -0,0 +1,106 @@
-+#!/bin/sh
-+
-+SAVE_LC=$LC_ALL
-+export LC_ALL=C
-+
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+IMAGEFILE=../Display001_Build_$BUILD-img
-+
-+ROOTFSMNT=/tmp/XXXRootFs
-+
-+echo "Image: $IMAGEFILE"
-+#-- build imagefile
-+dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
-+dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
-+#-------------------------------------------------------
-+#-- create partitions BOOT rootfs !!! don't change !!!!
-+fdisk $IMAGEFILE << EOF
-+o
-+n
-+p
-+
-+
-++300M
-+n
-+p
-+
-+
-+
-+t
-+1
-+c
-+a
-+1
-+p
-+w
-+EOF
-+echo "============="
-+#-- map partitions
-+DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
-+DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
-+
-+echo ">>>>>>>>>>>>>>>>>>"
-+echo $DRIVE1
-+echo $DRIVE2
-+echo ">>>>>>>>>>>>>>>>>>"
-+
-+kpartx -asv $IMAGEFILE
-+#-- mount partitions
-+umount /tmp/boot
-+umount /tmp/rootfs
-+
-+rm -rf /tmp/boot  
-+rm -rf /tmp/rootfs
-+
-+mkdir /tmp/boot  
-+mkdir /tmp/rootfs
-+
-+dd if=/dev/zero of=${DRIVE1} bs=1M count=1
-+mkfs.vfat -F 32 -n "boot" ${DRIVE1}
-+mount ${DRIVE1} /tmp/boot
-+
-+du -h ${DRIVE1}
-+
-+cp ./output/images/*.dtb /tmp/boot 
-+cp ./output/images/uImage /tmp/boot
-+cp ./output/images/MLO /tmp/boot
-+cp ./output/images/u-boot.img /tmp/boot   
-+                                        
-+ls -alh /tmp/boot
-+
-+dd if=/dev/zero of=${DRIVE2} bs=1M count=1
-+mkfs.ext3 -L "rootfs" ${DRIVE2}
-+mount ${DRIVE2} /tmp/rootfs
-+
-+du -h ${DRIVE2}
-+sleep 5
-+
-+umount ${ROOTFSMNT}
-+rm -rf ${ROOTFSMNT}
-+mkdir -p ${ROOTFSMNT}
-+echo "Mount ====>> " ${ROOTFSMNT}
-+mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT}
-+
-+WRKDIR=`pwd`
-+cd  ${ROOTFSMNT}
-+tar cf - . | (cd /tmp/rootfs && tar xBf -)
-+
-+cd ${WRKDIR}
-+umount ${ROOTFSMNT}
-+#tar -C /tmp/rootfs  --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
-+
-+echo ""
-+
-+sync
-+sync
-+umount ${DRIVE1}
-+umount ${DRIVE2}
-+                                                        
-+#-- unmap partitions
-+kpartx -dsv $IMAGEFILE
-+#-- packen des Imagefiles
-+rm $IMAGEFILE.zip
-+zip -j $IMAGEFILE.zip $IMAGEFILE
-+
-+export LC_ALL=$SAVE_LC
-+                                                                                                                
-diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh
-new file mode 100755
-index 0000000..429486f
---- /dev/null
-+++ b/MakeLegalInfo.sh
-@@ -0,0 +1,17 @@
-+#!/bin/sh
-+
-+SAVE_LC=$LC_ALL
-+export LC_ALL=C
-+
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+IMAGEFILE=../Display001_Build_$BUILD-img
-+
-+#-- legalinfo erstellen
-+TMPWRKDIR=`pwd`
-+cd output
-+rm ../../Display001-$BUILD-legal-info.zip
-+zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/*
-+cd $TMPWRKDIR
-+
-+export LC_ALL=$SAVE_LC
-+                                                                                                                
-\ No newline at end of file
-diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
-new file mode 100755
-index 0000000..99b77c9
---- /dev/null
-+++ b/MakeRootfsUpdate.sh
-@@ -0,0 +1,73 @@
-+#!/bin/bash
-+WRKDIR=/tmp/XXXUpdateRootfs
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
-+UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
-+UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
-+
-+ROOTFSMNT=/tmp/XXXRootFs
-+
-+sudo umount $ROOTFSMNT
-+sudo rm -rf $ROOTFSMNT
-+sudo mkdir -p $ROOTFSMNT
-+
-+sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
-+
-+rm -rf $WRKDIR
-+mkdir -p $WRKDIR/dest
-+
-+cp ./output/images/*.dtb $WRKDIR
-+cp ./output/images/uImage $WRKDIR
-+cp ./output/images/MLO $WRKDIR
-+cp ./output/images/u-boot.img $WRKDIR
-+
-+sudo tar -C $ROOTFSMNT -czvf $WRKDIR/rootfs.tar.gz ./
-+sudo umount $ROOTFSMNT
-+#cp ./output/images/rootfs.tar.gz $WRKDIR
-+
-+tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
-+
-+# Check for payload format option (default is binary).
-+binary=1
-+uuencode=0
-+
-+if [[ "$1" == '--binary' ]]; then
-+	binary=1
-+	uuencode=0
-+	shift
-+fi
-+if [[ "$1" == '--uuencode' ]]; then
-+	binary=0
-+	uuencode=1
-+	shift
-+fi
-+
-+if [[ ! -f $UPDATE_BINARY ]]; then
-+	echo "       UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
-+	echo "Usage: $0 [--binary | --uuencode]"
-+	exit 1
-+fi
-+
-+
-+if [[ $binary -ne 0 ]]; then
-+	# Append binary data.
-+	sed \
-+		-e 's/uuencode=./uuencode=0/' \
-+		-e 's/binary=./binary=1/' \
-+			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
-+	echo "PAYLOAD:" >> $UPDATE_FILENAME
-+
-+	cat $UPDATE_BINARY >> $UPDATE_FILENAME
-+fi
-+if [[ $uuencode -ne 0 ]]; then
-+	# Append uuencoded data.
-+	sed \
-+		-e 's/uuencode=./uuencode=1/' \
-+		-e 's/binary=./binary=0/' \
-+			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
-+	echo "PAYLOAD:" >> $UPDATE_FILENAME
-+
-+	cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
-+fi
-+
-+chmod a+x $UPDATE_FILENAME
-diff --git a/MapImage.sh b/MapImage.sh
-new file mode 100755
-index 0000000..8e87247
---- /dev/null
-+++ b/MapImage.sh
-@@ -0,0 +1,41 @@
-+#!/bin/sh
-+
-+SAVE_LC=$LC_ALL
-+export LC_ALL=C
-+
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+IMAGEFILE=../Display001_Build_$BUILD-img
-+echo ">>> $IMAGEFILE <<<"
-+#-- map partitions
-+DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
-+DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
-+
-+echo ">>>>>>>>>>>>>>>>>>"
-+echo $DRIVE1
-+echo $DRIVE2
-+echo ">>>>>>>>>>>>>>>>>>"
-+
-+kpartx -asv $IMAGEFILE
-+#-- mount partitions
-+umount /tmp/boot
-+umount /tmp/rootfs
-+
-+rm -rf /tmp/boot  
-+rm -rf /tmp/rootfs
-+
-+mkdir /tmp/boot  
-+mkdir /tmp/rootfs
-+
-+mount ${DRIVE1} /tmp/boot
-+mount ${DRIVE2} /tmp/rootfs
-+
-+bash
-+
-+umount ${DRIVE1}
-+umount ${DRIVE2}
-+                                                        
-+#-- unmap partitions
-+kpartx -dsv $IMAGEFILE
-+
-+export LC_ALL=$SAVE_LC
-+                                                                                                                
-\ No newline at end of file
-diff --git a/UpdateDTS.sh.in b/UpdateDTS.sh.in
-new file mode 100644
-index 0000000..3a5cb18
---- /dev/null
-+++ b/UpdateDTS.sh.in
-@@ -0,0 +1,126 @@
-+#!/bin/sh
-+
-+uuencode=0
-+binary=1
-+
-+##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
-+TMP_PATH="/__GfA_UpdateDTS"
-+TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
-+
-+untar_payload ()
-+{
-+
-+	echo "remove $TMP_PATH : "
-+	rm -rf $TMP_PATH
-+	echo ">> $? "
-+	mkdir -p $TMP_PATH
-+
-+	match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
-+	payload_start=$((match + 1))
-+	if [[ $binary -ne 0 ]]; then
-+		tail -n +$payload_start $0 | tar $TAR_PARAMETERS
-+	fi
-+	if [[ $uuencode -ne 0 ]]; then
-+		tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
-+	fi
-+}
-+
-+## --- Kommandos zum Installieren
-+## -- get bootpartition
-+such="root=/dev/mmcblk1"
-+grep -q $such /proc/cmdline
-+if [ $? == 0 ]
-+then
-+	bootpart="/dev/mmcblk1p1"
-+else
-+	bootpart="/dev/mmcblk0p1"
-+fi	
-+
-+umount /mnt
-+mount $bootpart /mnt
-+
-+#--- Kernel MLO und Rootfs-Tarball entpacken
-+untar_payload
-+# --- 
-+
-+cp $TMP_PATH/*.dtb /mnt
-+
-+echo "sync mmc be patient ...."
-+sync
-+sync
-+
-+# Get Graphics resolution and set dtb to the right resolution
-+BASEBOARD=`cat /tmp/BASEBOARD`
-+
-+DONE=0
-+YRES="$(fbset | awk '/geom/ {print $3}')"
-+XRES="$(fbset | awk '/geom/ {print $2}')"
-+
-+echo "XRES $XRES, YRES $YRES"
-+
-+if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "4.3 Inch Display 2"
-+  sh /root/Display2To_4_3inch.sh
-+  DONE=1
-+else
-+  echo "4.3 Inch"
-+  sh /root/DisplayTo_4_3inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "7 Inch Display 2"
-+  sh /root/Display2To_7inch.sh
-+  DONE=1
-+else
-+if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
-+  echo "7 Inch Display 2 rs485"
-+  sh /root/Display2To_7inch_rs485.sh
-+  DONE=1
-+else
-+  echo "7 Inch"
-+  sh /root/DisplayTo_7inch.sh
-+  DONE=1
-+fi
-+fi
-+fi
-+
-+if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "10 Inch Display 2"
-+  sh /root/Display2To_10inch.sh
-+  DONE=1
-+else
-+  echo "10 Inch"
-+  sh /root/DisplayTo_10inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "10 Inch Display 2"
-+  sh /root/Display2To_15inch.sh
-+  DONE=1
-+else
-+  echo "10 Inch"
-+  sh /root/DisplayTo_15inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$DONE" == "0" ]; then
-+  echo "Unknown Display Resolution"
-+fi
-+
-+
-+
-+
-+#=================
-+echo "Update Done, pls. reboot System"
-+umount /mnt
-+echo "."
-+exit 0
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-new file mode 100644
-index 0000000..2ee5587
---- /dev/null
-+++ b/UpdateRootfs.sh.in
-@@ -0,0 +1,209 @@
-+#!/bin/sh
-+
-+uuencode=0
-+binary=1
-+
-+##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
-+TMP_PATH="/__GfA_Update"
-+TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
-+
-+untar_payload ()
-+{
-+
-+	echo "remove $TMP_PATH : "
-+	rm -rf $TMP_PATH
-+	echo ">> $? "
-+	mkdir -p $TMP_PATH
-+
-+	match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
-+	payload_start=$((match + 1))
-+	if [[ $binary -ne 0 ]]; then
-+		tail -n +$payload_start $0 | tar $TAR_PARAMETERS
-+	fi
-+	if [[ $uuencode -ne 0 ]]; then
-+		tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
-+	fi
-+}
-+
-+## --- Kommandos zum Installieren
-+## -- get bootpartition
-+such="root=/dev/mmcblk1"
-+grep -q $such /proc/cmdline
-+if [ $? == 0 ]
-+then
-+	bootpart="/dev/mmcblk1p1"
-+else
-+	bootpart="/dev/mmcblk0p1"
-+fi	
-+
-+umount /mnt
-+mount $bootpart /mnt
-+
-+## -- alte Firmwarebinaries löschen
-+#rm /root/btm*.bin
-+
-+#--- Kernel MLO und Rootfs-Tarball entpacken
-+untar_payload
-+# --- 
-+
-+rm /mnt/rootfs.tar.gz
-+cp $TMP_PATH/MLO /mnt
-+cp $TMP_PATH/u-boot.img /mnt
-+cp $TMP_PATH/uImage /mnt
-+cp $TMP_PATH/*.dtb /mnt
-+
-+#rootfs auspacken
-+tar -C / --exclude=./tmp --exclude=./etc/inittab \
-+	--exclude=./etc/network/interfaces \
-+	--exclude=./etc/hosts --exclude=./etc/hostname \
-+	--exclude=./etc/passwd --exclude=./etc/shadow \
-+	--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
-+	--exclude=./etc/hostapd.conf --exclude=./etc/wpa_supplicant.conf \
-+	--exclude=./etc/init.d/M99tincd \
-+	--exclude=./var/GfA/Display_GSM.ini \
-+	--exclude=./var/cron/crontabs/root \
-+	-xzvf $TMP_PATH/rootfs.tar.gz
-+
-+echo "sync mmc be patient ...."
-+sync
-+sync
-+
-+if [ -e /etc/init.d/S98usb_g_ether ]
-+then
-+	cp /etc/init.d/S98usb_g_ether /etc/init.d/M98usb_g_ether
-+	rm /etc/init.d/S98usb_g_ether
-+fi
-+
-+
-+if [ -e /etc/init.d/S80ti-sgx ]
-+then
-+	rm /etc/init.d/S80ti-sgx
-+fi
-+        
-+#echo "Update Firmware"
-+#echo "."
-+#/root/spi_tivia /root/btm43_0107.bin >/dev/null
-+#echo ".."
-+#echo "Update Firmware Done"
-+#/root/gfa_spi -v
-+#================================
-+#--create mountable run folder insted of link
-+RUNDIR=/run
-+if [ -L $RUNDIR ]; then
-+  mv $RUNDIR $RUNDIR'_WRK'
-+  mkdir $RUNDIR
-+  mount -t tmpfs tmpfs $RUNDIR
-+  WRKDIR=`pwd`
-+  cd $RUNDIR'_WRK'
-+  cp -a ./* $RUNDIR
-+  cd $WRKDIR
-+  rm $RUNDIR'_WRK' 
-+fi
-+#--- craete missing nogroup group
-+GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' /etc/group`
-+if [ -z "$GID_NOGROUP" ]; then
-+  addgroup -S -g 65534 nogroup
-+fi
-+#--create missing users for mysql,
-+if [ -z `awk -F\: '/mysql/ {print $3}' /etc/passwd` ]; then
-+  UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
-+  echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> /etc/passwd
-+fi
-+#--create missing users for postgresql,
-+if [ -z `awk -F\: '/postgres/ {print $3}' /etc/passwd` ]; then
-+  UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
-+  GID_PG=`awk -F\: '/postgres/ {print $3}' /etc/group`
-+  if [ -z "$GID_PG" ]; then
-+    GID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/group`
-+    echo "postgres:x:$GID_PG:" >> /etc/group
-+    fi
-+  echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> /etc/passwd
-+fi
-+#------------------
-+chown -Rv mysql:nogroup /var/mysql
-+chown -Rv postgres:postgres /var/lib/pgsql
-+#==============================================================================
-+# Get Graphics resolution and set dtb to the right resolution
-+BASEBOARD=`cat /tmp/BASEBOARD`
-+
-+DONE=0
-+YRES="$(fbset | awk '/geom/ {print $3}')"
-+XRES="$(fbset | awk '/geom/ {print $2}')"
-+
-+echo "XRES $XRES, YRES $YRES"
-+
-+if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "4.3 Inch Display 2"
-+  sh /root/Display2To_4_3inch.sh
-+  DONE=1
-+else
-+  echo "4.3 Inch"
-+  sh /root/DisplayTo_4_3inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "7 Inch Display 2"
-+  sh /root/Display2To_7inch.sh
-+  DONE=1
-+else
-+if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
-+  echo "7 Inch Display 2 rs485"
-+  sh /root/Display2To_7inch_rs485.sh
-+  DONE=1
-+else
-+  echo "7 Inch"
-+  sh /root/DisplayTo_7inch.sh
-+  DONE=1
-+fi
-+fi
-+fi
-+
-+if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "5.7 Inch Display 2"
-+  sh /root/Display2To_5_7inch.sh
-+  DONE=1
-+else
-+  echo "5.7 Inch"
-+  sh /root/DisplayTo_5_7inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "10 Inch Display 2"
-+  sh /root/Display2To_10inch.sh
-+  DONE=1
-+else
-+  echo "10 Inch"
-+  sh /root/DisplayTo_10inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "15 Inch Display 2"
-+  sh /root/Display2To_15inch.sh
-+  DONE=1
-+else
-+  echo "15 Inch"
-+  sh /root/DisplayTo_15inch.sh
-+  DONE=1
-+fi
-+fi
-+
-+if [ "$DONE" == "0" ]; then
-+  echo "Unknown Display Resolution"
-+fi
-+
-+#=================
-+echo "Update Done, pls. reboot System"
-+umount /mnt
-+echo "."
-+exit 0
-diff --git a/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
-new file mode 100644
-index 0000000..1ca1e70
---- /dev/null
-+++ b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
-@@ -0,0 +1,34 @@
-+From 29885f2f3d700341d322274db6ad085e601c0994 Mon Sep 17 00:00:00 2001
-+From: Pantelis Antoniou <panto@antoniou-consulting.com>
-+Date: Fri, 4 Jan 2013 00:32:33 +0200
-+Subject: [PATCH 3/3] arm: Export cache flush management symbols when
-+ !MULTI_CACHE
-+
-+When compiling a kernel without CONFIG_MULTI_CACHE enabled the
-+dma access functions end up not being exported. Fix it.
-+
-+Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
-+---
-+ arch/arm/kernel/setup.c |    9 +++++++++
-+ 1 file changed, 9 insertions(+)
-+
-+diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
-+index da1d1aa..dcb678c 100644
-+--- a/arch/arm/kernel/setup.c
-++++ b/arch/arm/kernel/setup.c
-+@@ -923,3 +923,12 @@ const struct seq_operations cpuinfo_op = {
-+ 	.stop	= c_stop,
-+ 	.show	= c_show
-+ };
-++
-++/* export the cache management functions */
-++#ifndef MULTI_CACHE
-++
-++EXPORT_SYMBOL(__glue(_CACHE,_dma_map_area));
-++EXPORT_SYMBOL(__glue(_CACHE,_dma_unmap_area));
-++EXPORT_SYMBOL(__glue(_CACHE,_dma_flush_range));
-++
-++#endif
-+-- 
-+1.7.10.4
-+
-diff --git a/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig b/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
-new file mode 100644
-index 0000000..3bd295f
---- /dev/null
-+++ b/configs/Display001_4.4.104_rt21_Qt5.6.2_defconfig
-@@ -0,0 +1,447 @@
-+BR2_arm=y
-+BR2_cortex_a8=y
-+BR2_ARM_INSTRUCTIONS_THUMB2=y
-+BR2_DL_DIR="~/buildroot_dl"
-+BR2_HOST_DIR="/opt/GfA/TC_L44104_C493_QT562"
-+# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
-+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
-+BR2_KERNEL_HEADERS_4_4=y
-+BR2_GLIBC_VERSION_2_24=y
-+BR2_BINUTILS_VERSION_2_27_X=y
-+BR2_GCC_VERSION_4_9_3=y
-+BR2_TOOLCHAIN_BUILDROOT_CXX=y
-+BR2_PACKAGE_HOST_GDB=y
-+BR2_PACKAGE_HOST_GDB_TUI=y
-+BR2_PACKAGE_HOST_GDB_PYTHON=y
-+BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
-+BR2_TARGET_OPTIMIZATION="-pipe"
-+BR2_TARGET_GENERIC_HOSTNAME="GfA"
-+BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
-+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
-+BR2_TARGET_GENERIC_ROOT_PASSWD="root"
-+BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
-+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
-+# BR2_ENABLE_LOCALE_PURGE is not set
-+BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
-+BR2_TARGET_LOCALTIME="Europe/Vienna"
-+BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
-+BR2_LINUX_KERNEL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel.tar.gz  "
-+BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.104_rt21"
-+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.104_rt_defconfig"
-+BR2_LINUX_KERNEL_UIMAGE=y
-+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
-+BR2_LINUX_KERNEL_DTS_SUPPORT=y
-+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-+BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts"
-+BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
-+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-+BR2_PACKAGE_FFMPEG_GPL=y
-+BR2_PACKAGE_FFMPEG_NONFREE=y
-+BR2_PACKAGE_FFMPEG_FFPLAY=y
-+BR2_PACKAGE_FFMPEG_FFSERVER=y
-+BR2_PACKAGE_FFMPEG_FFPROBE=y
-+BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
-+BR2_PACKAGE_FFMPEG_POSTPROC=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
-+BR2_PACKAGE_MPD=y
-+BR2_PACKAGE_MPLAYER=y
-+BR2_PACKAGE_MPV=y
-+BR2_PACKAGE_VLC=y
-+BR2_PACKAGE_WAVPACK=y
-+BR2_PACKAGE_GZIP=y
-+BR2_PACKAGE_LZ4=y
-+BR2_PACKAGE_LZIP=y
-+BR2_PACKAGE_LZOP=y
-+BR2_PACKAGE_P7ZIP=y
-+BR2_PACKAGE_UNRAR=y
-+BR2_PACKAGE_UNZIP=y
-+BR2_PACKAGE_ZIP=y
-+BR2_PACKAGE_GDB=y
-+BR2_PACKAGE_GDB_DEBUGGER=y
-+BR2_PACKAGE_STRACE=y
-+BR2_PACKAGE_BINUTILS=y
-+BR2_PACKAGE_BINUTILS_TARGET=y
-+BR2_PACKAGE_CMAKE_CTEST=y
-+BR2_PACKAGE_GETTEXT=y
-+BR2_PACKAGE_MAKE=y
-+BR2_PACKAGE_SED=y
-+BR2_PACKAGE_CIFS_UTILS=y
-+BR2_PACKAGE_DOSFSTOOLS=y
-+BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
-+BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
-+BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
-+BR2_PACKAGE_E2FSPROGS=y
-+BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
-+BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
-+BR2_PACKAGE_F2FS_TOOLS=y
-+BR2_PACKAGE_FLASHBENCH=y
-+BR2_PACKAGE_MAKEDEVS=y
-+BR2_PACKAGE_MMC_UTILS=y
-+BR2_PACKAGE_DEJAVU=y
-+BR2_PACKAGE_DIRECTFB=y
-+BR2_PACKAGE_DIRECTFB_DIVINE=y
-+BR2_PACKAGE_DIRECTFB_SAWMAN=y
-+BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
-+BR2_PACKAGE_EFL=y
-+BR2_PACKAGE_EFL_FB=y
-+BR2_PACKAGE_EFL_WEBP=y
-+BR2_PACKAGE_FB_TEST_APP=y
-+BR2_PACKAGE_FBTERM=y
-+BR2_PACKAGE_FBV=y
-+BR2_PACKAGE_LINUX_FUSION=y
-+BR2_PACKAGE_PSPLASH=y
-+BR2_PACKAGE_SDL_DIRECTFB=y
-+BR2_PACKAGE_SDL_GFX=y
-+BR2_PACKAGE_SDL_IMAGE=y
-+BR2_PACKAGE_SDL_IMAGE_GIF=y
-+BR2_PACKAGE_SDL_IMAGE_JPEG=y
-+BR2_PACKAGE_SDL_IMAGE_LBM=y
-+BR2_PACKAGE_SDL_IMAGE_PCX=y
-+BR2_PACKAGE_SDL_IMAGE_PNG=y
-+BR2_PACKAGE_SDL_IMAGE_PNM=y
-+BR2_PACKAGE_SDL_IMAGE_TARGA=y
-+BR2_PACKAGE_SDL_IMAGE_TIFF=y
-+BR2_PACKAGE_SDL_IMAGE_WEBP=y
-+BR2_PACKAGE_SDL_IMAGE_XCF=y
-+BR2_PACKAGE_SDL_IMAGE_XPM=y
-+BR2_PACKAGE_SDL_IMAGE_XV=y
-+BR2_PACKAGE_SDL_MIXER=y
-+BR2_PACKAGE_SDL_NET=y
-+BR2_PACKAGE_SDL_SOUND=y
-+BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
-+BR2_PACKAGE_SDL_TTF=y
-+BR2_PACKAGE_SDL2=y
-+BR2_PACKAGE_SDL2_DIRECTFB=y
-+BR2_PACKAGE_SDL2_GFX=y
-+BR2_PACKAGE_SDL2_IMAGE=y
-+BR2_PACKAGE_SDL2_TTF=y
-+BR2_PACKAGE_QT5=y
-+BR2_PACKAGE_QT5_VERSION_5_6=y
-+BR2_PACKAGE_QT53D=y
-+BR2_PACKAGE_QT5BASE_MYSQL=y
-+BR2_PACKAGE_QT5BASE_PSQL=y
-+BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
-+BR2_PACKAGE_QT5BASE_LINUXFB=y
-+BR2_PACKAGE_QT5BASE_EGLFS=y
-+BR2_PACKAGE_QT5BASE_FONTCONFIG=y
-+BR2_PACKAGE_QT5BASE_GIF=y
-+BR2_PACKAGE_QT5BASE_JPEG=y
-+BR2_PACKAGE_QT5BASE_PNG=y
-+BR2_PACKAGE_QT5CANVAS3D=y
-+BR2_PACKAGE_QT5CONNECTIVITY=y
-+BR2_PACKAGE_QT5ENGINIO=y
-+BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
-+BR2_PACKAGE_QT5IMAGEFORMATS=y
-+BR2_PACKAGE_QT5LOCATION=y
-+BR2_PACKAGE_QT5MULTIMEDIA=y
-+BR2_PACKAGE_QT5QUICKCONTROLS=y
-+BR2_PACKAGE_QT5QUICKCONTROLS2=y
-+BR2_PACKAGE_QT5SENSORS=y
-+BR2_PACKAGE_QT5WAYLAND=y
-+BR2_PACKAGE_QT5SERIALBUS=y
-+BR2_PACKAGE_QT5SVG=y
-+BR2_PACKAGE_QT5WEBENGINE=y
-+BR2_PACKAGE_TEKUI=y
-+BR2_PACKAGE_WESTON=y
-+BR2_PACKAGE_AM33X_CM3=y
-+BR2_PACKAGE_LINUX_FIRMWARE=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
-+BR2_PACKAGE_AM335X_PRU_PACKAGE=y
-+BR2_PACKAGE_DEVMEM2=y
-+BR2_PACKAGE_EVTEST=y
-+BR2_PACKAGE_I2C_TOOLS=y
-+BR2_PACKAGE_INPUT_TOOLS=y
-+BR2_PACKAGE_KBD=y
-+BR2_PACKAGE_LIBUIO=y
-+BR2_PACKAGE_LSUIO=y
-+BR2_PACKAGE_PARTED=y
-+BR2_PACKAGE_RS485CONF=y
-+BR2_PACKAGE_SISPMCTL=y
-+BR2_PACKAGE_SPI_TOOLS=y
-+BR2_PACKAGE_TI_GFX=y
-+BR2_PACKAGE_TI_GFX_EGLIMAGE=y
-+BR2_PACKAGE_TI_GFX_ES8=y
-+BR2_PACKAGE_TI_UTILS=y
-+BR2_PACKAGE_USB_MODESWITCH_DATA=y
-+BR2_PACKAGE_USBMOUNT=y
-+BR2_PACKAGE_USBUTILS=y
-+BR2_PACKAGE_NODEJS=y
-+BR2_PACKAGE_NODEJS_NPM=y
-+BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
-+BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
-+BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
-+BR2_PACKAGE_PYTHON=y
-+BR2_PACKAGE_PYTHON_BZIP2=y
-+BR2_PACKAGE_PYTHON_BSDDB=y
-+BR2_PACKAGE_PYTHON_CODECSCJK=y
-+BR2_PACKAGE_PYTHON_CURSES=y
-+BR2_PACKAGE_PYTHON_READLINE=y
-+BR2_PACKAGE_PYTHON_SSL=y
-+BR2_PACKAGE_PYTHON_SQLITE=y
-+BR2_PACKAGE_PYTHON_PYEXPAT=y
-+BR2_PACKAGE_PYTHON_HASHLIB=y
-+BR2_PACKAGE_PYTHON_PYUDEV=y
-+BR2_PACKAGE_TCL=y
-+BR2_PACKAGE_EXPECT=y
-+BR2_PACKAGE_TCLLIB=y
-+BR2_PACKAGE_LIBMPD=y
-+BR2_PACKAGE_OPUS=y
-+BR2_PACKAGE_TAGLIB=y
-+BR2_PACKAGE_LIBZIP=y
-+BR2_PACKAGE_SNAPPY=y
-+BR2_PACKAGE_SZIP=y
-+BR2_PACKAGE_GNUTLS=y
-+BR2_PACKAGE_GNUTLS_TOOLS=y
-+BR2_PACKAGE_LIBNSS=y
-+BR2_PACKAGE_LIBSHA1=y
-+BR2_PACKAGE_LIBSSH2=y
-+BR2_PACKAGE_OPENSSL_BIN=y
-+BR2_PACKAGE_OPENSSL_ENGINES=y
-+BR2_PACKAGE_MYSQL_SERVER=y
-+BR2_PACKAGE_SQLITE_NO_SYNC=y
-+BR2_PACKAGE_LIBCONFIG=y
-+BR2_PACKAGE_CAIRO_TEE=y
-+BR2_PACKAGE_GD=y
-+BR2_PACKAGE_GD_ANNOTATE=y
-+BR2_PACKAGE_GD_GD2COPYPAL=y
-+BR2_PACKAGE_GD_GD2TOGIF=y
-+BR2_PACKAGE_GD_GD2TOPNG=y
-+BR2_PACKAGE_GD_GDCMPGIF=y
-+BR2_PACKAGE_GD_GDPARTTOPNG=y
-+BR2_PACKAGE_GD_GDTOPNG=y
-+BR2_PACKAGE_GD_GIFTOGD2=y
-+BR2_PACKAGE_GD_PNGTOGD=y
-+BR2_PACKAGE_GD_PNGTOGD2=y
-+BR2_PACKAGE_GD_WEBPNG=y
-+BR2_PACKAGE_GDK_PIXBUF=y
-+BR2_PACKAGE_HARFBUZZ=y
-+BR2_PACKAGE_LIBJPEG=y
-+BR2_PACKAGE_LIBDRM=y
-+BR2_PACKAGE_LIBDRM_OMAP=y
-+BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
-+BR2_PACKAGE_WEBP_DEMUX=y
-+BR2_PACKAGE_DTC=y
-+BR2_PACKAGE_DTC_PROGRAMS=y
-+BR2_PACKAGE_LIBGUDEV=y
-+BR2_PACKAGE_LIBHID=y
-+BR2_PACKAGE_LIBIIO=y
-+BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
-+BR2_PACKAGE_LIBV4L=y
-+BR2_PACKAGE_LIBXSLT=y
-+BR2_PACKAGE_LIBMPEG2=y
-+BR2_PACKAGE_LIBVPX=y
-+BR2_PACKAGE_LIBYUV=y
-+BR2_PACKAGE_CANFESTIVAL=y
-+BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
-+BR2_PACKAGE_CURL=y
-+BR2_PACKAGE_LIBGSASL=y
-+BR2_PACKAGE_LIBIDN=y
-+BR2_PACKAGE_LIBIDN_BINARY=y
-+BR2_PACKAGE_LIBMBUS=y
-+BR2_PACKAGE_LIBMODBUS=y
-+BR2_PACKAGE_LIBPJSIP=y
-+BR2_PACKAGE_LIBRSYNC=y
-+BR2_PACKAGE_LIBSOUP=y
-+BR2_PACKAGE_LIBVNCSERVER=y
-+BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
-+BR2_PACKAGE_NEON=y
-+BR2_PACKAGE_NEON_ZLIB=y
-+BR2_PACKAGE_NEON_SSL=y
-+BR2_PACKAGE_NEON_LIBXML2=y
-+BR2_PACKAGE_NSS_PAM_LDAPD=y
-+BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
-+BR2_PACKAGE_BOOST_ATOMIC=y
-+BR2_PACKAGE_BOOST_CHRONO=y
-+BR2_PACKAGE_BOOST_CONTAINER=y
-+BR2_PACKAGE_BOOST_CONTEXT=y
-+BR2_PACKAGE_BOOST_COROUTINE=y
-+BR2_PACKAGE_BOOST_COROUTINE2=y
-+BR2_PACKAGE_BOOST_DATE_TIME=y
-+BR2_PACKAGE_BOOST_EXCEPTION=y
-+BR2_PACKAGE_BOOST_FILESYSTEM=y
-+BR2_PACKAGE_BOOST_GRAPH=y
-+BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
-+BR2_PACKAGE_BOOST_IOSTREAMS=y
-+BR2_PACKAGE_BOOST_LOCALE=y
-+BR2_PACKAGE_BOOST_LOG=y
-+BR2_PACKAGE_BOOST_MATH=y
-+BR2_PACKAGE_BOOST_METAPARSE=y
-+BR2_PACKAGE_BOOST_MPI=y
-+BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
-+BR2_PACKAGE_BOOST_PYTHON=y
-+BR2_PACKAGE_BOOST_RANDOM=y
-+BR2_PACKAGE_BOOST_REGEX=y
-+BR2_PACKAGE_BOOST_SERIALIZATION=y
-+BR2_PACKAGE_BOOST_SIGNALS=y
-+BR2_PACKAGE_BOOST_SYSTEM=y
-+BR2_PACKAGE_BOOST_THREAD=y
-+BR2_PACKAGE_BOOST_TIMER=y
-+BR2_PACKAGE_BOOST_TYPE_ERASURE=y
-+BR2_PACKAGE_BOOST_WAVE=y
-+BR2_PACKAGE_ELFUTILS=y
-+BR2_PACKAGE_LIBCAP_TOOLS=y
-+BR2_PACKAGE_LIBEVENT=y
-+BR2_PACKAGE_POCO=y
-+BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
-+BR2_PACKAGE_POCO_ZIP=y
-+BR2_PACKAGE_POCO_DATA_SQLITE=y
-+BR2_PACKAGE_POCO_DATA_MYSQL=y
-+BR2_PACKAGE_PROTOBUF=y
-+BR2_PACKAGE_PROTOBUF_C=y
-+BR2_PACKAGE_NCURSES_WCHAR=y
-+BR2_PACKAGE_NCURSES_TARGET_PANEL=y
-+BR2_PACKAGE_NCURSES_TARGET_FORM=y
-+BR2_PACKAGE_NCURSES_TARGET_MENU=y
-+BR2_PACKAGE_NCURSES_TARGET_PROGS=y
-+BR2_PACKAGE_FETCHMAIL=y
-+BR2_PACKAGE_HEIRLOOM_MAILX=y
-+BR2_PACKAGE_LIBESMTP=y
-+BR2_PACKAGE_MSMTP=y
-+BR2_PACKAGE_MUTT=y
-+BR2_PACKAGE_MUTT_IMAP=y
-+BR2_PACKAGE_MUTT_POP3=y
-+BR2_PACKAGE_BLUEZ5_UTILS=y
-+BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
-+BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
-+BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y
-+BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
-+BR2_PACKAGE_CAN_UTILS=y
-+BR2_PACKAGE_CIVETWEB=y
-+BR2_PACKAGE_CIVETWEB_WITH_LUA=y
-+BR2_PACKAGE_CONNTRACK_TOOLS=y
-+BR2_PACKAGE_CRDA=y
-+BR2_PACKAGE_DHCP=y
-+BR2_PACKAGE_DHCP_SERVER=y
-+BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
-+BR2_PACKAGE_DHCP_CLIENT=y
-+BR2_PACKAGE_ETHTOOL=y
-+BR2_PACKAGE_GESFTPSERVER=y
-+BR2_PACKAGE_HOSTAPD=y
-+BR2_PACKAGE_HOSTAPD_EAP=y
-+BR2_PACKAGE_HOSTAPD_WPS=y
-+BR2_PACKAGE_HTTPING=y
-+BR2_PACKAGE_HTTPING_TFO=y
-+BR2_PACKAGE_IFTOP=y
-+BR2_PACKAGE_IFUPDOWN=y
-+BR2_PACKAGE_IPROUTE2=y
-+BR2_PACKAGE_IPSEC_TOOLS=y
-+BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
-+BR2_PACKAGE_IPTABLES=y
-+BR2_PACKAGE_IW=y
-+BR2_PACKAGE_MINIDLNA=y
-+BR2_PACKAGE_NETPLUG=y
-+BR2_PACKAGE_OPENSSH=y
-+BR2_PACKAGE_OPENVPN=y
-+BR2_PACKAGE_OPENVPN_SMALL=y
-+BR2_PACKAGE_PPPD=y
-+BR2_PACKAGE_PPPD_FILTER=y
-+BR2_PACKAGE_PPPD_RADIUS=y
-+BR2_PACKAGE_PPTP_LINUX=y
-+BR2_PACKAGE_RSYNC=y
-+BR2_PACKAGE_TINC=y
-+BR2_PACKAGE_WGET=y
-+BR2_PACKAGE_WIRELESS_TOOLS=y
-+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
-+BR2_PACKAGE_WPA_SUPPLICANT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
-+BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
-+BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
-+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
-+BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
-+BR2_PACKAGE_BASH=y
-+BR2_PACKAGE_SCREEN=y
-+BR2_PACKAGE_SUDO=y
-+BR2_PACKAGE_ATTR=y
-+BR2_PACKAGE_HTOP=y
-+BR2_PACKAGE_KEYUTILS=y
-+BR2_PACKAGE_POLKIT=y
-+BR2_PACKAGE_UTIL_LINUX_SETTERM=y
-+BR2_PACKAGE_JOE=y
-+BR2_TARGET_ROOTFS_EXT2=y
-+BR2_TARGET_ROOTFS_EXT2_4=y
-+BR2_TARGET_ROOTFS_TAR_GZIP=y
-+BR2_TARGET_UBOOT=y
-+BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
-+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
-+BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
-+# BR2_TARGET_UBOOT_FORMAT_BIN is not set
-+BR2_TARGET_UBOOT_FORMAT_IMG=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
-+BR2_TARGET_UBOOT_SPL=y
-+BR2_TARGET_UBOOT_SPL_NAME="MLO"
-+BR2_PACKAGE_HOST_DOSFSTOOLS=y
-+BR2_PACKAGE_HOST_DTC=y
-+BR2_PACKAGE_HOST_GENIMAGE=y
-+BR2_PACKAGE_HOST_MTOOLS=y
-+BR2_PACKAGE_WT=y
-+BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
-+BR2_PACKAGE_GFA_ADDONS=y
-diff --git a/configs/Display001_4.4.104_rt21_Qt5.7_defconfig b/configs/Display001_4.4.104_rt21_Qt5.7_defconfig
-new file mode 100644
-index 0000000..6dd9d9f
---- /dev/null
-+++ b/configs/Display001_4.4.104_rt21_Qt5.7_defconfig
-@@ -0,0 +1,460 @@
-+BR2_arm=y
-+BR2_cortex_a8=y
-+BR2_ARM_INSTRUCTIONS_THUMB2=y
-+BR2_DL_DIR="~/buildroot_dl"
-+BR2_HOST_DIR="/opt/GfA/TC_L44104_C493_QT57"
-+# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
-+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
-+BR2_KERNEL_HEADERS_4_4=y
-+BR2_GLIBC_VERSION_2_24=y
-+BR2_BINUTILS_VERSION_2_27_X=y
-+BR2_GCC_VERSION_4_9_3=y
-+BR2_TOOLCHAIN_BUILDROOT_CXX=y
-+BR2_PACKAGE_HOST_GDB=y
-+BR2_PACKAGE_HOST_GDB_TUI=y
-+BR2_PACKAGE_HOST_GDB_PYTHON=y
-+BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
-+BR2_TARGET_OPTIMIZATION="-pipe"
-+BR2_TARGET_GENERIC_HOSTNAME="GfA"
-+BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
-+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
-+BR2_TARGET_GENERIC_ROOT_PASSWD="root"
-+BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
-+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
-+# BR2_ENABLE_LOCALE_PURGE is not set
-+BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
-+BR2_TARGET_LOCALTIME="Europe/Vienna"
-+BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
-+BR2_LINUX_KERNEL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel57.tar.gz  "
-+BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.104_rt21"
-+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.104_rt_defconfig"
-+BR2_LINUX_KERNEL_UIMAGE=y
-+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
-+BR2_LINUX_KERNEL_DTS_SUPPORT=y
-+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-+BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7_rs485.dts"
-+BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
-+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-+BR2_PACKAGE_FFMPEG_GPL=y
-+BR2_PACKAGE_FFMPEG_NONFREE=y
-+BR2_PACKAGE_FFMPEG_FFPLAY=y
-+BR2_PACKAGE_FFMPEG_FFSERVER=y
-+BR2_PACKAGE_FFMPEG_FFPROBE=y
-+BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
-+BR2_PACKAGE_FFMPEG_POSTPROC=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
-+BR2_PACKAGE_MPD=y
-+BR2_PACKAGE_MPLAYER=y
-+BR2_PACKAGE_MPV=y
-+BR2_PACKAGE_VLC=y
-+BR2_PACKAGE_WAVPACK=y
-+BR2_PACKAGE_GZIP=y
-+BR2_PACKAGE_LZ4=y
-+BR2_PACKAGE_LZIP=y
-+BR2_PACKAGE_LZOP=y
-+BR2_PACKAGE_P7ZIP=y
-+BR2_PACKAGE_UNRAR=y
-+BR2_PACKAGE_UNZIP=y
-+BR2_PACKAGE_ZIP=y
-+BR2_PACKAGE_GDB=y
-+BR2_PACKAGE_GDB_DEBUGGER=y
-+BR2_PACKAGE_STRACE=y
-+BR2_PACKAGE_BINUTILS=y
-+BR2_PACKAGE_BINUTILS_TARGET=y
-+BR2_PACKAGE_CMAKE_CTEST=y
-+BR2_PACKAGE_GETTEXT=y
-+BR2_PACKAGE_GIT=y
-+BR2_PACKAGE_MAKE=y
-+BR2_PACKAGE_PATCH=y
-+BR2_PACKAGE_SED=y
-+BR2_PACKAGE_TREE=y
-+BR2_PACKAGE_CIFS_UTILS=y
-+BR2_PACKAGE_DOSFSTOOLS=y
-+BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
-+BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
-+BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
-+BR2_PACKAGE_E2FSPROGS=y
-+BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
-+BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
-+BR2_PACKAGE_F2FS_TOOLS=y
-+BR2_PACKAGE_FLASHBENCH=y
-+BR2_PACKAGE_MAKEDEVS=y
-+BR2_PACKAGE_MMC_UTILS=y
-+BR2_PACKAGE_DEJAVU=y
-+BR2_PACKAGE_FONT_AWESOME=y
-+BR2_PACKAGE_DIRECTFB=y
-+BR2_PACKAGE_DIRECTFB_DIVINE=y
-+BR2_PACKAGE_DIRECTFB_SAWMAN=y
-+BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
-+BR2_PACKAGE_EFL=y
-+BR2_PACKAGE_EFL_FB=y
-+BR2_PACKAGE_EFL_WEBP=y
-+BR2_PACKAGE_FB_TEST_APP=y
-+BR2_PACKAGE_FBTERM=y
-+BR2_PACKAGE_FBV=y
-+BR2_PACKAGE_LINUX_FUSION=y
-+BR2_PACKAGE_PSPLASH=y
-+BR2_PACKAGE_SDL_DIRECTFB=y
-+BR2_PACKAGE_SDL_GFX=y
-+BR2_PACKAGE_SDL_IMAGE=y
-+BR2_PACKAGE_SDL_IMAGE_GIF=y
-+BR2_PACKAGE_SDL_IMAGE_JPEG=y
-+BR2_PACKAGE_SDL_IMAGE_LBM=y
-+BR2_PACKAGE_SDL_IMAGE_PCX=y
-+BR2_PACKAGE_SDL_IMAGE_PNG=y
-+BR2_PACKAGE_SDL_IMAGE_PNM=y
-+BR2_PACKAGE_SDL_IMAGE_TARGA=y
-+BR2_PACKAGE_SDL_IMAGE_TIFF=y
-+BR2_PACKAGE_SDL_IMAGE_WEBP=y
-+BR2_PACKAGE_SDL_IMAGE_XCF=y
-+BR2_PACKAGE_SDL_IMAGE_XPM=y
-+BR2_PACKAGE_SDL_IMAGE_XV=y
-+BR2_PACKAGE_SDL_MIXER=y
-+BR2_PACKAGE_SDL_NET=y
-+BR2_PACKAGE_SDL_SOUND=y
-+BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
-+BR2_PACKAGE_SDL_TTF=y
-+BR2_PACKAGE_SDL2=y
-+BR2_PACKAGE_SDL2_DIRECTFB=y
-+BR2_PACKAGE_SDL2_GFX=y
-+BR2_PACKAGE_SDL2_IMAGE=y
-+BR2_PACKAGE_SDL2_TTF=y
-+BR2_PACKAGE_QT5=y
-+BR2_PACKAGE_QT5BASE_LICENSE_APPROVED=y
-+BR2_PACKAGE_QT5BASE_MYSQL=y
-+BR2_PACKAGE_QT5BASE_PSQL=y
-+BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
-+BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
-+BR2_PACKAGE_QT5BASE_EGLFS=y
-+BR2_PACKAGE_QT5BASE_FONTCONFIG=y
-+BR2_PACKAGE_QT5BASE_GIF=y
-+BR2_PACKAGE_QT5BASE_JPEG=y
-+BR2_PACKAGE_QT5BASE_PNG=y
-+BR2_PACKAGE_QT53D=y
-+BR2_PACKAGE_QT5CANVAS3D=y
-+BR2_PACKAGE_QT5CONNECTIVITY=y
-+BR2_PACKAGE_QT5ENGINIO=y
-+BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
-+BR2_PACKAGE_QT5IMAGEFORMATS=y
-+BR2_PACKAGE_QT5LOCATION=y
-+BR2_PACKAGE_QT5MULTIMEDIA=y
-+BR2_PACKAGE_QT5QUICKCONTROLS=y
-+BR2_PACKAGE_QT5SENSORS=y
-+BR2_PACKAGE_QT5SERIALBUS=y
-+BR2_PACKAGE_QT5WAYLAND=y
-+BR2_PACKAGE_QT5SVG=y
-+BR2_PACKAGE_QT5TOOLS=y
-+BR2_PACKAGE_QT5TOOLS_QTPATHS=y
-+BR2_PACKAGE_QT5TOOLS_QTPLUGININFO=y
-+BR2_PACKAGE_QT5WEBENGINE=y
-+BR2_PACKAGE_QT5VIRTUALKEYBOARD=y
-+BR2_PACKAGE_QT5CHARTS=y
-+BR2_PACKAGE_QT5DATAVIS3D=y
-+BR2_PACKAGE_QT5QUICKCONTROLS2=y
-+BR2_PACKAGE_TEKUI=y
-+BR2_PACKAGE_WESTON=y
-+BR2_PACKAGE_AM33X_CM3=y
-+BR2_PACKAGE_LINUX_FIRMWARE=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
-+BR2_PACKAGE_AM335X_PRU_PACKAGE=y
-+BR2_PACKAGE_DEVMEM2=y
-+BR2_PACKAGE_EVTEST=y
-+BR2_PACKAGE_I2C_TOOLS=y
-+BR2_PACKAGE_INPUT_TOOLS=y
-+BR2_PACKAGE_KBD=y
-+BR2_PACKAGE_LIBUIO=y
-+BR2_PACKAGE_LSUIO=y
-+BR2_PACKAGE_PARTED=y
-+BR2_PACKAGE_RS485CONF=y
-+BR2_PACKAGE_SISPMCTL=y
-+BR2_PACKAGE_SPI_TOOLS=y
-+BR2_PACKAGE_TI_GFX=y
-+BR2_PACKAGE_TI_GFX_EGLIMAGE=y
-+BR2_PACKAGE_TI_GFX_ES8=y
-+BR2_PACKAGE_TI_UTILS=y
-+BR2_PACKAGE_USB_MODESWITCH_DATA=y
-+BR2_PACKAGE_USBMOUNT=y
-+BR2_PACKAGE_USBUTILS=y
-+BR2_PACKAGE_NODEJS=y
-+BR2_PACKAGE_NODEJS_NPM=y
-+BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
-+BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
-+BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
-+BR2_PACKAGE_PYTHON=y
-+BR2_PACKAGE_PYTHON_BZIP2=y
-+BR2_PACKAGE_PYTHON_BSDDB=y
-+BR2_PACKAGE_PYTHON_CODECSCJK=y
-+BR2_PACKAGE_PYTHON_CURSES=y
-+BR2_PACKAGE_PYTHON_READLINE=y
-+BR2_PACKAGE_PYTHON_SSL=y
-+BR2_PACKAGE_PYTHON_SQLITE=y
-+BR2_PACKAGE_PYTHON_PYEXPAT=y
-+BR2_PACKAGE_PYTHON_HASHLIB=y
-+BR2_PACKAGE_PYTHON_PAHO_MQTT=y
-+BR2_PACKAGE_PYTHON_PYUDEV=y
-+BR2_PACKAGE_TCL=y
-+BR2_PACKAGE_EXPECT=y
-+BR2_PACKAGE_TCLLIB=y
-+BR2_PACKAGE_LIBMPD=y
-+BR2_PACKAGE_OPUS=y
-+BR2_PACKAGE_TAGLIB=y
-+BR2_PACKAGE_LIBZIP=y
-+BR2_PACKAGE_SNAPPY=y
-+BR2_PACKAGE_SZIP=y
-+BR2_PACKAGE_GNUTLS_TOOLS=y
-+BR2_PACKAGE_LIBNSS=y
-+BR2_PACKAGE_LIBSHA1=y
-+BR2_PACKAGE_LIBSSH2=y
-+BR2_PACKAGE_OPENSSL_BIN=y
-+BR2_PACKAGE_OPENSSL_ENGINES=y
-+BR2_PACKAGE_MYSQL_SERVER=y
-+BR2_PACKAGE_SQLITE_NO_SYNC=y
-+BR2_PACKAGE_LIBCONFIG=y
-+BR2_PACKAGE_CAIRO_TEE=y
-+BR2_PACKAGE_GD=y
-+BR2_PACKAGE_GD_ANNOTATE=y
-+BR2_PACKAGE_GD_GD2COPYPAL=y
-+BR2_PACKAGE_GD_GD2TOGIF=y
-+BR2_PACKAGE_GD_GD2TOPNG=y
-+BR2_PACKAGE_GD_GDCMPGIF=y
-+BR2_PACKAGE_GD_GDPARTTOPNG=y
-+BR2_PACKAGE_GD_GDTOPNG=y
-+BR2_PACKAGE_GD_GIFTOGD2=y
-+BR2_PACKAGE_GD_PNGTOGD=y
-+BR2_PACKAGE_GD_PNGTOGD2=y
-+BR2_PACKAGE_GD_WEBPNG=y
-+BR2_PACKAGE_GDK_PIXBUF=y
-+BR2_PACKAGE_HARFBUZZ=y
-+BR2_PACKAGE_LIBDRM=y
-+BR2_PACKAGE_LIBDRM_OMAP=y
-+BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
-+BR2_PACKAGE_WEBP_DEMUX=y
-+BR2_PACKAGE_DTC=y
-+BR2_PACKAGE_DTC_PROGRAMS=y
-+BR2_PACKAGE_LIBGUDEV=y
-+BR2_PACKAGE_LIBHID=y
-+BR2_PACKAGE_LIBIIO=y
-+BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
-+BR2_PACKAGE_LIBV4L=y
-+BR2_PACKAGE_JANSSON=y
-+BR2_PACKAGE_LIBXSLT=y
-+BR2_PACKAGE_LIBMPEG2=y
-+BR2_PACKAGE_LIBVPX=y
-+BR2_PACKAGE_LIBYUV=y
-+BR2_PACKAGE_CANFESTIVAL=y
-+BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
-+BR2_PACKAGE_CURL=y
-+BR2_PACKAGE_LIBGSASL=y
-+BR2_PACKAGE_LIBIDN=y
-+BR2_PACKAGE_LIBIDN_BINARY=y
-+BR2_PACKAGE_LIBMBUS=y
-+BR2_PACKAGE_LIBMICROHTTPD=y
-+BR2_PACKAGE_LIBMICROHTTPD_SSL=y
-+BR2_PACKAGE_LIBMODBUS=y
-+BR2_PACKAGE_LIBPJSIP=y
-+BR2_PACKAGE_LIBRSYNC=y
-+BR2_PACKAGE_LIBSOUP=y
-+BR2_PACKAGE_LIBVNCSERVER=y
-+BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
-+BR2_PACKAGE_NEON=y
-+BR2_PACKAGE_NEON_ZLIB=y
-+BR2_PACKAGE_NEON_SSL=y
-+BR2_PACKAGE_NEON_LIBXML2=y
-+BR2_PACKAGE_NSS_PAM_LDAPD=y
-+BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
-+BR2_PACKAGE_PAHO_MQTT_C=y
-+BR2_PACKAGE_BOOST_ATOMIC=y
-+BR2_PACKAGE_BOOST_CHRONO=y
-+BR2_PACKAGE_BOOST_CONTAINER=y
-+BR2_PACKAGE_BOOST_CONTEXT=y
-+BR2_PACKAGE_BOOST_COROUTINE=y
-+BR2_PACKAGE_BOOST_COROUTINE2=y
-+BR2_PACKAGE_BOOST_DATE_TIME=y
-+BR2_PACKAGE_BOOST_EXCEPTION=y
-+BR2_PACKAGE_BOOST_FILESYSTEM=y
-+BR2_PACKAGE_BOOST_GRAPH=y
-+BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
-+BR2_PACKAGE_BOOST_IOSTREAMS=y
-+BR2_PACKAGE_BOOST_LOCALE=y
-+BR2_PACKAGE_BOOST_LOG=y
-+BR2_PACKAGE_BOOST_MATH=y
-+BR2_PACKAGE_BOOST_METAPARSE=y
-+BR2_PACKAGE_BOOST_MPI=y
-+BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
-+BR2_PACKAGE_BOOST_PYTHON=y
-+BR2_PACKAGE_BOOST_RANDOM=y
-+BR2_PACKAGE_BOOST_REGEX=y
-+BR2_PACKAGE_BOOST_SERIALIZATION=y
-+BR2_PACKAGE_BOOST_SIGNALS=y
-+BR2_PACKAGE_BOOST_SYSTEM=y
-+BR2_PACKAGE_BOOST_THREAD=y
-+BR2_PACKAGE_BOOST_TIMER=y
-+BR2_PACKAGE_BOOST_TYPE_ERASURE=y
-+BR2_PACKAGE_BOOST_WAVE=y
-+BR2_PACKAGE_ELFUTILS=y
-+BR2_PACKAGE_LIBCAP_TOOLS=y
-+BR2_PACKAGE_LIBEVENT=y
-+BR2_PACKAGE_LIBICAL=y
-+BR2_PACKAGE_POCO=y
-+BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
-+BR2_PACKAGE_POCO_ZIP=y
-+BR2_PACKAGE_POCO_DATA_SQLITE=y
-+BR2_PACKAGE_POCO_DATA_MYSQL=y
-+BR2_PACKAGE_PROTOBUF=y
-+BR2_PACKAGE_PROTOBUF_C=y
-+BR2_PACKAGE_NCURSES_WCHAR=y
-+BR2_PACKAGE_NCURSES_TARGET_PANEL=y
-+BR2_PACKAGE_NCURSES_TARGET_FORM=y
-+BR2_PACKAGE_NCURSES_TARGET_MENU=y
-+BR2_PACKAGE_NCURSES_TARGET_PROGS=y
-+BR2_PACKAGE_FETCHMAIL=y
-+BR2_PACKAGE_HEIRLOOM_MAILX=y
-+BR2_PACKAGE_LIBESMTP=y
-+BR2_PACKAGE_MSMTP=y
-+BR2_PACKAGE_MUTT=y
-+BR2_PACKAGE_MUTT_IMAP=y
-+BR2_PACKAGE_MUTT_POP3=y
-+BR2_PACKAGE_CAN_UTILS=y
-+BR2_PACKAGE_CIVETWEB=y
-+BR2_PACKAGE_CIVETWEB_WITH_LUA=y
-+BR2_PACKAGE_CONNTRACK_TOOLS=y
-+BR2_PACKAGE_CRDA=y
-+BR2_PACKAGE_DHCP=y
-+BR2_PACKAGE_DHCP_SERVER=y
-+BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
-+BR2_PACKAGE_DHCP_CLIENT=y
-+BR2_PACKAGE_ETHTOOL=y
-+BR2_PACKAGE_GESFTPSERVER=y
-+BR2_PACKAGE_HOSTAPD=y
-+BR2_PACKAGE_HOSTAPD_EAP=y
-+BR2_PACKAGE_HOSTAPD_WPS=y
-+BR2_PACKAGE_HTTPING=y
-+BR2_PACKAGE_HTTPING_TFO=y
-+BR2_PACKAGE_IFTOP=y
-+BR2_PACKAGE_IFUPDOWN=y
-+BR2_PACKAGE_IPROUTE2=y
-+BR2_PACKAGE_IPSEC_TOOLS=y
-+BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
-+BR2_PACKAGE_IPTABLES=y
-+BR2_PACKAGE_IW=y
-+BR2_PACKAGE_MINIDLNA=y
-+BR2_PACKAGE_MOSQUITTO=y
-+BR2_PACKAGE_NETPLUG=y
-+BR2_PACKAGE_OPENSSH=y
-+BR2_PACKAGE_OPENVPN=y
-+BR2_PACKAGE_OPENVPN_SMALL=y
-+BR2_PACKAGE_PPPD=y
-+BR2_PACKAGE_PPPD_FILTER=y
-+BR2_PACKAGE_PPPD_RADIUS=y
-+BR2_PACKAGE_PPTP_LINUX=y
-+BR2_PACKAGE_RSYNC=y
-+BR2_PACKAGE_TINC=y
-+BR2_PACKAGE_WGET=y
-+BR2_PACKAGE_WIRELESS_TOOLS=y
-+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
-+BR2_PACKAGE_WPA_SUPPLICANT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
-+BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
-+BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
-+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
-+BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
-+BR2_PACKAGE_BASH=y
-+BR2_PACKAGE_SCREEN=y
-+BR2_PACKAGE_SUDO=y
-+BR2_PACKAGE_ATTR=y
-+BR2_PACKAGE_HTOP=y
-+BR2_PACKAGE_KEYUTILS=y
-+BR2_PACKAGE_POLKIT=y
-+BR2_PACKAGE_UTIL_LINUX_SETTERM=y
-+BR2_PACKAGE_JOE=y
-+BR2_TARGET_ROOTFS_EXT2=y
-+BR2_TARGET_ROOTFS_EXT2_4=y
-+BR2_TARGET_ROOTFS_TAR_GZIP=y
-+BR2_TARGET_UBOOT=y
-+BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
-+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
-+BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
-+# BR2_TARGET_UBOOT_FORMAT_BIN is not set
-+BR2_TARGET_UBOOT_FORMAT_IMG=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
-+BR2_TARGET_UBOOT_SPL=y
-+BR2_TARGET_UBOOT_SPL_NAME="MLO"
-+BR2_PACKAGE_HOST_DOSFSTOOLS=y
-+BR2_PACKAGE_HOST_DTC=y
-+BR2_PACKAGE_HOST_GENIMAGE=y
-+BR2_PACKAGE_HOST_MTOOLS=y
-+BR2_PACKAGE_WT=y
-+BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
-+BR2_PACKAGE_GFA_ADDONS=y
-+BR2_PACKAGE_QMLPLUGINS=y
-+BR2_PACKAGE_PYTHON_UFW=y
-+BR2_PACKAGE_LIBULFIUS=y
-diff --git a/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig b/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
-new file mode 100644
-index 0000000..0b2d311
---- /dev/null
-+++ b/configs/Display001_4.4.94_rt19_Qt5.6.2_defconfig
-@@ -0,0 +1,449 @@
-+BR2_arm=y
-+BR2_cortex_a8=y
-+BR2_ARM_INSTRUCTIONS_THUMB2=y
-+BR2_DL_DIR="~/buildroot_dl"
-+BR2_HOST_DIR="/opt/GfA/TC_L4494_C493_QT562"
-+# BR2_COMPILER_PARANOID_UNSAFE_PATH is not set
-+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
-+BR2_KERNEL_HEADERS_4_4=y
-+BR2_GLIBC_VERSION_2_24=y
-+BR2_BINUTILS_VERSION_2_27_X=y
-+BR2_GCC_VERSION_4_9_3=y
-+BR2_TOOLCHAIN_BUILDROOT_CXX=y
-+BR2_PACKAGE_HOST_GDB=y
-+BR2_PACKAGE_HOST_GDB_TUI=y
-+BR2_PACKAGE_HOST_GDB_PYTHON=y
-+BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY=y
-+BR2_TARGET_OPTIMIZATION="-pipe"
-+BR2_TARGET_GENERIC_HOSTNAME="GfA"
-+BR2_TARGET_GENERIC_ISSUE="Welcome to GfA Display001"
-+BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
-+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt ../GfA/board/GfA/Display001/device_table.txt"
-+BR2_TARGET_GENERIC_ROOT_PASSWD="root"
-+BR2_TARGET_GENERIC_GETTY_PORT="ttyO0"
-+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
-+# BR2_ENABLE_LOCALE_PURGE is not set
-+BR2_GENERATE_LOCALE="en_US en_GB de_DE de_AT de_CH fr_FR it_IT es_ES sv_FI sv_SE nb_NO nn_NO se_NO da_DK zh_CN"
-+BR2_TARGET_LOCALTIME="Europe/Vienna"
-+BR2_ROOTFS_POST_BUILD_SCRIPT="../GfA/board/GfA/Display001/post-build_4.4.sh"
-+BR2_LINUX_KERNEL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="file://$(TOPDIR)/../GfA/GfAkernel.tar.gz  "
-+BR2_LINUX_KERNEL_PATCH="../GfA/board/GfA/Display001/linux_4.4.94_rt19"
-+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="../GfA/board/GfA/Display001/Display001_4.4.94_rt_defconfig"
-+BR2_LINUX_KERNEL_UIMAGE=y
-+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x80008000"
-+BR2_LINUX_KERNEL_DTS_SUPPORT=y
-+BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y
-+BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="../GfA/board/GfA/Display001/DTS_4.4/Display001.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_15.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_rru.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_4_nopruss.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_7_gain1.dts ../GfA/board/GfA/Display001/DTS_4.4/Display001_5.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_7.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_10.dts ../GfA/board/GfA/Display001/DTS_4.4/Display002_4.dts"
-+BR2_PACKAGE_BUSYBOX_CONFIG="../GfA/board/GfA/Display001/busybox.config"
-+BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
-+BR2_PACKAGE_FFMPEG_GPL=y
-+BR2_PACKAGE_FFMPEG_NONFREE=y
-+BR2_PACKAGE_FFMPEG_FFPLAY=y
-+BR2_PACKAGE_FFMPEG_FFSERVER=y
-+BR2_PACKAGE_FFMPEG_FFPROBE=y
-+BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
-+BR2_PACKAGE_FFMPEG_POSTPROC=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTPMANAGER=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_RTSP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_SMPTE=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_UDP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VIDEOCROP=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_Y4M=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2=y
-+BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_V4L2_PROBE=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL=y
-+BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264=y
-+BR2_PACKAGE_MPD=y
-+BR2_PACKAGE_MPLAYER=y
-+BR2_PACKAGE_MPV=y
-+BR2_PACKAGE_VLC=y
-+BR2_PACKAGE_WAVPACK=y
-+BR2_PACKAGE_GZIP=y
-+BR2_PACKAGE_LZ4=y
-+BR2_PACKAGE_LZIP=y
-+BR2_PACKAGE_LZOP=y
-+BR2_PACKAGE_P7ZIP=y
-+BR2_PACKAGE_UNRAR=y
-+BR2_PACKAGE_UNZIP=y
-+BR2_PACKAGE_ZIP=y
-+BR2_PACKAGE_GDB=y
-+BR2_PACKAGE_GDB_DEBUGGER=y
-+BR2_PACKAGE_STRACE=y
-+BR2_PACKAGE_BINUTILS=y
-+BR2_PACKAGE_BINUTILS_TARGET=y
-+BR2_PACKAGE_CMAKE_CTEST=y
-+BR2_PACKAGE_GETTEXT=y
-+BR2_PACKAGE_MAKE=y
-+BR2_PACKAGE_SED=y
-+BR2_PACKAGE_CIFS_UTILS=y
-+BR2_PACKAGE_DOSFSTOOLS=y
-+BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
-+BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
-+BR2_PACKAGE_DOSFSTOOLS_MKFS_FAT=y
-+BR2_PACKAGE_E2FSPROGS=y
-+BR2_PACKAGE_E2FSPROGS_DEBUGFS=y
-+BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
-+BR2_PACKAGE_F2FS_TOOLS=y
-+BR2_PACKAGE_FLASHBENCH=y
-+BR2_PACKAGE_MAKEDEVS=y
-+BR2_PACKAGE_MMC_UTILS=y
-+BR2_PACKAGE_DEJAVU=y
-+BR2_PACKAGE_DIRECTFB=y
-+BR2_PACKAGE_DIRECTFB_DIVINE=y
-+BR2_PACKAGE_DIRECTFB_SAWMAN=y
-+BR2_PACKAGE_DIRECTFB_DITHER_RGB16=y
-+BR2_PACKAGE_EFL=y
-+BR2_PACKAGE_EFL_FB=y
-+BR2_PACKAGE_EFL_WEBP=y
-+BR2_PACKAGE_FB_TEST_APP=y
-+BR2_PACKAGE_FBTERM=y
-+BR2_PACKAGE_FBV=y
-+BR2_PACKAGE_LINUX_FUSION=y
-+BR2_PACKAGE_PSPLASH=y
-+BR2_PACKAGE_SDL_DIRECTFB=y
-+BR2_PACKAGE_SDL_GFX=y
-+BR2_PACKAGE_SDL_IMAGE=y
-+BR2_PACKAGE_SDL_IMAGE_GIF=y
-+BR2_PACKAGE_SDL_IMAGE_JPEG=y
-+BR2_PACKAGE_SDL_IMAGE_LBM=y
-+BR2_PACKAGE_SDL_IMAGE_PCX=y
-+BR2_PACKAGE_SDL_IMAGE_PNG=y
-+BR2_PACKAGE_SDL_IMAGE_PNM=y
-+BR2_PACKAGE_SDL_IMAGE_TARGA=y
-+BR2_PACKAGE_SDL_IMAGE_TIFF=y
-+BR2_PACKAGE_SDL_IMAGE_WEBP=y
-+BR2_PACKAGE_SDL_IMAGE_XCF=y
-+BR2_PACKAGE_SDL_IMAGE_XPM=y
-+BR2_PACKAGE_SDL_IMAGE_XV=y
-+BR2_PACKAGE_SDL_MIXER=y
-+BR2_PACKAGE_SDL_NET=y
-+BR2_PACKAGE_SDL_SOUND=y
-+BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
-+BR2_PACKAGE_SDL_TTF=y
-+BR2_PACKAGE_SDL2=y
-+BR2_PACKAGE_SDL2_DIRECTFB=y
-+BR2_PACKAGE_SDL2_GFX=y
-+BR2_PACKAGE_SDL2_IMAGE=y
-+BR2_PACKAGE_SDL2_TTF=y
-+BR2_PACKAGE_QT5=y
-+BR2_PACKAGE_QT5_VERSION_5_6=y
-+BR2_PACKAGE_QT53D=y
-+BR2_PACKAGE_QT5BASE_MYSQL=y
-+BR2_PACKAGE_QT5BASE_PSQL=y
-+BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM=y
-+BR2_PACKAGE_QT5BASE_LINUXFB=y
-+BR2_PACKAGE_QT5BASE_EGLFS=y
-+BR2_PACKAGE_QT5BASE_FONTCONFIG=y
-+BR2_PACKAGE_QT5BASE_GIF=y
-+BR2_PACKAGE_QT5BASE_JPEG=y
-+BR2_PACKAGE_QT5BASE_PNG=y
-+BR2_PACKAGE_QT5CANVAS3D=y
-+BR2_PACKAGE_QT5CONNECTIVITY=y
-+BR2_PACKAGE_QT5ENGINIO=y
-+BR2_PACKAGE_QT5GRAPHICALEFFECTS=y
-+BR2_PACKAGE_QT5IMAGEFORMATS=y
-+BR2_PACKAGE_QT5LOCATION=y
-+BR2_PACKAGE_QT5MULTIMEDIA=y
-+BR2_PACKAGE_QT5QUICKCONTROLS=y
-+BR2_PACKAGE_QT5QUICKCONTROLS2=y
-+BR2_PACKAGE_QT5SENSORS=y
-+BR2_PACKAGE_QT5WAYLAND=y
-+BR2_PACKAGE_QT5SERIALBUS=y
-+BR2_PACKAGE_QT5SVG=y
-+BR2_PACKAGE_QT5WEBENGINE=y
-+BR2_PACKAGE_TEKUI=y
-+BR2_PACKAGE_WESTON=y
-+BR2_PACKAGE_AM33X_CM3=y
-+BR2_PACKAGE_LINUX_FIRMWARE=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IBT=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6002=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6003=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_6004=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_7010=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9170=y
-+BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_9271=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C=y
-+BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V9=y
-+BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8688=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8787=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8797=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8801=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8887=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_SD8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_USB8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MWIFIEX_PCIE8897=y
-+BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7601U=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT73=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT2XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL128X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX=y
-+BR2_PACKAGE_LINUX_FIRMWARE_BNX2X=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4=y
-+BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5=y
-+BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y
-+BR2_PACKAGE_AM335X_PRU_PACKAGE=y
-+BR2_PACKAGE_DEVMEM2=y
-+BR2_PACKAGE_EVTEST=y
-+BR2_PACKAGE_I2C_TOOLS=y
-+BR2_PACKAGE_INPUT_TOOLS=y
-+BR2_PACKAGE_KBD=y
-+BR2_PACKAGE_LIBUIO=y
-+BR2_PACKAGE_LSUIO=y
-+BR2_PACKAGE_PARTED=y
-+BR2_PACKAGE_RS485CONF=y
-+BR2_PACKAGE_SISPMCTL=y
-+BR2_PACKAGE_SPI_TOOLS=y
-+BR2_PACKAGE_TI_GFX=y
-+BR2_PACKAGE_TI_GFX_EGLIMAGE=y
-+BR2_PACKAGE_TI_GFX_ES8=y
-+BR2_PACKAGE_TI_UTILS=y
-+BR2_PACKAGE_USB_MODESWITCH_DATA=y
-+BR2_PACKAGE_USBMOUNT=y
-+BR2_PACKAGE_USBUTILS=y
-+BR2_PACKAGE_NODEJS=y
-+BR2_PACKAGE_NODEJS_NPM=y
-+BR2_PACKAGE_NODEJS_MODULES_EXPRESS=y
-+BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT=y
-+BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL="node-red"
-+BR2_PACKAGE_PERL=y
-+BR2_PACKAGE_PYTHON=y
-+BR2_PACKAGE_PYTHON_BZIP2=y
-+BR2_PACKAGE_PYTHON_BSDDB=y
-+BR2_PACKAGE_PYTHON_CODECSCJK=y
-+BR2_PACKAGE_PYTHON_CURSES=y
-+BR2_PACKAGE_PYTHON_READLINE=y
-+BR2_PACKAGE_PYTHON_SSL=y
-+BR2_PACKAGE_PYTHON_SQLITE=y
-+BR2_PACKAGE_PYTHON_PYEXPAT=y
-+BR2_PACKAGE_PYTHON_HASHLIB=y
-+BR2_PACKAGE_PYTHON_PYUDEV=y
-+BR2_PACKAGE_TCL=y
-+BR2_PACKAGE_EXPECT=y
-+BR2_PACKAGE_TCLLIB=y
-+BR2_PACKAGE_LIBMPD=y
-+BR2_PACKAGE_OPUS=y
-+BR2_PACKAGE_TAGLIB=y
-+BR2_PACKAGE_LIBZIP=y
-+BR2_PACKAGE_SNAPPY=y
-+BR2_PACKAGE_SZIP=y
-+BR2_PACKAGE_GNUTLS=y
-+BR2_PACKAGE_GNUTLS_TOOLS=y
-+BR2_PACKAGE_LIBNSS=y
-+BR2_PACKAGE_LIBSHA1=y
-+BR2_PACKAGE_LIBSSH2=y
-+BR2_PACKAGE_OPENSSL_BIN=y
-+BR2_PACKAGE_OPENSSL_ENGINES=y
-+BR2_PACKAGE_MYSQL_SERVER=y
-+BR2_PACKAGE_SQLITE_NO_SYNC=y
-+BR2_PACKAGE_LIBCONFIG=y
-+BR2_PACKAGE_CAIRO_TEE=y
-+BR2_PACKAGE_GD=y
-+BR2_PACKAGE_GD_ANNOTATE=y
-+BR2_PACKAGE_GD_BDFTOGD=y
-+BR2_PACKAGE_GD_GD2COPYPAL=y
-+BR2_PACKAGE_GD_GD2TOGIF=y
-+BR2_PACKAGE_GD_GD2TOPNG=y
-+BR2_PACKAGE_GD_GDCMPGIF=y
-+BR2_PACKAGE_GD_GDPARTTOPNG=y
-+BR2_PACKAGE_GD_GDTOPNG=y
-+BR2_PACKAGE_GD_GIFTOGD2=y
-+BR2_PACKAGE_GD_PNGTOGD=y
-+BR2_PACKAGE_GD_PNGTOGD2=y
-+BR2_PACKAGE_GD_WEBPNG=y
-+BR2_PACKAGE_GDK_PIXBUF=y
-+BR2_PACKAGE_HARFBUZZ=y
-+BR2_PACKAGE_LIBJPEG=y
-+BR2_PACKAGE_LIBDRM=y
-+BR2_PACKAGE_LIBDRM_OMAP=y
-+BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
-+BR2_PACKAGE_WEBP_DEMUX=y
-+BR2_PACKAGE_DTC=y
-+BR2_PACKAGE_DTC_PROGRAMS=y
-+BR2_PACKAGE_LIBGUDEV=y
-+BR2_PACKAGE_LIBHID=y
-+BR2_PACKAGE_LIBIIO=y
-+BR2_PACKAGE_LIBIIO_BINDINGS_PYTHON=y
-+BR2_PACKAGE_LIBV4L=y
-+BR2_PACKAGE_LIBXSLT=y
-+BR2_PACKAGE_LIBMPEG2=y
-+BR2_PACKAGE_LIBVPX=y
-+BR2_PACKAGE_LIBYUV=y
-+BR2_PACKAGE_CANFESTIVAL=y
-+BR2_PACKAGE_CANFESTIVAL_INSTALL_EXAMPLES=y
-+BR2_PACKAGE_CURL=y
-+BR2_PACKAGE_LIBGSASL=y
-+BR2_PACKAGE_LIBIDN=y
-+BR2_PACKAGE_LIBIDN_BINARY=y
-+BR2_PACKAGE_LIBMBUS=y
-+BR2_PACKAGE_LIBMODBUS=y
-+BR2_PACKAGE_LIBPJSIP=y
-+BR2_PACKAGE_LIBRSYNC=y
-+BR2_PACKAGE_LIBSOUP=y
-+BR2_PACKAGE_LIBVNCSERVER=y
-+BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG=y
-+BR2_PACKAGE_NEON=y
-+BR2_PACKAGE_NEON_ZLIB=y
-+BR2_PACKAGE_NEON_SSL=y
-+BR2_PACKAGE_NEON_LIBXML2=y
-+BR2_PACKAGE_NSS_PAM_LDAPD=y
-+BR2_PACKAGE_NSS_PAM_LDAPD_UTILITIES=y
-+BR2_PACKAGE_BOOST_ATOMIC=y
-+BR2_PACKAGE_BOOST_CHRONO=y
-+BR2_PACKAGE_BOOST_CONTAINER=y
-+BR2_PACKAGE_BOOST_CONTEXT=y
-+BR2_PACKAGE_BOOST_COROUTINE=y
-+BR2_PACKAGE_BOOST_COROUTINE2=y
-+BR2_PACKAGE_BOOST_DATE_TIME=y
-+BR2_PACKAGE_BOOST_EXCEPTION=y
-+BR2_PACKAGE_BOOST_FILESYSTEM=y
-+BR2_PACKAGE_BOOST_GRAPH=y
-+BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
-+BR2_PACKAGE_BOOST_IOSTREAMS=y
-+BR2_PACKAGE_BOOST_LOCALE=y
-+BR2_PACKAGE_BOOST_LOG=y
-+BR2_PACKAGE_BOOST_MATH=y
-+BR2_PACKAGE_BOOST_METAPARSE=y
-+BR2_PACKAGE_BOOST_MPI=y
-+BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
-+BR2_PACKAGE_BOOST_PYTHON=y
-+BR2_PACKAGE_BOOST_RANDOM=y
-+BR2_PACKAGE_BOOST_REGEX=y
-+BR2_PACKAGE_BOOST_SERIALIZATION=y
-+BR2_PACKAGE_BOOST_SIGNALS=y
-+BR2_PACKAGE_BOOST_SYSTEM=y
-+BR2_PACKAGE_BOOST_THREAD=y
-+BR2_PACKAGE_BOOST_TIMER=y
-+BR2_PACKAGE_BOOST_TYPE_ERASURE=y
-+BR2_PACKAGE_BOOST_WAVE=y
-+BR2_PACKAGE_ELFUTILS=y
-+BR2_PACKAGE_LIBCAP_TOOLS=y
-+BR2_PACKAGE_LIBEVENT=y
-+BR2_PACKAGE_POCO=y
-+BR2_PACKAGE_POCO_NETSSL_OPENSSL=y
-+BR2_PACKAGE_POCO_ZIP=y
-+BR2_PACKAGE_POCO_DATA_SQLITE=y
-+BR2_PACKAGE_POCO_DATA_MYSQL=y
-+BR2_PACKAGE_PROTOBUF=y
-+BR2_PACKAGE_PROTOBUF_C=y
-+BR2_PACKAGE_NCURSES_WCHAR=y
-+BR2_PACKAGE_NCURSES_TARGET_PANEL=y
-+BR2_PACKAGE_NCURSES_TARGET_FORM=y
-+BR2_PACKAGE_NCURSES_TARGET_MENU=y
-+BR2_PACKAGE_NCURSES_TARGET_PROGS=y
-+BR2_PACKAGE_FETCHMAIL=y
-+BR2_PACKAGE_HEIRLOOM_MAILX=y
-+BR2_PACKAGE_LIBESMTP=y
-+BR2_PACKAGE_MSMTP=y
-+BR2_PACKAGE_MUTT=y
-+BR2_PACKAGE_MUTT_IMAP=y
-+BR2_PACKAGE_MUTT_POP3=y
-+BR2_PACKAGE_BLUEZ5_UTILS=y
-+BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y
-+BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y
-+BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL=y
-+BR2_PACKAGE_BLUEZ5_UTILS_TEST=y
-+BR2_PACKAGE_CAN_UTILS=y
-+BR2_PACKAGE_CIVETWEB=y
-+BR2_PACKAGE_CIVETWEB_WITH_LUA=y
-+BR2_PACKAGE_CONNTRACK_TOOLS=y
-+BR2_PACKAGE_CRDA=y
-+BR2_PACKAGE_DHCP=y
-+BR2_PACKAGE_DHCP_SERVER=y
-+BR2_PACKAGE_DHCP_SERVER_DELAYED_ACK=y
-+BR2_PACKAGE_DHCP_CLIENT=y
-+BR2_PACKAGE_ETHTOOL=y
-+BR2_PACKAGE_GESFTPSERVER=y
-+BR2_PACKAGE_HOSTAPD=y
-+BR2_PACKAGE_HOSTAPD_EAP=y
-+BR2_PACKAGE_HOSTAPD_WPS=y
-+BR2_PACKAGE_HTTPING=y
-+BR2_PACKAGE_HTTPING_TFO=y
-+BR2_PACKAGE_IFTOP=y
-+BR2_PACKAGE_IFUPDOWN=y
-+BR2_PACKAGE_IPROUTE2=y
-+BR2_PACKAGE_IPSEC_TOOLS=y
-+BR2_PACKAGE_IPSEC_TOOLS_READLINE=y
-+BR2_PACKAGE_IPTABLES=y
-+BR2_PACKAGE_IW=y
-+BR2_PACKAGE_MINIDLNA=y
-+BR2_PACKAGE_NETPLUG=y
-+BR2_PACKAGE_OPENSSH=y
-+BR2_PACKAGE_OPENVPN=y
-+BR2_PACKAGE_OPENVPN_SMALL=y
-+BR2_PACKAGE_PPPD=y
-+BR2_PACKAGE_PPPD_FILTER=y
-+BR2_PACKAGE_PPPD_RADIUS=y
-+BR2_PACKAGE_PPTP_LINUX=y
-+BR2_PACKAGE_RSYNC=y
-+BR2_PACKAGE_TINC=y
-+BR2_PACKAGE_WGET=y
-+BR2_PACKAGE_WIRELESS_TOOLS=y
-+BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
-+BR2_PACKAGE_WPA_SUPPLICANT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
-+BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
-+BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
-+BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
-+BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
-+BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
-+BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW=y
-+BR2_PACKAGE_WPA_SUPPLICANT_DBUS_INTROSPECTION=y
-+BR2_PACKAGE_BASH=y
-+BR2_PACKAGE_SCREEN=y
-+BR2_PACKAGE_SUDO=y
-+BR2_PACKAGE_ATTR=y
-+BR2_PACKAGE_HTOP=y
-+BR2_PACKAGE_KEYUTILS=y
-+BR2_PACKAGE_POLKIT=y
-+BR2_PACKAGE_UTIL_LINUX_SETTERM=y
-+BR2_PACKAGE_JOE=y
-+BR2_TARGET_ROOTFS_EXT2=y
-+BR2_TARGET_ROOTFS_EXT2_4=y
-+BR2_TARGET_ROOTFS_TAR_GZIP=y
-+BR2_TARGET_UBOOT=y
-+BR2_TARGET_UBOOT_BOARDNAME="am335x_boneblack"
-+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2013.10"
-+BR2_TARGET_UBOOT_PATCH="../GfA/board/GfA/Display001/uboot_2013.10"
-+# BR2_TARGET_UBOOT_FORMAT_BIN is not set
-+BR2_TARGET_UBOOT_FORMAT_IMG=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
-+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
-+BR2_TARGET_UBOOT_SPL=y
-+BR2_TARGET_UBOOT_SPL_NAME="MLO"
-+BR2_PACKAGE_HOST_DOSFSTOOLS=y
-+BR2_PACKAGE_HOST_DTC=y
-+BR2_PACKAGE_HOST_GENIMAGE=y
-+BR2_PACKAGE_HOST_MTOOLS=y
-+BR2_PACKAGE_WT=y
-+BR2_PACKAGE_NETWORK_INTERFACES_SCRIPT=y
-+BR2_PACKAGE_GFA_ADDONS=y
-diff --git a/package/fontconfig/001-mtime-always-ok.patch b/package/fontconfig/001-mtime-always-ok.patch
-new file mode 100644
-index 0000000..671c1f1
---- /dev/null
-+++ b/package/fontconfig/001-mtime-always-ok.patch
-@@ -0,0 +1,12 @@
-+diff -Naurp a/src/fccache.c b/src/fccache.c
-+--- a/src/fccache.c	2016-08-05 07:35:05.000000000 +0200
-++++ b/src/fccache.c	2017-11-26 00:51:18.800927077 +0100
-+@@ -585,7 +585,7 @@ FcCacheTimeValid (FcConfig *config, FcCa
-+ 		FcCacheDir (cache), cache->checksum, (int) dir_stat->st_mtime);
-+ #endif
-+ 
-+-    return cache->checksum == (int) dir_stat->st_mtime && fnano;
-++    return FcTrue;
-+ }
-+ 
-+ static FcBool
-diff --git a/package/fontconfig/fontconfig.mk b/package/fontconfig/fontconfig.mk
-index 93f2a15..a470d1f 100644
---- a/package/fontconfig/fontconfig.mk
-+++ b/package/fontconfig/fontconfig.mk
-@@ -15,7 +15,7 @@ FONTCONFIG_LICENSE_FILES = COPYING
- 
- FONTCONFIG_CONF_OPTS = \
- 	--with-arch=$(GNU_TARGET_NAME) \
--	--with-cache-dir=/var/cache/fontconfig \
-+	--with-cache-dir=/fontconfig_cache \
- 	--disable-docs
- 
- HOST_FONTCONFIG_CONF_OPTS = \
-diff --git a/package/gcc/4.9.1/100-uclibc-conf.patch b/package/gcc/4.9.1/100-uclibc-conf.patch
-new file mode 100644
-index 0000000..d56bf0a
---- /dev/null
-+++ b/package/gcc/4.9.1/100-uclibc-conf.patch
-@@ -0,0 +1,15 @@
-+Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
-+===================================================================
-+--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh	2009-04-09 17:00:19.000000000 +0200
-++++ gcc-4.8.0/contrib/regression/objs-gcc.sh	2013-03-23 17:39:04.000000000 +0100
-+@@ -106,6 +106,10 @@
-+  then
-+   make all-gdb all-dejagnu all-ld || exit 1
-+   make install-gdb install-dejagnu install-ld || exit 1
-++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-++ then
-++  make all-gdb all-dejagnu all-ld || exit 1
-++  make install-gdb install-dejagnu install-ld || exit 1
-+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-+   make bootstrap || exit 1
-+   make install || exit 1
-diff --git a/package/gcc/4.9.1/301-missing-execinfo_h.patch b/package/gcc/4.9.1/301-missing-execinfo_h.patch
-new file mode 100644
-index 0000000..00efda2
---- /dev/null
-+++ b/package/gcc/4.9.1/301-missing-execinfo_h.patch
-@@ -0,0 +1,13 @@
-+Index: gcc-4.8.0/boehm-gc/include/gc.h
-+===================================================================
-+--- gcc-4.8.0.orig/boehm-gc/include/gc.h	2007-04-23 23:10:09.000000000 +0200
-++++ gcc-4.8.0/boehm-gc/include/gc.h	2013-03-23 17:39:20.000000000 +0100
-+@@ -503,7 +503,7 @@
-+ #if defined(__linux__) || defined(__GLIBC__)
-+ # include <features.h>
-+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
-+-     && !defined(__ia64__)
-++     && !defined(__ia64__) && !defined(__UCLIBC__)
-+ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
-+ #     define GC_HAVE_BUILTIN_BACKTRACE
-+ #   endif
-diff --git a/package/gcc/4.9.1/302-c99-snprintf.patch b/package/gcc/4.9.1/302-c99-snprintf.patch
-new file mode 100644
-index 0000000..cd4d2cc
---- /dev/null
-+++ b/package/gcc/4.9.1/302-c99-snprintf.patch
-@@ -0,0 +1,13 @@
-+Index: gcc-4.8.0/libstdc++-v3/include/c_global/cstdio
-+===================================================================
-+--- gcc-4.8.0.orig/libstdc++-v3/include/c_global/cstdio	2013-02-03 18:54:05.000000000 +0100
-++++ gcc-4.8.0/libstdc++-v3/include/c_global/cstdio	2013-03-23 17:39:32.000000000 +0100
-+@@ -138,7 +138,7 @@
-+   using ::vsprintf;
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if _GLIBCXX_USE_C99 || defined __UCLIBC__
-+ 
-+ #undef snprintf
-+ #undef vfscanf
-diff --git a/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
-new file mode 100644
-index 0000000..c8cb377
---- /dev/null
-+++ b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
-@@ -0,0 +1,30 @@
-+Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
-+===================================================================
-+--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h	2013-01-10 21:38:27.000000000 +0100
-++++ gcc-4.8.0/gcc/config/arm/linux-elf.h	2013-03-23 17:40:00.000000000 +0100
-+@@ -55,7 +55,7 @@
-+    %{shared:-lc} \
-+    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-+ 
-+-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
-++#define LIBGCC_SPEC "-lgcc"
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+ 
-+Index: gcc-4.8.0/libgcc/config/arm/t-linux
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/config/arm/t-linux	2012-03-22 16:14:46.000000000 +0100
-++++ gcc-4.8.0/libgcc/config/arm/t-linux	2013-03-23 17:40:54.000000000 +0100
-+@@ -1,6 +1,11 @@
-+ LIB1ASMSRC = arm/lib1funcs.S
-+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
-+-	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3
-++	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
-++	_arm_addsubdf3 _arm_addsubsf3 \
-++	_arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
-++	_arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
-++	_arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
-++	_arm_fixsfsi _arm_fixunssfsi
-+ 
-+ # Just for these, we omit the frame pointer since it makes such a big
-+ # difference.
-diff --git a/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
-new file mode 100644
-index 0000000..37f8f2a
---- /dev/null
-+++ b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
-@@ -0,0 +1,13 @@
-+http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
-+
-+--- a/gcc/config/arm/linux-eabi.h
-++++ b/gcc/config/arm/linux-eabi.h
-+@@ -45,7 +45,7 @@
-+    The ARM10TDMI core is the default for armv5t, so set
-+    SUBTARGET_CPU_DEFAULT to achieve this.  */
-+ #undef  SUBTARGET_CPU_DEFAULT
-+-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
-++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
-+ 
-+ /* TARGET_BIG_ENDIAN_DEFAULT is set in
-+    config.gcc for big endian configurations.  */
-diff --git a/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
-new file mode 100644
-index 0000000..e116e2b
---- /dev/null
-+++ b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
-@@ -0,0 +1,169 @@
-+Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
-+
-+From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
-+From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
-+Date: Mon, 18 Jun 2012 20:18:13 +0200
-+Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
-+
-+Changelog
-+
-+2013-03-18  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
-+            David Holsgrove <david.holsgrove@xilinx.com>
-+
-+ * common/config/microblaze/microblaze-common.c: Remove
-+   TARGET_EXCEPT_UNWIND_INFO definition.
-+ * config/microblaze/microblaze-protos.h: Add
-+   microblaze_eh_return prototype.
-+ * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
-+   microblaze_expand_epilogue, microblaze_return_addr): Handle
-+   calls_eh_return
-+   (microblaze_eh_return): New function.
-+ * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
-+   EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
-+   ASM_PREFERRED_EH_DATA_FORMAT
-+ * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
-+
-+Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
-+Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
-+---
-+ gcc/common/config/microblaze/microblaze-common.c |  3 ---
-+ gcc/config/microblaze/microblaze-protos.h        |  1 +
-+ gcc/config/microblaze/microblaze.c               | 29 ++++++++++++++++++++----
-+ gcc/config/microblaze/microblaze.h               | 15 ++++++++++++
-+ gcc/config/microblaze/microblaze.md              | 11 +++++++++
-+ 5 files changed, 52 insertions(+), 7 deletions(-)
-+
-+diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
-+index 5835acc..85e6a53 100644
-+--- a/gcc/common/config/microblaze/microblaze-common.c
-++++ b/gcc/common/config/microblaze/microblaze-common.c
-+@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
-+ #undef  TARGET_OPTION_OPTIMIZATION_TABLE
-+ #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
-+ 
-+-#undef TARGET_EXCEPT_UNWIND_INFO
-+-#define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
-+-
-+ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
-+diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
-+index c30ec72..260f4e4 100644
-+--- a/gcc/config/microblaze/microblaze-protos.h
-++++ b/gcc/config/microblaze/microblaze-protos.h
-+@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
-+ extern int symbol_mentioned_p (rtx);
-+ extern int label_mentioned_p (rtx);
-+ extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
-++extern void microblaze_eh_return (rtx op0);
-+ #endif  /* RTX_CODE */
-+ 
-+ /* Declare functions in microblaze-c.c.  */
-+diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
-+index fe61fce..15166d3 100644
-+--- a/gcc/config/microblaze/microblaze.c
-++++ b/gcc/config/microblaze/microblaze.c
-+@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
-+   if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
-+     return 1;
-+ 
-++  if (crtl->calls_eh_return
-++      && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
-++    return 1;
-++  }
-++
-+   if (!crtl->is_leaf)
-+     {
-+       if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
-+@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
-+ 	return 1;
-+     }
-+ 
-++  if (crtl->calls_eh_return
-++      && (regno == EH_RETURN_DATA_REGNO (0)
-++          || regno == EH_RETURN_DATA_REGNO (1)))
-++    {
-++      return 1;
-++    }
-++
-+   return 0;
-+ }
-+ 
-+@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
-+       emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
-+     }
-+ 
-++  if (crtl->calls_eh_return)
-++    emit_insn (gen_addsi3 (stack_pointer_rtx,
-++                           stack_pointer_rtx,
-++                           gen_rtx_raw_REG (SImode,
-++                                            MB_EH_STACKADJ_REGNUM)));
-++
-+   emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
-+ 						    MB_ABI_SUB_RETURN_ADDR_REGNUM)));
-+ }
-+@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
-+   if (count != 0)
-+     return NULL_RTX;
-+ 
-+-  return gen_rtx_PLUS (Pmode,
-+-		       get_hard_reg_initial_val (Pmode,
-+-						 MB_ABI_SUB_RETURN_ADDR_REGNUM),
-+-		       GEN_INT (8));
-++  return get_hard_reg_initial_val (Pmode,
-++                                   MB_ABI_SUB_RETURN_ADDR_REGNUM);
-++}
-++
-++void microblaze_eh_return (rtx op0)
-++{
-++  emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
-+ }
-+ 
-+ /* Queue an .ident string in the queue of top-level asm statements.
-+diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
-+index 4072283..5e9f49c 100644
-+--- a/gcc/config/microblaze/microblaze.h
-++++ b/gcc/config/microblaze/microblaze.h
-+@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
-+ #define INCOMING_RETURN_ADDR_RTX  			\
-+   gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
-+ 
-++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC.  */
-++#define RETURN_ADDR_OFFSET (8)
-++
-++/* Describe how we implement __builtin_eh_return.  */
-++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
-++
-++#define MB_EH_STACKADJ_REGNUM  MB_ABI_INT_RETURN_VAL2_REGNUM
-++#define EH_RETURN_STACKADJ_RTX  gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
-++
-++/* Select a format to encode pointers in exception handling data.  CODE
-++   is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
-++   true if the symbol may be affected by dynamic relocations.  */
-++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
-++  ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
-++
-+ /* Use DWARF 2 debugging information by default.  */
-+ #define DWARF2_DEBUGGING_INFO
-+ #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-+diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
-+index ed6131a..dc2405f 100644
-+--- a/gcc/config/microblaze/microblaze.md
-++++ b/gcc/config/microblaze/microblaze.md
-+@@ -2327,4 +2327,15 @@
-+   (set_attr "mode"      "SI")
-+   (set_attr "length"    "4")])
-+ 
-++; This is used in compiling the unwind routines.
-++(define_expand "eh_return"
-++  [(use (match_operand 0 "general_operand" ""))]
-++  ""
-++  "
-++{
-++  microblaze_eh_return(operands[0]);
-++  DONE;
-++}")
-++
-+ (include "sync.md")
-++
-+-- 
-+1.8.3.2
-+
-diff --git a/package/gcc/4.9.1/841-PR60102.patch b/package/gcc/4.9.1/841-PR60102.patch
-new file mode 100644
-index 0000000..e34695d
---- /dev/null
-+++ b/package/gcc/4.9.1/841-PR60102.patch
-@@ -0,0 +1,388 @@
-+From https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
-+Target: 4.9.2
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c gcc-4.9.1/gcc/config/rs6000/rs6000.c
-+--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c	2014-08-05 14:53:37.294498582 -0300
-++++ gcc-4.9.1/gcc/config/rs6000/rs6000.c	2014-08-05 14:58:33.972555735 -0300
-+@@ -1221,7 +1221,12 @@
-+       /* Soft frame pointer.  */
-+       "sfp",
-+       /* HTM SPR registers.  */
-+-      "tfhar", "tfiar", "texasr"
-++      "tfhar", "tfiar", "texasr",
-++      /* SPE High registers.  */
-++      "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",
-++      "8",  "9", "10", "11", "12", "13", "14", "15",
-++     "16", "17", "18", "19", "20", "21", "22", "23",
-++     "24", "25", "26", "27", "28", "29", "30", "31"
-+ };
-+ 
-+ #ifdef TARGET_REGNAMES
-+@@ -1249,7 +1254,12 @@
-+   /* Soft frame pointer.  */
-+   "sfp",
-+   /* HTM SPR registers.  */
-+-  "tfhar", "tfiar", "texasr"
-++  "tfhar", "tfiar", "texasr",
-++  /* SPE High registers.  */
-++  "%rh0",  "%rh1",  "%rh2",  "%rh3",  "%rh4",  "%rh5",  "%rh6",   "%rh7",
-++  "%rh8",  "%rh9",  "%rh10", "%r11",  "%rh12", "%rh13", "%rh14", "%rh15",
-++  "%rh16", "%rh17", "%rh18", "%rh19", "%rh20", "%rh21", "%rh22", "%rh23",
-++  "%rh24", "%rh25", "%rh26", "%rh27", "%rh28", "%rh29", "%rh30", "%rh31"
-+ };
-+ #endif
-+ 
-+@@ -31074,13 +31084,13 @@
-+     {
-+       if (BYTES_BIG_ENDIAN)
-+ 	{
-+-	  parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
-++	  parts[2 * i] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
-+ 	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
-+ 	}
-+       else
-+ 	{
-+ 	  parts[2 * i] = gen_rtx_REG (SImode, regno);
-+-	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
-++	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
-+ 	}
-+     }
-+ 
-+@@ -31100,11 +31110,11 @@
-+       rtx mem = gen_rtx_MEM (BLKmode, addr);
-+       rtx value = gen_int_mode (4, mode);
-+ 
-+-      for (i = 1201; i < 1232; i++)
-++      for (i = FIRST_SPE_HIGH_REGNO; i < LAST_SPE_HIGH_REGNO+1; i++)
-+ 	{
-+-	  int column = DWARF_REG_TO_UNWIND_COLUMN (i);
-+-	  HOST_WIDE_INT offset
-+-	    = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
-++	  int column = DWARF_REG_TO_UNWIND_COLUMN
-++		(DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
-++	  HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
-+ 
-+ 	  emit_move_insn (adjust_address (mem, mode, offset), value);
-+ 	}
-+@@ -31123,9 +31133,9 @@
-+ 
-+       for (i = FIRST_ALTIVEC_REGNO; i < LAST_ALTIVEC_REGNO+1; i++)
-+ 	{
-+-	  int column = DWARF_REG_TO_UNWIND_COLUMN (i);
-+-	  HOST_WIDE_INT offset
-+-	    = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
-++	  int column = DWARF_REG_TO_UNWIND_COLUMN
-++		(DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
-++	  HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
-+ 
-+ 	  emit_move_insn (adjust_address (mem, mode, offset), value);
-+ 	}
-+@@ -31157,9 +31167,8 @@
-+     return 99;
-+   if (regno == SPEFSCR_REGNO)
-+     return 612;
-+-  /* SPE high reg number.  We get these values of regno from
-+-     rs6000_dwarf_register_span.  */
-+-  gcc_assert (regno >= 1200 && regno < 1232);
-++  if (SPE_HIGH_REGNO_P (regno))
-++    return regno - FIRST_SPE_HIGH_REGNO + 1200;
-+   return regno;
-+ }
-+ 
-+diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h gcc-4.9.1/gcc/config/rs6000/rs6000.h
-+--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h	2014-08-05 14:53:37.291498480 -0300
-++++ gcc-4.9.1/gcc/config/rs6000/rs6000.h	2014-08-05 14:58:33.974555802 -0300
-+@@ -930,35 +930,36 @@
-+ 
-+    The 3 HTM registers aren't also included in DWARF_FRAME_REGISTERS.  */
-+ 
-+-#define FIRST_PSEUDO_REGISTER 117
-++#define FIRST_PSEUDO_REGISTER 149
-+ 
-+ /* This must be included for pre gcc 3.0 glibc compatibility.  */
-+ #define PRE_GCC3_DWARF_FRAME_REGISTERS 77
-+ 
-+-/* Add 32 dwarf columns for synthetic SPE registers.  */
-+-#define DWARF_FRAME_REGISTERS ((FIRST_PSEUDO_REGISTER - 4) + 32)
-++/* True if register is an SPE High register.  */
-++#define SPE_HIGH_REGNO_P(N) \
-++  ((N) >= FIRST_SPE_HIGH_REGNO && (N) <= LAST_SPE_HIGH_REGNO)
-++
-++/* SPE high registers added as hard regs.
-++   The sfp register and 3 HTM registers
-++   aren't included in DWARF_FRAME_REGISTERS.  */
-++#define DWARF_FRAME_REGISTERS (FIRST_PSEUDO_REGISTER - 4)
-+ 
-+ /* The SPE has an additional 32 synthetic registers, with DWARF debug
-+    info numbering for these registers starting at 1200.  While eh_frame
-+    register numbering need not be the same as the debug info numbering,
-+-   we choose to number these regs for eh_frame at 1200 too.  This allows
-+-   future versions of the rs6000 backend to add hard registers and
-+-   continue to use the gcc hard register numbering for eh_frame.  If the
-+-   extra SPE registers in eh_frame were numbered starting from the
-+-   current value of FIRST_PSEUDO_REGISTER, then if FIRST_PSEUDO_REGISTER
-+-   changed we'd need to introduce a mapping in DWARF_FRAME_REGNUM to
-+-   avoid invalidating older SPE eh_frame info.
-++   we choose to number these regs for eh_frame at 1200 too.
-+ 
-+    We must map them here to avoid huge unwinder tables mostly consisting
-+    of unused space.  */
-+ #define DWARF_REG_TO_UNWIND_COLUMN(r) \
-+-  ((r) > 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
-++  ((r) >= 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
-+ 
-+ /* Use standard DWARF numbering for DWARF debugging information.  */
-+ #define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
-+ 
-+ /* Use gcc hard register numbering for eh_frame.  */
-+-#define DWARF_FRAME_REGNUM(REGNO) (REGNO)
-++#define DWARF_FRAME_REGNUM(REGNO) \
-++  (SPE_HIGH_REGNO_P (REGNO) ? ((REGNO) - FIRST_SPE_HIGH_REGNO + 1200) : (REGNO))
-+ 
-+ /* Map register numbers held in the call frame info that gcc has
-+    collected using DWARF_FRAME_REGNUM to those that should be output in
-+@@ -992,7 +993,10 @@
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    1, 1						   \
-+-   , 1, 1, 1, 1, 1, 1				   \
-++   , 1, 1, 1, 1, 1, 1,				   \
-++   /* SPE High registers.  */			   \
-++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  \
-+ }
-+ 
-+ /* 1 for registers not available across function calls.
-+@@ -1012,7 +1016,10 @@
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    1, 1						   \
-+-   , 1, 1, 1, 1, 1, 1				   \
-++   , 1, 1, 1, 1, 1, 1,				   \
-++   /* SPE High registers.  */			   \
-++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
-++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  \
-+ }
-+ 
-+ /* Like `CALL_USED_REGISTERS' except this macro doesn't require that
-+@@ -1031,7 +1038,10 @@
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-+    0, 0						   \
-+-   , 0, 0, 0, 0, 0, 0				   \
-++   , 0, 0, 0, 0, 0, 0,				   \
-++   /* SPE High registers.  */			   \
-++   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
-++   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  \
-+ }
-+ 
-+ #define TOTAL_ALTIVEC_REGS	(LAST_ALTIVEC_REGNO - FIRST_ALTIVEC_REGNO + 1)
-+@@ -1114,7 +1124,10 @@
-+    96, 95, 94, 93, 92, 91,					\
-+    108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97,	\
-+    109, 110,							\
-+-   111, 112, 113, 114, 115, 116					\
-++   111, 112, 113, 114, 115, 116,				\
-++   117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,  \
-++   129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,  \
-++   141, 142, 143, 144, 145, 146, 147, 148			\
-+ }
-+ 
-+ /* True if register is floating-point.  */
-+@@ -1349,6 +1362,7 @@
-+   CR_REGS,
-+   NON_FLOAT_REGS,
-+   CA_REGS,
-++  SPE_HIGH_REGS,
-+   ALL_REGS,
-+   LIM_REG_CLASSES
-+ };
-+@@ -1380,6 +1394,7 @@
-+   "CR_REGS",								\
-+   "NON_FLOAT_REGS",							\
-+   "CA_REGS",								\
-++  "SPE_HIGH_REGS",							\
-+   "ALL_REGS"								\
-+ }
-+ 
-+@@ -1387,30 +1402,54 @@
-+    This is an initializer for a vector of HARD_REG_SET
-+    of length N_REG_CLASSES.  */
-+ 
-+-#define REG_CLASS_CONTENTS						     \
-+-{									     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */	     \
-+-  { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000 }, /* BASE_REGS */	     \
-+-  { 0xffffffff, 0x00000000, 0x00000008, 0x00020000 }, /* GENERAL_REGS */     \
-+-  { 0x00000000, 0xffffffff, 0x00000000, 0x00000000 }, /* FLOAT_REGS */       \
-+-  { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff }, /* ALTIVEC_REGS */     \
-+-  { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff }, /* VSX_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00002000 }, /* VRSAVE_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00004000 }, /* VSCR_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00008000 }, /* SPE_ACC_REGS */     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00010000 }, /* SPEFSCR_REGS */     \
-+-  { 0x00000000, 0x00000000, 0x00000000, 0x00040000 }, /* SPR_REGS */     \
-+-  { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000 }, /* NON_SPECIAL_REGS */ \
-+-  { 0x00000000, 0x00000000, 0x00000002, 0x00000000 }, /* LINK_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000004, 0x00000000 }, /* CTR_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000006, 0x00000000 }, /* LINK_OR_CTR_REGS */ \
-+-  { 0x00000000, 0x00000000, 0x00000006, 0x00002000 }, /* SPECIAL_REGS */     \
-+-  { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \
-+-  { 0x00000000, 0x00000000, 0x00000010, 0x00000000 }, /* CR0_REGS */	     \
-+-  { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000 }, /* CR_REGS */	     \
-+-  { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000 }, /* NON_FLOAT_REGS */   \
-+-  { 0x00000000, 0x00000000, 0x00001000, 0x00000000 }, /* CA_REGS */	     \
-+-  { 0xffffffff, 0xffffffff, 0xfffffffe, 0x0007ffff }  /* ALL_REGS */	     \
-++#define REG_CLASS_CONTENTS						\
-++{									\
-++  /* NO_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },	\
-++  /* BASE_REGS.  */							\
-++  { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000, 0x00000000 },	\
-++  /* GENERAL_REGS.  */							\
-++  { 0xffffffff, 0x00000000, 0x00000008, 0x00020000, 0x00000000 },	\
-++  /* FLOAT_REGS.  */							\
-++  { 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000 },	\
-++  /* ALTIVEC_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff, 0x00000000 },	\
-++  /* VSX_REGS.  */							\
-++  { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff, 0x00000000 },	\
-++  /* VRSAVE_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00000000 },	\
-++  /* VSCR_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000 },	\
-++  /* SPE_ACC_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000 },	\
-++  /* SPEFSCR_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000 },	\
-++  /* SPR_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00000000 },	\
-++  /* NON_SPECIAL_REGS.  */						\
-++  { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000, 0x00000000 },	\
-++  /* LINK_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000 },	\
-++  /* CTR_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000 },	\
-++  /* LINK_OR_CTR_REGS.  */						\
-++  { 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000 },	\
-++  /* SPECIAL_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000006, 0x00002000, 0x00000000 },	\
-++  /* SPEC_OR_GEN_REGS.  */						\
-++  { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000, 0x00000000 },	\
-++  /* CR0_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000000 },	\
-++  /* CR_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000, 0x00000000 },	\
-++  /* NON_FLOAT_REGS.  */						\
-++  { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000, 0x00000000 },	\
-++  /* CA_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x00000000 },	\
-++  /* SPE_HIGH_REGS.  */							\
-++  { 0x00000000, 0x00000000, 0x00000000, 0xffe00000, 0x001fffff },	\
-++  /* ALL_REGS.  */							\
-++  { 0xffffffff, 0xffffffff, 0xfffffffe, 0xffe7ffff, 0x001fffff }	\
-+ }
-+ 
-+ /* The same information, inverted:
-+@@ -2349,6 +2388,39 @@
-+   &rs6000_reg_names[114][0],	/* tfhar  */				\
-+   &rs6000_reg_names[115][0],	/* tfiar  */				\
-+   &rs6000_reg_names[116][0],	/* texasr  */				\
-++									\
-++  &rs6000_reg_names[117][0],	/* SPE rh0.  */				\
-++  &rs6000_reg_names[118][0],	/* SPE rh1.  */				\
-++  &rs6000_reg_names[119][0],	/* SPE rh2.  */				\
-++  &rs6000_reg_names[120][0],	/* SPE rh3.  */				\
-++  &rs6000_reg_names[121][0],	/* SPE rh4.  */				\
-++  &rs6000_reg_names[122][0],	/* SPE rh5.  */				\
-++  &rs6000_reg_names[123][0],	/* SPE rh6.  */				\
-++  &rs6000_reg_names[124][0],	/* SPE rh7.  */				\
-++  &rs6000_reg_names[125][0],	/* SPE rh8.  */				\
-++  &rs6000_reg_names[126][0],	/* SPE rh9.  */				\
-++  &rs6000_reg_names[127][0],	/* SPE rh10.  */			\
-++  &rs6000_reg_names[128][0],	/* SPE rh11.  */			\
-++  &rs6000_reg_names[129][0],	/* SPE rh12.  */			\
-++  &rs6000_reg_names[130][0],	/* SPE rh13.  */			\
-++  &rs6000_reg_names[131][0],	/* SPE rh14.  */			\
-++  &rs6000_reg_names[132][0],	/* SPE rh15.  */			\
-++  &rs6000_reg_names[133][0],	/* SPE rh16.  */			\
-++  &rs6000_reg_names[134][0],	/* SPE rh17.  */			\
-++  &rs6000_reg_names[135][0],	/* SPE rh18.  */			\
-++  &rs6000_reg_names[136][0],	/* SPE rh19.  */			\
-++  &rs6000_reg_names[137][0],	/* SPE rh20.  */			\
-++  &rs6000_reg_names[138][0],	/* SPE rh21.  */			\
-++  &rs6000_reg_names[139][0],	/* SPE rh22.  */			\
-++  &rs6000_reg_names[140][0],	/* SPE rh22.  */			\
-++  &rs6000_reg_names[141][0],	/* SPE rh24.  */			\
-++  &rs6000_reg_names[142][0],	/* SPE rh25.  */			\
-++  &rs6000_reg_names[143][0],	/* SPE rh26.  */			\
-++  &rs6000_reg_names[144][0],	/* SPE rh27.  */			\
-++  &rs6000_reg_names[145][0],	/* SPE rh28.  */			\
-++  &rs6000_reg_names[146][0],	/* SPE rh29.  */			\
-++  &rs6000_reg_names[147][0],	/* SPE rh30.  */			\
-++  &rs6000_reg_names[148][0],	/* SPE rh31.  */			\
-+ }
-+ 
-+ /* Table of additional register names to use in user input.  */
-+@@ -2404,7 +2476,17 @@
-+   {"vs56", 101},{"vs57", 102},{"vs58", 103},{"vs59", 104},      \
-+   {"vs60", 105},{"vs61", 106},{"vs62", 107},{"vs63", 108},	\
-+   /* Transactional Memory Facility (HTM) Registers.  */		\
-+-  {"tfhar",  114}, {"tfiar",  115}, {"texasr",  116} }
-++  {"tfhar",  114}, {"tfiar",  115}, {"texasr",  116},		\
-++  /* SPE high registers.  */					\
-++  {"rh0",  117}, {"rh1",  118}, {"rh2",  119}, {"rh3",  120},	\
-++  {"rh4",  121}, {"rh5",  122}, {"rh6",  123}, {"rh7",  124},	\
-++  {"rh8",  125}, {"rh9",  126}, {"rh10", 127}, {"rh11", 128},	\
-++  {"rh12", 129}, {"rh13", 130}, {"rh14", 131}, {"rh15", 132},	\
-++  {"rh16", 133}, {"rh17", 134}, {"rh18", 135}, {"rh19", 136},	\
-++  {"rh20", 137}, {"rh21", 138}, {"rh22", 139}, {"rh23", 140},	\
-++  {"rh24", 141}, {"rh25", 142}, {"rh26", 143}, {"rh27", 144},	\
-++  {"rh28", 145}, {"rh29", 146}, {"rh30", 147}, {"rh31", 148},	\
-++}
-+ 
-+ /* This is how to output an element of a case-vector that is relative.  */
-+ 
-+diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md gcc-4.9.1/gcc/config/rs6000/rs6000.md
-+--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md	2014-08-05 14:53:37.292498514 -0300
-++++ gcc-4.9.1/gcc/config/rs6000/rs6000.md	2014-08-05 14:58:33.977555904 -0300
-+@@ -56,6 +56,8 @@
-+    (TFHAR_REGNO			114)
-+    (TFIAR_REGNO			115)
-+    (TEXASR_REGNO		116)
-++   (FIRST_SPE_HIGH_REGNO	117)
-++   (LAST_SPE_HIGH_REGNO		148)
-+   ])
-+ 
-+ ;;
-+diff -Nura gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c
-+--- gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c	1969-12-31 21:00:00.000000000 -0300
-++++ gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c	2014-08-05 14:58:13.847873524 -0300
-+@@ -0,0 +1,11 @@
-++/* { dg-do compile } */
-++/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
-++/* { dg-options "-mcpu=8548 -mspe -mabi=spe -g -mfloat-gprs=double" } */
-++
-++double
-++pr60102 (double x, int m)
-++{
-++  double y;
-++  y =  m % 2 ? x : 1;
-++  return y;
-++}
-+diff -Nura gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h
-+--- gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h	2014-08-05 14:53:48.900892029 -0300
-++++ gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h	2014-08-05 14:58:33.979555972 -0300
-+@@ -274,8 +274,8 @@
-+ #ifdef __SPE__
-+   for (i = 14; i < 32; i++)
-+     {
-+-      fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].how = REG_SAVED_OFFSET;
-+-      fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].loc.offset
-++      fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].how = REG_SAVED_OFFSET;
-++      fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].loc.offset
-+ 	= (long) &regs->vregs - new_cfa + 4 * i;
-+     }
-+ #endif
-diff --git a/package/gcc/4.9.1/900-musl-support.patch b/package/gcc/4.9.1/900-musl-support.patch
-new file mode 100644
-index 0000000..5b3dfa5
---- /dev/null
-+++ b/package/gcc/4.9.1/900-musl-support.patch
-@@ -0,0 +1,696 @@
-+Add musl support to gcc
-+
-+This patch comes from the musl-cross project at
-+https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
-+
-+ * the config.sub modifications have been removed, because Buildroot
-+   already overwrites all config.sub with a more recent config.sub
-+   that has musl support.
-+
-+ * change to ensure that a dummy dynamic linker path
-+   MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
-+   otherwise building gcc for architectures not supported by musl was
-+   causing build failure. Bug reported upstream at
-+   https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
-+
-+[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
-+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-+---
-+
-+Index: b/fixincludes/mkfixinc.sh
-+===================================================================
-+--- a/fixincludes/mkfixinc.sh
-++++ b/fixincludes/mkfixinc.sh
-+@@ -19,7 +19,8 @@
-+     powerpc-*-eabi*    | \
-+     powerpc-*-rtems*   | \
-+     powerpcle-*-eabisim* | \
-+-    powerpcle-*-eabi* )
-++    powerpcle-*-eabi* | \
-++    *-musl* )
-+ 	#  IF there is no include fixing,
-+ 	#  THEN create a no-op fixer and exit
-+ 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
-+Index: b/gcc/config.gcc
-+===================================================================
-+--- a/gcc/config.gcc
-++++ b/gcc/config.gcc
-+@@ -594,7 +594,7 @@
-+ esac
-+ 
-+ # Common C libraries.
-+-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
-++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
-+ 
-+ # 32-bit x86 processors supported by --with-arch=.  Each processor
-+ # MUST be separated by exactly one space.
-+@@ -719,6 +719,9 @@
-+     *-*-*uclibc*)
-+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-+       ;;
-++    *-*-*musl*)
-++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
-++      ;;
-+     *)
-+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-+       ;;
-+@@ -2323,6 +2326,10 @@
-+ 	    powerpc*-*-linux*paired*)
-+ 		tm_file="${tm_file} rs6000/750cl.h" ;;
-+ 	esac
-++        case ${target} in
-++            *-linux*-musl*)
-++                enable_secureplt=yes ;;
-++        esac
-+ 	if test x${enable_secureplt} = xyes; then
-+ 		tm_file="rs6000/secureplt.h ${tm_file}"
-+ 	fi
-+Index: b/gcc/config/aarch64/aarch64-linux.h
-+===================================================================
-+--- a/gcc/config/aarch64/aarch64-linux.h
-++++ b/gcc/config/aarch64/aarch64-linux.h
-+@@ -22,6 +22,8 @@
-+ #define GCC_AARCH64_LINUX_H
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
-+ 
-+ #define CPP_SPEC "%{pthread:-D_REENTRANT}"
-+ 
-+Index: b/gcc/config/arm/linux-eabi.h
-+===================================================================
-+--- a/gcc/config/arm/linux-eabi.h
-++++ b/gcc/config/arm/linux-eabi.h
-+@@ -77,6 +77,23 @@
-+     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-+     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
-+ 
-++/* For ARM musl currently supports four dynamic linkers:
-++   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
-++   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
-++   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
-++   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
-++   musl does not support the legacy OABI mode.
-++   All the dynamic linkers live in /lib.
-++   We default to soft-float, EL. */
-++#undef  MUSL_DYNAMIC_LINKER
-++#if TARGET_BIG_ENDIAN_DEFAULT
-++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
-++#endif
-++#define MUSL_DYNAMIC_LINKER \
-++  "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
-++
-+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-+    use the GNU/Linux version, not the generic BPABI version.  */
-+ #undef  LINK_SPEC
-+Index: b/gcc/config/i386/linux.h
-+===================================================================
-+--- a/gcc/config/i386/linux.h
-++++ b/gcc/config/i386/linux.h
-+@@ -21,3 +21,5 @@
-+ 
-+ #define GNU_USER_LINK_EMULATION "elf_i386"
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
-+Index: b/gcc/config/i386/linux64.h
-+===================================================================
-+--- a/gcc/config/i386/linux64.h
-++++ b/gcc/config/i386/linux64.h
-+@@ -30,3 +30,10 @@
-+ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
-+ #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
-+ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
-++
-++#undef MUSL_DYNAMIC_LINKER32
-++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
-++#undef MUSL_DYNAMIC_LINKER64
-++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
-++#undef MUSL_DYNAMIC_LINKERX32
-++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
-+Index: b/gcc/config/linux.h
-+===================================================================
-+--- a/gcc/config/linux.h
-++++ b/gcc/config/linux.h
-+@@ -32,10 +32,12 @@
-+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
-+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
-+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
-++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
-+ #else
-+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
-+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
-+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
-++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
-+ #endif
-+ 
-+ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
-+@@ -53,18 +55,21 @@
-+    uClibc or Bionic is the default C library and whether
-+    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
-+ 
-+-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
-+-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
-++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
-++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
-+ 
-+ #if DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
-+ #elif DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
-+ #elif DEFAULT_LIBC == LIBC_BIONIC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif /* DEFAULT_LIBC */
-+@@ -82,23 +87,103 @@
-+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
-+ #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
-+ 
-++/* Musl dynamic linker paths must be defined on a per-architecture
-++   basis, for each architecture supported by Musl. However, in order
-++   to let other architectures continue to build with other C
-++   libraries, we provide a dummy definition of the following defines. */
-++#define MUSL_DYNAMIC_LINKER "invalid"
-++#define MUSL_DYNAMIC_LINKER32 "invalid"
-++#define MUSL_DYNAMIC_LINKER64 "invalid"
-++#define MUSL_DYNAMIC_LINKERX32 "invalid"
-++
-+ #define GNU_USER_DYNAMIC_LINKER						\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
-+-			 BIONIC_DYNAMIC_LINKER)
-++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
-+ #define GNU_USER_DYNAMIC_LINKER32					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
-+-			 BIONIC_DYNAMIC_LINKER32)
-++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
-+ #define GNU_USER_DYNAMIC_LINKER64					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
-+-			 BIONIC_DYNAMIC_LINKER64)
-++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
-+ #define GNU_USER_DYNAMIC_LINKERX32					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
-+-			 BIONIC_DYNAMIC_LINKERX32)
-++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
-+ 
-+ /* Whether we have Bionic libc runtime */
-+ #undef TARGET_HAS_BIONIC
-+ #define TARGET_HAS_BIONIC (OPTION_BIONIC)
-+ 
-++/* musl avoids problematic includes by rearranging the include directories.
-++ * Unfortunately, this is mostly duplicated from cppdefault.c */
-++#if DEFAULT_LIBC == LIBC_MUSL
-++#define INCLUDE_DEFAULTS_MUSL_GPP			\
-++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
-++
-++#ifdef LOCAL_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_LOCAL
-++#endif
-++
-++#ifdef PREFIX_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_PREFIX
-++#endif
-++
-++#ifdef CROSS_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
-++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_CROSS
-++#endif
-++
-++#ifdef TOOL_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
-++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_TOOL
-++#endif
-++
-++#ifdef NATIVE_SYSTEM_HEADER_DIR
-++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_NATIVE
-++#endif
-++
-++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
-++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
-++# define INCLUDE_DEFAULTS_MUSL_LOCAL
-++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
-++# define INCLUDE_DEFAULTS_MUSL_NATIVE
-++#else
-++# undef INCLUDE_DEFAULTS_MUSL_CROSS
-++# define INCLUDE_DEFAULTS_MUSL_CROSS
-++#endif
-++
-++#undef INCLUDE_DEFAULTS
-++#define INCLUDE_DEFAULTS				\
-++  {							\
-++    INCLUDE_DEFAULTS_MUSL_GPP				\
-++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
-++    INCLUDE_DEFAULTS_MUSL_CROSS				\
-++    INCLUDE_DEFAULTS_MUSL_TOOL				\
-++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
-++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
-++    { 0, 0, 0, 0, 0, 0 }				\
-++  }
-++#endif
-++
-+ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
-+ /* This is a *uclinux* target.  We don't define below macros to normal linux
-+    versions, because doing so would require *uclinux* targets to include
-+Index: b/gcc/config/linux.opt
-+===================================================================
-+--- a/gcc/config/linux.opt
-++++ b/gcc/config/linux.opt
-+@@ -30,3 +30,7 @@
-+ muclibc
-+ Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
-+ Use uClibc C library
-++
-++mmusl
-++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
-++Use musl C library
-+Index: b/gcc/config/microblaze/linux.h
-+===================================================================
-+--- a/gcc/config/microblaze/linux.h
-++++ b/gcc/config/microblaze/linux.h
-+@@ -25,7 +25,23 @@
-+ #undef TLS_NEEDS_GOT
-+ #define TLS_NEEDS_GOT 1
-+ 
-+-#define DYNAMIC_LINKER "/lib/ld.so.1"
-++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
-++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-++#endif
-++
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
-++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-++
-++#if DEFAULT_LIBC == LIBC_MUSL
-++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
-++#else
-++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
-++#endif
-++
-++
-+ #undef  SUBTARGET_EXTRA_SPECS
-+ #define SUBTARGET_EXTRA_SPECS \
-+   { "dynamic_linker", DYNAMIC_LINKER }
-+Index: b/gcc/config/rs6000/linux64.h
-+===================================================================
-+--- a/gcc/config/rs6000/linux64.h
-++++ b/gcc/config/rs6000/linux64.h
-+@@ -375,17 +375,23 @@
-+ #endif
-+ #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
-+ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-++#undef MUSL_DYNAMIC_LINKER32
-++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
-++#undef MUSL_DYNAMIC_LINKER64
-++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
-+ #if DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
-+ #elif DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif
-+ #define GNU_USER_DYNAMIC_LINKER32 \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
-+ #define GNU_USER_DYNAMIC_LINKER64 \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
-+ 
-+ #undef  DEFAULT_ASM_ENDIAN
-+ #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-+Index: b/gcc/config/rs6000/secureplt.h
-+===================================================================
-+--- a/gcc/config/rs6000/secureplt.h
-++++ b/gcc/config/rs6000/secureplt.h
-+@@ -18,3 +18,4 @@
-+ <http://www.gnu.org/licenses/>.  */
-+ 
-+ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
-++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
-+Index: b/gcc/config/rs6000/sysv4.h
-+===================================================================
-+--- a/gcc/config/rs6000/sysv4.h
-++++ b/gcc/config/rs6000/sysv4.h
-+@@ -537,6 +537,9 @@
-+ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
-+ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
-+ #endif
-++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
-++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
-++#endif
-+ 
-+ /* Pass -G xxx to the compiler.  */
-+ #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
-+@@ -585,7 +588,8 @@
-+ 
-+ /* Override the default target of the linker.  */
-+ #define	LINK_TARGET_SPEC \
-+-  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
-++  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
-++  "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
-+ 
-+ /* Any specific OS flags.  */
-+ #define LINK_OS_SPEC "\
-+@@ -763,15 +767,18 @@
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+ #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
-+ #if DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
-+ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif
-+ #define GNU_USER_DYNAMIC_LINKER \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
-+ 
-+ #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-+   %{rdynamic:-export-dynamic} \
-+@@ -894,6 +901,7 @@
-+   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
-+   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
-+   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
-++  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
-+   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
-+   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
-+   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
-+Index: b/gcc/config/sh/linux.h
-+===================================================================
-+--- a/gcc/config/sh/linux.h
-++++ b/gcc/config/sh/linux.h
-+@@ -43,7 +43,15 @@
-+ 
-+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+ 
-++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
-++#define MUSL_DYNAMIC_LINKER_E "eb"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E
-++#endif
-++
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
-+ 
-+ #undef SUBTARGET_LINK_EMUL_SUFFIX
-+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
-+Index: b/gcc/configure
-+===================================================================
-+--- a/gcc/configure
-++++ b/gcc/configure
-+@@ -27300,6 +27300,9 @@
-+ else
-+   gcc_cv_libc_provides_ssp=no
-+     case "$target" in
-++       *-*-musl*)
-++         # All versions of musl provide stack protector
-++	 gcc_cv_libc_provides_ssp=yes;;
-+        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
-+       # glibc 2.4 and later provides __stack_chk_fail and
-+       # either __stack_chk_guard, or TLS access to stack guard canary.
-+@@ -27332,6 +27335,7 @@
-+ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
-+ 	 # simply assert that glibc does provide this, which is true for all
-+ 	 # realistically usable GNU/Hurd configurations.
-++	 # All supported versions of musl provide it as well
-+ 	 gcc_cv_libc_provides_ssp=yes;;
-+        *-*-darwin* | *-*-freebsd*)
-+ 	 ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
-+@@ -27421,6 +27425,9 @@
-+       gcc_cv_target_dl_iterate_phdr=no
-+     fi
-+     ;;
-++  *-linux-musl*)
-++    gcc_cv_target_dl_iterate_phdr=yes
-++    ;;
-+ esac
-+ 
-+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
-+Index: b/gcc/configure.ac
-+===================================================================
-+--- a/gcc/configure.ac
-++++ b/gcc/configure.ac
-+@@ -5001,6 +5001,9 @@
-+       gcc_cv_libc_provides_ssp,
-+       [gcc_cv_libc_provides_ssp=no
-+     case "$target" in
-++       *-*-musl*)
-++         # All versions of musl provide stack protector
-++	 gcc_cv_libc_provides_ssp=yes;;
-+        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
-+       # glibc 2.4 and later provides __stack_chk_fail and
-+       # either __stack_chk_guard, or TLS access to stack guard canary.
-+@@ -5027,6 +5030,7 @@
-+ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
-+ 	 # simply assert that glibc does provide this, which is true for all
-+ 	 # realistically usable GNU/Hurd configurations.
-++	 # All supported versions of musl provide it as well
-+ 	 gcc_cv_libc_provides_ssp=yes;;
-+        *-*-darwin* | *-*-freebsd*)
-+ 	 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
-+@@ -5093,6 +5097,9 @@
-+       gcc_cv_target_dl_iterate_phdr=no
-+     fi
-+     ;;
-++  *-linux-musl*)
-++    gcc_cv_target_dl_iterate_phdr=yes
-++    ;;
-+ esac
-+ GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
-+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
-+Index: b/gcc/ginclude/stddef.h
-+===================================================================
-+--- a/gcc/ginclude/stddef.h
-++++ b/gcc/ginclude/stddef.h
-+@@ -181,6 +181,7 @@
-+ #ifndef _GCC_SIZE_T
-+ #ifndef _SIZET_
-+ #ifndef __size_t
-++#ifndef __DEFINED_size_t /* musl */
-+ #define __size_t__	/* BeOS */
-+ #define __SIZE_T__	/* Cray Unicos/Mk */
-+ #define _SIZE_T
-+@@ -197,6 +198,7 @@
-+ #define ___int_size_t_h
-+ #define _GCC_SIZE_T
-+ #define _SIZET_
-++#define __DEFINED_size_t /* musl */
-+ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
-+   || defined(__FreeBSD_kernel__)
-+ /* __size_t is a typedef on FreeBSD 5, must not trash it. */
-+@@ -214,6 +216,7 @@
-+ typedef long ssize_t;
-+ #endif /* __BEOS__ */
-+ #endif /* !(defined (__GNUG__) && defined (size_t)) */
-++#endif /* __DEFINED_size_t */
-+ #endif /* __size_t */
-+ #endif /* _SIZET_ */
-+ #endif /* _GCC_SIZE_T */
-+Index: b/libgcc/unwind-dw2-fde-dip.c
-+===================================================================
-+--- a/libgcc/unwind-dw2-fde-dip.c
-++++ b/libgcc/unwind-dw2-fde-dip.c
-+@@ -46,33 +46,13 @@
-+ #include "unwind-compat.h"
-+ #include "gthr.h"
-+ 
-+-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
-+-    && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
-+-	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
-+-# define USE_PT_GNU_EH_FRAME
-+-#endif
-+-
-+-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
-+-    && defined(__BIONIC__)
-+-# define USE_PT_GNU_EH_FRAME
-+-#endif
-+-
-+-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
-+-    && defined(__FreeBSD__) && __FreeBSD__ >= 7
-+-# define ElfW __ElfN
-+-# define USE_PT_GNU_EH_FRAME
-+-#endif
-+-
-+-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
-+-    && defined(__OpenBSD__)
-+-# define ElfW(type) Elf_##type
-+-# define USE_PT_GNU_EH_FRAME
-+-#endif
-+-
-+-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
-+-    && defined(TARGET_DL_ITERATE_PHDR) \
-+-    && defined(__sun__) && defined(__svr4__)
-++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
-+ # define USE_PT_GNU_EH_FRAME
-++# ifdef __OpenBSD__
-++#  define ElfW(type) Elf_##type
-++# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
-++#  define ElfW __ElfN
-++# endif
-+ #endif
-+ 
-+ #if defined(USE_PT_GNU_EH_FRAME)
-+Index: b/libgomp/config/posix/time.c
-+===================================================================
-+--- a/libgomp/config/posix/time.c
-++++ b/libgomp/config/posix/time.c
-+@@ -28,6 +28,8 @@
-+    The following implementation uses the most simple POSIX routines.
-+    If present, POSIX 4 clocks should be used instead.  */
-+ 
-++#define _POSIX_C_SOURCE 199309L /* for clocks */
-++
-+ #include "libgomp.h"
-+ #include <unistd.h>
-+ #if TIME_WITH_SYS_TIME
-+Index: b/libitm/config/arm/hwcap.cc
-+===================================================================
-+--- a/libitm/config/arm/hwcap.cc
-++++ b/libitm/config/arm/hwcap.cc
-+@@ -40,7 +40,11 @@
-+ 
-+ #ifdef __linux__
-+ #include <unistd.h>
-++#ifdef __GLIBC__
-+ #include <sys/fcntl.h>
-++#else
-++#include <fcntl.h>
-++#endif
-+ #include <elf.h>
-+ 
-+ static void __attribute__((constructor))
-+Index: b/libitm/config/linux/x86/tls.h
-+===================================================================
-+--- a/libitm/config/linux/x86/tls.h
-++++ b/libitm/config/linux/x86/tls.h
-+@@ -25,16 +25,19 @@
-+ #ifndef LIBITM_X86_TLS_H
-+ #define LIBITM_X86_TLS_H 1
-+ 
-+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-++#if defined(__GLIBC_PREREQ)
-++#if __GLIBC_PREREQ(2, 10)
-+ /* Use slots in the TCB head rather than __thread lookups.
-+    GLIBC has reserved words 10 through 13 for TM.  */
-+ #define HAVE_ARCH_GTM_THREAD 1
-+ #define HAVE_ARCH_GTM_THREAD_DISP 1
-+ #endif
-++#endif
-+ 
-+ #include "config/generic/tls.h"
-+ 
-+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-++#if defined(__GLIBC_PREREQ)
-++#if __GLIBC_PREREQ(2, 10)
-+ namespace GTM HIDDEN {
-+ 
-+ #ifdef __x86_64__
-+@@ -101,5 +104,6 @@
-+ 
-+ } // namespace GTM
-+ #endif /* >= GLIBC 2.10 */
-++#endif
-+ 
-+ #endif // LIBITM_X86_TLS_H
-+Index: b/libstdc++-v3/configure.host
-+===================================================================
-+--- a/libstdc++-v3/configure.host
-++++ b/libstdc++-v3/configure.host
-+@@ -264,6 +264,13 @@
-+     os_include_dir="os/bsd/freebsd"
-+     ;;
-+   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
-++    # check for musl by target
-++    case "${host_os}" in
-++      *-musl*)
-++        os_include_dir="os/generic"
-++        ;;
-++      *)
-++
-+     if [ "$uclibc" = "yes" ]; then
-+       os_include_dir="os/uclibc"
-+     elif [ "$bionic" = "yes" ]; then
-+@@ -272,6 +279,9 @@
-+       os_include_dir="os/gnu-linux"
-+     fi
-+     ;;
-++
-++    esac
-++    ;;
-+   hpux*)
-+     os_include_dir="os/hpux"
-+     ;;
-+Index: b/gcc/config/mips/linux64.h
-+===================================================================
-+--- a/gcc/config/mips/linux64.h
-++++ b/gcc/config/mips/linux64.h
-+@@ -41,4 +41,4 @@
-+ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
-+ #define GNU_USER_DYNAMIC_LINKERN32 \
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
-+-			 BIONIC_DYNAMIC_LINKERN32)
-++			 BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
-+Index: b/gcc/config/mips/linux.h
-+===================================================================
-+--- a/gcc/config/mips/linux.h
-++++ b/gcc/config/mips/linux.h
-+@@ -23,3 +23,11 @@
-+ #undef UCLIBC_DYNAMIC_LINKER
-+ #define UCLIBC_DYNAMIC_LINKER \
-+   "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
-++
-++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
-++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-++#endif
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
-diff --git a/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
-new file mode 100644
-index 0000000..b7094fe
---- /dev/null
-+++ b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
-@@ -0,0 +1,122 @@
-+http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
-+
-+On glibc the libc.so carries a copy of the math function copysignl() but
-+on uClibc math functions like copysignl() live in libm. Since libgcc_s
-+contains unresolved symbols, any attempt to link against libgcc_s
-+without explicitely specifying -lm fails, resulting in a broken
-+bootstrap of the compiler.
-+
-+Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+---
-+ libgcc/Makefile.in  |    4 +++-
-+ libgcc/configure    |   32 ++++++++++++++++++++++++++++++++
-+ libgcc/configure.ac |   21 +++++++++++++++++++++
-+ 3 files changed, 56 insertions(+), 1 deletion(-)
-+
-+Index: gcc-4.8.0/libgcc/Makefile.in
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/Makefile.in	2013-02-04 20:06:20.000000000 +0100
-++++ gcc-4.8.0/libgcc/Makefile.in	2013-03-24 09:12:43.000000000 +0100
-+@@ -41,6 +41,7 @@
-+ decimal_float = @decimal_float@
-+ enable_decimal_float = @enable_decimal_float@
-+ fixed_point = @fixed_point@
-++LIBGCC_LIBM = @LIBGCC_LIBM@
-+ 
-+ host_noncanonical = @host_noncanonical@
-+ target_noncanonical = @target_noncanonical@
-+@@ -927,9 +928,10 @@
-+ 		@multilib_dir@,$(MULTIDIR),$(subst \
-+ 		@shlib_objs@,$(objects) libgcc.a,$(subst \
-+ 		@shlib_base_name@,libgcc_s,$(subst \
-++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
-+ 		@shlib_map_file@,$(mapfile),$(subst \
-+ 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
-+-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
-++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
-+ 
-+ libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
-+ 	# @multilib_flags@ is still needed because this may use
-+Index: gcc-4.8.0/libgcc/configure
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/configure	2012-11-05 00:08:42.000000000 +0100
-++++ gcc-4.8.0/libgcc/configure	2013-03-24 09:12:43.000000000 +0100
-+@@ -564,6 +564,7 @@
-+ tmake_file
-+ sfp_machine_header
-+ set_use_emutls
-++LIBGCC_LIBM
-+ set_have_cc_tls
-+ vis_hide
-+ fixed_point
-+@@ -4481,6 +4482,37 @@
-+ 	fi
-+ fi
-+ 
-++# On powerpc libgcc_s references copysignl which is a libm function but
-++# glibc apparently also provides it via libc as opposed to uClibc where
-++# it lives in libm.
-++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
-++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
-++if test "${libgcc_cv_copysignl_lib+set}" = set; then
-++  echo $ECHO_N "(cached) $ECHO_C" >&6
-++else
-++
-++    echo '#include <features.h>' > conftest.c
-++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
-++    libgcc_cv_copysignl_lib="-lc"
-++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
-++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-++  (eval $ac_try) 2>&5
-++  ac_status=$?
-++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-++  (exit $ac_status); }; }
-++    then
-++       libgcc_cv_copysignl_lib="-lm"
-++    fi
-++    rm -f conftest.*
-++
-++fi
-++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
-++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
-++
-++case /${libgcc_cv_copysignl_lib}/ in
-++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
-++  *) LIBGCC_LIBM= ;;
-++esac
-+ 
-+ # Conditionalize the makefile for this target machine.
-+ tmake_file_=
-+Index: gcc-4.8.0/libgcc/configure.ac
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/configure.ac	2012-10-15 15:10:30.000000000 +0200
-++++ gcc-4.8.0/libgcc/configure.ac	2013-03-24 09:12:43.000000000 +0100
-+@@ -326,6 +326,27 @@
-+ fi
-+ AC_SUBST(set_have_cc_tls)
-+ 
-++# On powerpc libgcc_s references copysignl which is a libm function but
-++# glibc apparently also provides it via libc as opposed to uClibc where
-++# it lives in libm.
-++AC_CACHE_CHECK
-++  libgcc_cv_copysignl_lib,
-++    echo '#include <features.h>' > conftest.c
-++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
-++    libgcc_cv_copysignl_lib="-lc"
-++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
-++    then
-++       libgcc_cv_copysignl_lib="-lm"
-++    fi
-++    rm -f conftest.*
-++  ])
-++
-++case /${libgcc_cv_copysignl_lib}/ in
-++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
-++  *) LIBGCC_LIBM= ;;
-++esac
-++AC_SUBST(LIBGCC_LIBM)
-++
-+ # See if we have emulated thread-local storage.
-+ GCC_CHECK_EMUTLS
-+ set_use_emutls=
-diff --git a/package/gcc/4.9.3/100-uclibc-conf.patch b/package/gcc/4.9.3/100-uclibc-conf.patch
-new file mode 100644
-index 0000000..d56bf0a
---- /dev/null
-+++ b/package/gcc/4.9.3/100-uclibc-conf.patch
-@@ -0,0 +1,15 @@
-+Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
-+===================================================================
-+--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh	2009-04-09 17:00:19.000000000 +0200
-++++ gcc-4.8.0/contrib/regression/objs-gcc.sh	2013-03-23 17:39:04.000000000 +0100
-+@@ -106,6 +106,10 @@
-+  then
-+   make all-gdb all-dejagnu all-ld || exit 1
-+   make install-gdb install-dejagnu install-ld || exit 1
-++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-++ then
-++  make all-gdb all-dejagnu all-ld || exit 1
-++  make install-gdb install-dejagnu install-ld || exit 1
-+ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-+   make bootstrap || exit 1
-+   make install || exit 1
-diff --git a/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
-new file mode 100644
-index 0000000..b7094fe
---- /dev/null
-+++ b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
-@@ -0,0 +1,122 @@
-+http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
-+
-+On glibc the libc.so carries a copy of the math function copysignl() but
-+on uClibc math functions like copysignl() live in libm. Since libgcc_s
-+contains unresolved symbols, any attempt to link against libgcc_s
-+without explicitely specifying -lm fails, resulting in a broken
-+bootstrap of the compiler.
-+
-+Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+---
-+ libgcc/Makefile.in  |    4 +++-
-+ libgcc/configure    |   32 ++++++++++++++++++++++++++++++++
-+ libgcc/configure.ac |   21 +++++++++++++++++++++
-+ 3 files changed, 56 insertions(+), 1 deletion(-)
-+
-+Index: gcc-4.8.0/libgcc/Makefile.in
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/Makefile.in	2013-02-04 20:06:20.000000000 +0100
-++++ gcc-4.8.0/libgcc/Makefile.in	2013-03-24 09:12:43.000000000 +0100
-+@@ -41,6 +41,7 @@
-+ decimal_float = @decimal_float@
-+ enable_decimal_float = @enable_decimal_float@
-+ fixed_point = @fixed_point@
-++LIBGCC_LIBM = @LIBGCC_LIBM@
-+ 
-+ host_noncanonical = @host_noncanonical@
-+ target_noncanonical = @target_noncanonical@
-+@@ -927,9 +928,10 @@
-+ 		@multilib_dir@,$(MULTIDIR),$(subst \
-+ 		@shlib_objs@,$(objects) libgcc.a,$(subst \
-+ 		@shlib_base_name@,libgcc_s,$(subst \
-++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
-+ 		@shlib_map_file@,$(mapfile),$(subst \
-+ 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
-+-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
-++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
-+ 
-+ libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
-+ 	# @multilib_flags@ is still needed because this may use
-+Index: gcc-4.8.0/libgcc/configure
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/configure	2012-11-05 00:08:42.000000000 +0100
-++++ gcc-4.8.0/libgcc/configure	2013-03-24 09:12:43.000000000 +0100
-+@@ -564,6 +564,7 @@
-+ tmake_file
-+ sfp_machine_header
-+ set_use_emutls
-++LIBGCC_LIBM
-+ set_have_cc_tls
-+ vis_hide
-+ fixed_point
-+@@ -4481,6 +4482,37 @@
-+ 	fi
-+ fi
-+ 
-++# On powerpc libgcc_s references copysignl which is a libm function but
-++# glibc apparently also provides it via libc as opposed to uClibc where
-++# it lives in libm.
-++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
-++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
-++if test "${libgcc_cv_copysignl_lib+set}" = set; then
-++  echo $ECHO_N "(cached) $ECHO_C" >&6
-++else
-++
-++    echo '#include <features.h>' > conftest.c
-++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
-++    libgcc_cv_copysignl_lib="-lc"
-++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
-++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-++  (eval $ac_try) 2>&5
-++  ac_status=$?
-++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-++  (exit $ac_status); }; }
-++    then
-++       libgcc_cv_copysignl_lib="-lm"
-++    fi
-++    rm -f conftest.*
-++
-++fi
-++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
-++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
-++
-++case /${libgcc_cv_copysignl_lib}/ in
-++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
-++  *) LIBGCC_LIBM= ;;
-++esac
-+ 
-+ # Conditionalize the makefile for this target machine.
-+ tmake_file_=
-+Index: gcc-4.8.0/libgcc/configure.ac
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/configure.ac	2012-10-15 15:10:30.000000000 +0200
-++++ gcc-4.8.0/libgcc/configure.ac	2013-03-24 09:12:43.000000000 +0100
-+@@ -326,6 +326,27 @@
-+ fi
-+ AC_SUBST(set_have_cc_tls)
-+ 
-++# On powerpc libgcc_s references copysignl which is a libm function but
-++# glibc apparently also provides it via libc as opposed to uClibc where
-++# it lives in libm.
-++AC_CACHE_CHECK
-++  libgcc_cv_copysignl_lib,
-++    echo '#include <features.h>' > conftest.c
-++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
-++    libgcc_cv_copysignl_lib="-lc"
-++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
-++    then
-++       libgcc_cv_copysignl_lib="-lm"
-++    fi
-++    rm -f conftest.*
-++  ])
-++
-++case /${libgcc_cv_copysignl_lib}/ in
-++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
-++  *) LIBGCC_LIBM= ;;
-++esac
-++AC_SUBST(LIBGCC_LIBM)
-++
-+ # See if we have emulated thread-local storage.
-+ GCC_CHECK_EMUTLS
-+ set_use_emutls=
-diff --git a/package/gcc/4.9.3/111-pr65730.patch b/package/gcc/4.9.3/111-pr65730.patch
-new file mode 100644
-index 0000000..f195e30
---- /dev/null
-+++ b/package/gcc/4.9.3/111-pr65730.patch
-@@ -0,0 +1,37 @@
-+From b9a7775674d91c7af8043a83211ffeaa576327d7 Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Fri, 10 Apr 2015 17:46:30 +0300
-+Subject: [PATCH] Fix PR target/65730
-+
-+2015-05-20  Max Filippov  <jcmvbkbc@gmail.com>
-+gcc/
-+	* config/xtensa/xtensa.c (init_alignment_context): Replace MULT
-+	by BITS_PER_UNIT with ASHIFT by exact_log2 (BITS_PER_UNIT).
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223452
-+Changes to ChangeLog are dropped.
-+
-+ gcc/config/xtensa/xtensa.c | 5 +++--
-+ 1 file changed, 3 insertions(+), 2 deletions(-)
-+
-+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
-+index eb039ba..7296e36 100644
-+--- a/gcc/config/xtensa/xtensa.c
-++++ b/gcc/config/xtensa/xtensa.c
-+@@ -1461,8 +1461,9 @@ init_alignment_context (struct alignment_context *ac, rtx mem)
-+   if (ac->shift != NULL_RTX)
-+     {
-+       /* Shift is the byte count, but we need the bitcount.  */
-+-      ac->shift = expand_simple_binop (SImode, MULT, ac->shift,
-+-				       GEN_INT (BITS_PER_UNIT),
-++      gcc_assert (exact_log2 (BITS_PER_UNIT) >= 0);
-++      ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift,
-++				       GEN_INT (exact_log2 (BITS_PER_UNIT)),
-+ 				       NULL_RTX, 1, OPTAB_DIRECT);
-+       ac->modemask = expand_simple_binop (SImode, ASHIFT,
-+ 					  GEN_INT (GET_MODE_MASK (mode)),
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
-new file mode 100644
-index 0000000..c11ad35
---- /dev/null
-+++ b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
-@@ -0,0 +1,29 @@
-+From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001
-+From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
-+Date: Fri, 6 Nov 2015 14:27:23 +0100
-+Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit
-+
-+Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate
-+64-bit binaries by default.
-+
-+Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
-+---
-+ gcc/config.gcc | 2 +-
-+ 2 files changed, 4 insertions(+), 1 deletion(-)
-+
-+diff --git a/gcc/config.gcc b/gcc/config.gcc
-+index 4a7cbd2..9cc765e 100644
-+--- a/gcc/config.gcc
-++++ b/gcc/config.gcc
-+@@ -439,7 +439,7 @@ powerpc*-*-*)
-+ 	cpu_type=rs6000
-+ 	extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h"
-+ 	case x$with_cpu in
-+-	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500)
-++	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
-+ 		cpu_is_64bit=yes
-+ 		;;
-+ 	esac
-+-- 
-+2.6.2
-+
-diff --git a/package/gcc/4.9.3/130-pr43538.patch b/package/gcc/4.9.3/130-pr43538.patch
-new file mode 100644
-index 0000000..19e57bb
---- /dev/null
-+++ b/package/gcc/4.9.3/130-pr43538.patch
-@@ -0,0 +1,25 @@
-+From c037df1be41f8daf4d581d7ffa4ec8cfa640bccf Mon Sep 17 00:00:00 2001
-+From: glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>
-+Date: Fri, 25 Apr 2014 08:03:08 +0000
-+Subject: [PATCH] 2014-04-25  Marc Glisse  <marc.glisse@inria.fr>
-+
-+	PR target/43538
-+	* mt-gnu: Don't reset CXXFLAGS_FOR_TARGET.
-+
-+
-+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209784 138bc75d-0d04-0410-961f-82ee72b054a4
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+ config/mt-gnu    | 2 +-
-+ 1 file changed, 1 insertion(+), 1 deletion(-)
-+
-+diff --git a/config/mt-gnu b/config/mt-gnu
-+index 15bf417..5c696f5 100644
-+--- a/config/mt-gnu
-++++ b/config/mt-gnu
-+@@ -1 +1 @@
-+-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
-++CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE
-+-- 
-+2.1.4
-+
-diff --git a/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
-new file mode 100644
-index 0000000..55f3228
---- /dev/null
-+++ b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
-@@ -0,0 +1,37 @@
-+From 3c536954a67a883630f4a7513a27f02a892c3dcb Mon Sep 17 00:00:00 2001
-+From: Evgeniy Stepanov <eugeni.stepanov@gmail.com>
-+Date: Tue, 21 Oct 2014 21:08:13 +0000
-+Subject: [PATCH] [sanitizer] Fix build with _FILE_OFFSET_BITS=64.
-+
-+Sanitizer source is not affected by _FILE_OFFSET_BITS in general,
-+but this one file must be built with 32-bit off_t. More details in the code.
-+
-+git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@220328 91177308-0d34-0410-b5e6-96231b3b80d8
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+ lib/sanitizer_common/sanitizer_platform_limits_posix.cc | 8 ++++++++
-+ 1 file changed, 8 insertions(+)
-+
-+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
-+index bbc1108..fc09522 100644
-+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
-++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
-+@@ -13,7 +13,15 @@
-+ 
-+ #include "sanitizer_platform.h"
-+ #if SANITIZER_LINUX || SANITIZER_MAC
-++// Tests in this file assume that off_t-dependent data structures match the
-++// libc ABI. For example, struct dirent here is what readdir() function (as
-++// exported from libc) returns, and not the user-facing "dirent", which
-++// depends on _FILE_OFFSET_BITS setting.
-++// To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below.
-++#ifdef _FILE_OFFSET_BITS
-++#undef _FILE_OFFSET_BITS
-++#endif
-+ 
-+ #include "sanitizer_internal_defs.h"
-+ #include "sanitizer_platform_limits_posix.h"
-+ 
-+-- 
-+2.1.4
-+
-diff --git a/package/gcc/4.9.3/301-missing-execinfo_h.patch b/package/gcc/4.9.3/301-missing-execinfo_h.patch
-new file mode 100644
-index 0000000..00efda2
---- /dev/null
-+++ b/package/gcc/4.9.3/301-missing-execinfo_h.patch
-@@ -0,0 +1,13 @@
-+Index: gcc-4.8.0/boehm-gc/include/gc.h
-+===================================================================
-+--- gcc-4.8.0.orig/boehm-gc/include/gc.h	2007-04-23 23:10:09.000000000 +0200
-++++ gcc-4.8.0/boehm-gc/include/gc.h	2013-03-23 17:39:20.000000000 +0100
-+@@ -503,7 +503,7 @@
-+ #if defined(__linux__) || defined(__GLIBC__)
-+ # include <features.h>
-+ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
-+-     && !defined(__ia64__)
-++     && !defined(__ia64__) && !defined(__UCLIBC__)
-+ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
-+ #     define GC_HAVE_BUILTIN_BACKTRACE
-+ #   endif
-diff --git a/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
-new file mode 100644
-index 0000000..c8cb377
---- /dev/null
-+++ b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
-@@ -0,0 +1,30 @@
-+Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
-+===================================================================
-+--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h	2013-01-10 21:38:27.000000000 +0100
-++++ gcc-4.8.0/gcc/config/arm/linux-elf.h	2013-03-23 17:40:00.000000000 +0100
-+@@ -55,7 +55,7 @@
-+    %{shared:-lc} \
-+    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-+ 
-+-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
-++#define LIBGCC_SPEC "-lgcc"
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+ 
-+Index: gcc-4.8.0/libgcc/config/arm/t-linux
-+===================================================================
-+--- gcc-4.8.0.orig/libgcc/config/arm/t-linux	2012-03-22 16:14:46.000000000 +0100
-++++ gcc-4.8.0/libgcc/config/arm/t-linux	2013-03-23 17:40:54.000000000 +0100
-+@@ -1,6 +1,11 @@
-+ LIB1ASMSRC = arm/lib1funcs.S
-+ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
-+-	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3
-++	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
-++	_arm_addsubdf3 _arm_addsubsf3 \
-++	_arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
-++	_arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
-++	_arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
-++	_arm_fixsfsi _arm_fixunssfsi
-+ 
-+ # Just for these, we omit the frame pointer since it makes such a big
-+ # difference.
-diff --git a/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
-new file mode 100644
-index 0000000..37f8f2a
---- /dev/null
-+++ b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
-@@ -0,0 +1,13 @@
-+http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
-+
-+--- a/gcc/config/arm/linux-eabi.h
-++++ b/gcc/config/arm/linux-eabi.h
-+@@ -45,7 +45,7 @@
-+    The ARM10TDMI core is the default for armv5t, so set
-+    SUBTARGET_CPU_DEFAULT to achieve this.  */
-+ #undef  SUBTARGET_CPU_DEFAULT
-+-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
-++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
-+ 
-+ /* TARGET_BIG_ENDIAN_DEFAULT is set in
-+    config.gcc for big endian configurations.  */
-diff --git a/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
-new file mode 100644
-index 0000000..e116e2b
---- /dev/null
-+++ b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
-@@ -0,0 +1,169 @@
-+Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
-+
-+From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
-+From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
-+Date: Mon, 18 Jun 2012 20:18:13 +0200
-+Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
-+
-+Changelog
-+
-+2013-03-18  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
-+            David Holsgrove <david.holsgrove@xilinx.com>
-+
-+ * common/config/microblaze/microblaze-common.c: Remove
-+   TARGET_EXCEPT_UNWIND_INFO definition.
-+ * config/microblaze/microblaze-protos.h: Add
-+   microblaze_eh_return prototype.
-+ * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
-+   microblaze_expand_epilogue, microblaze_return_addr): Handle
-+   calls_eh_return
-+   (microblaze_eh_return): New function.
-+ * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
-+   EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
-+   ASM_PREFERRED_EH_DATA_FORMAT
-+ * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
-+
-+Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
-+Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
-+---
-+ gcc/common/config/microblaze/microblaze-common.c |  3 ---
-+ gcc/config/microblaze/microblaze-protos.h        |  1 +
-+ gcc/config/microblaze/microblaze.c               | 29 ++++++++++++++++++++----
-+ gcc/config/microblaze/microblaze.h               | 15 ++++++++++++
-+ gcc/config/microblaze/microblaze.md              | 11 +++++++++
-+ 5 files changed, 52 insertions(+), 7 deletions(-)
-+
-+diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
-+index 5835acc..85e6a53 100644
-+--- a/gcc/common/config/microblaze/microblaze-common.c
-++++ b/gcc/common/config/microblaze/microblaze-common.c
-+@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
-+ #undef  TARGET_OPTION_OPTIMIZATION_TABLE
-+ #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
-+ 
-+-#undef TARGET_EXCEPT_UNWIND_INFO
-+-#define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
-+-
-+ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
-+diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
-+index c30ec72..260f4e4 100644
-+--- a/gcc/config/microblaze/microblaze-protos.h
-++++ b/gcc/config/microblaze/microblaze-protos.h
-+@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
-+ extern int symbol_mentioned_p (rtx);
-+ extern int label_mentioned_p (rtx);
-+ extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
-++extern void microblaze_eh_return (rtx op0);
-+ #endif  /* RTX_CODE */
-+ 
-+ /* Declare functions in microblaze-c.c.  */
-+diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
-+index fe61fce..15166d3 100644
-+--- a/gcc/config/microblaze/microblaze.c
-++++ b/gcc/config/microblaze/microblaze.c
-+@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
-+   if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
-+     return 1;
-+ 
-++  if (crtl->calls_eh_return
-++      && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
-++    return 1;
-++  }
-++
-+   if (!crtl->is_leaf)
-+     {
-+       if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
-+@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
-+ 	return 1;
-+     }
-+ 
-++  if (crtl->calls_eh_return
-++      && (regno == EH_RETURN_DATA_REGNO (0)
-++          || regno == EH_RETURN_DATA_REGNO (1)))
-++    {
-++      return 1;
-++    }
-++
-+   return 0;
-+ }
-+ 
-+@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
-+       emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
-+     }
-+ 
-++  if (crtl->calls_eh_return)
-++    emit_insn (gen_addsi3 (stack_pointer_rtx,
-++                           stack_pointer_rtx,
-++                           gen_rtx_raw_REG (SImode,
-++                                            MB_EH_STACKADJ_REGNUM)));
-++
-+   emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
-+ 						    MB_ABI_SUB_RETURN_ADDR_REGNUM)));
-+ }
-+@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
-+   if (count != 0)
-+     return NULL_RTX;
-+ 
-+-  return gen_rtx_PLUS (Pmode,
-+-		       get_hard_reg_initial_val (Pmode,
-+-						 MB_ABI_SUB_RETURN_ADDR_REGNUM),
-+-		       GEN_INT (8));
-++  return get_hard_reg_initial_val (Pmode,
-++                                   MB_ABI_SUB_RETURN_ADDR_REGNUM);
-++}
-++
-++void microblaze_eh_return (rtx op0)
-++{
-++  emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
-+ }
-+ 
-+ /* Queue an .ident string in the queue of top-level asm statements.
-+diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
-+index 4072283..5e9f49c 100644
-+--- a/gcc/config/microblaze/microblaze.h
-++++ b/gcc/config/microblaze/microblaze.h
-+@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
-+ #define INCOMING_RETURN_ADDR_RTX  			\
-+   gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
-+ 
-++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC.  */
-++#define RETURN_ADDR_OFFSET (8)
-++
-++/* Describe how we implement __builtin_eh_return.  */
-++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
-++
-++#define MB_EH_STACKADJ_REGNUM  MB_ABI_INT_RETURN_VAL2_REGNUM
-++#define EH_RETURN_STACKADJ_RTX  gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
-++
-++/* Select a format to encode pointers in exception handling data.  CODE
-++   is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
-++   true if the symbol may be affected by dynamic relocations.  */
-++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
-++  ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
-++
-+ /* Use DWARF 2 debugging information by default.  */
-+ #define DWARF2_DEBUGGING_INFO
-+ #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-+diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
-+index ed6131a..dc2405f 100644
-+--- a/gcc/config/microblaze/microblaze.md
-++++ b/gcc/config/microblaze/microblaze.md
-+@@ -2327,4 +2327,15 @@
-+   (set_attr "mode"      "SI")
-+   (set_attr "length"    "4")])
-+ 
-++; This is used in compiling the unwind routines.
-++(define_expand "eh_return"
-++  [(use (match_operand 0 "general_operand" ""))]
-++  ""
-++  "
-++{
-++  microblaze_eh_return(operands[0]);
-++  DONE;
-++}")
-++
-+ (include "sync.md")
-++
-+-- 
-+1.8.3.2
-+
-diff --git a/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
-new file mode 100644
-index 0000000..d103af1
---- /dev/null
-+++ b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
-@@ -0,0 +1,255 @@
-+Allow C99-depending features of libstdc++ with uClibc
-+
-+The libstdc++ code is fairly restrictive on how it checks for C99
-+compatibility: it requires *complete* C99 support to enable certain
-+features. For example, uClibc provides a good number of C99 features,
-+but not C99 complex number support. For this reason, libstdc++
-+completely disables many the standard C++ methods that can in fact
-+work because uClibc provides the necessary functions.
-+
-+This patch is similar and highly inspired from
-+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in
-+a way that doesn't involve changing the configure.ac script, as
-+autoreconfiguring gcc is complicated. It simply relies on the fact
-+that uClibc defines the __UCLIBC__ definition.
-+
-+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-+[Gustavo: update for 4.9.3]
-+
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h
-+--- gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h	2015-06-27 06:46:04.420022179 -0300
-+@@ -70,7 +70,7 @@
-+     __builtin_va_list __args;
-+     __builtin_va_start(__args, __fmt);
-+ 
-+-#ifdef _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
-+ #else
-+     const int __ret = __builtin_vsprintf(__out, __fmt, __args);
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h
-+--- gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h	2015-06-27 06:46:04.465023743 -0300
-+@@ -88,7 +88,7 @@
-+     __builtin_va_list __args;
-+     __builtin_va_start(__args, __fmt);
-+ 
-+-#ifdef _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
-+ #else
-+     const int __ret = __builtin_vsprintf(__out, __fmt, __args);
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h
-+--- gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h	2015-05-28 13:27:46.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h	2015-06-27 06:49:04.741284648 -0300
-+@@ -2844,7 +2844,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99)
-++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))
-+ 
-+ #include <ext/string_conversions.h>
-+ 
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc
-+--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc	2015-06-27 06:46:04.466023777 -0300
-+@@ -572,7 +572,7 @@
-+     {
-+       const locale __loc = __io.getloc();
-+       const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
-+-#ifdef _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+       // First try a buffer perhaps big enough.
-+       int __cs_size = 64;
-+       char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc
-+--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc	2015-06-27 06:46:04.466023777 -0300
-+@@ -987,7 +987,7 @@
-+ 	char __fbuf[16];
-+ 	__num_base::_S_format_float(__io, __fbuf, __mod);
-+ 
-+-#ifdef _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 	// First try a buffer perhaps big enough (most probably sufficient
-+ 	// for non-ios_base::fixed outputs)
-+ 	int __cs_size = __max_digits * 3;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h	2015-06-27 06:46:04.466023777 -0300
-+@@ -56,7 +56,7 @@
-+ using std::floor;
-+ using std::fmod;
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ using std::fpclassify;
-+ using std::isfinite;
-+ using std::isinf;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h	2015-06-27 06:46:04.466023777 -0300
-+@@ -103,7 +103,7 @@
-+ using std::wmemset;
-+ using std::wcsftime;
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ using std::wcstold;
-+ using std::wcstoll;
-+ using std::wcstoull;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio gcc-4.9.3/libstdc++-v3/include/c_global/cstdio
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio	2014-01-23 18:17:15.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdio	2015-06-27 06:46:04.481024298 -0300
-+@@ -146,7 +146,7 @@
-+   using ::vsprintf;
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef snprintf
-+ #undef vfscanf
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib	2015-06-27 06:46:04.466023777 -0300
-+@@ -182,7 +182,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef _Exit
-+ #undef llabs
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar gcc-4.9.3/libstdc++-v3/include/c_global/cwchar
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_global/cwchar	2015-06-27 06:46:04.466023777 -0300
-+@@ -232,7 +232,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef wcstold
-+ #undef wcstoll
-+@@ -289,7 +289,7 @@
-+   using std::vwscanf;
-+ #endif
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+   using std::wcstold;
-+   using std::wcstoll;
-+   using std::wcstoull;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio gcc-4.9.3/libstdc++-v3/include/c_std/cstdio
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdio	2015-06-27 06:46:04.480024263 -0300
-+@@ -144,7 +144,7 @@
-+   using ::vsprintf;
-+ } // namespace std
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef snprintf
-+ #undef vfscanf
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib	2015-06-27 06:46:04.480024263 -0300
-+@@ -180,7 +180,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef _Exit
-+ #undef llabs
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar gcc-4.9.3/libstdc++-v3/include/c_std/cwchar
-+--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/c_std/cwchar	2015-06-27 06:46:04.480024263 -0300
-+@@ -228,7 +228,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ #undef wcstold
-+ #undef wcstoll
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h gcc-4.9.3/libstdc++-v3/include/ext/vstring.h
-+--- gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/ext/vstring.h	2015-06-27 06:46:04.480024263 -0300
-+@@ -2680,7 +2680,7 @@
-+ _GLIBCXX_END_NAMESPACE_VERSION
-+ } // namespace
-+ 
-+-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99))
-++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)))
-+ 
-+ #include <ext/string_conversions.h>
-+ 
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio gcc-4.9.3/libstdc++-v3/include/tr1/cstdio
-+--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdio	2015-06-27 06:46:04.480024263 -0300
-+@@ -33,7 +33,7 @@
-+ 
-+ #include <cstdio>
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ namespace std _GLIBCXX_VISIBILITY(default)
-+ {
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib
-+--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib	2015-06-27 06:46:04.480024263 -0300
-+@@ -35,7 +35,7 @@
-+ 
-+ #if _GLIBCXX_HOSTED
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ namespace std _GLIBCXX_VISIBILITY(default)
-+ {
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar gcc-4.9.3/libstdc++-v3/include/tr1/cwchar
-+--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/tr1/cwchar	2015-06-27 06:46:04.480024263 -0300
-+@@ -52,7 +52,7 @@
-+   using std::vwscanf;
-+ #endif
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+   using std::wcstold;
-+   using std::wcstoll;
-+   using std::wcstoull;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h
-+--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h	2015-06-27 06:46:04.481024298 -0300
-+@@ -33,7 +33,7 @@
-+ 
-+ #if _GLIBCXX_HOSTED
-+ 
-+-#if _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+ 
-+ using std::tr1::atoll;
-+ using std::tr1::strtoll;
-+diff -Nura gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc
-+--- gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc	2014-01-02 19:30:10.000000000 -0300
-++++ gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc	2015-06-27 06:46:04.481024298 -0300
-+@@ -788,7 +788,7 @@
-+ 				     int __n __attribute__ ((__unused__)), 
-+ 				     const char* __fmt, _Tp __s) const throw ()
-+     {
-+-#ifdef _GLIBCXX_USE_C99
-++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
-+       std::snprintf(__buf, __n, __fmt, __s);
-+ #else
-+       std::sprintf(__buf, __fmt, __s);
-diff --git a/package/gcc/4.9.3/860-cilk-wchar.patch b/package/gcc/4.9.3/860-cilk-wchar.patch
-new file mode 100644
-index 0000000..1837405
---- /dev/null
-+++ b/package/gcc/4.9.3/860-cilk-wchar.patch
-@@ -0,0 +1,56 @@
-+[PATCH] cilk: fix build without wchar
-+
-+When building against uClibc with wchar support disabled, WCHAR_MIN and
-+WCHAR_MAX are not defined leading to compilation errors.
-+
-+Fix it by only including the wchar code if available.
-+
-+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-+---
-+ libcilkrts/include/cilk/reducer_min_max.h |    8 ++++++++
-+ 1 file changed, 8 insertions(+)
-+
-+Index: host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
-+===================================================================
-+--- host-gcc-final-4.9.2.orig/libcilkrts/include/cilk/reducer_min_max.h
-++++ host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
-+@@ -3154,7 +3154,9 @@
-+ CILK_C_REDUCER_MAX_INSTANCE(char,               char,       CHAR_MIN)
-+ CILK_C_REDUCER_MAX_INSTANCE(unsigned char,      uchar,      0)
-+ CILK_C_REDUCER_MAX_INSTANCE(signed char,        schar,      SCHAR_MIN)
-++#ifdef WCHAR_MIN
-+ CILK_C_REDUCER_MAX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MIN)
-++#endif
-+ CILK_C_REDUCER_MAX_INSTANCE(short,              short,      SHRT_MIN)
-+ CILK_C_REDUCER_MAX_INSTANCE(unsigned short,     ushort,     0)
-+ CILK_C_REDUCER_MAX_INSTANCE(int,                int,        INT_MIN)
-+@@ -3306,7 +3308,9 @@
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(char,               char,       CHAR_MIN)
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char,      uchar,      0)
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char,        schar,      SCHAR_MIN)
-++#ifdef WCHAR_MIN
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MIN)
-++#endif
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(short,              short,      SHRT_MIN)
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short,     ushort,     0)
-+ CILK_C_REDUCER_MAX_INDEX_INSTANCE(int,                int,        INT_MIN)
-+@@ -3432,7 +3436,9 @@
-+ CILK_C_REDUCER_MIN_INSTANCE(char,               char,       CHAR_MAX)
-+ CILK_C_REDUCER_MIN_INSTANCE(unsigned char,      uchar,      CHAR_MAX)
-+ CILK_C_REDUCER_MIN_INSTANCE(signed char,        schar,      SCHAR_MAX)
-++#ifdef WCHAR_MAX
-+ CILK_C_REDUCER_MIN_INSTANCE(wchar_t,            wchar_t,    WCHAR_MAX)
-++#endif
-+ CILK_C_REDUCER_MIN_INSTANCE(short,              short,      SHRT_MAX)
-+ CILK_C_REDUCER_MIN_INSTANCE(unsigned short,     ushort,     USHRT_MAX)
-+ CILK_C_REDUCER_MIN_INSTANCE(int,                int,        INT_MAX)
-+@@ -3584,7 +3590,9 @@
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(char,               char,       CHAR_MAX)
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char,      uchar,      CHAR_MAX)
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char,        schar,      SCHAR_MAX)
-++#ifdef WCHAR_MAX
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MAX)
-++#endif
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(short,              short,      SHRT_MAX)
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short,     ushort,     USHRT_MAX)
-+ CILK_C_REDUCER_MIN_INDEX_INSTANCE(int,                int,        INT_MAX)
-diff --git a/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
-new file mode 100644
-index 0000000..aa1376c
---- /dev/null
-+++ b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
-@@ -0,0 +1,290 @@
-+From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Thu, 6 Aug 2015 01:16:02 +0300
-+Subject: [PATCH] xtensa: add -mauto-litpools option
-+
-+With support from assembler this option allows compiling huge functions,
-+where single literal pool at the beginning of a function may not be
-+reachable by L32R instructions at its end.
-+
-+Currently assembler --auto-litpools option cannot deal with literals
-+used from multiple locations separated by more than 256 KBytes of code.
-+Don't turn constants into literals, instead use MOVI instruction to load
-+them into registers and let the assembler turn them into literals as
-+necessary.
-+
-+2015-08-12  Max Filippov  <jcmvbkbc@gmail.com>
-+gcc/
-+	* config/xtensa/constraints.md (define_constraint "Y"): New
-+	constraint.
-+	* config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools.
-+	* config/xtensa/linux.h (ASM_SPEC): Likewise.
-+	* config/xtensa/predicates.md (move_operand): Match constants
-+	and symbols in the presence of TARGET_AUTO_LITPOOLS.
-+	* config/xtensa/xtensa.c (xtensa_valid_move): Don't allow
-+	immediate references to TLS data.
-+	(xtensa_emit_move_sequence): Don't force constants to memory in
-+	the presence of TARGET_AUTO_LITPOOLS.
-+	(print_operand): Add 'y' format, same as default, but capable of
-+	printing SF mode constants as well.
-+	* config/xtensa/xtensa.md (movsi_internal, movhi_internal)
-+	(movsf_internal): Add movi pattern that loads literal.
-+	(movsf, movdf): Don't force constants to memory in the presence
-+	of TARGET_AUTO_LITPOOLS.
-+	(movdf_internal): Add 'Y' constraint.
-+	* config/xtensa/xtensa.opt (mauto-litpools): New option.
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: r226828
-+Changes to ChangeLogs and documentation are dropped.
-+
-+ gcc/config/xtensa/constraints.md |  5 +++++
-+ gcc/config/xtensa/elf.h          |  4 +++-
-+ gcc/config/xtensa/linux.h        |  4 +++-
-+ gcc/config/xtensa/predicates.md  |  3 ++-
-+ gcc/config/xtensa/xtensa.c       | 19 ++++++++++++++++++-
-+ gcc/config/xtensa/xtensa.md      | 35 +++++++++++++++++++----------------
-+ gcc/config/xtensa/xtensa.opt     |  4 ++++
-+ 7 files changed, 54 insertions(+), 20 deletions(-)
-+
-+diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md
-+index 30f4c1f..773d4f9 100644
-+--- a/gcc/config/xtensa/constraints.md
-++++ b/gcc/config/xtensa/constraints.md
-+@@ -111,6 +111,11 @@
-+  (and (match_code "const_int")
-+       (match_test "xtensa_mask_immediate (ival)")))
-+ 
-++(define_constraint "Y"
-++ "A constant that can be used in relaxed MOVI instructions."
-++ (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
-++      (match_test "TARGET_AUTO_LITPOOLS")))
-++
-+ ;; Memory constraints.  Do not use define_memory_constraint here.  Doing so
-+ ;; causes reload to force some constants into the constant pool, but since
-+ ;; the Xtensa constant pool can only be accessed with L32R instructions, it
-+diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h
-+index e59bede..12056f7 100644
-+--- a/gcc/config/xtensa/elf.h
-++++ b/gcc/config/xtensa/elf.h
-+@@ -48,7 +48,9 @@ along with GCC; see the file COPYING3.  If not see
-+   %{mtarget-align:--target-align} \
-+   %{mno-target-align:--no-target-align} \
-+   %{mlongcalls:--longcalls} \
-+-  %{mno-longcalls:--no-longcalls}"
-++  %{mno-longcalls:--no-longcalls} \
-++  %{mauto-litpools:--auto-litpools} \
-++  %{mno-auto-litpools:--no-auto-litpools}"
-+ 
-+ #undef LIB_SPEC
-+ #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal"
-+diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h
-+index 675aacf..5b0243a 100644
-+--- a/gcc/config/xtensa/linux.h
-++++ b/gcc/config/xtensa/linux.h
-+@@ -42,7 +42,9 @@ along with GCC; see the file COPYING3.  If not see
-+   %{mtarget-align:--target-align} \
-+   %{mno-target-align:--no-target-align} \
-+   %{mlongcalls:--longcalls} \
-+-  %{mno-longcalls:--no-longcalls}"
-++  %{mno-longcalls:--no-longcalls} \
-++  %{mauto-litpools:--auto-litpools} \
-++  %{mno-auto-litpools:--no-auto-litpools}"
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+ 
-+diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md
-+index e02209e..d7dfa11 100644
-+--- a/gcc/config/xtensa/predicates.md
-++++ b/gcc/config/xtensa/predicates.md
-+@@ -142,7 +142,8 @@
-+ 	       (match_test "GET_MODE_CLASS (mode) == MODE_INT
-+ 			    && xtensa_simm12b (INTVAL (op))"))
-+ 	  (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
-+-	       (match_test "TARGET_CONST16 && CONSTANT_P (op)
-++	       (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS)
-++			    && CONSTANT_P (op)
-+ 			    && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0")))))
-+ 
-+ ;; Accept the floating point constant 1 in the appropriate mode.
-+diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
-+index eb039ba..206ff80 100644
-+--- a/gcc/config/xtensa/xtensa.c
-++++ b/gcc/config/xtensa/xtensa.c
-+@@ -501,6 +501,9 @@ xtensa_valid_move (machine_mode mode, rtx *operands)
-+     {
-+       int dst_regnum = xt_true_regnum (operands[0]);
-+ 
-++      if (xtensa_tls_referenced_p (operands[1]))
-++	return FALSE;
-++
-+       /* The stack pointer can only be assigned with a MOVSP opcode.  */
-+       if (dst_regnum == STACK_POINTER_REGNUM)
-+ 	return !TARGET_WINDOWED_ABI
-+@@ -1069,7 +1072,7 @@ xtensa_emit_move_sequence (rtx *operands, machine_mode mode)
-+ 	  return 1;
-+ 	}
-+ 
-+-      if (! TARGET_CONST16)
-++      if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16)
-+ 	{
-+ 	  src = force_const_mem (SImode, src);
-+ 	  operands[1] = src;
-+@@ -2449,6 +2452,20 @@ print_operand (FILE *file, rtx x, int letter)
-+ 	}
-+       break;
-+ 
-++    case 'y':
-++      if (GET_CODE (x) == CONST_DOUBLE &&
-++	  GET_MODE (x) == SFmode)
-++	{
-++	  REAL_VALUE_TYPE r;
-++	  long l;
-++	  REAL_VALUE_FROM_CONST_DOUBLE (r, x);
-++	  REAL_VALUE_TO_TARGET_SINGLE (r, l);
-++	  fprintf (file, "0x%08lx", l);
-++	  break;
-++	}
-++
-++      /* fall through */
-++
-+     default:
-+       if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
-+ 	fprintf (file, "%s", reg_names[xt_true_regnum (x)]);
-+diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
-+index 6d84384..0e673a3 100644
-+--- a/gcc/config/xtensa/xtensa.md
-++++ b/gcc/config/xtensa/xtensa.md
-+@@ -761,8 +761,8 @@
-+ })
-+ 
-+ (define_insn "movsi_internal"
-+-  [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A")
-+-	(match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))]
-++  [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A")
-++	(match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))]
-+   "xtensa_valid_move (SImode, operands)"
-+   "@
-+    movi.n\t%0, %x1
-+@@ -774,15 +774,16 @@
-+    mov\t%0, %1
-+    movsp\t%0, %1
-+    movi\t%0, %x1
-++   movi\t%0, %1
-+    const16\t%0, %t1\;const16\t%0, %b1
-+    %v1l32r\t%0, %1
-+    %v1l32i\t%0, %1
-+    %v0s32i\t%1, %0
-+    rsr\t%0, ACCLO
-+    wsr\t%1, ACCLO"
-+-  [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr")
-++  [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr")
-+    (set_attr "mode"	"SI")
-+-   (set_attr "length"	"2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")])
-++   (set_attr "length"	"2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")])
-+ 
-+ ;; 16-bit Integer moves
-+ 
-+@@ -796,21 +797,22 @@
-+ })
-+ 
-+ (define_insn "movhi_internal"
-+-  [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A")
-+-	(match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))]
-++  [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A")
-++	(match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))]
-+   "xtensa_valid_move (HImode, operands)"
-+   "@
-+    movi.n\t%0, %x1
-+    mov.n\t%0, %1
-+    mov\t%0, %1
-+    movi\t%0, %x1
-++   movi\t%0, %1
-+    %v1l16ui\t%0, %1
-+    %v0s16i\t%1, %0
-+    rsr\t%0, ACCLO
-+    wsr\t%1, ACCLO"
-+-  [(set_attr "type"	"move,move,move,move,load,store,rsr,wsr")
-++  [(set_attr "type"	"move,move,move,move,move,load,store,rsr,wsr")
-+    (set_attr "mode"	"HI")
-+-   (set_attr "length"	"2,2,3,3,3,3,3,3")])
-++   (set_attr "length"	"2,2,3,3,3,3,3,3,3")])
-+ 
-+ ;; 8-bit Integer moves
-+ 
-+@@ -881,7 +883,7 @@
-+ 	(match_operand:SF 1 "general_operand" ""))]
-+   ""
-+ {
-+-  if (!TARGET_CONST16 && CONSTANT_P (operands[1]))
-++  if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1]))
-+     operands[1] = force_const_mem (SFmode, operands[1]);
-+ 
-+   if ((!register_operand (operands[0], SFmode)
-+@@ -896,8 +898,8 @@
-+ })
-+ 
-+ (define_insn "movsf_internal"
-+-  [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U")
-+-	(match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))]
-++  [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U")
-++	(match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))]
-+   "((register_operand (operands[0], SFmode)
-+      || register_operand (operands[1], SFmode))
-+     && !(FP_REG_P (xt_true_regnum (operands[0]))
-+@@ -912,13 +914,14 @@
-+    mov\t%0, %1
-+    wfr\t%0, %1
-+    rfr\t%0, %1
-++   movi\t%0, %y1
-+    const16\t%0, %t1\;const16\t%0, %b1
-+    %v1l32r\t%0, %1
-+    %v1l32i\t%0, %1
-+    %v0s32i\t%1, %0"
-+-  [(set_attr "type"	"farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store")
-++  [(set_attr "type"	"farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store")
-+    (set_attr "mode"	"SF")
-+-   (set_attr "length"	"3,3,3,2,2,2,3,3,3,6,3,3,3")])
-++   (set_attr "length"	"3,3,3,2,2,2,3,3,3,3,6,3,3,3")])
-+ 
-+ (define_insn "*lsiu"
-+   [(set (match_operand:SF 0 "register_operand" "=f")
-+@@ -991,7 +994,7 @@
-+ 	(match_operand:DF 1 "general_operand" ""))]
-+   ""
-+ {
-+-  if (CONSTANT_P (operands[1]) && !TARGET_CONST16)
-++  if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS)
-+     operands[1] = force_const_mem (DFmode, operands[1]);
-+ 
-+   if (!register_operand (operands[0], DFmode)
-+@@ -1002,8 +1005,8 @@
-+ })
-+ 
-+ (define_insn_and_split "movdf_internal"
-+-  [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U")
-+-	(match_operand:DF 1 "move_operand" "r,iF,T,U,r"))]
-++  [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U")
-++	(match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))]
-+   "register_operand (operands[0], DFmode)
-+    || register_operand (operands[1], DFmode)"
-+   "#"
-+diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt
-+index 2fd6cee..21c6e96 100644
-+--- a/gcc/config/xtensa/xtensa.opt
-++++ b/gcc/config/xtensa/xtensa.opt
-+@@ -38,6 +38,10 @@ mtext-section-literals
-+ Target
-+ Intersperse literal pools with code in the text section
-+ 
-++mauto-litpools
-++Target Report Mask(AUTO_LITPOOLS)
-++Relax literals in assembler and place them automatically in the text section
-++
-+ mserialize-volatile
-+ Target Report Mask(SERIALIZE_VOLATILE)
-+ -mno-serialize-volatile	Do not serialize volatile memory references with MEMW instructions
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
-new file mode 100644
-index 0000000..abc7a08
---- /dev/null
-+++ b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
-@@ -0,0 +1,76 @@
-+From 05154174b369505238b759cf80d595d8cfc8c731 Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Mon, 10 Aug 2015 21:35:20 +0300
-+Subject: [PATCH 1/3] xtensa: reimplement register spilling
-+
-+Spilling windowed registers in userspace is much easier, more portable,
-+less error-prone and equally effective as in kernel. Now that register
-+spilling syscall is considered obsolete in the xtensa linux kernel
-+replace it with CALL12 followed by series of ENTRY in libgcc.
-+
-+2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
-+libgcc/
-+	* config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use
-+	CALL12 followed by series of ENTRY to spill windowed registers.
-+	(__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill
-+	instead of making linux spill syscall.
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: r226962
-+
-+ libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++-------
-+ 1 file changed, 23 insertions(+), 7 deletions(-)
-+
-+diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S
-+index 3ac8c1d..2e678af 100644
-+--- a/libgcc/config/xtensa/lib2funcs.S
-++++ b/libgcc/config/xtensa/lib2funcs.S
-+@@ -33,10 +33,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-+ 	.global	__xtensa_libgcc_window_spill
-+ 	.type	__xtensa_libgcc_window_spill,@function
-+ __xtensa_libgcc_window_spill:
-+-	entry	sp, 32
-+-	movi	a2, 0
-+-	syscall
-++	entry	sp, 48
-++#if XCHAL_NUM_AREGS > 16
-++	call12	1f
-++	retw
-++	.align	4
-++1:
-++	.rept	(XCHAL_NUM_AREGS - 24) / 12
-++	_entry	sp, 48
-++	mov	a12, a0
-++	.endr
-++	_entry	sp, 16
-++#if XCHAL_NUM_AREGS % 12 == 0
-++	mov	a4, a4
-++#elif XCHAL_NUM_AREGS % 12 == 4
-++	mov	a8, a8
-++#elif XCHAL_NUM_AREGS % 12 == 8
-++	mov	a12, a12
-++#endif
-++	retw
-++#else
-++	mov	a8, a8
-+ 	retw
-++#endif
-+ 	.size	__xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill
-+ 
-+ 
-+@@ -58,10 +77,7 @@ __xtensa_nonlocal_goto:
-+ 	entry	sp, 32
-+ 
-+ 	/* Flush registers.  */
-+-	mov	a5, a2
-+-	movi	a2, 0
-+-	syscall
-+-	mov	a2, a5
-++	call8	__xtensa_libgcc_window_spill
-+ 
-+ 	/* Because the save area for a0-a3 is stored one frame below
-+ 	   the one identified by a2, the only way to restore those
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
-new file mode 100644
-index 0000000..f23a5c0
---- /dev/null
-+++ b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
-@@ -0,0 +1,33 @@
-+From f66206679a0ad604f13673559f230160cd3d1189 Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Fri, 14 Aug 2015 02:45:02 +0300
-+Subject: [PATCH 2/3] xtensa: use unwind-dw2-fde-dip instead of unwind-dw2-fde
-+
-+This allows having exception cleanup code in binaries that don't
-+register their unwind tables.
-+
-+2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
-+libgcc/
-+	* config/xtensa/t-xtensa (LIB2ADDEH): Replace unwind-dw2-fde
-+	with unwind-dw2-fde-dip.
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: r226963
-+
-+ libgcc/config/xtensa/t-xtensa | 2 +-
-+ 1 file changed, 1 insertion(+), 1 deletion(-)
-+
-+diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa
-+index 27399e6..66d0eb3 100644
-+--- a/libgcc/config/xtensa/t-xtensa
-++++ b/libgcc/config/xtensa/t-xtensa
-+@@ -13,4 +13,4 @@ LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \
-+ LIB2ADD = $(srcdir)/config/xtensa/lib2funcs.S
-+ 
-+ LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \
-+-   $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
-++   $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
-new file mode 100644
-index 0000000..dc40513
---- /dev/null
-+++ b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
-@@ -0,0 +1,40 @@
-+From 15c7c4d39b317f0d902ef28fd43eca5c3369f891 Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Sat, 15 Aug 2015 05:12:11 +0300
-+Subject: [PATCH 3/3] xtensa: fix _Unwind_GetCFA
-+
-+Returning context->cfa in _Unwind_GetCFA makes CFA point one stack frame
-+higher than what was actually used by code at context->ra. This results
-+in invalid CFA value in signal frames and premature unwinding completion
-+in forced unwinding used by uClibc NPTL thread cancellation.
-+Returning context->sp from _Unwind_GetCFA makes all CFA values valid and
-+matching code that used them.
-+
-+2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
-+libgcc/
-+	* config/xtensa/unwind-dw2-xtensa.c (_Unwind_GetCFA): Return
-+	context->sp instead of context->cfa.
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: r226964
-+
-+ libgcc/config/xtensa/unwind-dw2-xtensa.c | 2 +-
-+ 1 file changed, 1 insertion(+), 1 deletion(-)
-+
-+diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c
-+index 35f7797..ef6b900 100644
-+--- a/libgcc/config/xtensa/unwind-dw2-xtensa.c
-++++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c
-+@@ -130,7 +130,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
-+ _Unwind_Word
-+ _Unwind_GetCFA (struct _Unwind_Context *context)
-+ {
-+-  return (_Unwind_Ptr) context->cfa;
-++  return (_Unwind_Ptr) context->sp;
-+ }
-+ 
-+ /* Overwrite the saved value for register INDEX in CONTEXT with VAL.  */
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
-new file mode 100644
-index 0000000..23db3d8
---- /dev/null
-+++ b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
-@@ -0,0 +1,174 @@
-+From 70c2cb98fb129b4766b5da0f945dc41fd568c77a Mon Sep 17 00:00:00 2001
-+From: Max Filippov <jcmvbkbc@gmail.com>
-+Date: Sat, 22 Aug 2015 08:44:26 +0300
-+Subject: [PATCH] xtensa: add uclinux support
-+
-+2015-10-03  Max Filippov  <jcmvbkbc@gmail.com>
-+gcc/
-+	* config.gcc (xtensa*-*-uclinux*): New configuration.
-+	* config/xtensa/uclinux.h: New file.
-+	* config/xtensa/uclinux.opt: New file.
-+
-+libgcc/
-+	* config.host (xtensa*-*-uclinux*): New configuration.
-+
-+Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-+---
-+Backported from: r228450
-+
-+ gcc/config.gcc                |  5 ++++
-+ gcc/config/xtensa/uclinux.h   | 69 +++++++++++++++++++++++++++++++++++++++++++
-+ gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++
-+ libgcc/config.host            |  5 ++++
-+ 4 files changed, 111 insertions(+)
-+ create mode 100644 gcc/config/xtensa/uclinux.h
-+ create mode 100644 gcc/config/xtensa/uclinux.opt
-+
-+diff --git a/gcc/config.gcc b/gcc/config.gcc
-+index c52f5a8..56797bd 100644
-+--- a/gcc/config.gcc
-++++ b/gcc/config.gcc
-+@@ -2995,6 +2995,11 @@ xtensa*-*-linux*)
-+ 	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
-+ 	tmake_file="${tmake_file} xtensa/t-xtensa"
-+ 	;;
-++xtensa*-*-uclinux*)
-++	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
-++	tmake_file="${tmake_file} xtensa/t-xtensa"
-++	extra_options="${extra_options} xtensa/uclinux.opt"
-++	;;
-+ am33_2.0-*-linux*)
-+ 	tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
-+ 	gas=yes gnu_ld=yes
-+diff --git a/gcc/config/xtensa/uclinux.h b/gcc/config/xtensa/uclinux.h
-+new file mode 100644
-+index 0000000..4606020
-+--- /dev/null
-++++ b/gcc/config/xtensa/uclinux.h
-+@@ -0,0 +1,69 @@
-++/* Xtensa uClinux configuration.
-++   Derived from the configuration for GCC for Intel i386 running Linux.
-++   Copyright (C) 2001-2015 Free Software Foundation, Inc.
-++
-++This file is part of GCC.
-++
-++GCC is free software; you can redistribute it and/or modify it under
-++the terms of the GNU General Public License as published by the Free
-++Software Foundation; either version 3, or (at your option) any later
-++version.
-++
-++GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-++WARRANTY; without even the implied warranty of MERCHANTABILITY or
-++FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-++for more details.
-++
-++You should have received a copy of the GNU General Public License
-++along with GCC; see the file COPYING3.  If not see
-++<http://www.gnu.org/licenses/>.  */
-++
-++#undef TARGET_OS_CPP_BUILTINS
-++#define TARGET_OS_CPP_BUILTINS()				\
-++  do								\
-++    {								\
-++      GNU_USER_TARGET_OS_CPP_BUILTINS ();			\
-++      builtin_define ("__uClinux__");				\
-++    }								\
-++  while (0)
-++
-++#undef SUBTARGET_CPP_SPEC
-++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
-++
-++#undef SIZE_TYPE
-++#define SIZE_TYPE "unsigned int"
-++
-++#undef PTRDIFF_TYPE
-++#define PTRDIFF_TYPE "int"
-++
-++#undef WCHAR_TYPE
-++#define WCHAR_TYPE "long int"
-++
-++#undef WCHAR_TYPE_SIZE
-++#define WCHAR_TYPE_SIZE 32
-++
-++#undef ASM_SPEC
-++#define ASM_SPEC \
-++ "%{mtext-section-literals:--text-section-literals} \
-++  %{mno-text-section-literals:--no-text-section-literals} \
-++  %{mtarget-align:--target-align} \
-++  %{mno-target-align:--no-target-align} \
-++  %{mlongcalls:--longcalls} \
-++  %{mno-longcalls:--no-longcalls} \
-++  %{mauto-litpools:--auto-litpools} \
-++  %{mno-auto-litpools:--no-auto-litpools}"
-++
-++#undef LINK_SPEC
-++#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}"
-++
-++#undef LOCAL_LABEL_PREFIX
-++#define LOCAL_LABEL_PREFIX	"."
-++
-++/* Always enable "-fpic" for Xtensa Linux.  */
-++#define XTENSA_ALWAYS_PIC 1
-++
-++#undef TARGET_LIBC_HAS_FUNCTION
-++#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
-++
-++#undef DBX_REGISTER_NUMBER
-++
-+diff --git a/gcc/config/xtensa/uclinux.opt b/gcc/config/xtensa/uclinux.opt
-+new file mode 100644
-+index 0000000..95ef777
-+--- /dev/null
-++++ b/gcc/config/xtensa/uclinux.opt
-+@@ -0,0 +1,32 @@
-++; Xtensa uClinux options.
-++
-++; Copyright (C) 2015 Free Software Foundation, Inc.
-++;
-++; This file is part of GCC.
-++;
-++; GCC is free software; you can redistribute it and/or modify it under
-++; the terms of the GNU General Public License as published by the Free
-++; Software Foundation; either version 3, or (at your option) any later
-++; version.
-++;
-++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-++; WARRANTY; without even the implied warranty of MERCHANTABILITY or
-++; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-++; for more details.
-++;
-++; You should have received a copy of the GNU General Public License
-++; along with GCC; see the file COPYING3.  If not see
-++; <http://www.gnu.org/licenses/>.
-++
-++; See the GCC internals manual (options.texi) for a description of
-++; this file's format.
-++
-++; Please try to keep this file in ASCII collating order.
-++
-++elf2flt
-++Driver
-++
-++elf2flt=
-++Driver JoinedOrMissing
-++
-++; This comment is to ensure we retain the blank line above.
-+diff --git a/libgcc/config.host b/libgcc/config.host
-+index 2c64756..2ee92c1 100644
-+--- a/libgcc/config.host
-++++ b/libgcc/config.host
-+@@ -1295,6 +1295,11 @@ xtensa*-*-linux*)
-+ 	tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
-+ 	md_unwind_header=xtensa/linux-unwind.h
-+ 	;;
-++xtensa*-*-uclinux*)
-++	tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
-++	md_unwind_header=xtensa/linux-unwind.h
-++	extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o"
-++	;;
-+ am33_2.0-*-linux*)
-+ 	# Don't need crtbeginT.o from *-*-linux* default.
-+ 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
-+-- 
-+1.8.1.4
-+
-diff --git a/package/gcc/4.9.3/880-nios2_legitimize_address.patch b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
-new file mode 100644
-index 0000000..4623f29
---- /dev/null
-+++ b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
-@@ -0,0 +1,49 @@
-+From b0ea54f3f995754881e0ea6651133aa7b58eeaa2 Mon Sep 17 00:00:00 2001
-+From: cltang <cltang@138bc75d-0d04-0410-961f-82ee72b054a4>
-+Date: Tue, 22 Sep 2015 12:23:20 +0000
-+Subject: [PATCH] nios2_legitimize_address 2015-09-22  Chung-Lin Tang 
-+ <cltang@codesourcery.com>
-+
-+	Backport from mainline
-+	2015-09-22  Chung-Lin Tang  <cltang@codesourcery.com>
-+
-+	* config/nios2/nios2.c (nios2_legitimize_address): When handling
-+	'reg + reloc' cases, allow first operand to be non-REG, and use
-+	force_reg() to enforce address pattern.
-+
-+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@228013 138bc75d-0d04-0410-961f-82ee72b054a4
-+
-+Fixes:
-+http://autobuild.buildroot.net/results/901/90186d1fe134b804c0101554296b1235dc0ccbb0
-+
-+[backported to 4.9.3]
-+Signed-off-by: Romain Naour <romain.naour@gmail.com>
-+---
-+ gcc/config/nios2/nios2.c | 4 ++--
-+ 1 file changed, 2 insertions(+), 2 deletions(-)
-+
-+diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
-+index 047b615..41dd6f9 100644
-+--- a/gcc/config/nios2/nios2.c
-++++ b/gcc/config/nios2/nios2.c
-+@@ -1786,15 +1786,15 @@ nios2_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
-+ 
-+      Which will be output as '%tls_le(var+48)(r23)' in assembly.  */
-+   if (GET_CODE (x) == PLUS
-+-      && GET_CODE (XEXP (x, 0)) == REG
-+       && GET_CODE (XEXP (x, 1)) == CONST)
-+     {
-+-      rtx unspec, offset, reg = XEXP (x, 0);
-++      rtx unspec, offset;
-+       split_const (XEXP (x, 1), &unspec, &offset);
-+       if (GET_CODE (unspec) == UNSPEC
-+ 	  && !nios2_large_offset_p (XINT (unspec, 1))
-+ 	  && offset != const0_rtx)
-+ 	{
-++	  rtx reg = force_reg (Pmode, XEXP (x, 0));
-+ 	  unspec = copy_rtx (unspec);
-+ 	  XVECEXP (unspec, 0, 0)
-+ 	    = plus_constant (Pmode, XVECEXP (unspec, 0, 0), INTVAL (offset));
-+-- 
-+2.5.0
-+
-diff --git a/package/gcc/4.9.3/890-fix-m68k-compile.patch b/package/gcc/4.9.3/890-fix-m68k-compile.patch
-new file mode 100644
-index 0000000..140977b
---- /dev/null
-+++ b/package/gcc/4.9.3/890-fix-m68k-compile.patch
-@@ -0,0 +1,15 @@
-+remove unused header, which breaks the toolchain building
-+
-+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-+
-+diff -Nur gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.3/libgcc/config/m68k/linux-atomic.c
-+--- gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c	2014-01-02 23:25:22.000000000 +0100
-++++ gcc-4.9.3/libgcc/config/m68k/linux-atomic.c	2016-03-18 22:24:40.000000000 +0100
-+@@ -33,7 +33,6 @@
-+    using the kernel helper defined below.  There is no support for
-+    64-bit operations yet.  */
-+ 
-+-#include <asm/unistd.h>
-+ #include <stdbool.h>
-+ 
-+ #ifndef __NR_atomic_cmpxchg_32
-diff --git a/package/gcc/4.9.3/900-musl-support.patch b/package/gcc/4.9.3/900-musl-support.patch
-new file mode 100644
-index 0000000..90f64de
---- /dev/null
-+++ b/package/gcc/4.9.3/900-musl-support.patch
-@@ -0,0 +1,640 @@
-+Add musl support to gcc
-+
-+This patch comes from the musl-cross project at
-+https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
-+
-+ * the config.sub modifications have been removed, because Buildroot
-+   already overwrites all config.sub with a more recent config.sub
-+   that has musl support.
-+
-+ * change to ensure that a dummy dynamic linker path
-+   MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
-+   otherwise building gcc for architectures not supported by musl was
-+   causing build failure. Bug reported upstream at
-+   https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
-+
-+ * change the USE_PT_GNU_EH_FRAME logic to keep the existing gcc logic
-+   and only add the musl one as an addition, not as a replacement. Not
-+   doing this breaks C++ exception handling with glibc, because
-+   USE_PT_GNU_EH_FRAME doesn't get defined due to the configure script
-+   not testing dl_iterate_phdr() on any system except Solaris.
-+
-+[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
-+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-+---
-+
-+Index: b/fixincludes/mkfixinc.sh
-+===================================================================
-+--- a/fixincludes/mkfixinc.sh
-++++ b/fixincludes/mkfixinc.sh
-+@@ -19,7 +19,8 @@
-+     powerpc-*-eabi*    | \
-+     powerpc-*-rtems*   | \
-+     powerpcle-*-eabisim* | \
-+-    powerpcle-*-eabi* )
-++    powerpcle-*-eabi* | \
-++    *-musl* )
-+ 	#  IF there is no include fixing,
-+ 	#  THEN create a no-op fixer and exit
-+ 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
-+Index: b/gcc/config.gcc
-+===================================================================
-+--- a/gcc/config.gcc
-++++ b/gcc/config.gcc
-+@@ -594,7 +594,7 @@
-+ esac
-+ 
-+ # Common C libraries.
-+-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
-++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
-+ 
-+ # 32-bit x86 processors supported by --with-arch=.  Each processor
-+ # MUST be separated by exactly one space.
-+@@ -719,6 +719,9 @@
-+     *-*-*uclibc*)
-+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
-+       ;;
-++    *-*-*musl*)
-++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
-++      ;;
-+     *)
-+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
-+       ;;
-+@@ -2322,6 +2325,10 @@
-+ 	    powerpc*-*-linux*paired*)
-+ 		tm_file="${tm_file} rs6000/750cl.h" ;;
-+ 	esac
-++        case ${target} in
-++            *-linux*-musl*)
-++                enable_secureplt=yes ;;
-++        esac
-+ 	if test x${enable_secureplt} = xyes; then
-+ 		tm_file="rs6000/secureplt.h ${tm_file}"
-+ 	fi
-+Index: b/gcc/config/aarch64/aarch64-linux.h
-+===================================================================
-+--- a/gcc/config/aarch64/aarch64-linux.h
-++++ b/gcc/config/aarch64/aarch64-linux.h
-+@@ -22,6 +22,8 @@
-+ #define GCC_AARCH64_LINUX_H
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
-+ 
-+ #define CPP_SPEC "%{pthread:-D_REENTRANT}"
-+ 
-+Index: b/gcc/config/arm/linux-eabi.h
-+===================================================================
-+--- a/gcc/config/arm/linux-eabi.h
-++++ b/gcc/config/arm/linux-eabi.h
-+@@ -77,6 +77,23 @@
-+     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-+     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
-+ 
-++/* For ARM musl currently supports four dynamic linkers:
-++   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
-++   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
-++   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
-++   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
-++   musl does not support the legacy OABI mode.
-++   All the dynamic linkers live in /lib.
-++   We default to soft-float, EL. */
-++#undef  MUSL_DYNAMIC_LINKER
-++#if TARGET_BIG_ENDIAN_DEFAULT
-++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
-++#endif
-++#define MUSL_DYNAMIC_LINKER \
-++  "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
-++
-+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-+    use the GNU/Linux version, not the generic BPABI version.  */
-+ #undef  LINK_SPEC
-+Index: b/gcc/config/i386/linux.h
-+===================================================================
-+--- a/gcc/config/i386/linux.h
-++++ b/gcc/config/i386/linux.h
-+@@ -21,3 +21,5 @@
-+ 
-+ #define GNU_USER_LINK_EMULATION "elf_i386"
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
-+Index: b/gcc/config/i386/linux64.h
-+===================================================================
-+--- a/gcc/config/i386/linux64.h
-++++ b/gcc/config/i386/linux64.h
-+@@ -30,3 +30,10 @@
-+ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
-+ #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
-+ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
-++
-++#undef MUSL_DYNAMIC_LINKER32
-++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
-++#undef MUSL_DYNAMIC_LINKER64
-++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
-++#undef MUSL_DYNAMIC_LINKERX32
-++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
-+Index: b/gcc/config/linux.h
-+===================================================================
-+--- a/gcc/config/linux.h
-++++ b/gcc/config/linux.h
-+@@ -32,10 +32,12 @@
-+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
-+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
-+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
-++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
-+ #else
-+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
-+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
-+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
-++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
-+ #endif
-+ 
-+ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
-+@@ -53,18 +55,21 @@
-+    uClibc or Bionic is the default C library and whether
-+    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
-+ 
-+-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
-+-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
-++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
-++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
-+ 
-+ #if DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
-+ #elif DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
-+ #elif DEFAULT_LIBC == LIBC_BIONIC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
-+-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
-++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif /* DEFAULT_LIBC */
-+@@ -82,23 +87,103 @@
-+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
-+ #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
-+ 
-++/* Musl dynamic linker paths must be defined on a per-architecture
-++   basis, for each architecture supported by Musl. However, in order
-++   to let other architectures continue to build with other C
-++   libraries, we provide a dummy definition of the following defines. */
-++#define MUSL_DYNAMIC_LINKER "invalid"
-++#define MUSL_DYNAMIC_LINKER32 "invalid"
-++#define MUSL_DYNAMIC_LINKER64 "invalid"
-++#define MUSL_DYNAMIC_LINKERX32 "invalid"
-++
-+ #define GNU_USER_DYNAMIC_LINKER						\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
-+-			 BIONIC_DYNAMIC_LINKER)
-++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
-+ #define GNU_USER_DYNAMIC_LINKER32					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
-+-			 BIONIC_DYNAMIC_LINKER32)
-++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
-+ #define GNU_USER_DYNAMIC_LINKER64					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
-+-			 BIONIC_DYNAMIC_LINKER64)
-++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
-+ #define GNU_USER_DYNAMIC_LINKERX32					\
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
-+-			 BIONIC_DYNAMIC_LINKERX32)
-++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
-+ 
-+ /* Whether we have Bionic libc runtime */
-+ #undef TARGET_HAS_BIONIC
-+ #define TARGET_HAS_BIONIC (OPTION_BIONIC)
-+ 
-++/* musl avoids problematic includes by rearranging the include directories.
-++ * Unfortunately, this is mostly duplicated from cppdefault.c */
-++#if DEFAULT_LIBC == LIBC_MUSL
-++#define INCLUDE_DEFAULTS_MUSL_GPP			\
-++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
-++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
-++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
-++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
-++
-++#ifdef LOCAL_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
-++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
-++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_LOCAL
-++#endif
-++
-++#ifdef PREFIX_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
-++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_PREFIX
-++#endif
-++
-++#ifdef CROSS_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
-++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_CROSS
-++#endif
-++
-++#ifdef TOOL_INCLUDE_DIR
-++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
-++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_TOOL
-++#endif
-++
-++#ifdef NATIVE_SYSTEM_HEADER_DIR
-++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
-++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
-++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
-++#else
-++#define INCLUDE_DEFAULTS_MUSL_NATIVE
-++#endif
-++
-++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
-++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
-++# define INCLUDE_DEFAULTS_MUSL_LOCAL
-++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
-++# define INCLUDE_DEFAULTS_MUSL_NATIVE
-++#else
-++# undef INCLUDE_DEFAULTS_MUSL_CROSS
-++# define INCLUDE_DEFAULTS_MUSL_CROSS
-++#endif
-++
-++#undef INCLUDE_DEFAULTS
-++#define INCLUDE_DEFAULTS				\
-++  {							\
-++    INCLUDE_DEFAULTS_MUSL_GPP				\
-++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
-++    INCLUDE_DEFAULTS_MUSL_CROSS				\
-++    INCLUDE_DEFAULTS_MUSL_TOOL				\
-++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
-++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
-++    { 0, 0, 0, 0, 0, 0 }				\
-++  }
-++#endif
-++
-+ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
-+ /* This is a *uclinux* target.  We don't define below macros to normal linux
-+    versions, because doing so would require *uclinux* targets to include
-+Index: b/gcc/config/linux.opt
-+===================================================================
-+--- a/gcc/config/linux.opt
-++++ b/gcc/config/linux.opt
-+@@ -30,3 +30,7 @@
-+ muclibc
-+ Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
-+ Use uClibc C library
-++
-++mmusl
-++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
-++Use musl C library
-+Index: b/gcc/config/microblaze/linux.h
-+===================================================================
-+--- a/gcc/config/microblaze/linux.h
-++++ b/gcc/config/microblaze/linux.h
-+@@ -25,7 +25,23 @@
-+ #undef TLS_NEEDS_GOT
-+ #define TLS_NEEDS_GOT 1
-+ 
-+-#define DYNAMIC_LINKER "/lib/ld.so.1"
-++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
-++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-++#endif
-++
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
-++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-++
-++#if DEFAULT_LIBC == LIBC_MUSL
-++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
-++#else
-++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
-++#endif
-++
-++
-+ #undef  SUBTARGET_EXTRA_SPECS
-+ #define SUBTARGET_EXTRA_SPECS \
-+   { "dynamic_linker", DYNAMIC_LINKER }
-+Index: b/gcc/config/rs6000/linux64.h
-+===================================================================
-+--- a/gcc/config/rs6000/linux64.h
-++++ b/gcc/config/rs6000/linux64.h
-+@@ -375,17 +375,23 @@
-+ #endif
-+ #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
-+ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
-++#undef MUSL_DYNAMIC_LINKER32
-++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
-++#undef MUSL_DYNAMIC_LINKER64
-++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
-+ #if DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
-+ #elif DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif
-+ #define GNU_USER_DYNAMIC_LINKER32 \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
-+ #define GNU_USER_DYNAMIC_LINKER64 \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
-+ 
-+ #undef  DEFAULT_ASM_ENDIAN
-+ #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
-+Index: b/gcc/config/rs6000/secureplt.h
-+===================================================================
-+--- a/gcc/config/rs6000/secureplt.h
-++++ b/gcc/config/rs6000/secureplt.h
-+@@ -18,3 +18,4 @@
-+ <http://www.gnu.org/licenses/>.  */
-+ 
-+ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
-++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
-+Index: b/gcc/config/rs6000/sysv4.h
-+===================================================================
-+--- a/gcc/config/rs6000/sysv4.h
-++++ b/gcc/config/rs6000/sysv4.h
-+@@ -537,6 +537,9 @@
-+ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
-+ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
-+ #endif
-++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
-++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
-++#endif
-+ 
-+ /* Pass -G xxx to the compiler.  */
-+ #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
-+@@ -585,7 +588,8 @@
-+ 
-+ /* Override the default target of the linker.  */
-+ #define	LINK_TARGET_SPEC \
-+-  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
-++  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
-++  "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
-+ 
-+ /* Any specific OS flags.  */
-+ #define LINK_OS_SPEC "\
-+@@ -763,15 +767,18 @@
-+ 
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
-+ #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
-+ #if DEFAULT_LIBC == LIBC_UCLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
-++#elif DEFAULT_LIBC == LIBC_MUSL
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
-+ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
-+-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
-++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
-+ #else
-+ #error "Unsupported DEFAULT_LIBC"
-+ #endif
-+ #define GNU_USER_DYNAMIC_LINKER \
-+-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
-++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
-+ 
-+ #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-+   %{rdynamic:-export-dynamic} \
-+@@ -894,6 +901,7 @@
-+   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
-+   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
-+   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
-++  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
-+   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
-+   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
-+   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
-+Index: b/gcc/config/sh/linux.h
-+===================================================================
-+--- a/gcc/config/sh/linux.h
-++++ b/gcc/config/sh/linux.h
-+@@ -43,7 +43,15 @@
-+ 
-+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+ 
-++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
-++#define MUSL_DYNAMIC_LINKER_E "eb"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E
-++#endif
-++
-+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
-+ 
-+ #undef SUBTARGET_LINK_EMUL_SUFFIX
-+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
-+Index: b/gcc/configure
-+===================================================================
-+--- a/gcc/configure
-++++ b/gcc/configure
-+@@ -27449,6 +27453,9 @@
-+       gcc_cv_target_dl_iterate_phdr=no
-+     fi
-+     ;;
-++  *-linux-musl*)
-++    gcc_cv_target_dl_iterate_phdr=yes
-++    ;;
-+ esac
-+ 
-+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
-+Index: b/gcc/configure.ac
-+===================================================================
-+--- a/gcc/configure.ac
-++++ b/gcc/configure.ac
-+@@ -5108,6 +5112,9 @@
-+       gcc_cv_target_dl_iterate_phdr=no
-+     fi
-+     ;;
-++  *-linux-musl*)
-++    gcc_cv_target_dl_iterate_phdr=yes
-++    ;;
-+ esac
-+ GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
-+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
-+Index: b/gcc/ginclude/stddef.h
-+===================================================================
-+--- a/gcc/ginclude/stddef.h
-++++ b/gcc/ginclude/stddef.h
-+@@ -181,6 +181,7 @@
-+ #ifndef _GCC_SIZE_T
-+ #ifndef _SIZET_
-+ #ifndef __size_t
-++#ifndef __DEFINED_size_t /* musl */
-+ #define __size_t__	/* BeOS */
-+ #define __SIZE_T__	/* Cray Unicos/Mk */
-+ #define _SIZE_T
-+@@ -197,6 +198,7 @@
-+ #define ___int_size_t_h
-+ #define _GCC_SIZE_T
-+ #define _SIZET_
-++#define __DEFINED_size_t /* musl */
-+ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
-+   || defined(__FreeBSD_kernel__)
-+ /* __size_t is a typedef on FreeBSD 5, must not trash it. */
-+@@ -214,6 +216,7 @@
-+ typedef long ssize_t;
-+ #endif /* __BEOS__ */
-+ #endif /* !(defined (__GNUG__) && defined (size_t)) */
-++#endif /* __DEFINED_size_t */
-+ #endif /* __size_t */
-+ #endif /* _SIZET_ */
-+ #endif /* _GCC_SIZE_T */
-+Index: b/libgcc/unwind-dw2-fde-dip.c
-+===================================================================
-+--- a/libgcc/unwind-dw2-fde-dip.c
-++++ b/libgcc/unwind-dw2-fde-dip.c
-+@@ -73,6 +73,13 @@
-+     && defined(TARGET_DL_ITERATE_PHDR) \
-+     && defined(__sun__) && defined(__svr4__)
-+ # define USE_PT_GNU_EH_FRAME
-++ #endif
-++
-++/* For musl libc, TARGET_DL_ITERATE_PHDR gets defined by the configure
-++   script. */
-++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR)	\
-++  && defined(TARGET_DL_ITERATE_PHDR)
-++# define USE_PT_GNU_EH_FRAME
-+ #endif
-+ 
-+ #if defined(USE_PT_GNU_EH_FRAME)
-+Index: b/libgomp/config/posix/time.c
-+===================================================================
-+--- a/libgomp/config/posix/time.c
-++++ b/libgomp/config/posix/time.c
-+@@ -28,6 +28,8 @@
-+    The following implementation uses the most simple POSIX routines.
-+    If present, POSIX 4 clocks should be used instead.  */
-+ 
-++#define _POSIX_C_SOURCE 199309L /* for clocks */
-++
-+ #include "libgomp.h"
-+ #include <unistd.h>
-+ #if TIME_WITH_SYS_TIME
-+Index: b/libitm/config/arm/hwcap.cc
-+===================================================================
-+--- a/libitm/config/arm/hwcap.cc
-++++ b/libitm/config/arm/hwcap.cc
-+@@ -40,7 +40,11 @@
-+ 
-+ #ifdef __linux__
-+ #include <unistd.h>
-++#ifdef __GLIBC__
-+ #include <sys/fcntl.h>
-++#else
-++#include <fcntl.h>
-++#endif
-+ #include <elf.h>
-+ 
-+ static void __attribute__((constructor))
-+Index: b/libitm/config/linux/x86/tls.h
-+===================================================================
-+--- a/libitm/config/linux/x86/tls.h
-++++ b/libitm/config/linux/x86/tls.h
-+@@ -25,16 +25,19 @@
-+ #ifndef LIBITM_X86_TLS_H
-+ #define LIBITM_X86_TLS_H 1
-+ 
-+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-++#if defined(__GLIBC_PREREQ)
-++#if __GLIBC_PREREQ(2, 10)
-+ /* Use slots in the TCB head rather than __thread lookups.
-+    GLIBC has reserved words 10 through 13 for TM.  */
-+ #define HAVE_ARCH_GTM_THREAD 1
-+ #define HAVE_ARCH_GTM_THREAD_DISP 1
-+ #endif
-++#endif
-+ 
-+ #include "config/generic/tls.h"
-+ 
-+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
-++#if defined(__GLIBC_PREREQ)
-++#if __GLIBC_PREREQ(2, 10)
-+ namespace GTM HIDDEN {
-+ 
-+ #ifdef __x86_64__
-+@@ -101,5 +104,6 @@
-+ 
-+ } // namespace GTM
-+ #endif /* >= GLIBC 2.10 */
-++#endif
-+ 
-+ #endif // LIBITM_X86_TLS_H
-+Index: b/libstdc++-v3/configure.host
-+===================================================================
-+--- a/libstdc++-v3/configure.host
-++++ b/libstdc++-v3/configure.host
-+@@ -264,6 +264,13 @@
-+     os_include_dir="os/bsd/freebsd"
-+     ;;
-+   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
-++    # check for musl by target
-++    case "${host_os}" in
-++      *-musl*)
-++        os_include_dir="os/generic"
-++        ;;
-++      *)
-++
-+     if [ "$uclibc" = "yes" ]; then
-+       os_include_dir="os/uclibc"
-+     elif [ "$bionic" = "yes" ]; then
-+@@ -272,6 +279,9 @@
-+       os_include_dir="os/gnu-linux"
-+     fi
-+     ;;
-++
-++    esac
-++    ;;
-+   hpux*)
-+     os_include_dir="os/hpux"
-+     ;;
-+Index: b/gcc/config/mips/linux64.h
-+===================================================================
-+--- a/gcc/config/mips/linux64.h
-++++ b/gcc/config/mips/linux64.h
-+@@ -41,4 +41,4 @@
-+ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
-+ #define GNU_USER_DYNAMIC_LINKERN32 \
-+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
-+-			 BIONIC_DYNAMIC_LINKERN32)
-++			 BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
-+Index: b/gcc/config/mips/linux.h
-+===================================================================
-+--- a/gcc/config/mips/linux.h
-++++ b/gcc/config/mips/linux.h
-+@@ -23,3 +23,11 @@
-+ #undef UCLIBC_DYNAMIC_LINKER
-+ #define UCLIBC_DYNAMIC_LINKER \
-+   "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
-++
-++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
-++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
-++#else
-++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
-++#endif
-++#undef MUSL_DYNAMIC_LINKER
-++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
-diff --git a/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
-new file mode 100644
-index 0000000..df5372b
---- /dev/null
-+++ b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
-@@ -0,0 +1,12 @@
-+Upstream status: In progress
-+
-+--- a/libgcc/config/nios2/linux-atomic.c
-++++ b/libgcc/config/nios2/linux-atomic.c
-+@@ -20,7 +20,6 @@
-+ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-+ <http://www.gnu.org/licenses/>.  */
-+ 
-+-#include <asm/unistd.h>
-+ #define EFAULT  14
-+ #define EBUSY   16
-+ #define ENOSYS  38
-diff --git a/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
-new file mode 100644
-index 0000000..670cf8d
---- /dev/null
-+++ b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
-@@ -0,0 +1,14 @@
-+disable split-stack for non-thread builds
-+
-+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-+
-+diff -Nur gcc-4.9.3.orig/libgcc/config/t-stack gcc-4.9.3/libgcc/config/t-stack
-+--- gcc-4.9.3.orig/libgcc/config/t-stack	2010-10-01 21:31:49.000000000 +0200
-++++ gcc-4.9.3/libgcc/config/t-stack	2016-03-07 01:34:32.000000000 +0100
-+@@ -1,4 +1,6 @@
-+ # Makefile fragment to provide generic support for -fsplit-stack.
-+ # This should be used in config.host for any host which supports
-+ # -fsplit-stack.
-++ifeq ($(enable_threads),yes)
-+ LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
-++endif
-diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
-index d10798b..db0473e 100644
---- a/package/gcc/Config.in.host
-+++ b/package/gcc/Config.in.host
-@@ -36,6 +36,32 @@ choice
- 		depends on BR2_arc
- 		select BR2_TOOLCHAIN_GCC_AT_LEAST_6
- 
-+        config BR2_GCC_VERSION_4_9_1
-+                bool "gcc 4.9.1"
-+                # Broken or unsupported architectures
-+                depends on !BR2_arc
-+                # Broken or unsupported ARM cores
-+                depends on !BR2_cortex_a17
-+                # Unsupported for MIPS R6 
-+                depends on !BR2_mips_32r6 && !BR2_mips_64r6
-+                # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
-+                select BR2_GCC_NEEDS_MPC
-+                select BR2_GCC_SUPPORTS_GRAPHITE
-+                select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-+
-+        config BR2_GCC_VERSION_4_9_3
-+                bool "gcc 4.9.3"
-+                # Broken or unsupported architectures
-+                depends on !BR2_arc
-+                # Broken or unsupported ARM cores
-+                depends on !BR2_cortex_a17
-+                # Unsupported for MIPS R6 
-+                depends on !BR2_mips_32r6 && !BR2_mips_64r6
-+                # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
-+                select BR2_GCC_NEEDS_MPC
-+                select BR2_GCC_SUPPORTS_GRAPHITE
-+                select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-+
- 	config BR2_GCC_VERSION_4_9_X
- 		bool "gcc 4.9.x"
- 		# Broken or unsupported architectures
-@@ -95,6 +121,8 @@ config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
- config BR2_GCC_VERSION
- 	string
- 	default "4.8.5"     if BR2_GCC_VERSION_4_8_X
-+	default "4.9.1"     if BR2_GCC_VERSION_4_9_1
-+	default "4.9.3"     if BR2_GCC_VERSION_4_9_3
- 	default "4.9.4"     if BR2_GCC_VERSION_4_9_X
- 	default "5.4.0"     if BR2_GCC_VERSION_5_X
- 	default "6.2.0"     if BR2_GCC_VERSION_6_X
-diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
-index e5d96f4..1b53e1b 100644
---- a/package/gcc/gcc.hash
-+++ b/package/gcc/gcc.hash
-@@ -4,6 +4,10 @@ sha512  78696b287d46aacd6f150920da376ea32f58ad9f0dafd2d3b7fa6dbdd8dd7afe659108d1
- sha512  dfcb737073191e628231031a3571ec77ee760a59377630f4a6e4fdfa66f9ddad39fde47e3f0f227eb43cdf90e0d34cde5abdc9ac892c1e111a911062a66c9189  gcc-4.7.4.tar.bz2
- # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.5/sha512.sum
- sha512  47fdfeca0c0a624cdec9c4ae47137d056c918d5c386d4b96985bb3c8172aba377cb66cbcc30e80832fd244a7d98f562c20198056915c70cfef0977545073a8ea  gcc-4.8.5.tar.bz2
-+# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.1/sha512.sum
-+sha512	8598106a4b7c03bb4d6e29fa1bfa9ee6b6390d1f1bca86c1ccd27aed830ae1d126daa50c4041016cbfa76090dd66c51f1ce06958b8ccd6c3be51eae875125593  gcc-4.9.1.tar.bz2
-+# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.3/sha512.sum
-+sha512  9ac57377a6975fc7adac704ec81355262b9f537def6955576753b87715470a20ee6a2a3144a79cc8fcba3443f7b44c7337d79d704b522d053f54f79aa6b442df  gcc-4.9.3.tar.bz2
- # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.4/sha512.sum
- sha512  93abb78e16277454f41a8e9810f41f66c0fdffdc539a762ff6b67d3037f78db971378683fd2ebf707d1d51c059fad2161fe42d110c330027f40214b7db0f3efe  gcc-4.9.4.tar.bz2
- # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.4.0/sha512.sum
-diff --git a/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
-new file mode 100644
-index 0000000..da2f49d
---- /dev/null
-+++ b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
-@@ -0,0 +1,174 @@
-+From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
-+Modified for eglibc.
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
-+EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
-+SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
-+
-+CVE-2014-7817:
-+
-+The function wordexp() fails to properly handle the WRDE_NOCMD
-+flag when processing arithmetic inputs in the form of "$((... ``))"
-+where "..." can be anything valid. The backticks in the arithmetic
-+epxression are evaluated by in a shell even if WRDE_NOCMD forbade
-+command substitution. This allows an attacker to attempt to pass
-+dangerous commands via constructs of the above form, and bypass
-+the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
-+in parse_arith(). The patch also hardens parse_backticks() and 
-+parse_comm() to check for WRDE_NOCMD flag and return an error instead
-+of ever running a shell.
-+
-+We expand the testsuite and add 3 new regression tests of roughtly
-+the same form but with a couple of nested levels. 
-+
-+On top of the 3 new tests we add fork validation to the WRDE_NOCMD
-+testing. If any forks are detected during the execution of a wordexp()
-+call with WRDE_NOCMD, the test is marked as failed. This is slightly
-+heuristic since vfork might be used, but it provides a higher level
-+of assurance that no shells were executed as part of command substitution
-+with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
-+libdl, instead we use the public implementation namespace function
-+__register_atfork (already part of the public ABI for libpthread).
-+
-+Tested on x86_64 with no regressions.
-+
-+2014-10-27  Carlos O'Donell  <carlos@redhat.com>
-+
-+	* wordexp-test.c (__dso_handle): Add prototype.
-+	(__register_atfork): Likewise.
-+	(__app_register_atfork): New function.
-+	(registered_forks): New global.
-+	(register_fork): New function.
-+	(test_case): Add 3 new tests for WRDE_CMDSUB.
-+	(main): Call __app_register_atfork.
-+	(testit): If WRDE_NOCMD set registered_forks to zero, run test, and
-+	if fork count is non-zero fail the test.
-+	* posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
-+	is set and parsing '`'. 
-+	(parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
-+	(parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
-+	parsing '`'.
-+
-+diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
-+index 4957006..5ce2a1b 100644
-+--- a/libc/posix/wordexp-test.c
-++++ b/libc/posix/wordexp-test.c
-+@@ -27,6 +27,25 @@
-+ 
-+ #define IFS " \n\t"
-+ 
-++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
-++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
-++
-++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
-++{
-++  return __register_atfork (prepare, parent, child,
-++			    &__dso_handle == NULL ? NULL : __dso_handle);
-++}
-++
-++/* Number of forks seen.  */
-++static int registered_forks;
-++
-++/* For each fork increment the fork count.  */
-++static void
-++register_fork (void)
-++{
-++  registered_forks++;
-++}
-++
-+ struct test_case_struct
-+ {
-+   int retval;
-+@@ -206,6 +225,12 @@ struct test_case_struct
-+     { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
-+     { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
-+     { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
-++    /* Test for CVE-2014-7817. We test 3 combinations of command
-++       substitution inside an arithmetic expression to make sure that
-++       no commands are executed and error is returned.  */
-++    { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
-++    { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
-++    { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
-+ 
-+     { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
-+   };
-+@@ -258,6 +283,15 @@ main (int argc, char *argv[])
-+ 	  return -1;
-+     }
-+ 
-++  /* If we are not allowed to do command substitution, we install
-++     fork handlers to verify that no forks happened.  No forks should
-++     happen at all if command substitution is disabled.  */
-++  if (__app_register_atfork (register_fork, NULL, NULL) != 0)
-++    {
-++      printf ("Failed to register fork handler.\n");
-++      return -1;
-++    }
-++
-+   for (test = 0; test_case[test].retval != -1; test++)
-+     if (testit (&test_case[test]))
-+       ++fail;
-+@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
-+ 
-+   printf ("Test %d (%s): ", ++tests, tc->words);
-+ 
-++  if (tc->flags & WRDE_NOCMD)
-++    registered_forks = 0;
-++
-+   if (tc->flags & WRDE_APPEND)
-+     {
-+       /* initial wordexp() call, to be appended to */
-+@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
-+     }
-+   retval = wordexp (tc->words, &we, tc->flags);
-+ 
-++  if ((tc->flags & WRDE_NOCMD)
-++      && (registered_forks > 0))
-++    {
-++      printf ("FAILED fork called for WRDE_NOCMD\n");
-++      return 1;
-++    }
-++
-+   if (tc->flags & WRDE_DOOFFS)
-+       start_offs = sav_we.we_offs;
-+ 
-+diff --git a/posix/wordexp.c b/posix/wordexp.c
-+index b6b65dd..d6a158f 100644
-+--- a/libc/posix/wordexp.c
-++++ b/libc/posix/wordexp.c
-+@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
-+ 	  break;
-+ 
-+ 	case '`':
-++	   if (flags & WRDE_NOCMD)
-++	     {
-++	       free (expr);
-++	       return WRDE_NOCMD;
-++	     }
-++
-+ 	  (*offset)++;
-+ 	  error = parse_backtick (&expr, &expr_length, &expr_maxlen,
-+ 				  words, offset, flags, NULL, NULL, NULL);
-+@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
-+   size_t comm_maxlen;
-+   char *comm = w_newword (&comm_length, &comm_maxlen);
-+ 
-++  /* Do nothing if command substitution should not succeed.  */
-++  if (flags & WRDE_NOCMD)
-++    return WRDE_CMDSUB;
-++
-+   for (; words[*offset]; ++(*offset))
-+     {
-+       switch (words[*offset])
-+@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
-+       switch (words[*offset])
-+ 	{
-+ 	case '`':
-++	  if (flags & WRDE_NOCMD)
-++	    return WRDE_NOCMD;
-++
-+ 	  /* Go -- give the script to the shell */
-+ 	  error = exec_comm (comm, word, word_length, max_length, flags,
-+ 			     pwordexp, ifs, ifs_white);
-diff --git a/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
-new file mode 100644
-index 0000000..4f426f2
---- /dev/null
-+++ b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
-@@ -0,0 +1,33 @@
-+Backport upstream patch (28d708c44bc47b56f6551ff285f78edcf61c208a) to accept
-+make-4.0 or newer.
-+We patch both configure and configure.in files so if we ever have to run
-+autoreconf in the glibc source, then the fix will be propagated properly.
-+
-+Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
-+
-+Index: glibc-2.18-svnr23787/libc/configure
-+===================================================================
-+--- glibc-2.18-svnr23787.orig/libc/configure
-++++ glibc-2.18-svnr23787/libc/configure
-+@@ -4772,7 +4772,7 @@ $as_echo_n "checking version of $MAKE...
-+   ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
-+   case $ac_prog_version in
-+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-+-    3.79* | 3.[89]*)
-++    3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
-+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-+ 
-+Index: glibc-2.18-svnr23787/libc/configure.in
-+===================================================================
-+--- glibc-2.18-svnr23787.orig/libc/configure.in
-++++ glibc-2.18-svnr23787/libc/configure.in
-+@@ -989,7 +989,7 @@ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}g
-+   critic_missing="$critic_missing gcc")
-+ AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
-+   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
-+-  [3.79* | 3.[89]*], critic_missing="$critic_missing make")
-++  [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
-+ 
-+ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
-+   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
-diff --git a/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
-new file mode 100644
-index 0000000..f447dcd
---- /dev/null
-+++ b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
-@@ -0,0 +1,141 @@
-+Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
-+See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c	2015-01-08 16:05:53.918823240 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm1364.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -220,7 +220,8 @@
-+ 	  ++rp2;							      \
-+ 									      \
-+ 	uint32_t res;							      \
-+-	if (__builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-++	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = DB_TO_UCS4[ch + rp2->idx],			      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm932.c	2015-01-08 16:05:53.910818967 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm932.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -73,11 +73,12 @@
-+ 	  }								      \
-+ 									      \
-+ 	ch = (ch * 0x100) + inptr[1];					      \
-++	/* ch was less than 0xfd.  */					      \
-++	assert (ch < 0xfd00);						      \
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-+-	    || __builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm932db_to_ucs4[ch + rp2->idx],		      \
-+ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm933.c	2015-01-08 16:05:53.917822706 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm933.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm933db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm935.c	2015-01-08 16:05:53.921824843 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm935.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm935db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm937.c	2015-01-08 16:05:53.915821638 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm937.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm937db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm939.c	2015-01-08 16:05:53.917822706 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm939.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm939db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm943.c	2015-01-08 16:05:53.918823240 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm943.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -74,11 +74,12 @@
-+ 	  }								      \
-+ 									      \
-+ 	ch = (ch * 0x100) + inptr[1];					      \
-++	/* ch was less than 0xfd.  */					      \
-++	assert (ch < 0xfd00);						      \
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-+-	    || __builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm943db_to_ucs4[ch + rp2->idx],		      \
-+ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
-+--- eglibc-2.19.orig/libc/iconvdata/Makefile	2015-01-08 16:05:53.903815227 -0300
-++++ eglibc-2.19/libc/iconvdata/Makefile	2015-01-08 16:06:02.782555677 -0300
-+@@ -303,6 +303,7 @@
-+ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
-+ 			 $(addprefix $(objpfx),$(modules.so)) \
-+ 			 $(common-objdir)/iconv/iconv_prog TESTS
-++	iconv_modules="$(modules)" \
-+ 	$(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
-+ 
-+ $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
-+--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:05:53.894810420 -0300
-++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:06:02.782555677 -0300
-+@@ -188,6 +188,24 @@
-+ 
-+ done < TESTS2
-+ 
-++# Check for crashes in decoders.
-++printf '\016\377\377\377\377\377\377\377' > $temp1
-++for from in $iconv_modules ; do
-++    echo $ac_n "test decoder $from $ac_c"
-++    PROG=`eval echo $ICONV`
-++    if $PROG < $temp1 >/dev/null 2>&1 ; then
-++	: # fall through
-++    else
-++	status=$?
-++	if test $status -gt 1 ; then
-++	    echo "/FAILED"
-++	    failed=1
-++	    continue
-++	fi
-++    fi
-++    echo "OK"
-++done
-++
-+ exit $failed
-+ # Local Variables:
-+ #  mode:shell-script
-diff --git a/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
-new file mode 100644
-index 0000000..c7aa12c
---- /dev/null
-+++ b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
-@@ -0,0 +1,20 @@
-+Fix CVE-2014-9402 - denial of service in getnetbyname function.
-+Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
-+See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
-+--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:35.024977879 -0300
-++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:42.543992357 -0300
-+@@ -398,8 +398,8 @@
-+ 
-+ 	case BYNAME:
-+ 	  {
-+-	    char **ap = result->n_aliases++;
-+-	    while (*ap != NULL)
-++	    char **ap;
-++	    for (ap = result->n_aliases; *ap != NULL; ++ap)
-+ 	      {
-+ 		/* Check each alias name for being of the forms:
-+ 		   4.3.2.1.in-addr.arpa		= net 1.2.3.4
-diff --git a/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
-new file mode 100644
-index 0000000..a0da626
---- /dev/null
-+++ b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
-@@ -0,0 +1,88 @@
-+Fix CVE-2015-1472 - heap buffer overflow in wscanf
-+Backport from upstream:
-+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
-+See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
-+index aece3f2..8a2eb9e 100644
-+--- a/libc/stdio-common/tst-sscanf.c
-++++ b/libc/stdio-common/tst-sscanf.c
-+@@ -233,5 +233,38 @@ main (void)
-+ 	}
-+     }
-+ 
-++  /* BZ #16618
-++     The test will segfault during SSCANF if the buffer overflow
-++     is not fixed.  The size of `s` is such that it forces the use
-++     of malloc internally and this triggers the incorrect computation.
-++     Thus the value for SIZE is arbitrariy high enough that malloc
-++     is used.  */
-++  {
-++#define SIZE 131072
-++    CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
-++    if (s == NULL)
-++      abort ();
-++    for (size_t i = 0; i < SIZE; i++)
-++      s[i] = L('0');
-++    s[SIZE] = L('\0');
-++    int i = 42;
-++    /* Scan multi-digit zero into `i`.  */
-++    if (SSCANF (s, L("%d"), &i) != 1)
-++      {
-++	printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
-++	result = 1;
-++      }
-++    if (i != 0)
-++      {
-++	printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
-++	result = 1;
-++      }
-++    free (s);
-++    if (result != 1)
-++      printf ("PASS: bug16618: Did not crash.\n");
-++#undef SIZE
-++  }
-++
-++
-+   return result;
-+ }
-+diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
-+index cd129a8..0e204e7 100644
-+--- a/libc/stdio-common/vfscanf.c
-++++ b/libc/stdio-common/vfscanf.c
-+@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
-+       if (__glibc_unlikely (wpsize == wpmax))				      \
-+ 	{								    \
-+ 	  CHAR_T *old = wp;						    \
-+-	  size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax			    \
-+-			    ? UCHAR_MAX + 1 : 2 * wpmax);		    \
-+-	  if (use_malloc || !__libc_use_alloca (newsize))		    \
-++	  bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
-++	  size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax);		    \
-++	  size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX;	    \
-++	  if (!__libc_use_alloca (newsize))				    \
-+ 	    {								    \
-+ 	      wp = realloc (use_malloc ? wp : NULL, newsize);		    \
-+ 	      if (wp == NULL)						    \
-+@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
-+ 		}							    \
-+ 	      if (! use_malloc)						    \
-+ 		MEMCPY (wp, old, wpsize);				    \
-+-	      wpmax = newsize;						    \
-++	      wpmax = wpneed;						    \
-+ 	      use_malloc = true;					    \
-+ 	    }								    \
-+ 	  else								    \
-+ 	    {								    \
-+ 	      size_t s = wpmax * sizeof (CHAR_T);			    \
-+-	      wp = (CHAR_T *) extend_alloca (wp, s,			    \
-+-					     newsize * sizeof (CHAR_T));    \
-++	      wp = (CHAR_T *) extend_alloca (wp, s, newsize);		    \
-+ 	      wpmax = s / sizeof (CHAR_T);				    \
-+ 	      if (old != NULL)						    \
-+ 		MEMCPY (wp, old, wpsize);				    \
-+-- 
-+1.9.4
-+
-diff --git a/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
-new file mode 100644
-index 0000000..da2f49d
---- /dev/null
-+++ b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
-@@ -0,0 +1,174 @@
-+From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
-+Modified for eglibc.
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
-+EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
-+SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
-+
-+CVE-2014-7817:
-+
-+The function wordexp() fails to properly handle the WRDE_NOCMD
-+flag when processing arithmetic inputs in the form of "$((... ``))"
-+where "..." can be anything valid. The backticks in the arithmetic
-+epxression are evaluated by in a shell even if WRDE_NOCMD forbade
-+command substitution. This allows an attacker to attempt to pass
-+dangerous commands via constructs of the above form, and bypass
-+the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
-+in parse_arith(). The patch also hardens parse_backticks() and 
-+parse_comm() to check for WRDE_NOCMD flag and return an error instead
-+of ever running a shell.
-+
-+We expand the testsuite and add 3 new regression tests of roughtly
-+the same form but with a couple of nested levels. 
-+
-+On top of the 3 new tests we add fork validation to the WRDE_NOCMD
-+testing. If any forks are detected during the execution of a wordexp()
-+call with WRDE_NOCMD, the test is marked as failed. This is slightly
-+heuristic since vfork might be used, but it provides a higher level
-+of assurance that no shells were executed as part of command substitution
-+with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
-+libdl, instead we use the public implementation namespace function
-+__register_atfork (already part of the public ABI for libpthread).
-+
-+Tested on x86_64 with no regressions.
-+
-+2014-10-27  Carlos O'Donell  <carlos@redhat.com>
-+
-+	* wordexp-test.c (__dso_handle): Add prototype.
-+	(__register_atfork): Likewise.
-+	(__app_register_atfork): New function.
-+	(registered_forks): New global.
-+	(register_fork): New function.
-+	(test_case): Add 3 new tests for WRDE_CMDSUB.
-+	(main): Call __app_register_atfork.
-+	(testit): If WRDE_NOCMD set registered_forks to zero, run test, and
-+	if fork count is non-zero fail the test.
-+	* posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
-+	is set and parsing '`'. 
-+	(parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
-+	(parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
-+	parsing '`'.
-+
-+diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
-+index 4957006..5ce2a1b 100644
-+--- a/libc/posix/wordexp-test.c
-++++ b/libc/posix/wordexp-test.c
-+@@ -27,6 +27,25 @@
-+ 
-+ #define IFS " \n\t"
-+ 
-++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
-++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
-++
-++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
-++{
-++  return __register_atfork (prepare, parent, child,
-++			    &__dso_handle == NULL ? NULL : __dso_handle);
-++}
-++
-++/* Number of forks seen.  */
-++static int registered_forks;
-++
-++/* For each fork increment the fork count.  */
-++static void
-++register_fork (void)
-++{
-++  registered_forks++;
-++}
-++
-+ struct test_case_struct
-+ {
-+   int retval;
-+@@ -206,6 +225,12 @@ struct test_case_struct
-+     { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
-+     { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
-+     { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
-++    /* Test for CVE-2014-7817. We test 3 combinations of command
-++       substitution inside an arithmetic expression to make sure that
-++       no commands are executed and error is returned.  */
-++    { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
-++    { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
-++    { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
-+ 
-+     { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
-+   };
-+@@ -258,6 +283,15 @@ main (int argc, char *argv[])
-+ 	  return -1;
-+     }
-+ 
-++  /* If we are not allowed to do command substitution, we install
-++     fork handlers to verify that no forks happened.  No forks should
-++     happen at all if command substitution is disabled.  */
-++  if (__app_register_atfork (register_fork, NULL, NULL) != 0)
-++    {
-++      printf ("Failed to register fork handler.\n");
-++      return -1;
-++    }
-++
-+   for (test = 0; test_case[test].retval != -1; test++)
-+     if (testit (&test_case[test]))
-+       ++fail;
-+@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
-+ 
-+   printf ("Test %d (%s): ", ++tests, tc->words);
-+ 
-++  if (tc->flags & WRDE_NOCMD)
-++    registered_forks = 0;
-++
-+   if (tc->flags & WRDE_APPEND)
-+     {
-+       /* initial wordexp() call, to be appended to */
-+@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
-+     }
-+   retval = wordexp (tc->words, &we, tc->flags);
-+ 
-++  if ((tc->flags & WRDE_NOCMD)
-++      && (registered_forks > 0))
-++    {
-++      printf ("FAILED fork called for WRDE_NOCMD\n");
-++      return 1;
-++    }
-++
-+   if (tc->flags & WRDE_DOOFFS)
-+       start_offs = sav_we.we_offs;
-+ 
-+diff --git a/posix/wordexp.c b/posix/wordexp.c
-+index b6b65dd..d6a158f 100644
-+--- a/libc/posix/wordexp.c
-++++ b/libc/posix/wordexp.c
-+@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
-+ 	  break;
-+ 
-+ 	case '`':
-++	   if (flags & WRDE_NOCMD)
-++	     {
-++	       free (expr);
-++	       return WRDE_NOCMD;
-++	     }
-++
-+ 	  (*offset)++;
-+ 	  error = parse_backtick (&expr, &expr_length, &expr_maxlen,
-+ 				  words, offset, flags, NULL, NULL, NULL);
-+@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
-+   size_t comm_maxlen;
-+   char *comm = w_newword (&comm_length, &comm_maxlen);
-+ 
-++  /* Do nothing if command substitution should not succeed.  */
-++  if (flags & WRDE_NOCMD)
-++    return WRDE_CMDSUB;
-++
-+   for (; words[*offset]; ++(*offset))
-+     {
-+       switch (words[*offset])
-+@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
-+       switch (words[*offset])
-+ 	{
-+ 	case '`':
-++	  if (flags & WRDE_NOCMD)
-++	    return WRDE_NOCMD;
-++
-+ 	  /* Go -- give the script to the shell */
-+ 	  error = exec_comm (comm, word, word_length, max_length, flags,
-+ 			     pwordexp, ifs, ifs_white);
-diff --git a/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
-new file mode 100644
-index 0000000..f447dcd
---- /dev/null
-+++ b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
-@@ -0,0 +1,141 @@
-+Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
-+See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c	2015-01-08 16:05:53.918823240 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm1364.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -220,7 +220,8 @@
-+ 	  ++rp2;							      \
-+ 									      \
-+ 	uint32_t res;							      \
-+-	if (__builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-++	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = DB_TO_UCS4[ch + rp2->idx],			      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm932.c	2015-01-08 16:05:53.910818967 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm932.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -73,11 +73,12 @@
-+ 	  }								      \
-+ 									      \
-+ 	ch = (ch * 0x100) + inptr[1];					      \
-++	/* ch was less than 0xfd.  */					      \
-++	assert (ch < 0xfd00);						      \
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-+-	    || __builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm932db_to_ucs4[ch + rp2->idx],		      \
-+ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm933.c	2015-01-08 16:05:53.917822706 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm933.c	2015-01-08 16:06:02.781555143 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm933db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm935.c	2015-01-08 16:05:53.921824843 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm935.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm935db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm937.c	2015-01-08 16:05:53.915821638 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm937.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm937db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm939.c	2015-01-08 16:05:53.917822706 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm939.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -161,7 +161,7 @@
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
-+ 	    || __builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm939db_to_ucs4[ch + rp2->idx],		      \
-+ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
-+--- eglibc-2.19.orig/libc/iconvdata/ibm943.c	2015-01-08 16:05:53.918823240 -0300
-++++ eglibc-2.19/libc/iconvdata/ibm943.c	2015-01-08 16:06:02.782555677 -0300
-+@@ -74,11 +74,12 @@
-+ 	  }								      \
-+ 									      \
-+ 	ch = (ch * 0x100) + inptr[1];					      \
-++	/* ch was less than 0xfd.  */					      \
-++	assert (ch < 0xfd00);						      \
-+ 	while (ch > rp2->end)						      \
-+ 	  ++rp2;							      \
-+ 									      \
-+-	if (__builtin_expect (rp2 == NULL, 0)				      \
-+-	    || __builtin_expect (ch < rp2->start, 0)			      \
-++	if (__builtin_expect (ch < rp2->start, 0)			      \
-+ 	    || (res = __ibm943db_to_ucs4[ch + rp2->idx],		      \
-+ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
-+ 	  {								      \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
-+--- eglibc-2.19.orig/libc/iconvdata/Makefile	2015-01-08 16:05:53.903815227 -0300
-++++ eglibc-2.19/libc/iconvdata/Makefile	2015-01-08 16:06:02.782555677 -0300
-+@@ -303,6 +303,7 @@
-+ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
-+ 			 $(addprefix $(objpfx),$(modules.so)) \
-+ 			 $(common-objdir)/iconv/iconv_prog TESTS
-++	iconv_modules="$(modules)" \
-+ 	$(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
-+ 
-+ $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
-+diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
-+--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:05:53.894810420 -0300
-++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:06:02.782555677 -0300
-+@@ -188,6 +188,24 @@
-+ 
-+ done < TESTS2
-+ 
-++# Check for crashes in decoders.
-++printf '\016\377\377\377\377\377\377\377' > $temp1
-++for from in $iconv_modules ; do
-++    echo $ac_n "test decoder $from $ac_c"
-++    PROG=`eval echo $ICONV`
-++    if $PROG < $temp1 >/dev/null 2>&1 ; then
-++	: # fall through
-++    else
-++	status=$?
-++	if test $status -gt 1 ; then
-++	    echo "/FAILED"
-++	    failed=1
-++	    continue
-++	fi
-++    fi
-++    echo "OK"
-++done
-++
-+ exit $failed
-+ # Local Variables:
-+ #  mode:shell-script
-diff --git a/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
-new file mode 100644
-index 0000000..c7aa12c
---- /dev/null
-+++ b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
-@@ -0,0 +1,20 @@
-+Fix CVE-2014-9402 - denial of service in getnetbyname function.
-+Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
-+See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
-+--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:35.024977879 -0300
-++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:42.543992357 -0300
-+@@ -398,8 +398,8 @@
-+ 
-+ 	case BYNAME:
-+ 	  {
-+-	    char **ap = result->n_aliases++;
-+-	    while (*ap != NULL)
-++	    char **ap;
-++	    for (ap = result->n_aliases; *ap != NULL; ++ap)
-+ 	      {
-+ 		/* Check each alias name for being of the forms:
-+ 		   4.3.2.1.in-addr.arpa		= net 1.2.3.4
-diff --git a/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
-new file mode 100644
-index 0000000..a0da626
---- /dev/null
-+++ b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
-@@ -0,0 +1,88 @@
-+Fix CVE-2015-1472 - heap buffer overflow in wscanf
-+Backport from upstream:
-+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
-+See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
-+index aece3f2..8a2eb9e 100644
-+--- a/libc/stdio-common/tst-sscanf.c
-++++ b/libc/stdio-common/tst-sscanf.c
-+@@ -233,5 +233,38 @@ main (void)
-+ 	}
-+     }
-+ 
-++  /* BZ #16618
-++     The test will segfault during SSCANF if the buffer overflow
-++     is not fixed.  The size of `s` is such that it forces the use
-++     of malloc internally and this triggers the incorrect computation.
-++     Thus the value for SIZE is arbitrariy high enough that malloc
-++     is used.  */
-++  {
-++#define SIZE 131072
-++    CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
-++    if (s == NULL)
-++      abort ();
-++    for (size_t i = 0; i < SIZE; i++)
-++      s[i] = L('0');
-++    s[SIZE] = L('\0');
-++    int i = 42;
-++    /* Scan multi-digit zero into `i`.  */
-++    if (SSCANF (s, L("%d"), &i) != 1)
-++      {
-++	printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
-++	result = 1;
-++      }
-++    if (i != 0)
-++      {
-++	printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
-++	result = 1;
-++      }
-++    free (s);
-++    if (result != 1)
-++      printf ("PASS: bug16618: Did not crash.\n");
-++#undef SIZE
-++  }
-++
-++
-+   return result;
-+ }
-+diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
-+index cd129a8..0e204e7 100644
-+--- a/libc/stdio-common/vfscanf.c
-++++ b/libc/stdio-common/vfscanf.c
-+@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
-+       if (__glibc_unlikely (wpsize == wpmax))				      \
-+ 	{								    \
-+ 	  CHAR_T *old = wp;						    \
-+-	  size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax			    \
-+-			    ? UCHAR_MAX + 1 : 2 * wpmax);		    \
-+-	  if (use_malloc || !__libc_use_alloca (newsize))		    \
-++	  bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
-++	  size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax);		    \
-++	  size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX;	    \
-++	  if (!__libc_use_alloca (newsize))				    \
-+ 	    {								    \
-+ 	      wp = realloc (use_malloc ? wp : NULL, newsize);		    \
-+ 	      if (wp == NULL)						    \
-+@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
-+ 		}							    \
-+ 	      if (! use_malloc)						    \
-+ 		MEMCPY (wp, old, wpsize);				    \
-+-	      wpmax = newsize;						    \
-++	      wpmax = wpneed;						    \
-+ 	      use_malloc = true;					    \
-+ 	    }								    \
-+ 	  else								    \
-+ 	    {								    \
-+ 	      size_t s = wpmax * sizeof (CHAR_T);			    \
-+-	      wp = (CHAR_T *) extend_alloca (wp, s,			    \
-+-					     newsize * sizeof (CHAR_T));    \
-++	      wp = (CHAR_T *) extend_alloca (wp, s, newsize);		    \
-+ 	      wpmax = s / sizeof (CHAR_T);				    \
-+ 	      if (old != NULL)						    \
-+ 		MEMCPY (wp, old, wpsize);				    \
-+-- 
-+1.9.4
-+
-diff --git a/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
-new file mode 100644
-index 0000000..19b8b6e
---- /dev/null
-+++ b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
-@@ -0,0 +1,236 @@
-+Fetched from gentoo glibc patchball
-+Original patch filename: 10_all_glibc-CVE-2015-7547.patch
-+Based on: https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
-+
-+Fixes:
-+CVE-2015-7547 - glibc getaddrinfo stack-based buffer overflow.
-+
-+Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-+
-+--- a/resolv/nss_dns/dns-host.c
-++++ b/resolv/nss_dns/dns-host.c
-+@@ -1031,7 +1031,10 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
-+   int h_namelen = 0;
-+ 
-+   if (ancount == 0)
-+-    return NSS_STATUS_NOTFOUND;
-++    {
-++      *h_errnop = HOST_NOT_FOUND;
-++      return NSS_STATUS_NOTFOUND;
-++    }
-+ 
-+   while (ancount-- > 0 && cp < end_of_message && had_error == 0)
-+     {
-+@@ -1208,7 +1211,14 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
-+   /* Special case here: if the resolver sent a result but it only
-+      contains a CNAME while we are looking for a T_A or T_AAAA record,
-+      we fail with NOTFOUND instead of TRYAGAIN.  */
-+-  return canon == NULL ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
-++  if (canon != NULL)
-++    {
-++      *h_errnop = HOST_NOT_FOUND;
-++      return NSS_STATUS_NOTFOUND;
-++    }
-++
-++  *h_errnop = NETDB_INTERNAL;
-++  return NSS_STATUS_TRYAGAIN;
-+ }
-+ 
-+ 
-+@@ -1242,8 +1252,15 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
-+ 						     &pat, &buffer, &buflen,
-+ 						     errnop, h_errnop, ttlp,
-+ 						     &first);
-++      /* Use the second response status in some cases.  */
-+       if (status != NSS_STATUS_SUCCESS && status2 != NSS_STATUS_NOTFOUND)
-+ 	status = status2;
-++      /* Do not return a truncated second response (unless it was
-++         unavoidable e.g. unrecoverable TRYAGAIN).  */
-++      if (status == NSS_STATUS_SUCCESS
-++	  && (status2 == NSS_STATUS_TRYAGAIN
-++	      && *errnop == ERANGE && *h_errnop != NO_RECOVERY))
-++	status = NSS_STATUS_TRYAGAIN;
-+     }
-+ 
-+   return status;
-+--- a/resolv/res_query.c
-++++ b/resolv/res_query.c
-+@@ -396,6 +396,7 @@ __libc_res_nsearch(res_state statp,
-+ 		  {
-+ 		    free (*answerp2);
-+ 		    *answerp2 = NULL;
-++		    *nanswerp2 = 0;
-+ 		    *answerp2_malloced = 0;
-+ 		  }
-+ 	}
-+@@ -447,6 +448,7 @@ __libc_res_nsearch(res_state statp,
-+ 			  {
-+ 			    free (*answerp2);
-+ 			    *answerp2 = NULL;
-++			    *nanswerp2 = 0;
-+ 			    *answerp2_malloced = 0;
-+ 			  }
-+ 
-+@@ -521,6 +523,7 @@ __libc_res_nsearch(res_state statp,
-+ 	  {
-+ 	    free (*answerp2);
-+ 	    *answerp2 = NULL;
-++	    *nanswerp2 = 0;
-+ 	    *answerp2_malloced = 0;
-+ 	  }
-+ 	if (saved_herrno != -1)
-+--- a/resolv/res_send.c
-++++ b/resolv/res_send.c
-+@@ -639,11 +639,7 @@ send_vc(res_state statp,
-+ {
-+ 	const HEADER *hp = (HEADER *) buf;
-+ 	const HEADER *hp2 = (HEADER *) buf2;
-+-	u_char *ans = *ansp;
-+-	int orig_anssizp = *anssizp;
-+-	// XXX REMOVE
-+-	// int anssiz = *anssizp;
-+-	HEADER *anhp = (HEADER *) ans;
-++	HEADER *anhp = (HEADER *) *ansp;
-+ 	struct sockaddr *nsap = get_nsaddr (statp, ns);
-+ 	int truncating, connreset, n;
-+ 	/* On some architectures compiler might emit a warning indicating
-+@@ -767,35 +763,6 @@ send_vc(res_state statp,
-+ 		assert (anscp != NULL || ansp2 == NULL);
-+ 		thisresplenp = &resplen;
-+ 	} else {
-+-		if (*anssizp != MAXPACKET) {
-+-			/* No buffer allocated for the first
-+-			   reply.  We can try to use the rest
-+-			   of the user-provided buffer.  */
-+-#if __GNUC_PREREQ (4, 7)
-+-			DIAG_PUSH_NEEDS_COMMENT;
-+-			DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
-+-#endif
-+-#if _STRING_ARCH_unaligned
-+-			*anssizp2 = orig_anssizp - resplen;
-+-			*ansp2 = *ansp + resplen;
-+-#else
-+-			int aligned_resplen
-+-			  = ((resplen + __alignof__ (HEADER) - 1)
-+-			     & ~(__alignof__ (HEADER) - 1));
-+-			*anssizp2 = orig_anssizp - aligned_resplen;
-+-			*ansp2 = *ansp + aligned_resplen;
-+-#endif
-+-#if __GNUC_PREREQ (4, 7)
-+-			DIAG_POP_NEEDS_COMMENT;
-+-#endif
-+-		} else {
-+-			/* The first reply did not fit into the
-+-			   user-provided buffer.  Maybe the second
-+-			   answer will.  */
-+-			*anssizp2 = orig_anssizp;
-+-			*ansp2 = *ansp;
-+-		}
-+-
-+ 		thisanssizp = anssizp2;
-+ 		thisansp = ansp2;
-+ 		thisresplenp = resplen2;
-+@@ -804,10 +771,14 @@ send_vc(res_state statp,
-+ 	anhp = (HEADER *) *thisansp;
-+ 
-+ 	*thisresplenp = rlen;
-+-	if (rlen > *thisanssizp) {
-+-		/* Yes, we test ANSCP here.  If we have two buffers
-+-		   both will be allocatable.  */
-+-		if (__glibc_likely (anscp != NULL))       {
-++	/* Is the answer buffer too small?  */
-++	if (*thisanssizp < rlen) {
-++		/* If the current buffer is not the the static
-++		   user-supplied buffer then we can reallocate
-++		   it.  */
-++		if (thisansp != NULL && thisansp != ansp) {
-++			/* Always allocate MAXPACKET, callers expect
-++			   this specific size.  */
-+ 			u_char *newp = malloc (MAXPACKET);
-+ 			if (newp == NULL) {
-+ 				*terrno = ENOMEM;
-+@@ -957,8 +928,6 @@ send_dg(res_state statp,
-+ {
-+ 	const HEADER *hp = (HEADER *) buf;
-+ 	const HEADER *hp2 = (HEADER *) buf2;
-+-	u_char *ans = *ansp;
-+-	int orig_anssizp = *anssizp;
-+ 	struct timespec now, timeout, finish;
-+ 	struct pollfd pfd[1];
-+ 	int ptimeout;
-+@@ -1154,50 +1123,48 @@ send_dg(res_state statp,
-+ 			assert (anscp != NULL || ansp2 == NULL);
-+ 			thisresplenp = &resplen;
-+ 		} else {
-+-			if (*anssizp != MAXPACKET) {
-+-				/* No buffer allocated for the first
-+-				   reply.  We can try to use the rest
-+-				   of the user-provided buffer.  */
-+-#if _STRING_ARCH_unaligned
-+-				*anssizp2 = orig_anssizp - resplen;
-+-				*ansp2 = *ansp + resplen;
-+-#else
-+-				int aligned_resplen
-+-				  = ((resplen + __alignof__ (HEADER) - 1)
-+-				     & ~(__alignof__ (HEADER) - 1));
-+-				*anssizp2 = orig_anssizp - aligned_resplen;
-+-				*ansp2 = *ansp + aligned_resplen;
-+-#endif
-+-			} else {
-+-				/* The first reply did not fit into the
-+-				   user-provided buffer.  Maybe the second
-+-				   answer will.  */
-+-				*anssizp2 = orig_anssizp;
-+-				*ansp2 = *ansp;
-+-			}
-+-
-+ 			thisanssizp = anssizp2;
-+ 			thisansp = ansp2;
-+ 			thisresplenp = resplen2;
-+ 		}
-+ 
-+ 		if (*thisanssizp < MAXPACKET
-+-		    /* Yes, we test ANSCP here.  If we have two buffers
-+-		       both will be allocatable.  */
-+-		    && anscp
-++		    /* If the current buffer is not the the static
-++		       user-supplied buffer then we can reallocate
-++		       it.  */
-++		    && (thisansp != NULL && thisansp != ansp)
-+ #ifdef FIONREAD
-++		    /* Is the size too small?  */
-+ 		    && (ioctl (pfd[0].fd, FIONREAD, thisresplenp) < 0
-+ 			|| *thisanssizp < *thisresplenp)
-+ #endif
-+                     ) {
-++			/* Always allocate MAXPACKET, callers expect
-++			   this specific size.  */
-+ 			u_char *newp = malloc (MAXPACKET);
-+ 			if (newp != NULL) {
-+-				*anssizp = MAXPACKET;
-+-				*thisansp = ans = newp;
-++				*thisanssizp = MAXPACKET;
-++				*thisansp = newp;
-+ 				if (thisansp == ansp2)
-+ 				  *ansp2_malloced = 1;
-+ 			}
-+ 		}
-++		/* We could end up with truncation if anscp was NULL
-++		   (not allowed to change caller's buffer) and the
-++		   response buffer size is too small.  This isn't a
-++		   reliable way to detect truncation because the ioctl
-++		   may be an inaccurate report of the UDP message size.
-++		   Therefore we use this only to issue debug output.
-++		   To do truncation accurately with UDP we need
-++		   MSG_TRUNC which is only available on Linux.  We
-++		   can abstract out the Linux-specific feature in the
-++		   future to detect truncation.  */
-++		if (__glibc_unlikely (*thisanssizp < *thisresplenp)) {
-++			Dprint(statp->options & RES_DEBUG,
-++			       (stdout, ";; response may be truncated (UDP)\n")
-++			);
-++		}
-++
-+ 		HEADER *anhp = (HEADER *) *thisansp;
-+ 		socklen_t fromlen = sizeof(struct sockaddr_in6);
-+ 		assert (sizeof(from) <= fromlen);
-diff --git a/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
-new file mode 100644
-index 0000000..28f4b6e
---- /dev/null
-+++ b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
-@@ -0,0 +1,43 @@
-+From 8415fb8d4f05c023b9d79e44dff197cc285fd1e5 Mon Sep 17 00:00:00 2001
-+From: Mike Frysinger <vapier@gentoo.org>
-+Date: Thu, 6 Aug 2015 02:10:46 -0400
-+Subject: [PATCH] microblaze: include unix/sysdep.h
-+
-+The semi-recent SYSCALL_CANCEL inclusion broke microblaze due to the
-+sysdep.h header not including the unix/sysdep.h header.  Include it
-+here like all other ports.
-+
-+(cherry picked from commit 5d5de49c3ccd69f65b801f1ca490a0112d1cbd7d)
-+
-+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-+[edited to remove ChangeLog modifications, which cause conflicts.]
-+---
-+ sysdeps/unix/sysv/linux/microblaze/sysdep.h | 7 ++++++-
-+ 2 files changed, 12 insertions(+), 1 deletion(-)
-+
-+diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
-+index 83c0340..9d5c542 100644
-+--- a/sysdeps/unix/sysv/linux/microblaze/sysdep.h
-++++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
-+@@ -16,8 +16,11 @@
-+    License along with the GNU C Library; if not, see
-+    <http://www.gnu.org/licenses/>.  */
-+ 
-++#ifndef _LINUX_MICROBLAZE_SYSDEP_H
-++#define _LINUX_MICROBLAZE_SYSDEP_H 1
-++
-++#include <sysdeps/unix/sysdep.h>
-+ #include <sysdeps/microblaze/sysdep.h>
-+-#include <sys/syscall.h>
-+ 
-+ /* Defines RTLD_PRIVATE_ERRNO.  */
-+ #include <dl-sysdep.h>
-+@@ -305,3 +308,5 @@ SYSCALL_ERROR_LABEL_DCL:                            \
-+ # define PTR_DEMANGLE(var) (void) (var)
-+ 
-+ #endif /* not __ASSEMBLER__ */
-++
-++#endif /* _LINUX_MICROBLAZE_SYSDEP_H */
-+-- 
-+2.6.4
-+
-diff --git a/package/glibc/glibc/Config.in b/package/glibc/glibc/Config.in
-new file mode 100644
-index 0000000..0565162
---- /dev/null
-+++ b/package/glibc/glibc/Config.in
-@@ -0,0 +1,56 @@
-+if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
-+
-+config BR2_PACKAGE_EGLIBC
-+	bool
-+	default y
-+	select BR2_PACKAGE_LINUX_HEADERS
-+
-+choice
-+	prompt "eglibc version"
-+	default BR2_EGLIBC_VERSION_2_18
-+
-+config BR2_EGLIBC_VERSION_2_18
-+	bool "2.18-svnr23787"
-+	# Build breakage
-+	depends on !BR2_sparc
-+
-+config BR2_EGLIBC_VERSION_2_19
-+	bool "2.19-svnr25243"
-+	# Build breakage
-+	depends on !BR2_powerpc_SPE
-+
-+endchoice
-+
-+endif
-+
-+if BR2_TOOLCHAIN_BUILDROOT_GLIBC
-+
-+config BR2_PACKAGE_GLIBC
-+	bool
-+	default y
-+	select BR2_PACKAGE_LINUX_HEADERS
-+
-+choice
-+	prompt "glibc version"
-+	default BR2_GLIBC_VERSION_2_22
-+
-+config BR2_GLIBC_VERSION_2_22
-+	bool "2.22"
-+	# No support for pthread barriers on < v9 ISA
-+	depends on !BR2_sparc
-+
-+config BR2_GLIBC_VERSION_2_23
-+	bool "2.23"
-+	# No support for pthread barriers on < v9 ISA
-+	depends on !BR2_sparc
-+
-+endchoice
-+
-+endif
-+
-+config BR2_GLIBC_VERSION_STRING
-+	string
-+	default "2.18-svnr23787" if BR2_EGLIBC_VERSION_2_18
-+	default "2.19-svnr25243" if BR2_EGLIBC_VERSION_2_19
-+	default "2.22" if BR2_GLIBC_VERSION_2_22
-+	default "2.23" if BR2_GLIBC_VERSION_2_23
-diff --git a/package/glibc/glibc/glibc.hash b/package/glibc/glibc/glibc.hash
-new file mode 100644
-index 0000000..b04f214
---- /dev/null
-+++ b/package/glibc/glibc/glibc.hash
-@@ -0,0 +1,8 @@
-+# Locally calculated after checking pgp signature (glibc)
-+# http://downloads.yoctoproject.org/releases/eglibc/*.{md5,sha1} (eglibc)
-+md5	b395b021422a027d89884992e91734fc	eglibc-2.18-svnr23787.tar.bz2
-+sha1	224d9e655e8f0ad04ffde47b97a11c64e2255b56	eglibc-2.18-svnr23787.tar.bz2
-+md5	197836c2ba42fb146e971222647198dd	eglibc-2.19-svnr25243.tar.bz2
-+sha1	8013c1935b46fd50d2d1fbfad3b0af362b75fb28	eglibc-2.19-svnr25243.tar.bz2
-+sha256	eb731406903befef1d8f878a46be75ef862b9056ab0cde1626d08a7a05328948	glibc-2.22.tar.xz
-+sha256	94efeb00e4603c8546209cefb3e1a50a5315c86fa9b078b6fad758e187ce13e9	glibc-2.23.tar.xz
-diff --git a/package/glibc/glibc/glibc.mk b/package/glibc/glibc/glibc.mk
-new file mode 100644
-index 0000000..4a9ba0e
---- /dev/null
-+++ b/package/glibc/glibc/glibc.mk
-@@ -0,0 +1,155 @@
-+################################################################################
-+#
-+# glibc/eglibc
-+#
-+################################################################################
-+
-+GLIBC_VERSION = $(call qstrip,$(BR2_GLIBC_VERSION_STRING))
-+
-+ifeq ($(BR2_TOOLCHAIN_BUILDROOT_EGLIBC),y)
-+GLIBC_SITE = http://downloads.yoctoproject.org/releases/eglibc
-+GLIBC_SOURCE = eglibc-$(GLIBC_VERSION).tar.bz2
-+GLIBC_SRC_SUBDIR = libc
-+else
-+GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
-+GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
-+GLIBC_SRC_SUBDIR = .
-+endif
-+
-+GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
-+GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
-+
-+# glibc is part of the toolchain so disable the toolchain dependency
-+GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
-+
-+# Before (e)glibc is configured, we must have the first stage
-+# cross-compiler and the kernel headers
-+GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk
-+
-+GLIBC_SUBDIR = build
-+
-+GLIBC_INSTALL_STAGING = YES
-+
-+GLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install
-+
-+# Thumb build is broken, build in ARM mode
-+ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
-+GLIBC_EXTRA_CFLAGS += -marm
-+endif
-+
-+# MIPS64 defaults to n32 so pass the correct -mabi if
-+# we are using a different ABI. OABI32 is also used
-+# in MIPS so we pass -mabi=32 in this case as well
-+# even though it's not strictly necessary.
-+ifeq ($(BR2_MIPS_NABI64),y)
-+GLIBC_EXTRA_CFLAGS += -mabi=64
-+else ifeq ($(BR2_MIPS_OABI32),y)
-+GLIBC_EXTRA_CFLAGS += -mabi=32
-+endif
-+
-+ifeq ($(BR2_ENABLE_DEBUG),y)
-+GLIBC_EXTRA_CFLAGS += -g
-+endif
-+
-+# The stubs.h header is not installed by install-headers, but is
-+# needed for the gcc build. An empty stubs.h will work, as explained
-+# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick
-+# is used by Crosstool-NG.
-+ifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y)
-+define GLIBC_ADD_MISSING_STUB_H
-+	mkdir -p $(STAGING_DIR)/usr/include/gnu
-+	touch $(STAGING_DIR)/usr/include/gnu/stubs.h
-+endef
-+endif
-+
-+# Even though we use the autotools-package infrastructure, we have to
-+# override the default configure commands for several reasons:
-+#
-+#  1. We have to build out-of-tree, but we can't use the same
-+#     'symbolic link to configure' used with the gcc packages.
-+#
-+#  2. We have to execute the configure script with bash and not sh.
-+#
-+# Note that as mentionned in
-+# http://patches.openembedded.org/patch/38849/, eglibc/glibc must be
-+# built with -O2, so we pass our own CFLAGS and CXXFLAGS below.
-+define GLIBC_CONFIGURE_CMDS
-+	mkdir -p $(@D)/build
-+	# Do the configuration
-+	(cd $(@D)/build; \
-+		$(TARGET_CONFIGURE_OPTS) \
-+		CFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \
-+		CXXFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" \
-+		$(SHELL) $(@D)/$(GLIBC_SRC_SUBDIR)/configure \
-+		ac_cv_path_BASH_SHELL=/bin/bash \
-+		libc_cv_forced_unwind=yes \
-+		libc_cv_ssp=no \
-+		--target=$(GNU_TARGET_NAME) \
-+		--host=$(GNU_TARGET_NAME) \
-+		--build=$(GNU_HOST_NAME) \
-+		--prefix=/usr \
-+		--enable-shared \
-+		$(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \
-+		$(if $(BR2_x86_64),--enable-lock-elision) \
-+		--with-pkgversion="Buildroot" \
-+		--without-cvs \
-+		--disable-profile \
-+		--without-gd \
-+		--enable-obsolete-rpc \
-+		--enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \
-+		--with-headers=$(STAGING_DIR)/usr/include)
-+	$(GLIBC_ADD_MISSING_STUB_H)
-+endef
-+
-+
-+#
-+# We also override the install to target commands since we only want
-+# to install the libraries, and nothing more.
-+#
-+
-+GLIBC_LIBS_LIB = \
-+	ld*.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.*        \
-+	libnsl.so.* libpthread.so.* libresolv.so.* librt.so.* libutil.so.*   \
-+	libnss_files.so.* libnss_dns.so.*
-+
-+ifeq ($(BR2_PACKAGE_GDB),y)
-+GLIBC_LIBS_LIB += libthread_db.so.*
-+endif
-+
-+define GLIBC_INSTALL_TARGET_CMDS
-+	for libs in $(GLIBC_LIBS_LIB); do \
-+		$(call copy_toolchain_lib_root,$(STAGING_DIR)/,,lib,$$libs,/lib) ; \
-+	done
-+endef
-+
-+# MIPS R6 requires to have NaN2008 support which is currently not
-+# supported by the Linux kernel. In order to prevent building the
-+# glibc against kernels not having NaN2008 support on platforms that
-+# requires it, glibc currently checks for an (inexisting) 10.0.0
-+# kernel headers version.
-+#
-+# Since in practice the kernel support for NaN2008 is not really
-+# required for things to work properly, we adjust the glibc check to
-+# make it believe that NaN2008 support was added in the kernel
-+# starting from version 4.0.0.
-+#
-+# In general the compatibility issues introduced by mis-matched NaN
-+# encodings will not cause a problem as signalling NaNs are rarely used
-+# in average code. For MIPS R6 there isn't actually any compatibility
-+# issue as the hardware is always NaN2008 and software is always
-+# NaN2008. The problem only comes from when older MIPS code is linked in
-+# via a DSO and multiple NaN encodings are introduced. Since Buildroot
-+# is intended to have all code built from source then this scenario is
-+# highly unlikely. The failure mode, if it ever occurs, would be either
-+# that a signalling NaN fails to raise an invalid operation exception or
-+# (more likely) an ordinary NaN raises an invalid operation exception.
-+ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y)
-+define GLIBC_FIX_MIPS_R6
-+	$(SED) 's#10.0.0#4.0.0#' \
-+		$(@D)/sysdeps/unix/sysv/linux/mips/configure \
-+		$(@D)/sysdeps/unix/sysv/linux/mips/configure.ac
-+endef
-+GLIBC_POST_EXTRACT_HOOKS += GLIBC_FIX_MIPS_R6
-+endif
-+
-+$(eval $(autotools-package))
-diff --git a/package/glibc/glibc/nsswitch.conf b/package/glibc/glibc/nsswitch.conf
-new file mode 100644
-index 0000000..5c38491
---- /dev/null
-+++ b/package/glibc/glibc/nsswitch.conf
-@@ -0,0 +1,13 @@
-+# /etc/nsswitch.conf
-+
-+passwd:         files
-+group:          files
-+shadow:         files
-+
-+hosts:          files dns
-+networks:       files dns
-+
-+protocols:      files
-+services:       files
-+ethers:         files
-+rpc:            files
-diff --git a/package/libmodbus/001-GfA-echo-rtu.patch b/package/libmodbus/001-GfA-echo-rtu.patch
-new file mode 100644
-index 0000000..386172f
---- /dev/null
-+++ b/package/libmodbus/001-GfA-echo-rtu.patch
-@@ -0,0 +1,105 @@
-+diff -Naur a/src/modbus-rtu.c b/src/modbus-rtu.c
-+--- a/src/modbus-rtu.c	2017-10-11 23:07:11.623017506 +0200
-++++ b/src/modbus-rtu.c	2017-10-11 23:07:20.495035402 +0200
-+@@ -257,6 +257,27 @@
-+ }
-+ #endif
-+ 
-++
-++ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
-++ ssize_t w, r, i;
-++ uint8_t rb[req_length];
-++
-++ // Transmit
-++ w = write(ctx->s, req, req_length);
-++
-++ // Read back written bytes if hw has echo
-++ r = 0;
-++ while (r < w)
-++  r += read(ctx->s, rb + r, w - r);
-++ if (ctx->debug) {
-++  for (i = 0; i < r; ++i)
-++  fprintf(stderr, "|%02X|", rb[i]);
-++  fprintf(stderr, "\n");
-++ }
-++
-++ return w;
-++}
-++
-+ ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)
-+ {
-+ #if defined(_WIN32)
-+@@ -264,7 +285,14 @@
-+     DWORD n_bytes = 0;
-+     return (WriteFile(ctx_rtu->w_ser.fd, req, req_length, &n_bytes, NULL)) ? n_bytes : -1;
-+ #else
-+-    return write(ctx->s, req, req_length);
-++    modbus_rtu_t *ctx_rtu = ctx->backend_data;
-++    ssize_t w;
-++    
-++    if(!ctx_rtu->echohw)    
-++      w = write(ctx->s, req, req_length);
-++     else
-++      w = _modbus_rtu_write_n_read(ctx, req, req_length);
-++    return w;
-+ #endif
-+ }
-+ 
-+@@ -772,6 +800,30 @@
-+     }
-+ }
-+ 
-++
-++int modbus_rtu_set_echohw_mode(modbus_t* ctx, uint8_t mode) {
-++ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
-++ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
-++ rtu->echohw= mode;
-++ return 0;
-++ }
-++ /* Wrong backend and invalid mode specified */
-++ errno = EINVAL;
-++ return -1;
-++
-++}
-++
-++int modbus_rtu_get_echohw_mode(modbus_t* ctx) {
-++ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
-++ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
-++ return rtu->echohw;
-++ }
-++ /* Wrong backend and invalid mode specified */
-++ errno = EINVAL;
-++ return -1;
-++
-++}
-++
-+ void _modbus_rtu_close(modbus_t *ctx)
-+ {
-+     /* Closes the file descriptor in RTU mode */
-+diff -Naur a/src/modbus-rtu.h b/src/modbus-rtu.h
-+--- a/src/modbus-rtu.h	2017-10-11 23:07:11.623017506 +0200
-++++ b/src/modbus-rtu.h	2017-10-11 23:07:20.495035402 +0200
-+@@ -37,6 +37,12 @@
-+ int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);
-+ int modbus_rtu_get_serial_mode(modbus_t *ctx);
-+ 
-++#define MODBUS_RTU_HAS_ECHOHW 1
-++#define MODBUS_RTU_NO_ECHOHW 0
-++
-++int modbus_rtu_set_echohw_mode(modbus_t *ctx, uint8_t mode);
-++int modbus_rtu_get_echohw_mode(modbus_t *ctx);
-++
-+ MODBUS_END_DECLS
-+ 
-+ #endif /* _MODBUS_RTU_H_ */
-+diff -Naur a/src/modbus-rtu-private.h b/src/modbus-rtu-private.h
-+--- a/src/modbus-rtu-private.h	2017-10-11 23:07:11.623017506 +0200
-++++ b/src/modbus-rtu-private.h	2017-10-11 23:07:20.495035402 +0200
-+@@ -81,6 +81,7 @@
-+ #if HAVE_DECL_TIOCSRS485
-+     int serial_mode;
-+ #endif
-++    uint8_t echohw;
-+ } modbus_rtu_t;
-+ 
-+ #endif /* _MODBUS_RTU_PRIVATE_H_ */
-diff --git a/package/linux-headers/linux-017-omap_serial_for_rs485.patch b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
-new file mode 100644
-index 0000000..38b7ffa
---- /dev/null
-+++ b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
-@@ -0,0 +1,12 @@
-+--- a/include/uapi/linux/serial.h	2016-11-08 16:38:32.000000000 +0100
-++++ b/include/uapi/linux/serial.h	2017-02-18 14:27:23.569732653 +0100
-+@@ -119,7 +119,8 @@ struct serial_rs485 {
-+ #define SER_RS485_RX_DURING_TX		(1 << 4)
-+ 	__u32	delay_rts_before_send;	/* Delay before send (milliseconds) */
-+ 	__u32	delay_rts_after_send;	/* Delay after send (milliseconds) */
-+-	__u32	padding[5];		/* Memory is cheap, new structs
-++	__u32   udelay_before_enable_tx;/* Delay before switching to tx direction */
-++	__u32	padding[4];		/* Memory is cheap, new structs
-+ 					   are a royal PITA .. */
-+ };
-+ 
-diff --git a/package/mutt/mutt.mk b/package/mutt/mutt.mk
-index cd44ca1..dab73cf 100644
---- a/package/mutt/mutt.mk
-+++ b/package/mutt/mutt.mk
-@@ -9,7 +9,8 @@ MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads
- MUTT_LICENSE = GPLv2+
- MUTT_LICENSE_FILES = GPL
- MUTT_DEPENDENCIES = ncurses
--MUTT_CONF_OPTS = --disable-smtp
-+#MUTT_CONF_OPTS = --disable-smtp
-+MUTT_CONF_OPTS = --enable-smtp
- MUTT_AUTORECONF = YES
- 
- ifeq ($(BR2_PACKAGE_LIBICONV),y)
-@@ -37,16 +38,17 @@ MUTT_CONF_OPTS += --disable-pop
- endif
- 
- # SSL support is only used by imap or pop3 module
--ifneq ($(BR2_PACKAGET_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),)
--ifeq ($(BR2_PACKAGE_OPENSSL),y)
-+#ifneq ($(BR2_PACKAGET_MUTT_IMAP)$(BR2_PACKAGE_MUTT_POP3),)
-+#ifeq ($(BR2_PACKAGE_OPENSSL),y)
- MUTT_DEPENDENCIES += openssl
- MUTT_CONF_OPTS += --with-ssl=$(STAGING_DIR)/usr
--else
--MUTT_CONF_OPTS += --without-ssl
--endif
--else
--MUTT_CONF_OPTS += --without-ssl
--endif
-+MUTT_CONF_OPTS += --with-gnutls=$(STAGING_DIR)/usr
-+#else
-+#MUTT_CONF_OPTS += --without-ssl
-+#endif
-+#else
-+#MUTT_CONF_OPTS += --without-ssl
-+#endif
- 
- # Avoid running tests to check for:
- #  - target system is *BSD
-diff --git a/package/qt5/Config.in b/package/qt5/Config.in
-index 234dfdd..fb57d25 100644
---- a/package/qt5/Config.in
-+++ b/package/qt5/Config.in
-@@ -31,6 +31,7 @@ menuconfig BR2_PACKAGE_QT5
- 
- if BR2_PACKAGE_QT5
- source "package/qt5/qt5base/Config.in"
-+source "package/qt5/qt53d/Config.in"
- source "package/qt5/qt5canvas3d/Config.in"
- source "package/qt5/qt5connectivity/Config.in"
- source "package/qt5/qt5declarative/Config.in"
-@@ -41,17 +42,20 @@ source "package/qt5/qt5location/Config.in"
- source "package/qt5/qt5multimedia/Config.in"
- source "package/qt5/qt5quickcontrols/Config.in"
- source "package/qt5/qt5sensors/Config.in"
-+source "package/qt5/qt5serialbus/Config.in"
- source "package/qt5/qt5serialport/Config.in"
-+source "package/qt5/qt5wayland/Config.in"
- source "package/qt5/qt5svg/Config.in"
- source "package/qt5/qt5tools/Config.in"
- source "package/qt5/qt5webchannel/Config.in"
- source "package/qt5/qt5websockets/Config.in"
- source "package/qt5/qt5x11extras/Config.in"
-+source "package/qt5/qt5webengine/Config.in"
- source "package/qt5/qt5xmlpatterns/Config.in"
--comment "technology preview"
--source "package/qt5/qt53d/Config.in"
-+source "package/qt5/qt5virtualkeyboard/Config.in"
-+source "package/qt5/qt5charts/Config.in"
-+source "package/qt5/qt5datavis3d/Config.in"
- source "package/qt5/qt5quickcontrols2/Config.in"
--source "package/qt5/qt5serialbus/Config.in"
- comment "legacy compatibility"
- source "package/qt5/qt5script/Config.in"
- source "package/qt5/qt5webkit/Config.in"
-diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
-index d25f663..0710ef4 100644
---- a/package/qt5/qt5.mk
-+++ b/package/qt5/qt5.mk
-@@ -1,6 +1,8 @@
--QT5_VERSION_MAJOR = 5.6
--QT5_VERSION = $(QT5_VERSION_MAJOR).2
-+QT5_VERSION_MAJOR = 5.7
-+QT5_VERSION = $(QT5_VERSION_MAJOR).0
- QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
-+##QT5_VERSION = $(QT5_VERSION_MAJOR).1
-+##QT5_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules
- include $(sort $(wildcard package/qt5/*/*.mk))
- 
- define QT5_LA_PRL_FILES_FIXUP
-diff --git a/package/qt5/qt53d/qt53d.hash b/package/qt5/qt53d/qt53d.hash
-index 7179380..f59a671 100644
---- a/package/qt5/qt53d/qt53d.hash
-+++ b/package/qt5/qt53d/qt53d.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qt3d-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 a21786db6e0f5c6c70213fe1a3530ed3d7f28f28401a0f793970e9bc860ce941 qt3d-opensource-src-5.6.2.tar.xz
-+sha256	a8248a1779b561ea450e92345e8187bacac359df0e92ad61a1ad7652bb233e29	qt3d-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
-new file mode 100644
-index 0000000..54e4db8
---- /dev/null
-+++ b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
-@@ -0,0 +1,44 @@
-+From e69e69519661954716d59bfa5bbd0626515cfda9 Mon Sep 17 00:00:00 2001
-+From: Peter Seiderer <ps.report@gmx.net>
-+Date: Thu, 3 Mar 2016 15:17:31 +0100
-+Subject: [PATCH] Disable c++ standard compiler flags for the host build
-+MIME-Version: 1.0
-+Content-Type: text/plain; charset=UTF-8
-+Content-Transfer-Encoding: 8bit
-+
-+There is no test for c++ standard support for the host build
-+(only for the target compiler/build) which leads to trouble
-+in some cross compiling environments (old host compiler, new
-+cross compiler):
-+
-+  g++: error: unrecognized command line option ‘-std=c++1z’
-+
-+So disable c++ standard compiler flags unconditionally for host builds.
-+
-+Task-number: QTBUG-51644
-+Change-Id: Ifb3042e125fe199a7e081740d1171d26ccacf0c5
-+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
-+Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
-+---
-+ mkspecs/features/default_post.prf | 5 ++++-
-+ 1 file changed, 4 insertions(+), 1 deletion(-)
-+
-+diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
-+index cd8d885..561c8f4 100644
-+--- a/mkspecs/features/default_post.prf
-++++ b/mkspecs/features/default_post.prf
-+@@ -95,7 +95,10 @@ breakpad {
-+     !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
-+ }
-+ 
-+-c++11|c++14|c++1z {
-++# Disable special compiler flags for host builds (needs to be changed for 5.7
-++# to fall back to c++11 because since 5.7 c++11 is required everywhere,
-++# including host builds).
-++if(!host_build|!cross_compile):if(c++11|c++14|c++1z) {
-+     c++1z:       cxxstd = CXX1Z
-+     else: c++14: cxxstd = CXX14
-+     else:        cxxstd = CXX11
-+-- 
-+2.1.4
-+
-diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in
-index 7244fbe..64a7f65 100644
---- a/package/qt5/qt5base/Config.in
-+++ b/package/qt5/qt5base/Config.in
-@@ -180,7 +180,7 @@ config BR2_PACKAGE_QT5BASE_DIRECTFB
- 	bool "directfb support"
- 	depends on BR2_PACKAGE_DIRECTFB
- 
--comment "directfb backend available if directfb is enabled"
-+comment "directfb backend if directb is enabled"
- 	depends on !BR2_PACKAGE_DIRECTFB
- 
- config BR2_PACKAGE_QT5BASE_XCB
-diff --git a/package/qt5/qt5base/qmake.conf b/package/qt5/qt5base/qmake.conf
-index 49cf898..2152d3c 100644
---- a/package/qt5/qt5base/qmake.conf
-+++ b/package/qt5/qt5base/qmake.conf
-@@ -19,7 +19,6 @@ QMAKE_CXXFLAGS_RELEASE += -O3
- CONFIG                 += nostrip
- 
- QMAKE_LIBS             += -lrt -lpthread -ldl
--QMAKE_CFLAGS_ISYSTEM   =
- 
- include(../common/linux_device_post.conf)
- load(qt_config)
-diff --git a/package/qt5/qt5base/qt5base.hash b/package/qt5/qt5base/qt5base.hash
-index 9808e9b..6795b60 100644
---- a/package/qt5/qt5base/qt5base.hash
-+++ b/package/qt5/qt5base/qt5base.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 2f6eae93c5d982fe0a387a01aeb3435571433e23e9d9d9246741faf51f1ee787 qtbase-opensource-src-5.6.2.tar.xz
-+sha256	3e7b6d123cab23a587ccbc45173296b33786faa409dba0494e4658fda3ede646	qtbase-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk
-index 23dba2a..81666d6 100644
---- a/package/qt5/qt5base/qt5base.mk
-+++ b/package/qt5/qt5base/qt5base.mk
-@@ -20,21 +20,16 @@ QT5BASE_INSTALL_STAGING = YES
- #    want to use the one packaged in Buildroot
- QT5BASE_CONFIGURE_OPTS += \
- 	-optimized-qmake \
-+	-no-kms \
- 	-no-cups \
-+	-no-nis \
- 	-no-iconv \
- 	-system-zlib \
- 	-system-pcre \
-+	-system-harfbuzz \
- 	-no-pch \
- 	-shared
- 
--# Uses libgbm from mesa3d
--ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
--QT5BASE_CONFIGURE_OPTS += -kms -gbm
--QT5BASE_DEPENDENCIES += mesa3d
--else
--QT5BASE_CONFIGURE_OPTS += -no-kms
--endif
--
- ifeq ($(BR2_ENABLE_DEBUG),y)
- QT5BASE_CONFIGURE_OPTS += -debug
- else
-@@ -58,10 +53,6 @@ ifneq ($(QT5BASE_CONFIG_FILE),)
- QT5BASE_CONFIGURE_OPTS += -qconfig buildroot
- endif
- 
--ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
--QT5BASE_DEPENDENCIES += udev
--endif
--
- # Qt5 SQL Plugins
- ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)
- ifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y)
-diff --git a/package/qt5/qt5canvas3d/qt5canvas3d.hash b/package/qt5/qt5canvas3d/qt5canvas3d.hash
-index 01819e4..2d13e40 100644
---- a/package/qt5/qt5canvas3d/qt5canvas3d.hash
-+++ b/package/qt5/qt5canvas3d/qt5canvas3d.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtcanvas3d-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 d7584d006b03f99692ccabce922e755a6f12bb1ed1fbc99c2b84842b9e0aa0ad qtcanvas3d-opensource-src-5.6.2.tar.xz
-+sha256	7871b3fd4c1a561c5b3eb57746e8504bc5d8fa626f9df578e619f9e823e3bd97	qtcanvas3d-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5charts/Config.in b/package/qt5/qt5charts/Config.in
-new file mode 100644
-index 0000000..d354bb2
---- /dev/null
-+++ b/package/qt5/qt5charts/Config.in
-@@ -0,0 +1,18 @@
-+config BR2_PACKAGE_QT5CHARTS
-+	bool "qt5charts"
-+	select BR2_PACKAGE_QT5DECLARATIVE
-+	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
-+	select BR2_PACKAGE_QT5BASE_WIDGETS
-+	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
-+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-+	help
-+	  Qt is a cross-platform application and UI framework for
-+	  developers using C++.
-+
-+	  This package corresponds to the qt5charts module.
-+
-+	  http://qt.io
-+
-+comment "qt5charts needs an OpenGL-capable backend"
-+	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
-+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-diff --git a/package/qt5/qt5charts/qt5charts.mk b/package/qt5/qt5charts/qt5charts.mk
-new file mode 100644
-index 0000000..c813354
---- /dev/null
-+++ b/package/qt5/qt5charts/qt5charts.mk
-@@ -0,0 +1,39 @@
-+################################################################################
-+#
-+# qt5charts
-+#
-+################################################################################
-+
-+QT5CHARTS_VERSION = $(QT5_VERSION)
-+QT5CHARTS_SITE = $(QT5_SITE)
-+QT5CHARTS_SOURCE = qtcharts-opensource-src-$(QT5CHARTS_VERSION).tar.xz
-+QT5CHARTS_DEPENDENCIES = qt5base qt5declarative
-+QT5CHARTS_INSTALL_STAGING = YES
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
-+QT5CHARTS_LICENSE = GPLv3
-+QT5CHARTS_LICENSE_FILES = LICENSE.GPL3
-+else
-+QT5CHARTS_LICENSE = Commercial license
-+QT5CHARTS_REDISTRIBUTE = NO
-+endif
-+
-+define QT5CHARTS_CONFIGURE_CMDS
-+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
-+endef
-+
-+define QT5CHARTS_BUILD_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
-+endef
-+
-+define QT5CHARTS_INSTALL_STAGING_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
-+	$(QT5_LA_PRL_FILES_FIXUP)
-+endef
-+
-+define QT5CHARTS_INSTALL_TARGET_CMDS
-+	cp -dpfr $(STAGING_DIR)/usr/lib/libQt5Charts.so.* $(TARGET_DIR)/usr/lib/
-+	cp -dpfr $(STAGING_DIR)/usr/qml/QtCharts $(TARGET_DIR)/usr/qml/
-+endef
-+
-+$(eval $(generic-package))
-diff --git a/package/qt5/qt5connectivity/Config.in b/package/qt5/qt5connectivity/Config.in
-index fa9b911..d529ea7 100644
---- a/package/qt5/qt5connectivity/Config.in
-+++ b/package/qt5/qt5connectivity/Config.in
-@@ -1,9 +1,13 @@
- config BR2_PACKAGE_QT5CONNECTIVITY
- 	bool "qt5connectivity"
-+	select BR2_PACKAGE_BLUEZ_UTILS
- 	select BR2_PACKAGE_QT5BASE
- 	select BR2_PACKAGE_QT5BASE_CONCURRENT
- 	select BR2_PACKAGE_QT5BASE_DBUS
--	depends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS
-+	depends on !BR2_STATIC_LIBS # bluez_utils
-+	depends on BR2_USE_WCHAR # bluez_utils
-+	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils
-+	depends on BR2_USE_MMU # bluez_utils
- 	help
- 	  Qt is a cross-platform application and UI framework for
- 	  developers using C++.
-@@ -12,6 +16,6 @@ config BR2_PACKAGE_QT5CONNECTIVITY
- 
- 	  http://qt.io
- 
--comment "qt5connectivity needs neard and/or bluez(5)_utils"
--	depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ_UTILS && \
--		!BR2_PACKAGE_BLUEZ5_UTILS
-+comment "qt5connectivity needs a toolchain w/ wchar, threads, dynamic library"
-+	depends on BR2_USE_MMU
-+	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
-diff --git a/package/qt5/qt5connectivity/qt5connectivity.hash b/package/qt5/qt5connectivity/qt5connectivity.hash
-index 4574f3d..00b7c20 100644
---- a/package/qt5/qt5connectivity/qt5connectivity.hash
-+++ b/package/qt5/qt5connectivity/qt5connectivity.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtconnectivity-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 1b672923e0703d62f605ccec97b454b1a04c1f0db47f54b687d009e84eabedf9 qtconnectivity-opensource-src-5.6.2.tar.xz
-+sha256	9844ca7ec5be187a77dfd7e95051fb267006f6c77157ecb0b8ceeac103a32703	qtconnectivity-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5connectivity/qt5connectivity.mk b/package/qt5/qt5connectivity/qt5connectivity.mk
-index 0f7257d..936bc6f 100644
---- a/package/qt5/qt5connectivity/qt5connectivity.mk
-+++ b/package/qt5/qt5connectivity/qt5connectivity.mk
-@@ -7,7 +7,7 @@
- QT5CONNECTIVITY_VERSION = $(QT5_VERSION)
- QT5CONNECTIVITY_SITE = $(QT5_SITE)
- QT5CONNECTIVITY_SOURCE = qtconnectivity-opensource-src-$(QT5CONNECTIVITY_VERSION).tar.xz
--QT5CONNECTIVITY_DEPENDENCIES = qt5base
-+QT5CONNECTIVITY_DEPENDENCIES = bluez_utils qt5base
- QT5CONNECTIVITY_INSTALL_STAGING = YES
- 
- ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
-@@ -18,10 +18,9 @@ QT5CONNECTIVITY_LICENSE = Commercial license
- QT5CONNECTIVITY_REDISTRIBUTE = NO
- endif
- 
--QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative)
--QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ_UTILS),bluez_utils)
--QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils)
--QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard)
-+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
-+QT5CONNECTIVITY_DEPENDENCIES += qt5declarative
-+endif
- 
- define QT5CONNECTIVITY_CONFIGURE_CMDS
- 	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
-@@ -37,36 +36,15 @@ define QT5CONNECTIVITY_INSTALL_STAGING_CMDS
- endef
- 
- ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
--ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
--define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS
-+define QT5CONNECTIVITY_INSTALL_TARGET_QMLS
- 	cp -dpfr $(STAGING_DIR)/usr/qml/QtBluetooth $(TARGET_DIR)/usr/qml/
- endef
- endif
--ifeq ($(BR2_PACKAGE_NEARD),y)
--define QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS
--	cp -dpfr $(STAGING_DIR)/usr/qml/QtNfc $(TARGET_DIR)/usr/qml/
--endef
--endif
--endif
- 
--ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
--define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH
-+define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
- 	cp -dpf $(STAGING_DIR)/usr/lib/libQt5Bluetooth.so.* $(TARGET_DIR)/usr/lib
- 	cp -dpf $(STAGING_DIR)/usr/bin/sdpscanner $(TARGET_DIR)/usr/bin
--endef
--endif
--
--ifeq ($(BR2_PACKAGE_NEARD),y)
--define QT5CONNECTIVITY_INSTALL_TARGET_NFC
--	cp -dpf $(STAGING_DIR)/usr/lib/libQt5Nfc.so.* $(TARGET_DIR)/usr/lib
--endef
--endif
--
--define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
--	$(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH)
--	$(QT5CONNECTIVITY_INSTALL_TARGET_NFC)
--	$(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS)
--	$(QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS)
-+	$(QT5CONNECTIVITY_INSTALL_TARGET_QMLS)
- endef
- 
- $(eval $(generic-package))
-diff --git a/package/qt5/qt5datavis3d/Config.in b/package/qt5/qt5datavis3d/Config.in
-new file mode 100644
-index 0000000..c7aca95
---- /dev/null
-+++ b/package/qt5/qt5datavis3d/Config.in
-@@ -0,0 +1,17 @@
-+config BR2_PACKAGE_QT5DATAVIS3D
-+	bool "qt5datavis3d"
-+	select BR2_PACKAGE_QT5DECLARATIVE
-+	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
-+	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
-+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-+	help
-+	  Qt is a cross-platform application and UI framework for
-+	  developers using C++.
-+
-+	  This package corresponds to the qt5datavis3d module.
-+
-+	  http://qt.io
-+
-+comment "qt5canvas3d needs an OpenGL-capable backend"
-+	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
-+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-diff --git a/package/qt5/qt5datavis3d/qt5datavis3d.mk b/package/qt5/qt5datavis3d/qt5datavis3d.mk
-new file mode 100644
-index 0000000..9101148
---- /dev/null
-+++ b/package/qt5/qt5datavis3d/qt5datavis3d.mk
-@@ -0,0 +1,39 @@
-+################################################################################
-+#
-+# qt5datavis3d
-+#
-+################################################################################
-+
-+QT5DATAVIS3D_VERSION = $(QT5_VERSION)
-+QT5DATAVIS3D_SITE = $(QT5_SITE)
-+QT5DATAVIS3D_SOURCE = qtdatavis3d-opensource-src-$(QT5DATAVIS3D_VERSION).tar.xz
-+QT5DATAVIS3D_DEPENDENCIES = qt5base qt5declarative
-+QT5DATAVIS3D_INSTALL_STAGING = YES
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
-+QT5DATAVIS3D_LICENSE = GPLv3
-+QT5DATAVIS3D_LICENSE_FILES = LICENSE.GPL3
-+else
-+QT5DATAVIS3D_LICENSE = Commercial license
-+QT5DATAVIS3D_REDISTRIBUTE = NO
-+endif
-+
-+define QT5DATAVIS3D_CONFIGURE_CMDS
-+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
-+endef
-+
-+define QT5DATAVIS3D_BUILD_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
-+endef
-+
-+define QT5DATAVIS3D_INSTALL_STAGING_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
-+	$(QT5_LA_PRL_FILES_FIXUP)
-+endef
-+
-+define QT5DATAVIS3D_INSTALL_TARGET_CMDS
-+	cp -dpfr $(STAGING_DIR)/usr/lib/libQt5DataVisualization.so.* $(TARGET_DIR)/usr/lib
-+        cp -dpfr $(STAGING_DIR)/usr/qml/QtDataVisualization $(TARGET_DIR)/usr/qml/
-+endef
-+
-+$(eval $(generic-package))
-diff --git a/package/qt5/qt5declarative/qt5declarative.hash b/package/qt5/qt5declarative/qt5declarative.hash
-index d8d3a68..6779669 100644
---- a/package/qt5/qt5declarative/qt5declarative.hash
-+++ b/package/qt5/qt5declarative/qt5declarative.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtdeclarative-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 0086a986bc36b398ba518c404d08cdff0a0d7978c30aa3fa2ab73d71654209da qtdeclarative-opensource-src-5.6.2.tar.xz
-+sha256	86de6239f3aee2e5f561c16ad7b6e47d8f341c293d4ed11c85acbc21888cf9f4	qtdeclarative-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5enginio/qt5enginio.hash b/package/qt5/qt5enginio/qt5enginio.hash
-index 9951834..95f507c 100644
---- a/package/qt5/qt5enginio/qt5enginio.hash
-+++ b/package/qt5/qt5enginio/qt5enginio.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtenginio-opensource-src-1.6.2.tar.xz.mirrorlist
--sha256 90ffc38d214a75ab0ef90a4760843f12bc073ae49c17de24c677d1d403bddcc3 qtenginio-opensource-src-1.6.2.tar.xz
-+sha256	627ddcfbbfc3ec1a83c9dbb5f24287b5cd6cb5d3b9d09af4d1c444c6ac147f0c	qtenginio-opensource-src-1.6.0.tar.xz
-diff --git a/package/qt5/qt5enginio/qt5enginio.mk b/package/qt5/qt5enginio/qt5enginio.mk
-index ada5fa7..b858d1c 100644
---- a/package/qt5/qt5enginio/qt5enginio.mk
-+++ b/package/qt5/qt5enginio/qt5enginio.mk
-@@ -6,7 +6,7 @@
- 
- # Qt5Enginio does not follow Qt versionning
- # see https://bugreports.qt.io/browse/QTBUG-50111
--QT5ENGINIO_VERSION = 1.6.2
-+QT5ENGINIO_VERSION = 1.6.0
- QT5ENGINIO_SITE = $(QT5_SITE)
- QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz
- QT5ENGINIO_DEPENDENCIES = openssl qt5base
-diff --git a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
-index ae29e3b..7c79a99 100644
---- a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
-+++ b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtgraphicaleffects-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 1e9f0fac2c72a812d396db74b2d9d12f513d2ec9135d5982ca85aee7f00be75e qtgraphicaleffects-opensource-src-5.6.2.tar.xz
-+sha256	c816539ce345e502425a94c624332df78f53aeebc460d76b53b79b59cb938de7	qtgraphicaleffects-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5imageformats/qt5imageformats.hash b/package/qt5/qt5imageformats/qt5imageformats.hash
-index 54b58e4..b65be40 100644
---- a/package/qt5/qt5imageformats/qt5imageformats.hash
-+++ b/package/qt5/qt5imageformats/qt5imageformats.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtimageformats-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 4fb153be62dac393cbcebab65040b3b9d6edecd1ebbe5e543401b0e45bd147e4 qtimageformats-opensource-src-5.6.2.tar.xz
-+sha256	ef3344a44194d1414be585f8c8a652ffe217c663a22b6e26d3bb5e114f3f62e5	qtimageformats-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5location/qt5location.hash b/package/qt5/qt5location/qt5location.hash
-index 374952f..074168e 100644
---- a/package/qt5/qt5location/qt5location.hash
-+++ b/package/qt5/qt5location/qt5location.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtlocation-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 7a8995206ed0220f943a33c037527a1a8243d5386f5ca77bf88152675c28d23a qtlocation-opensource-src-5.6.2.tar.xz
-+sha256	70273367342493a77c050f033a92d96e79925aa70308746e9681d8661f4aa865	qtlocation-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5multimedia/Config.in b/package/qt5/qt5multimedia/Config.in
-index 7549b35..59c3984 100644
---- a/package/qt5/qt5multimedia/Config.in
-+++ b/package/qt5/qt5multimedia/Config.in
-@@ -3,7 +3,6 @@ config BR2_PACKAGE_QT5MULTIMEDIA
- 	select BR2_PACKAGE_QT5BASE
- 	select BR2_PACKAGE_QT5BASE_GUI
- 	select BR2_PACKAGE_QT5BASE_NETWORK
--	select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL
- 	help
- 	  Qt is a cross-platform application and UI framework for
- 	  developers using C++.
-diff --git a/package/qt5/qt5multimedia/qt5multimedia.hash b/package/qt5/qt5multimedia/qt5multimedia.hash
-index 56a11fb..1a85f95 100644
---- a/package/qt5/qt5multimedia/qt5multimedia.hash
-+++ b/package/qt5/qt5multimedia/qt5multimedia.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtmultimedia-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 cb9a70a7c6c0eb5be4a3fcaf9590863479e95a255308bbf07d5b7aa303bb8caf qtmultimedia-opensource-src-5.6.2.tar.xz
-+sha256	05ae705bda224a600b06e390aa7b1448c4a6a52d2d37842d2121fb4a5d84b559	qtmultimedia-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
-index 6db589d..cf438f8 100644
---- a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
-+++ b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 5ed0f2292be10222dfb1b57a05472798fd759279f65455d91c02ef4fb746102c qtquickcontrols-opensource-src-5.6.2.tar.xz
-+sha256	d8e19a77100fff109585ccc62116e63dd11ce9486056a8eb5b64159b7ecdec32	qtquickcontrols-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
-index 0d85d48..c43afd7 100644
---- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
-+++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols2-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 09dc1710aa4701aebe145829eb99bab94d0870cf578f7dddcec0af92286dfec1 qtquickcontrols2-opensource-src-5.6.2.tar.xz
-+sha256	63f5b0777992c32bd602b88de657e202cd6d5e8ba0371c6d5da16fb8c7481045	qtquickcontrols2-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
-index a5ad3f6..23bbb2c 100644
---- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
-+++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
-@@ -31,10 +31,15 @@ define QT5QUICKCONTROLS2_INSTALL_STAGING_CMDS
- endef
- 
- define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS
--	cp -dpf $(STAGING_DIR)/usr/lib/libQt5LabsTemplates.so.* $(TARGET_DIR)/usr/lib
--	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs
-+	cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickTemplates2.so.* $(TARGET_DIR)/usr/lib
-+	cp -dpf $(STAGING_DIR)/usr/lib/libQt5QuickControls2.so.* $(TARGET_DIR)/usr/lib
- 	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs
--	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs
-+#	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/platform $(TARGET_DIR)/usr/qml/Qt/labs
-+	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/folderlistmodel $(TARGET_DIR)/usr/qml/Qt/labs
-+	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/settings $(TARGET_DIR)/usr/qml/Qt/labs
-+	cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Controls.2 $(TARGET_DIR)/usr/qml/QtQuick
-+	cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick/Templates.2 $(TARGET_DIR)/usr/qml/QtQuick
-+	$(QT5QUICKCONTROLS2_INSTALL_TARGET_EXAMPLES)
- endef
- 
- $(eval $(generic-package))
-diff --git a/package/qt5/qt5sensors/qt5sensors.hash b/package/qt5/qt5sensors/qt5sensors.hash
-index 65cd127..ec62e3b 100644
---- a/package/qt5/qt5sensors/qt5sensors.hash
-+++ b/package/qt5/qt5sensors/qt5sensors.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsensors-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 a7809081aab4f2f0d7a4f40c3abb02e1690bb390d1dd410d7c6c5019a5053427 qtsensors-opensource-src-5.6.2.tar.xz
-+sha256	283dcc66a24c4367e865fa8301b6ea04d0cb78bd0f166fd09a6bb42e1e3731be	qtsensors-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5serialbus/Config.in b/package/qt5/qt5serialbus/Config.in
-index f5b713d..504141c 100644
---- a/package/qt5/qt5serialbus/Config.in
-+++ b/package/qt5/qt5serialbus/Config.in
-@@ -1,6 +1,5 @@
- config BR2_PACKAGE_QT5SERIALBUS
- 	bool "qt5serialbus"
--	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD
- 	select BR2_PACKAGE_QT5BASE
- 	select BR2_PACKAGE_QT5SERIALPORT
- 	help
-@@ -10,6 +9,3 @@ config BR2_PACKAGE_QT5SERIALBUS
- 	  This package corresponds to the qt5serialbus module.
- 
- 	  http://qt.io
--
--comment "qt5serialbus needs headers >= 3.6"
--	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
-diff --git a/package/qt5/qt5serialbus/qt5serialbus.hash b/package/qt5/qt5serialbus/qt5serialbus.hash
-index 308c365..0597219 100644
---- a/package/qt5/qt5serialbus/qt5serialbus.hash
-+++ b/package/qt5/qt5serialbus/qt5serialbus.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialbus-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 b39260091691532382935ed51de9ead8e66cfb5f7a6e5410c17cd0695ccaf826 qtserialbus-opensource-src-5.6.2.tar.xz
-+sha256	2c437ace393e9dcf170990b519cec59c5cbcfc3c830e46116abb52549dc15d38	qtserialbus-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5serialport/qt5serialport.hash b/package/qt5/qt5serialport/qt5serialport.hash
-index 2458e5d..7751d64 100644
---- a/package/qt5/qt5serialport/qt5serialport.hash
-+++ b/package/qt5/qt5serialport/qt5serialport.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialport-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 af76281bad2c2bd283189635316b46091f6712134b845ae1b9e3016eec94f376 qtserialport-opensource-src-5.6.2.tar.xz
-+sha256	5ce150d843a243854736489d4a71205a8ca8dc8f93626ec29d1aa7a249a08265	qtserialport-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5svg/qt5svg.hash b/package/qt5/qt5svg/qt5svg.hash
-index 0c9e9eb..0c3a9ff 100644
---- a/package/qt5/qt5svg/qt5svg.hash
-+++ b/package/qt5/qt5svg/qt5svg.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsvg-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 f7a361bf661b31ae7779513559dd0b774171911bc57f5cfb6bed6878ddc8bc4e qtsvg-opensource-src-5.6.2.tar.xz
-+sha256	a1f89f035aed48bf8843ff1880c4b54dc2e3a5160dbd743aec03e13831cdd881	qtsvg-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
-new file mode 100644
-index 0000000..61cbdfe
---- /dev/null
-+++ b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
-@@ -0,0 +1,30 @@
-+From acdb24783322bb6e69df61cf04df2b2e47a06ad2 Mon Sep 17 00:00:00 2001
-+From: Peter Seiderer <ps.report@gmx.net>
-+Date: Tue, 29 Mar 2016 13:37:09 +0200
-+Subject: [PATCH] Disable qdoc (needs qtdeclarative).
-+
-+Fixes:
-+
-+  Project ERROR: Unknown module(s) in QT: qmldevtools-private
-+  Makefile:63: recipe for target 'sub-qdoc-qmake_all' failed
-+
-+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
-+---
-+ src/src.pro | 1 -
-+ 1 file changed, 1 deletion(-)
-+
-+diff --git a/src/src.pro b/src/src.pro
-+index 387d54f..494898f 100644
-+--- a/src/src.pro
-++++ b/src/src.pro
-+@@ -14,7 +14,6 @@ qtHaveModule(widgets) {
-+ }
-+ 
-+ SUBDIRS += linguist \
-+-    qdoc \
-+     qtplugininfo
-+ if(!android|android_app):!ios: SUBDIRS += qtpaths
-+ 
-+-- 
-+2.1.4
-+
-diff --git a/package/qt5/qt5tools/qt5tools.hash b/package/qt5/qt5tools/qt5tools.hash
-deleted file mode 100644
-index cc11b28..0000000
---- a/package/qt5/qt5tools/qt5tools.hash
-+++ /dev/null
-@@ -1,2 +0,0 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz
-diff --git a/package/qt5/qt5tools/qt5tools.hash__ b/package/qt5/qt5tools/qt5tools.hash__
-new file mode 100644
-index 0000000..cc11b28
---- /dev/null
-+++ b/package/qt5/qt5tools/qt5tools.hash__
-@@ -0,0 +1,2 @@
-+# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist
-+sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz
-diff --git a/package/qt5/qt5virtualkeyboard/Config.in b/package/qt5/qt5virtualkeyboard/Config.in
-new file mode 100644
-index 0000000..803b937
---- /dev/null
-+++ b/package/qt5/qt5virtualkeyboard/Config.in
-@@ -0,0 +1,10 @@
-+config BR2_PACKAGE_QT5VIRTUALKEYBOARD
-+	bool "qt5virtualkeyboard"
-+	select BR2_PACKAGE_QT5BASE
-+	help
-+	  Qt is a cross-platform application and UI framework for
-+	  developers using C++.
-+
-+	  This package corresponds to the qt5virtualkeyboard module.
-+
-+	  http://qt.io
-\ No newline at end of file
-diff --git a/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
-new file mode 100644
-index 0000000..bedefc5
---- /dev/null
-+++ b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
-@@ -0,0 +1,39 @@
-+################################################################################
-+#
-+# qt5virtualkeyboard
-+#
-+################################################################################
-+
-+QT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION)
-+QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE)
-+QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-opensource-src-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz
-+QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5base qt5declarative
-+QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
-+QT5VIRTUALKEYBOARD_LICENSE = GPLv3
-+QT5VIRTUALKEYBOARD_LICENSE_FILES = LICENSE.GPL3
-+else
-+QT5VIRTUALKEYBOARD_LICENSE = Commercial license
-+QT5VIRTUALKEYBOARD_REDISTRIBUTE = NO
-+endif
-+
-+define QT5VIRTUALKEYBOARD_CONFIGURE_CMDS
-+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake CONFIG+=disable-desktop) 
-+endef
-+
-+define QT5VIRTUALKEYBOARD_BUILD_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
-+endef
-+
-+define QT5VIRTUALKEYBOARD_INSTALL_STAGING_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
-+endef
-+
-+define QT5VIRTUALKEYBOARD_INSTALL_TARGET_CMDS
-+	cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so $(TARGET_DIR)/usr/lib/qt/plugins/platforminputcontexts
-+	cp -dpfrv $(STAGING_DIR)/usr/qml/QtQuick/VirtualKeyboard $(TARGET_DIR)/usr/qml/QtQuick/
-+
-+endef
-+
-+$(eval $(generic-package))
-diff --git a/package/qt5/qt5wayland/Config.in b/package/qt5/qt5wayland/Config.in
-new file mode 100644
-index 0000000..dbb67b7
---- /dev/null
-+++ b/package/qt5/qt5wayland/Config.in
-@@ -0,0 +1,14 @@
-+config BR2_PACKAGE_QT5WAYLAND
-+	bool "qt5wayland"
-+	select BR2_PACKAGE_QT5BASE
-+	select BR2_PACKAGE_QT5DECLARATIVE
-+	select BR2_PACKAGE_QT5JSBACKEND
-+	depends on BR2_PACKAGE_WAYLAND
-+	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-+	help
-+	  Qt is a cross-platform application and UI framework for
-+	  developers using C++.
-+
-+	  This package corresponds to the qt5wayland module.
-+
-+	  http://qt.io
-\ No newline at end of file
-diff --git a/package/qt5/qt5wayland/qt5wayland.mk b/package/qt5/qt5wayland/qt5wayland.mk
-new file mode 100644
-index 0000000..436934d
---- /dev/null
-+++ b/package/qt5/qt5wayland/qt5wayland.mk
-@@ -0,0 +1,35 @@
-+#	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake -r CONFIG+=wayland-compositor )
-+################################################################################
-+#
-+# qt5wayland
-+#
-+################################################################################
-+
-+QT5WAYLAND_VERSION = $(QT5_VERSION)
-+QT5WAYLAND_SITE = $(QT5_SITE)
-+QT5WAYLAND_SOURCE = qtwayland-opensource-src-$(QT5WAYLAND_VERSION).tar.xz
-+QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland
-+ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
-+QT5WAYLAND_DEPENDENCIES += libegl
-+endif
-+QT5WAYLAND_INSTALL_STAGING = YES
-+
-+define QT5WAYLAND_CONFIGURE_CMDS
-+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
-+endef
-+
-+define QT5WAYLAND_BUILD_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
-+endef
-+
-+define QT5WAYLAND_INSTALL_STAGING_CMDS
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
-+endef
-+
-+define QT5WAYLAND_INSTALL_TARGET_CMDS
-+	cp -dpf $(STAGING_DIR)/usr/lib/libQt5WaylandClient.so* $(TARGET_DIR)/usr/lib
-+	cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/wayland-*-client $(TARGET_DIR)/usr/lib/qt/plugins
-+	cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforms/libqwayland-*.so $(TARGET_DIR)/usr/lib/qt/plugins/platforms
-+endef
-+
-+$(eval $(generic-package))
-diff --git a/package/qt5/qt5webchannel/qt5webchannel.hash b/package/qt5/qt5webchannel/qt5webchannel.hash
-index 0f9eaae..c4fc230 100644
---- a/package/qt5/qt5webchannel/qt5webchannel.hash
-+++ b/package/qt5/qt5webchannel/qt5webchannel.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebchannel-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 700efdef5f51bdb77093f4db212afe275ad35a710ea08ba0e9e9cbc8f09f1a52 qtwebchannel-opensource-src-5.6.2.tar.xz
-+sha256	3ab4cd177cc742ee5015f2b7f943c16ce13380b840f824436b5005485b749816	qtwebchannel-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
-new file mode 100644
-index 0000000..f3d5bda
---- /dev/null
-+++ b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
-@@ -0,0 +1,14 @@
-+--- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp	2016-05-26 15:53:47.000000000 +0200
-++++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp	2016-11-19 00:19:49.894527354 +0100
-+@@ -39,6 +39,11 @@
-+ 
-+ #include <sys/mman.h>
-+ 
-++#if OS(LINUX) && defined(MADV_FREE)
-++// glibc 2.24 issues in qtwebengine
-++#undef MADV_FREE
-++#endif
-++
-+ #ifndef MADV_FREE
-+ #define MADV_FREE MADV_DONTNEED
-+ #endif
-diff --git a/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
-new file mode 100644
-index 0000000..c7bdcff
---- /dev/null
-+++ b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
-@@ -0,0 +1,20 @@
-+--- a/src/core/delegated_frame_node.cpp	2016-03-03 17:02:28.000000000 +0100
-++++ b/src/core/delegated_frame_node.cpp	2016-04-09 21:01:03.502390661 +0200
-+@@ -194,7 +194,7 @@
-+     case gfx::TransferableFence::NoSync:
-+         break;
-+     case gfx::TransferableFence::EglSync:
-+-#ifdef EGL_KHR_reusable_sync
-++#ifdef EGL_KHR_fence_sync
-+     {
-+         static bool resolved = false;
-+         static PFNEGLCLIENTWAITSYNCKHRPROC eglClientWaitSyncKHR = 0;
-+@@ -235,7 +235,7 @@
-+     case gfx::TransferableFence::NoSync:
-+         break;
-+     case gfx::TransferableFence::EglSync:
-+-#ifdef EGL_KHR_reusable_sync
-++#ifdef EGL_KHR_fence_sync
-+     {
-+         static bool resolved = false;
-+         static PFNEGLDESTROYSYNCKHRPROC eglDestroySyncKHR = 0;
-diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in
-new file mode 100644
-index 0000000..b630a85
---- /dev/null
-+++ b/package/qt5/qt5webengine/Config.in
-@@ -0,0 +1,17 @@
-+config BR2_PACKAGE_QT5WEBENGINE
-+	bool "qt5webengine"
-+	select BR2_PACKAGE_QT5BASE
-+	select BR2_PACKAGE_QT5BASE_GUI
-+#	select BR2_PACKAGE_QT5BASE_FONTCONFIG
-+	select BR2_PACKAGE_QT5BASE_DBUS
-+	select BR2_PACKAGE_QT5BASE_ICU
-+	select BR2_PACKAGE_QT5WEBCHANNEL
-+	select BR2_PACKAGE_OPENSSL
-+	select BR2_PACKAGE_LIBCAP
-+	select BR2_PACKAGE_QT5DECLARATIVE
-+	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
-+	help
-+	Qt is a cross-platform application and UI framework for
-+	developers using C++.
-+	
-+	 This package corresponds to the qt5webengine module.
-diff --git a/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
-new file mode 100644
-index 0000000..bb8aa69
---- /dev/null
-+++ b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
-@@ -0,0 +1,26 @@
-+diff '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*ninja*' -Naur qt5_a/src/3rdparty/chromium/build/common.gypi qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi
-+--- qt5_a/src/3rdparty/chromium/build/common.gypi	2015-10-13 06:36:43.000000000 +0200
-++++ qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi	2016-02-09 16:37:54.729166157 +0100
-+@@ -2294,7 +2294,7 @@
-+           }],
-+         ],
-+         # Change the default to hard once the armhf transition is complete.
-+-        'arm_float_abi%': 'softfp',
-++        'arm_float_abi%': 'hard',
-+         'arm_thumb%': 1,
-+       }],
-+ 
-+--- qt5webengine-5.5.1/tools/qmake/mkspecs/features/functions.prf	2015-10-13 06:36:55.000000000 +0200
-++++ qt5_we_b/tools/qmake/mkspecs/features/functions.prf	2016-02-09 21:44:30.829783885 +0100
-+@@ -12,9 +12,9 @@
-+     return(false)
-+   }
-+ 
-+-  linux-g++*:!isGCCVersionSupported(): return(false)
-++  linux*g++*:!isGCCVersionSupported(): return(false)
-+   !isPythonVersionSupported(): return(false)
-+-  linux-g++*|win32-msvc2013|macx-clang: return(true)
-++  linux*g++*|win32-msvc2013|macx-clang: return(true)
-+   boot2qt: return(true)
-+ 
-+   skipBuild("Qt WebEngine can currently only be built for Linux (GCC), Windows (MSVC 2013), OS X (XCode 5.1+) or Qt for Device Creation.")
-diff --git a/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
-new file mode 100644
-index 0000000..b780f49
---- /dev/null
-+++ b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
-@@ -0,0 +1,11 @@
-+--- a/src/3rdparty/chromium/v8/tools/js2c.py	2016-03-03 15:48:36.000000000 +0100
-++++ b/src/3rdparty/chromium/v8/tools/js2c.py	2016-04-28 15:56:42.219174252 +0200
-+@@ -34,7 +34,7 @@
-+ import os, re, sys, string
-+ import optparse
-+ import jsmin
-+-import bz2
-++##import bz2
-+ import textwrap
-+ 
-+ 
-diff --git a/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
-new file mode 100644
-index 0000000..a917a9c
---- /dev/null
-+++ b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
-@@ -0,0 +1,43 @@
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h	2015-10-13 06:36:26.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h	2016-02-11 12:06:28.304679220 +0100
-+@@ -57,7 +57,7 @@
-+  *  This value will change in the subsequent releases of ICU
-+  *  @stable ICU 2.4
-+  */
-+-#define U_ICU_VERSION_MAJOR_NUM 52
-++#define U_ICU_VERSION_MAJOR_NUM 56
-+ 
-+ /** The current ICU minor version as an integer.
-+  *  This value will change in the subsequent releases of ICU
-+@@ -83,7 +83,7 @@
-+  *  This value will change in the subsequent releases of ICU
-+  *  @stable ICU 2.6
-+  */
-+-#define U_ICU_VERSION_SUFFIX _52
-++#define U_ICU_VERSION_SUFFIX _56
-+ 
-+ /**
-+  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
-+@@ -118,19 +118,19 @@
-+  *  This value will change in the subsequent releases of ICU
-+  *  @stable ICU 2.4
-+  */
-+-#define U_ICU_VERSION "52.1"
-++#define U_ICU_VERSION "56.1"
-+ 
-+ /** The current ICU library major/minor version as a string without dots, for library name suffixes.
-+  *  This value will change in the subsequent releases of ICU
-+  *  @stable ICU 2.6
-+  */
-+-#define U_ICU_VERSION_SHORT "52"
-++#define U_ICU_VERSION_SHORT "56"
-+ 
-+ #ifndef U_HIDE_INTERNAL_API
-+ /** Data version in ICU4C.
-+  * @internal ICU 4.4 Internal Use Only
-+  **/
-+-#define U_ICU_DATA_VERSION "52.1"
-++#define U_ICU_DATA_VERSION "56.1"
-+ #endif  /* U_HIDE_INTERNAL_API */
-+ 
-+ /*===========================================================================
-diff --git a/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
-new file mode 100644
-index 0000000..8d633d9
---- /dev/null
-+++ b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
-@@ -0,0 +1,14 @@
-+--- qt5webengine-5.5.1/src/core/delegated_frame_node.cpp	2015-10-13 06:36:54.000000000 +0200
-++++ qt5_b/src/core/delegated_frame_node.cpp	2016-02-11 13:27:42.142167151 +0100
-+@@ -76,6 +76,11 @@
-+ #include <EGL/eglext.h>
-+ #endif
-+ 
-++#ifdef EGL_KHR_reusable_sync
-++#undef EGL_KHR_reusable_sync
-++#endif
-++
-++
-+ namespace QtWebEngineCore {
-+ 
-+ class MailboxTexture : public QSGTexture, protected QOpenGLFunctions {
-diff --git a/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
-new file mode 100644
-index 0000000..604cb88
---- /dev/null
-+++ b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
-@@ -0,0 +1,166 @@
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc	2015-10-13 06:36:48.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc	2016-02-12 17:58:52.694043375 +0100
-+@@ -142,7 +142,7 @@
-+ }
-+ 
-+ TEST_F(FileProxyTest, CreateOrOpen_AbandonedCreate) {
-+-  bool prev = ThreadRestrictions::SetIOAllowed(false);
-++  bool prev = ThreadRestrictions::SetIOAllowed(true);
-+   {
-+     FileProxy proxy(file_task_runner());
-+     proxy.CreateOrOpen(
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc	2015-10-13 06:36:47.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc	2016-02-12 17:53:52.118534482 +0100
-+@@ -745,7 +745,7 @@
-+ 
-+   // If the UI thread blocks, the whole UI is unresponsive.
-+   // Do not allow disk IO from the UI thread.
-+-  base::ThreadRestrictions::SetIOAllowed(false);
-++  base::ThreadRestrictions::SetIOAllowed(true);
-+   base::ThreadRestrictions::DisallowWaiting();
-+   return result_code_;
-+ }
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc	2015-10-13 06:36:46.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc	2016-02-12 17:52:40.717701092 +0100
-+@@ -39,7 +39,7 @@
-+     // Though this thread is called the "IO" thread, it actually just routes
-+     // messages around; it shouldn't be allowed to perform any blocking disk
-+     // I/O.
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+     base::ThreadRestrictions::DisallowWaiting();
-+   }
-+ }
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc	2015-10-13 06:36:51.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc	2016-02-12 17:57:04.280777854 +0100
-+@@ -39,7 +39,7 @@
-+ 
-+   virtual void SetUp() {
-+     // Make the main thread not to allow IO.
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+ 
-+     // Start the D-Bus thread.
-+     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc	2015-10-13 06:36:51.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc	2016-02-12 17:54:33.659019384 +0100
-+@@ -61,7 +61,7 @@
-+ 
-+   virtual void SetUp() {
-+     // Make the main thread not to allow IO.
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+ 
-+     // Start the D-Bus thread.
-+     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc	2015-10-13 06:36:51.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc	2016-02-12 17:57:54.025358691 +0100
-+@@ -51,7 +51,7 @@
-+ 
-+   virtual void SetUp() {
-+     // Make the main thread not to allow IO.
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+ 
-+     // Start the D-Bus thread.
-+     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc	2015-10-13 06:36:51.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc	2016-02-12 17:55:57.519998395 +0100
-+@@ -32,7 +32,7 @@
-+     base::StatisticsRecorder::Initialize();
-+ 
-+     // Make the main thread not to allow IO.
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+ 
-+     // Start the D-Bus thread.
-+     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
-+@@ -161,7 +161,7 @@
-+   void SafeServiceStop(TestService* test_service) {
-+     base::ThreadRestrictions::SetIOAllowed(true);
-+     test_service->Stop();
-+-    base::ThreadRestrictions::SetIOAllowed(false);
-++    base::ThreadRestrictions::SetIOAllowed(true);
-+   }
-+ 
-+   base::MessageLoop message_loop_;
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc	2015-10-13 06:36:53.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc	2016-02-12 18:00:05.358889970 +0100
-+@@ -758,7 +758,7 @@
-+   scoped_refptr<base::SequencedWorkerPool> pool(
-+       new base::SequencedWorkerPool(1, "StreamTest"));
-+ 
-+-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
-++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
-+   scoped_ptr<FileStream> stream(new FileStream(pool.get()));
-+   int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
-+               base::File::FLAG_ASYNC;
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc	2015-10-13 06:36:53.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc	2016-02-12 18:00:56.359484236 +0100
-+@@ -67,7 +67,7 @@
-+ void NetworkConfigWatcherMacThread::Init() {
-+   // Disallow IO to make sure NetworkConfigWatcherMacThread's helper thread does
-+   // not perform blocking operations.
-+-  base::ThreadRestrictions::SetIOAllowed(false);
-++  base::ThreadRestrictions::SetIOAllowed(true);
-+ 
-+   delegate_->Init();
-+ 
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc
-+--- qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc	2015-10-13 06:36:53.000000000 +0200
-++++ qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc	2016-02-12 18:02:24.724514006 +0100
-+@@ -463,7 +463,7 @@
-+       base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
-+   net::TestCompletionCallback cb;
-+ 
-+-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
-++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
-+   scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl(
-+       cache_path_, cache_thread.task_runner(), NULL));
-+   int rv = cache->Init(cb.callback());
-+@@ -1972,7 +1972,7 @@
-+       base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
-+ 
-+   net::TestCompletionCallback cb;
-+-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
-++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
-+   base::FilePath path(cache_path_);
-+   int rv = disk_cache::CreateCacheBackend(net::DISK_CACHE,
-+                                           net::CACHE_BACKEND_BLOCKFILE,
-+diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/core/gl_surface_qt.cpp qt5_b/src/core/gl_surface_qt.cpp
-+--- qt5webengine-5.5.1/src/core/gl_surface_qt.cpp	2015-10-13 06:36:54.000000000 +0200
-++++ qt5_b/src/core/gl_surface_qt.cpp	2016-02-14 11:38:43.661776602 +0100
-+@@ -513,15 +513,20 @@
-+         return NULL;
-+ #endif
-+     }
-+-    case kGLImplementationEGLGLES2: {
-++   case kGLImplementationEGLGLES2: {
-+         scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
-+         if (!surface->Initialize())
-+             return NULL;
-+         return surface;
-+     }
-+-    default:
-+-        Q_UNREACHABLE();
-+-        return NULL;
-++    default: {
-++        scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
-++        if (!surface->Initialize())
-++            return NULL;
-++        return surface;
-++    }
-++//        Q_UNREACHABLE();
-++//        return NULL;
-+     }
-+ }
-+ 
-diff --git a/package/qt5/qt5webengine/qt5webengine.__hash b/package/qt5/qt5webengine/qt5webengine.__hash
-new file mode 100644
-index 0000000..b5ecd88
---- /dev/null
-+++ b/package/qt5/qt5webengine/qt5webengine.__hash
-@@ -0,0 +1,2 @@
-+# Hash from: http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/qtwebengine-opensource-src-5.5.1.tar.xz.mirrorlist
-+sha256 7c4d328dd305991aaf0c3450615f4a8e5d80152194bee6f5925bd8d3477e2b90 qtwebengine-opensource-src-5.5.1.tar.xz
-diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
-new file mode 100644
-index 0000000..98c67a6
---- /dev/null
-+++ b/package/qt5/qt5webengine/qt5webengine.mk
-@@ -0,0 +1,70 @@
-+################################################################################
-+#
-+# qt5webengine
-+#
-+################################################################################
-+
-+QT5WEBENGINE_VERSION = $(QT5_VERSION)
-+QT5WEBENGINE_SITE = $(QT5_SITE)
-+QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz
-+QT5WEBENGINE_DEPENDENCIES = qt5base qt5declarative qt5webchannel libcap openssl host-gperf
-+QT5WEBENGINE_INSTALL_STAGING = YES
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
-+QT5WEBENGINE_LICENSE = GPLv3 with exception or LGPLv3 or GPLv2
-+# Source files contain references to LGPL_EXCEPTION.txt but it is not included
-+# in the archive.
-+QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.GPLv3 LICENSE.LGPL3
-+else
-+QT5WEBENGINE_LICENSE = Commercial license
-+QT5WEBENGINE_REDISTRIBUTE = NO
-+endif
-+
-+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
-+QT5WEBENGINE_DEPENDENCIES += qt5declarative
-+endif
-+
-+define QT5WEBENGINE_CONFIGURE_CMDS
-+ (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake WEBENGINE_CONFIG+=use_proprietary_codecs)
-+endef
-+
-+define QT5WEBENGINE_BUILD_CMDS
-+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
-+endef
-+
-+define QT5WEBENGINE_INSTALL_STAGING_CMDS
-+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
-+ $(QT5_LA_PRL_FILES_FIXUP)
-+endef
-+
-+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
-+define QT5WEBENGINE_INSTALL_TARGET_QMLS
-+ cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
-+endef
-+endif
-+
-+ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)
-+define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES
-+ cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/
-+endef
-+endif
-+
-+ifneq ($(BR2_STATIC_LIBS),y)
-+define QT5WEBENGINE_INSTALL_TARGET_LIBS
-+ cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
-+ #cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/qtwebengine $(TARGET_DIR)/usr/lib/qt/plugins/
-+ cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/
-+ mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales
-+ cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales/* $(TARGET_DIR)/usr/translations/qtwebengine_locales/
-+ mkdir -p $(TARGET_DIR)/usr/resources
-+ cp -dpfr $(STAGING_DIR)/usr/resources/* $(TARGET_DIR)/usr/resources/
-+endef
-+endif
-+
-+define QT5WEBENGINE_INSTALL_TARGET_CMDS
-+ $(QT5WEBENGINE_INSTALL_TARGET_LIBS)
-+ $(QT5WEBENGINE_INSTALL_TARGET_QMLS)
-+ $(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES)
-+endef
-+
-+$(eval $(generic-package))
-diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
-new file mode 100644
-index 0000000..b7b6791
---- /dev/null
-+++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
-@@ -0,0 +1,34 @@
-+From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
-+From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
-+Date: Mon, 22 Feb 2016 10:57:32 +0100
-+Subject: [PATCH] Fix linking with libpthread
-+
-+WebKit use libpthread directly but is depending on other qt modules
-+causing it to be linked against, which might break unless -lpthread
-+is last. Instead just add it explicitly after the static libraries.
-+
-+Upstream-Status: Backport from 5.7 branch
-+
-+Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
-+Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
-+Signed-off-by: Jonathan Liu <net147@gmail.com>
-+Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
-+---
-+ Tools/qmake/mkspecs/features/default_post.prf | 1 +
-+ 1 file changed, 1 insertion(+)
-+
-+diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
-+index 67276b7..39bb3f7 100644
-+--- a/Tools/qmake/mkspecs/features/default_post.prf
-++++ b/Tools/qmake/mkspecs/features/default_post.prf
-+@@ -201,6 +201,7 @@ needToLink() {
-+         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
-+         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
-+     }
-++    posix:!darwin: LIBS += -lpthread
-+ }
-+ 
-+ creating_module {
-+-- 
-+2.7.1
-+
-diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
-index 48aaf94..7add5f9 100644
---- a/package/qt5/qt5webkit/Config.in
-+++ b/package/qt5/qt5webkit/Config.in
-@@ -23,6 +23,6 @@ config BR2_PACKAGE_QT5WEBKIT
- 	  http://qt.io
- 
- comment "qt5webkit needs a toolchain w/ dynamic library"
--	depends on BR2_STATIC_LIBS
--	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
--	depends on !BR2_BINFMT_FLAT
-+        depends on BR2_STATIC_LIBS
-+        depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
-+        depends on !BR2_BINFMT_FLAT
-diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
-index 96b8bdd..47e93c0 100644
---- a/package/qt5/qt5webkit/qt5webkit.hash
-+++ b/package/qt5/qt5webkit/qt5webkit.hash
-@@ -1,2 +1 @@
--# locally computed
--sha256 bdd659573e7e75cd4ad57b7160a7353d98d21a6fef06e4fb9e114a5b1f1e9dab qt5webkit-b35917bcb44d7f200af0f4ac68a126fa0aa8d93d.tar.gz
-+sha256	1c79843ef32313312290d4fe0b87256a9129dc44d62b01789a692981edf4d8ab	qt5webkit-d2ff5a085572b1ee24dcb42ae107063f3142d14e.tar.gz
-diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
-index 378cdf7..629e40a 100644
---- a/package/qt5/qt5webkit/qt5webkit.mk
-+++ b/package/qt5/qt5webkit/qt5webkit.mk
-@@ -4,13 +4,11 @@
- #
- ################################################################################
- 
--QT5WEBKIT_VERSION = b35917bcb44d7f200af0f4ac68a126fa0aa8d93d
-+QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
- # Using GitHub since it supports downloading tarballs from random commits.
- # The http://code.qt.io/cgit/qt/qtwebkit.git/ repo doesn't allow to do so.
- QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
--QT5WEBKIT_DEPENDENCIES = \
--	host-bison host-flex host-gperf host-python host-ruby \
--	qt5base sqlite
-+QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
- QT5WEBKIT_INSTALL_STAGING = YES
- 
- QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
-@@ -33,16 +31,6 @@ ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
- QT5WEBKIT_DEPENDENCIES += qt5declarative
- endif
- 
--# QtWebkit's build system uses python, but only supports python2. We work
--# around this by forcing python2 early in the PATH, via a python->python2
--# symlink.
--QT5WEBKIT_ENV = PATH=$(@D)/host-bin:$(BR_PATH)
--define QT5WEBKIT_PYTHON2_SYMLINK
--	mkdir -p $(@D)/host-bin
--	ln -sf $(HOST_DIR)/usr/bin/python2 $(@D)/host-bin/python
--endef
--QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
--
- # Since we get the source from git, generated header files are not included.
- # qmake detects that header file generation (using the syncqt tool) must be
- # done based on the existence of a .git directory (cfr. the git_build config
-@@ -51,15 +39,15 @@ QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
- # create an empty .git directory.
- define QT5WEBKIT_CONFIGURE_CMDS
- 	mkdir -p $(@D)/.git
--	(cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/usr/bin/qmake)
-+	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
- endef
- 
- define QT5WEBKIT_BUILD_CMDS
--	$(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D)
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
- endef
- 
- define QT5WEBKIT_INSTALL_STAGING_CMDS
--	$(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D) install
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
- 	$(QT5_LA_PRL_FILES_FIXUP)
- endef
- 
-diff --git a/package/qt5/qt5websockets/qt5websockets.hash b/package/qt5/qt5websockets/qt5websockets.hash
-index 3443476..067bd6f 100644
---- a/package/qt5/qt5websockets/qt5websockets.hash
-+++ b/package/qt5/qt5websockets/qt5websockets.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebsockets-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 3cd9d4bbff8e6be5e252f00fc9ecb9ac2d8a193020288c7d1e82583daeb5ba35 qtwebsockets-opensource-src-5.6.2.tar.xz
-+sha256	741be11a907f82807a786e6a53ae7316c0b3864491b692e8719c381e0f158b43	qtwebsockets-opensource-src-5.7.0.tar.xz
-diff --git a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
-index fa4e97f..f0f369d 100644
---- a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
-+++ b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
-@@ -1,2 +1 @@
--# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtxmlpatterns-opensource-src-5.6.2.tar.xz.mirrorlist
--sha256 7c6df3eebf188d8ce6822a22cebbc63da5ac27047cf1bd7236d5b988244782cc qtxmlpatterns-opensource-src-5.6.2.tar.xz
-+sha256	38882a4ea5d711be07d10695759359045f7f9d64727a65e1d5e6515d55c7e20b	qtxmlpatterns-opensource-src-5.7.0.tar.xz
-diff --git a/package/ti-gfx/S80ti-gfx b/package/ti-gfx/S80ti-gfx
-index fc5999a..a204815 100644
---- a/package/ti-gfx/S80ti-gfx
-+++ b/package/ti-gfx/S80ti-gfx
-@@ -3,6 +3,8 @@
- start() {
- 	echo "ti-gfx: starting pvr driver"
- 
-+	TMPFB=`mktemp`
-+	cat /dev/fb0 > $TMPFB
- 	BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')"
- 	YRES="$(fbset | awk '/geom/ {print $3}')"
- 	# Set RGBA ordering to something the drivers like
-@@ -22,6 +24,14 @@ start() {
- 	mknod /dev/pvrsrvkm c $pvr_maj 0
- 	chmod 600 /dev/pvrsrvkm
- 
-+	#-- cursor off	
-+	echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty0
-+	# -- disa screensaver
-+	echo 0 > /sys/class/graphics/fb0/blank
-+	
-+	cat $TMPFB > /dev/fb0
-+	rm $TMPFB
-+	
- 	if ! /usr/bin/pvrsrvctl --start --no-module; then
- 		echo "ti-gfx: unable to start server"
- 	fi
-diff --git a/package/ti-gfx/powervr.ini b/package/ti-gfx/powervr.ini
-index 8d2d853..cceecdd 100644
---- a/package/ti-gfx/powervr.ini
-+++ b/package/ti-gfx/powervr.ini
-@@ -1,2 +1,4 @@
- [default]
--WindowSystem=libpvrPVR2D_FRONTWSEGL.so
-+#WindowSystem=libpvrPVR2D_FRONTWSEGL.so
-+WindowSystem=libpvrPVR2D_FLIPWSEGL.so
-+ParamBufferSize=16777216
-diff --git a/package/ti-sgx-km/ti-sgx-km.mk b/package/ti-sgx-km/ti-sgx-km.mk
-index 48c8a6d..05e1cca 100644
---- a/package/ti-sgx-km/ti-sgx-km.mk
-+++ b/package/ti-sgx-km/ti-sgx-km.mk
-@@ -5,7 +5,8 @@
- ################################################################################
- 
- # This correpsonds to SDK 02.00.00.00
--TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
-+#TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
-+TI_SGX_KM_VERSION = remotes/origin/ti-img-sgx/1.14.3699939/k4.4
- TI_SGX_KM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-linux.git
- TI_SGX_KM_LICENSE = GPLv2
- TI_SGX_KM_LICENSE_FILES = GPL-COPYING
-@@ -18,7 +19,7 @@ TI_SGX_KM_MAKE_OPTS = \
- 	PVR_NULLDRM=1
- 
- ifeq ($(BR2_PACKAGE_TI_SGX_AM335X),y)
--TI_SGX_KM_PLATFORM_NAME = omap335x
-+TI_SGX_KM_PLATFORM_NAME = omap
- else ifeq ($(BR2_PACKAGE_TI_SGX_AM437X),y)
- TI_SGX_KM_PLATFORM_NAME = omap437x
- else ifeq ($(BR2_PACKAGE_TI_SGX_AM4430),y)
-@@ -38,6 +39,8 @@ define TI_SGX_KM_INSTALL_TARGET_CMDS
- 	$(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \
- 		DISCIMAGE=$(TARGET_DIR) \
- 		kbuild_install -C $(@D)/$(TI_SGX_KM_SUBDIR)
-+		echo ">>>>>>>>>"
-+		sleep 10
- endef
- 
- $(eval $(generic-package))
-diff --git a/package/ti-sgx-um/ti-sgx-um.mk b/package/ti-sgx-um/ti-sgx-um.mk
-index d5c50a0..76a7663 100644
---- a/package/ti-sgx-um/ti-sgx-um.mk
-+++ b/package/ti-sgx-um/ti-sgx-um.mk
-@@ -6,6 +6,7 @@
- 
- # This correpsonds to SDK 02.00.00.00
- TI_SGX_UM_VERSION = e15f1543bab4de9e8927a2c4934addf3fd16ffcb
-+#TI_SGX_UM_VERSION = glsdk_7.04.00.03
- TI_SGX_UM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git
- TI_SGX_UM_LICENSE = TI TSPA License
- TI_SGX_UM_LICENSE_FILES = OMAP5-Linux-Graphics-DDK-UM-Manifest.doc
-diff --git a/package/tinc/tinc.hash b/package/tinc/tinc.hash
-index 0cccbbf..ca0ff41 100644
---- a/package/tinc/tinc.hash
-+++ b/package/tinc/tinc.hash
-@@ -1,2 +1,2 @@
- # Locally calculated after checking pgp signature
--sha256	0b502699360f09ce2128a39cf02abca07bfc699fc02ce829b3a90cf5e1e8b344	tinc-1.0.28.tar.gz
-+sha256	d3cbc82e6e07975a2ccc0b369d07e30fc3324e71e240dca8781ce9a4f629519b	tinc-1.0.31.tar.gz
-diff --git a/package/tinc/tinc.mk b/package/tinc/tinc.mk
-index fb15c34..3cc05fa 100644
---- a/package/tinc/tinc.mk
-+++ b/package/tinc/tinc.mk
-@@ -4,7 +4,7 @@
- #
- ################################################################################
- 
--TINC_VERSION = 1.0.28
-+TINC_VERSION = 1.0.31
- TINC_SITE = http://www.tinc-vpn.org/packages
- TINC_DEPENDENCIES = lzo openssl zlib
- TINC_LICENSE = GPLv2+ with OpenSSL exception
--- 
-2.7.4
-

+ 1437 - 0
patches/0001-Helper-Scripts.patch

@@ -0,0 +1,1437 @@
+diff --git a/CrossCompile.sh b/CrossCompile.sh
+new file mode 100755
+index 0000000..c068ea1
+--- /dev/null
++++ b/CrossCompile.sh
+@@ -0,0 +1,91 @@
++#! /bin/bash
++#
++#
++
++WRKDIR=`pwd`
++CMDDIR=`dirname \`readlink -f $0\``
++cd $CMDDIR
++
++#=== Asssign GNU_TARGET_NAME from .config
++_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
++_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
++
++# -- get target os
++_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
++if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
++	_TARGET_OS="uclinux"
++	else
++	_TARGET_OS="linux"
++fi	
++
++# -- get libc
++_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
++_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
++
++if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
++	_LIBC="uclibc"
++	else
++	if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
++		_LIBC="musl"
++		else
++		_LIBC="gnu"
++	fi
++fi	 		
++
++# -- ABI
++_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
++_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
++_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
++if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
++	if [ "$_LIBC" = "uclibc" ]; then
++		_ABI="gnueabi"
++		else
++		_ABI="eabi"
++	fi
++	if [ "$_BR2_ARM_EABIHF" = "y" ]; then
++		_ABI="${_ABI}hf"
++	fi
++fi
++	
++_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
++#===============================================================
++
++TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
++echo $TOOLCHAIN
++
++if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
++	export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
++else
++	export SYSROOT=$TOOLCHAIN/usr/bin
++fi
++
++export PATH=$PATH:$SYSROOT
++
++export CROSS_COMPILE="${_GNU_TARGET_NAME}-"
++export CROSS=${CROSS_COMPILE}
++
++export ARCH=arm
++_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
++export KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
++export BB_KERNEL_SOURCES=$KERNELDIR
++export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
++export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
++export CC=${CROSS_COMPILE}gcc
++export CXX=${CROSS_COMPILE}g++
++
++#--- gnupru
++export PASM=pasm
++##export PSYSROOT=/home/ru/pru/pru-gcc/bin
++export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
++export PATH=$PSYSROOT:$PATH
++
++export PCROSS_COMPILE=pru-
++export PARCH=pru
++
++cd $WRKDIR
++if [ $# -eq "0" ] 
++then
++PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
++else
++$1
++fi
+diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
+new file mode 100755
+index 0000000..9612418
+--- /dev/null
++++ b/MakeIMAGE.sh
+@@ -0,0 +1,106 @@
++#!/bin/sh
++
++SAVE_LC=$LC_ALL
++export LC_ALL=C
++
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++IMAGEFILE=../Display001_Build_$BUILD-img
++
++ROOTFSMNT=/tmp/XXXRootFs
++
++echo "Image: $IMAGEFILE"
++#-- build imagefile
++dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
++dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
++#-------------------------------------------------------
++#-- create partitions BOOT rootfs !!! don't change !!!!
++fdisk $IMAGEFILE << EOF
++o
++n
++p
++
++
+++300M
++n
++p
++
++
++
++t
++1
++c
++a
++1
++p
++w
++EOF
++echo "============="
++#-- map partitions
++DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
++DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
++
++echo ">>>>>>>>>>>>>>>>>>"
++echo $DRIVE1
++echo $DRIVE2
++echo ">>>>>>>>>>>>>>>>>>"
++
++kpartx -asv $IMAGEFILE
++#-- mount partitions
++umount /tmp/boot
++umount /tmp/rootfs
++
++rm -rf /tmp/boot  
++rm -rf /tmp/rootfs
++
++mkdir /tmp/boot  
++mkdir /tmp/rootfs
++
++dd if=/dev/zero of=${DRIVE1} bs=1M count=1
++mkfs.vfat -F 32 -n "boot" ${DRIVE1}
++mount ${DRIVE1} /tmp/boot
++
++du -h ${DRIVE1}
++
++cp ./output/images/*.dtb /tmp/boot 
++cp ./output/images/uImage /tmp/boot
++cp ./output/images/MLO /tmp/boot
++cp ./output/images/u-boot.img /tmp/boot   
++                                        
++ls -alh /tmp/boot
++
++dd if=/dev/zero of=${DRIVE2} bs=1M count=1
++mkfs.ext3 -L "rootfs" ${DRIVE2}
++mount ${DRIVE2} /tmp/rootfs
++
++du -h ${DRIVE2}
++sleep 5
++
++umount ${ROOTFSMNT}
++rm -rf ${ROOTFSMNT}
++mkdir -p ${ROOTFSMNT}
++echo "Mount ====>> " ${ROOTFSMNT}
++mount -o loop ./output/images/rootfs.ext2 ${ROOTFSMNT}
++
++WRKDIR=`pwd`
++cd  ${ROOTFSMNT}
++tar cf - . | (cd /tmp/rootfs && tar xBf -)
++
++cd ${WRKDIR}
++umount ${ROOTFSMNT}
++#tar -C /tmp/rootfs  --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
++
++echo ""
++
++sync
++sync
++umount ${DRIVE1}
++umount ${DRIVE2}
++                                                        
++#-- unmap partitions
++kpartx -dsv $IMAGEFILE
++#-- packen des Imagefiles
++rm $IMAGEFILE.zip
++zip -j $IMAGEFILE.zip $IMAGEFILE
++
++export LC_ALL=$SAVE_LC
++                                                                                                                
+diff --git a/MakeLegalInfo.sh b/MakeLegalInfo.sh
+new file mode 100755
+index 0000000..429486f
+--- /dev/null
++++ b/MakeLegalInfo.sh
+@@ -0,0 +1,17 @@
++#!/bin/sh
++
++SAVE_LC=$LC_ALL
++export LC_ALL=C
++
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++IMAGEFILE=../Display001_Build_$BUILD-img
++
++#-- legalinfo erstellen
++TMPWRKDIR=`pwd`
++cd output
++rm ../../Display001-$BUILD-legal-info.zip
++zip -r ../../Display001-$BUILD-legal-info.zip ./legal-info/*
++cd $TMPWRKDIR
++
++export LC_ALL=$SAVE_LC
++                                                                                                                
+\ No newline at end of file
+diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
+new file mode 100755
+index 0000000..c3f9894
+--- /dev/null
++++ b/MakeRootfsUpdate.sh
+@@ -0,0 +1,41 @@
++#!/bin/bash
++WRKDIR=/tmp/XXXUpdateRootfs
++BOOTDIR=$WRKDIR/_GfABoot
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
++UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
++UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
++
++ROOTFSMNT=/tmp/XXXRootFs
++
++sudo umount $ROOTFSMNT 2>/dev/null
++sudo rm -rf $ROOTFSMNT
++sudo mkdir -p $ROOTFSMNT
++sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
++
++sudo rm -rf $WRKDIR
++mkdir -p $WRKDIR/dest
++
++sudo bash <<EOF
++mkdir -p $BOOTDIR
++cp ./output/images/*.dtb $BOOTDIR
++cp ./output/images/uImage $BOOTDIR
++cp ./output/images/MLO $BOOTDIR
++cp ./output/images/u-boot.img $BOOTDIR
++tar -C $ROOTFSMNT -cf - . | tar xvf - -C $WRKDIR
++umount $ROOTFSMNT 2>/dev/null
++tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
++EOF
++
++#----
++if [[ ! -f $UPDATE_BINARY ]]; then
++	echo "       UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
++	echo "Usage: $0"
++	exit 1
++fi
++
++cat $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
++echo "PAYLOAD:" >> $UPDATE_FILENAME
++cat $UPDATE_BINARY >> $UPDATE_FILENAME
++
++chmod a+x $UPDATE_FILENAME
+diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
+new file mode 100755
+index 0000000..134f9f1
+--- /dev/null
++++ b/MakeTOOLCHAIN.sh
+@@ -0,0 +1,140 @@
++#!/bin/bash
++echo "====== Build Toolchain INSTALL Script ===="
++SHWRKDIR=/tmp/XXXMakeTOOLCHAIN
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z
++UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh"
++TOOLCHAIN_DIR="/opt/GfA"
++UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in"
++
++rm -rf $SHWRKDIR
++mkdir -p $SHWRKDIR/dest
++mkdir -p $SHWRKDIR/Kernel-$BUILD
++#====================================
++WRKDIR=`pwd`
++CMDDIR=`pwd`
++#=== Asssign GNU_TARGET_NAME from .config
++_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
++_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
++
++# -- get target os
++_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
++if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
++        _TARGET_OS="uclinux"
++        else
++        _TARGET_OS="linux"
++fi      
++
++# -- get libc
++_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
++_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
++
++if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
++        _LIBC="uclibc"
++        else
++        if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
++                _LIBC="musl"
++                else
++                _LIBC="gnu"
++        fi
++fi      
++
++# -- ABI
++_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
++_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
++_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
++if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
++        if [ "$_LIBC" = "uclibc" ]; then
++                _ABI="gnueabi"
++                else
++                _ABI="eabi"
++        fi
++        if [ "$_BR2_ARM_EABIHF" = "y" ]; then
++                _ABI="${_ABI}hf"
++        fi
++fi
++        
++_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
++#===============================================================
++TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
++if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
++        SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
++else
++        SYSROOT=$TOOLCHAIN/usr/bin
++fi
++CROSS_COMPILE="${_GNU_TARGET_NAME}-"
++CROSS=${CROSS_COMPILE}
++_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
++KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
++#====================================
++echo $TOOLCHAIN
++echo "copy Toolchain ... pls be patient"
++rsync -a $TOOLCHAIN $SHWRKDIR/
++echo "copy Kernel ... pls be patient"
++rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/
++
++(\
++cat << EOF
++#!/bin/sh
++
++export SYSROOT=$SYSROOT
++export PATH=\$PATH:$SYSROOT
++export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR}
++export CROSS_COMPILE=${CROSS_COMPILE}
++export CROSS=${CROSS_COMPILE}
++
++export ARCH=arm
++export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
++export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
++export CC=${CROSS_COMPILE}gcc
++export CXX=${CROSS_COMPILE}g++
++
++if [ \$# -eq "0" ] 
++then
++PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset
++else
++\$1
++fi
++
++EOF
++) > $SHWRKDIR/CrossCompile-${BUILD}.sh
++
++chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh
++
++echo "packing Binaries to Tarball ... pls be patient"
++tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./
++echo "--------------------- DONE -----------------------"
++# update script
++(\
++cat << EOF
++#!/bin/sh
++
++TOOLCHAIN_DIR=$TOOLCHAIN_DIR
++TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -"
++
++untar_payload ()
++{
++        match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1)
++        payload_start=\$((match + 1))
++        tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS
++}
++
++## --- Kommandos zum Installieren
++
++#--- Toolchain-Tarball entpacken
++
++if [ ! -d \${TOOLCHAIN_DIR} ]; then
++        sudo mkdir -p \${TOOLCHAIN_DIR}
++fi
++sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR}
++
++untar_payload
++
++exit 0
++EOF
++) > $UPDATE_FILENAME
++
++echo "PAYLOAD:" >> $UPDATE_FILENAME
++cat $UPDATE_BINARY >> $UPDATE_FILENAME
++
++chmod a+x $UPDATE_FILENAME
+diff --git a/MapImage.sh b/MapImage.sh
+new file mode 100755
+index 0000000..5a72d32
+--- /dev/null
++++ b/MapImage.sh
+@@ -0,0 +1,41 @@
++#!/bin/sh
++
++SAVE_LC=$LC_ALL
++export LC_ALL=C
++
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++IMAGEFILE=../Display001_Build_$BUILD-img
++echo ">>> $IMAGEFILE <<<"
++#-- map partitions
++DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n +1| awk '{print $1}'`
++DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | tail -n +2 | head -n +1| awk '{print $1}'`
++
++echo ">>>>>>>>>>>>>>>>>>"
++echo $DRIVE1
++echo $DRIVE2
++echo ">>>>>>>>>>>>>>>>>>"
++
++kpartx -asv $IMAGEFILE
++#-- mount partitions
++umount /tmp/boot
++umount /tmp/rootfs
++
++rm -rf /tmp/boot  
++rm -rf /tmp/rootfs
++
++mkdir /tmp/boot  
++mkdir /tmp/rootfs
++
++mount ${DRIVE1} /tmp/boot
++mount ${DRIVE2} /tmp/rootfs
++
++bash
++
++umount ${DRIVE1}
++umount ${DRIVE2}
++                                                        
++#-- unmap partitions
++kpartx -dsv $IMAGEFILE
++
++export LC_ALL=$SAVE_LC
++                                                                                                                
+\ No newline at end of file
+diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
+new file mode 100644
+index 0000000..91c8444
+--- /dev/null
++++ b/UpdateRootfs.sh.in
+@@ -0,0 +1,957 @@
++#!/bin/sh
++
++TMP_PATH="$GFA_PREFIX/__GfA_Update"
++TAR_PARAMETERS="-C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab --exclude=./etc/hosts --exclude=./etc/hostname --exclude=./etc/passwd --exclude=./etc/shadow --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd --exclude=./etc/hostapd.conf --exclude=./root/.ssh --exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini --exclude=./var/cron/crontabs/root -xzvf -"
++
++untar_payload ()
++{
++	match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
++	payload_start=$((match + 1))
++	tail -n +$payload_start $0 | tar $TAR_PARAMETERS
++}
++
++if [ -z $1 ]
++then
++## prepare for chrooted environment
++chmod +x /bin/bash
++updatename=`realpath $0`
++echo -e "===\n prepare chroot and update script\n===\n"
++(\
++cat << EOF
++#! /bin/bash
++CHROOT=/__GfA_chroot
++
++#---------------------
++recurse ()
++# Param 1 is the nuumber of spaces that the output will be prepended with
++# Param 2 full path to library
++{
++#Use 'readelf -d' to find dependencies
++dependencies=\$(readelf -d \${2} | grep NEEDED | awk '{ print \$5 }' | tr -d '[]')
++for d in \$dependencies; do
++   echo "\${1}\${d} :: \${2}"
++   rsync -lpR \${2} \${CHROOT}
++   if [ -L \${2} ] ; then
++   	LIBNAM=\`readlink -f \${2}\`
++	rsync -lpR \${LIBNAM} \${CHROOT}
++	echo "\${1}-->\${LIBNAM}"
++   fi
++   nm=\${d##*/}
++   #libstdc++ hack for the '+'-s
++   nm1=\${nm//"+"/"\+"}
++   # /lib /lib64 /usr/lib and /usr/lib are searched
++   children=\$(find / -name \${d} 2>/dev/null | grep -E "(^/(lib|lib32|usr/lib|usr/lib32)/\${nm1})")
++   rc=\$?
++   #at least locate... didn't fail
++   if [ \${rc} == "0" ] ; then
++      #we have at least one dependency
++      if [ \${#children[@]} -gt 0 ]; then
++         #check the dependeny's dependencies
++         for c in \$children; do
++          recurse "  \${1}" \${c}
++         done
++      else
++         echo "\${1}no children found"
++      fi
++   else
++      echo "\${1}locate failed for ${d}"
++   fi
++done
++}
++# -- recurse needs 2 params could/should be supplied from cmdline
++echo "==== PREPARE CHROOT ENVIRONMENT in \${CHROOT} ===="
++rm -rf \$CHROOT
++mkdir -p \$CHROOT
++#------------------------------------
++tt=/bin/bash
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/bin/sh
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/bin/busybox
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/bin/sed
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/usr/sbin/fbset
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/usr/bin/awk
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/usr/bin/cut
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/usr/bin/tail
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++tt=/sbin/reboot
++echo -e "===\n \$tt\n"
++recurse "" \$tt
++
++#----------------------------------------
++cp -a /lib/ld-* \${CHROOT}/lib
++cp -a /bin/*  \${CHROOT}/bin
++
++ln -s ./realroot/root \${CHROOT}/root
++
++mkdir -p \${CHROOT}/proc
++mkdir -p \${CHROOT}/dev
++mkdir -p \${CHROOT}/sys
++mkdir -p \${CHROOT}/etc
++mkdir -p \${CHROOT}/realroot
++mkdir -p \${CHROOT}/var
++mkdir -p \${CHROOT}/tmp
++mkdir -p \${CHROOT}/mnt
++
++mkdir -p \${CHROOT}/realroot/media/usb0
++mkdir -p \${CHROOT}/realroot/media/usb1
++
++mount -o bind /proc \${CHROOT}/proc    
++mount -o bind /dev \${CHROOT}/dev
++mount -o bind /sys \${CHROOT}/sys
++mount -o bind /etc \${CHROOT}/etc
++mount -o bind /var \${CHROOT}/var
++mount -o bind /tmp \${CHROOT}/tmp
++mount -o bind / \${CHROOT}/realroot
++
++mount -o bind /media/usb0 \${CHROOT}/realroot/media/usb0
++mount -o bind /media/usb1 \${CHROOT}/realroot/media/usb1
++
++echo -e "\n===========\nchroot environment ready in \n \${CHROOT}\n===========\n"
++chroot \${CHROOT} sh -c 'GFA_PREFIX=/realroot sh /realroot${updatename} DoRealUpdate' 
++
++EOF
++) > /root/GfA_prep_chroot.sh
++
++chmod a+x /root/GfA_prep_chroot.sh
++#--- execute built script
++echo "==>>> execute chroot update script"
++/root/GfA_prep_chroot.sh
++else
++## --- Kommandos zum Installieren
++## -- get bootpartition
++such="root=/dev/mmcblk1"
++grep -q $such /proc/cmdline
++if [ $? == 0 ]
++then
++	bootpart="/dev/mmcblk1p1"
++else
++	bootpart="/dev/mmcblk0p1"
++fi	
++#===== DoRealUpdate === Start
++if [ $1 == "DoRealUpdate" ]
++then
++
++umount /mnt 2>/dev/null
++umount $GFA_PREFIX/_GfABoot 2>/dev/null
++
++rm -rf $GFA_PREFIX/_GfABoot
++mkdir $GFA_PREFIX/_GfABoot
++mount $bootpart $GFA_PREFIX/_GfABoot
++
++
++mkdir -p $TMP_PATH/bu_cfg
++
++if [ -e $GFA_PREFIX/etc/network/interfaces ]
++then
++        cp $GFA_PREFIX/etc/network/interfaces $TMP_PATH/bu_cfg
++        rm $GFA_PREFIX/etc/network/interfaces
++fi
++
++if [ -e $GFA_PREFIX/etc/wpa_supplicant.conf ]
++then
++        cp $GFA_PREFIX/etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
++        rm $GFA_PREFIX/etc/wpa_supplicant.conf
++fi
++
++if [ -e $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
++then
++        cp $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
++        rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
++fi
++
++#--- Kernel MLO und Rootfs-Tarball entpacken
++untar_payload
++# --- 
++
++echo "sync mmc be patient ...."
++sync
++sync
++# --- copy old eth0 configuration
++INTERFACE="eth0"
++IFCONFIG=$TMP_PATH/bu_cfg/interfaces
++
++(\
++cat << EOF
++# Configure Loopback
++auto lo
++iface lo inet loopback
++
++EOF
++) > $GFA_PREFIX/etc/network/interfaces
++
++awk -v par=$INTERFACE '/^iface/ && $2==par {f=1}/^iface/ && $2!=par {f=0}f && !/^\s*#/d && !/^\s*$/d  {print $0 }' $TMP_PATH/bu_cfg/interfaces \
++>> $GFA_PREFIX/etc/network/interfaces
++
++(\
++cat << EOF
++iface eth1 inet dhcp
++#---
++iface usb0 inet static
++        address 192.168.7.2
++        netmask 255.255.255.252
++#---
++iface wlan0 inet dhcp
++        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
++#
++EOF
++) >> $GFA_PREFIX/etc/network/interfaces
++
++if [ -e $GFA_PREFIX/etc/init.d/S98usb_g_ether ]
++then
++	cp $GFA_PREFIX/etc/init.d/S98usb_g_ether $GFA_PREFIX/etc/init.d/M98usb_g_ether
++	rm $GFA_PREFIX/etc/init.d/S98usb_g_ether
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/S80ti-sgx ]
++then
++	rm $GFA_PREFIX/etc/init.d/S80ti-sgx
++fi
++        
++if [ -e $GFA_PREFIX/etc/init.d/M99_wlan_usb ]
++then
++	rm $GFA_PREFIX/etc/init.d/M99_wlan_usb
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/S99_wlan_usb ]
++then
++	rm $GFA_PREFIX/etc/init.d/S99_wlan_usb
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-relay ]
++then
++	rm $GFA_PREFIX/etc/init.d/M80dhcp-relay
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-relay ]
++then
++	rm $GFA_PREFIX/etc/init.d/S80dhcp-relay
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-server ]
++then
++	rm $GFA_PREFIX/etc/init.d/M80dhcp-server
++fi
++
++if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-server ]
++then
++	rm $GFA_PREFIX/etc/init.d/S80dhcp-server
++fi
++
++if [ -d $GFA_PREFIX/etc/dhcp ]
++then
++	rm -rf $GFA_PREFIX/etc/dhcp
++fi
++
++if [ -e $GFA_PREFIX/var/GfA/Display_GSM.ini ]
++then
++	sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
++fi
++
++#================================
++#--create mountable run folder insted of link
++RUNDIR=$GFA_PREFIX/run
++if [ -L $RUNDIR ]; then
++  mv $RUNDIR $RUNDIR'_WRK'
++  mkdir $RUNDIR
++  mount -t tmpfs tmpfs $RUNDIR
++  WRKDIR=`pwd`
++  cd $RUNDIR'_WRK'
++  cp -a ./* $RUNDIR
++  cd $WRKDIR
++  rm $RUNDIR'_WRK' 
++fi
++#--- craete missing nogroup group
++GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
++if [ -z "$GID_NOGROUP" ]; then
++#  addgroup -S -g 65534 nogroup
++  GID_NOGROUP=65534
++  echo "nogroup:x:${GID_NOUGROUP}:" >> $GFA_PREFIX/etc/group
++fi
++#--create missing users for mysql,
++if [ -z `awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
++  UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/passwd`
++  echo "mysql:x:$UID_MY:${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
++fi
++#--create missing users for postgresql,
++if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
++  UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/passwd`
++  GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
++  if [ -z "$GID_PG" ]; then
++    GID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/group`
++    echo "postgres:x:$GID_PG:" >> $GFA_PREFIX/etc/group
++    fi
++  echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
++fi
++#------------------
++UID_MY=`awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd`
++UID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd`
++GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
++GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
++
++chown -Rv ${UID_MY}:${GID_NOGROUP} $GFA_PREFIX/var/mysql
++chown -Rv ${UID_PG}:${GID_PG} $GFA_PREFIX/var/lib/pgsql
++
++chmod 700 $GFA_PREFIX/root/.ssh
++#==============================================================================
++# Get Graphics resolution and set dtb to the right resolution
++BASEBOARD=`cat /tmp/BASEBOARD`
++
++DONE=0
++YRES="$(fbset | awk '/geom/ {print $3}')"
++XRES="$(fbset | awk '/geom/ {print $2}')"
++
++echo "XRES $XRES, YRES $YRES"
++
++if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "4.3 Inch Display 2"
++  sh /root/Display2To_4_3inch.sh
++  DONE=1
++else
++  echo "4.3 Inch"
++  sh /root/DisplayTo_4_3inch.sh
++  DONE=1
++fi
++fi
++
++if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "7 Inch Display 2"
++  sh /root/Display2To_7inch.sh
++  DONE=1
++else
++if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
++  echo "7 Inch Display 2 rs485"
++  sh /root/Display2To_7inch_rs485.sh
++  DONE=1
++else
++  echo "7 Inch"
++  sh /root/DisplayTo_7inch.sh
++  DONE=1
++fi
++fi
++fi
++
++if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "5.7 Inch Display 2"
++  sh /root/Display2To_5_7inch.sh
++  DONE=1
++else
++  echo "5.7 Inch"
++  sh /root/DisplayTo_5_7inch.sh
++  DONE=1
++fi
++fi
++
++if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "10 Inch Display 2"
++  sh /root/Display2To_10inch.sh
++  DONE=1
++else
++  echo "10 Inch"
++  sh /root/DisplayTo_10inch.sh
++  DONE=1
++fi
++fi
++
++if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "15 Inch Display 2"
++  sh /root/Display2To_15inch.sh
++  DONE=1
++else
++  echo "15 Inch"
++  sh /root/DisplayTo_15inch.sh
++  DONE=1
++fi
++fi
++
++if [ "$DONE" == "0" ]; then
++  echo "Unknown Display Resolution"
++fi
++
++#=================
++echo "Update Done, pls. reboot System"
++umount $GFA_PREFIX/_GfABoot 2>/dev/null
++rm -rf $GFA_PREFIX/_GfABoot
++
++echo "."
++echo "restart system !!!"
++sleep 2
++#-----------------
++reboot
++fi
++fi
++#======================  DoRealUpdate ==== Ende =====
++#===== MakeBootableSD/EMMC === Start
++if [ $1 == "MakeBootableSD" -o $1 == "MakeBootableEMMC" ]
++then
++such="root=/dev/mmcblk1"
++
++if [ $1 == "MakeBootableSD" ]; then
++	TODEV="SD"
++else
++	TODEV="EMMC"
++fi
++
++grep -q $such /proc/cmdline
++if [ $? == 0 ]; then
++    bootpart="/dev/mmcblk1p1"
++    bootdev="EMMC"
++    DESTNAME="SD"
++    DESTDEV="/dev/mmcblk0"
++    DESTBOOTPART="/dev/mmcblk0p1"
++    DESTROOTPART="/dev/mmcblk0p2"
++else
++    bootpart="/dev/mmcblk0p1"
++    bootdev="SD"
++    DESTNAME="EMMC"
++    DESTDEV="/dev/mmcblk1"
++    DESTBOOTPART="/dev/mmcblk1p1"
++    DESTROOTPART="/dev/mmcblk1p2"
++fi
++
++echo ""
++echo -e "\e[7mMake Bootable $TODEV\e[0m"
++
++if [ $bootdev == $TODEV ]; then
++    echo "System was booted from $TODEV, Making Bootable$TODEV not possible ! ==> EXIT"
++    exit 1
++fi
++
++if [ ! -b $DESTDEV ]; then
++    echo -e "\e[31mNo $DESTNAME available ! ==> EXIT\e[0m"
++    exit 2
++fi
++
++echo -e "\e[31m$DESTNAME will be formatted, all Data will be deleted!!\e[0m"
++echo ""
++read -n 1 -p "are you sure? (y/n) : " antwort
++
++if [ ${#antwort} == 0 ]; then
++  antwort = "n"  
++fi
++
++if [ $antwort == "y" -o $antwort == "Y" ]; then
++  echo -e "\nStart copying .."
++else
++  echo -e "\nEXIT on user reqest"
++  exit 3
++fi
++
++echo "Formatting $DESTNAME ...."
++umount $DESTBOOTPART 2>/dev/null
++umount $DESTROOTPART 2>/dev/null
++dd if=/dev/zero of=$DESTDEV bs=2M count=1 conv=notrunc
++busybox fdisk $DESTDEV <<EOF
++o
++p
++n
++p
++1
++
+++64M
++t
++e
++a
++1
++n
++p
++2
++
++
++p
++w
++EOF
++/sbin/mkfs.vfat -F 16 $DESTBOOTPART
++if [ -e /usr/sbin/mkfs.ext4 ]; then
++       /usr/sbin/mkfs.ext4 -F $DESTROOTPART
++else
++       mkfs.ext4 -F $DESTROOTPART
++fi
++#======
++GFA_PREFIX="/tmp/__MakeSD"
++rm -rf $GFA_PREFIX
++TAR_PARAMETERS="-C $GFA_PREFIX/ -xzvf -"
++
++# mount partiotions
++mkdir -p $GFA_PREFIX
++mount $DESTROOTPART $GFA_PREFIX
++mkdir -p $GFA_PREFIX/_GfABoot
++mount $DESTBOOTPART $GFA_PREFIX/_GfABoot
++
++#--- Kernel MLO und Rootfs-Tarball entpacken
++untar_payload
++# --- 
++cd 
++df -h
++# ==========
++#=====
++# Get Graphics resolution and set dtb to the right resolution
++BASEBOARD=`cat /tmp/BASEBOARD`
++
++DONE=0
++YRES="$(fbset | awk '/geom/ {print $3}')"
++XRES="$(fbset | awk '/geom/ {print $2}')"
++
++EMMC_BOOTPATH=$GFA_PREFIX/_GfABoot
++
++echo "XRES $XRES, YRES $YRES"
++
++if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "4.3 Inch Display 2"
++  cp $EMMC_BOOTPATH/Display002_4.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "4.3 Inch"
++  cp $EMMC_BOOTPATH/Display001_4.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "7 Inch Display 2"
++  cp $EMMC_BOOTPATH/Display002_7.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
++  echo "7 Inch Display 2 rs485"
++  cp $EMMC_BOOTPATH/Display002_7_rs485.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "7 Inch"
++  cp $EMMC_BOOTPATH/Display001_7.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++fi
++  
++if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "5.7 Inch Display 2"
++  cp $EMMC_BOOTPATH/Display002_5.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "5.7 Inch"
++  cp $EMMC_BOOTPATH/Display001_5.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "10 Inch Display 2"
++  cp $EMMC_BOOTPATH/Display002_10.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "10 Inch"
++  cp $EMMC_BOOTPATH/Display001_10.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
++if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "15 Inch Display 2"
++  cp $EMMC_BOOTPATH/Display002_15.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "15 Inch"
++  cp $EMMC_BOOTPATH/Display001_15.dtb $EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "$DONE" == "0" ]; then
++  echo "Unknown Display Resolution"
++fi
++#========================================
++
++# umount boot
++umount $DESTBOOTPART
++rm -rf $GFA_PREFIX/_GfABoot
++# umount rootfs
++umount $DESTROOTPART
++
++exit 0
++fi
++#===== MakeBootableSD/EMMC === Ende
++
++#===== MakeSDUpdateTool === Start
++if [ $1 == "MakeSDUpdateTool" ]
++then
++such="root=/dev/mmcblk1"
++
++grep -q $such /proc/cmdline
++if [ $? == 0 ]; then
++    bootpart="/dev/mmcblk1p1"
++    bootdev="EMMC"
++else
++    bootpart="/dev/mmcblk0p1"
++    bootdev="SD"
++fi
++
++echo ""
++echo -e "\e[7mMake SDUpdateTool\e[0m"
++
++if [ $bootdev != "SD" ]; then
++    echo "System was booted from $bootdev, Making SDUpdateTool not possible ! ==> EXIT"
++    exit 1
++fi
++
++GFA_PREFIX="/opt/GfA/SDUpdateTool"
++GFA_DATAPATH=$GFA_PREFIX/_BootRoot
++
++rm -rf $GFA_DATAPATH
++mkdir -p $GFA_DATAPATH
++TAR_PARAMETERS="-C $GFA_DATAPATH/ -xzvf -"
++
++#--- Kernel MLO und Rootfs-Tarball entpacken
++untar_payload
++# --- 
++echo -e "===\n Make UpdateEMMC.sh \n===\n"
++(\
++cat << XEOF
++#!/bin/sh
++
++CALLDIR=\`pwd\`
++WRKDIR=/opt/GfA/SDUpdateTool
++  
++DESTDEV="/dev/mmcblk1"
++
++EMMC_BOOTPATH="/tmp/EMMCBOOT"
++EMMC_ROOTPATH="/tmp/EMMCROOT"
++such=\$DESTDEV
++
++grep -q \$such /proc/cmdline
++if [ \$? == 0 ]; then
++    bootpart="/dev/mmcblk1p1"
++    bootdev="EMMC"
++else
++    bootpart="/dev/mmcblk0p1"
++    bootdev="SD"
++fi
++
++echo ""
++echo -e "\e[7mUpdate EMMC from SD\e[0m"
++
++if [ \$bootdev != "SD" ]; then
++    echo "System was booted from \$bootdev, update from SD not possible ! =="
++    exit 1
++fi
++
++umount \${DESTDEV}p1 2>/dev/null
++umount \${DESTDEV}p2 2>/dev/null
++
++rm -rf \$EMMC_BOOTPATH
++rm -rf \$EMMC_ROOTPATH
++mkdir -p \$EMMC_BOOTPATH
++mkdir -p \$EMMC_ROOTPATH
++
++mount \${DESTDEV}p1 \$EMMC_BOOTPATH
++mount \${DESTDEV}p2 \$EMMC_ROOTPATH
++
++#== copy network config ==
++TMP_PATH=\$WRKDIR/_GfA_tmp
++GFA_PREFIX=\$EMMC_ROOTPATH
++
++rm -rf \$TMP_PATH
++mkdir -p \$TMP_PATH
++mkdir -p \$TMP_PATH/bu_cfg
++
++if [ -e \$GFA_PREFIX/etc/network/interfaces ]
++then
++        cp \$GFA_PREFIX/etc/network/interfaces \$TMP_PATH/bu_cfg
++        rm \$GFA_PREFIX/etc/network/interfaces
++fi
++
++if [ -e \$GFA_PREFIX/etc/wpa_supplicant.conf ]
++then
++        cp \$GFA_PREFIX/etc/wpa_supplicant.conf \$TMP_PATH/bu_cfg/wpa_supplicant.conf_old
++        rm \$GFA_PREFIX/etc/wpa_supplicant.conf
++fi
++
++if [ -e \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
++then
++        cp \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf \$TMP_PATH/bu_cfg
++        rm \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
++fi
++
++#=== copy ROOTFS
++cd \$WRKDIR/_BootRoot
++rsync -avR --exclude=/_GfABoot \\
++--exclude=./tmp --exclude=./etc/inittab \\
++--exclude=./etc/hosts --exclude=./etc/hostname \\
++--exclude=./etc/passwd --exclude=./etc/shadow \\
++--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \\
++--exclude=./etc/hostapd.conf --exclude=./root/.ssh \\
++--exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini \\
++--exclude=./var/cron/crontabs/root \\
++ ./ \$EMMC_ROOTPATH/
++
++# --- copy old eth0 configuration
++INTERFACE="eth0"
++IFCONFIG=\$TMP_PATH/bu_cfg/interfaces
++  
++(\\
++cat << EOF
++# Configure Loopback
++auto lo
++iface lo inet loopback
++   
++EOF
++) > \$GFA_PREFIX/etc/network/interfaces
++
++awk -v par=\$INTERFACE '/^iface/ && \$2==par {f=1}/^iface/ && \$2!=par {f=0}f && !/^\s*#/d && !/^\s*\$/d  {print \$0 }' \$TMP_PATH/bu_cfg/interfaces \\
++>> \$GFA_PREFIX/etc/network/interfaces
++  
++(\\
++cat << EOF
++iface eth1 inet dhcp
++#---
++iface usb0 inet static
++        address 192.168.7.2
++        netmask 255.255.255.252
++#---
++iface wlan0 inet dhcp
++        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
++#  
++EOF
++) >> \$GFA_PREFIX/etc/network/interfaces
++
++if [ -e \$GFA_PREFIX/etc/init.d/S98usb_g_ether ]
++then
++        cp \$GFA_PREFIX/etc/init.d/S98usb_g_ether \$GFA_PREFIX/etc/init.d/M98usb_g_ether
++        rm \$GFA_PREFIX/etc/init.d/S98usb_g_ether
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/S80ti-sgx ]
++then
++        rm \$GFA_PREFIX/etc/init.d/S80ti-sgx
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/M99_wlan_usb ]
++then
++        rm \$GFA_PREFIX/etc/init.d/M99_wlan_usb
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/S99_wlan_usb ]
++then
++        rm \$GFA_PREFIX/etc/init.d/S99_wlan_usb
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-relay ]
++then
++        rm \$GFA_PREFIX/etc/init.d/M80dhcp-relay
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-relay ]
++then
++        rm \$GFA_PREFIX/etc/init.d/S80dhcp-relay
++fi
++if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-server ]
++then
++        rm \$GFA_PREFIX/etc/init.d/M80dhcp-server
++fi
++  
++if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-server ]
++then
++        rm \$GFA_PREFIX/etc/init.d/S80dhcp-server
++fi
++  
++if [ -d \$GFA_PREFIX/etc/dhcp ]
++then
++        rm -rf \$GFA_PREFIX/etc/dhcp
++fi
++  
++if [ -e \$GFA_PREFIX/var/GfA/Display_GSM.ini ]
++then
++        sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' \$GFA_PREFIX/var/GfA/Display_GSM.ini
++fi
++#================================
++#--create mountable run folder insted of link
++RUNDIR=\$GFA_PREFIX/run
++if [ -L \$RUNDIR ]; then
++  mv \$RUNDIR \$RUNDIR'_WRK'
++  mkdir \$RUNDIR
++  mount -t tmpfs tmpfs \$RUNDIR
++  WRKDIR=\`pwd\`
++  cd \$RUNDIR'_WRK'
++  cp -a ./* \$RUNDIR
++  cd \$WRKDIR
++  rm \$RUNDIR'_WRK'
++fi
++#--- craete missing nogroup group
++GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
++if [ -z "\$GID_NOGROUP" ]; then
++#  addgroup -S -g 65534 nogroup
++  GID_NOGROUP=65534
++  echo "nogroup:x:\${GID_NOUGROUP}:" >> \$GFA_PREFIX/etc/group
++fi
++#--create missing users for mysql,
++if [ -z \`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
++  UID_MY=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
++  echo "mysql:x:\$UID_MY:\${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> \$GFA_PREFIX/etc/passwd
++fi
++#--create missing users for postgresql,
++if [ -z \`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
++  UID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
++  GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
++  if [ -z "\$GID_PG" ]; then
++    GID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/group\`
++    echo "postgres:x:\$GID_PG:" >> \$GFA_PREFIX/etc/group
++    fi
++  echo "postgres:x:\$UID_PG:\$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> \$GFA_PREFIX/etc/passwd
++fi
++#------------------
++UID_MY=\`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
++UID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
++GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\` 
++GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
++
++chown -Rv \${UID_MY}:\${GID_NOGROUP} \$GFA_PREFIX/var/mysql
++chown -Rv \${UID_PG}:\${GID_PG} \$GFA_PREFIX/var/lib/pgsql 
++
++chmod 700 \$GFA_PREFIX/root/.ssh
++#===== copy custom_root files if folder exists
++if [ -d "\$WRKDIR/custom_root" ]; then
++  cd \$WRKDIR/custom_root
++  rsync -avR  \\
++   ./ \$EMMC_ROOTPATH/
++fi
++#==============================================================================
++#=== copy BOOTFS
++rm -rf \$EMMC_BOOTPATH/*
++cd \$WRKDIR/_BootRoot/_GfABoot
++rsync -avR ./ \$EMMC_BOOTPATH/
++#=====
++# Get Graphics resolution and set dtb to the right resolution
++BASEBOARD=\`cat /tmp/BASEBOARD\`
++
++DONE=0
++YRES="\$(fbset | awk '/geom/ {print \$3}')"
++XRES="\$(fbset | awk '/geom/ {print \$2}')"
++
++echo "XRES \$XRES, YRES \$YRES"
++
++if [ "\$XRES" == "480" -a "\$YRES" == "272" ]; then
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "4.3 Inch Display 2"
++  cp \$EMMC_BOOTPATH/Display002_4.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "4.3 Inch"
++  cp \$EMMC_BOOTPATH/Display001_4.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "\$XRES" == "800" -a "\$YRES" == "480" ]; then
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "7 Inch Display 2"
++  cp \$EMMC_BOOTPATH/Display002_7.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++if [ "\$BASEBOARD" == "DISPLAY002_RS485" ]; then
++  echo "7 Inch Display 2 rs485"
++  cp \$EMMC_BOOTPATH/Display002_7_rs485.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "7 Inch"
++  cp \$EMMC_BOOTPATH/Display001_7.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++fi
++  
++if [ "\$XRES" == "640" -a "\$YRES" == "480" ]; then
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "5.7 Inch Display 2"
++  cp \$EMMC_BOOTPATH/Display002_5.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "5.7 Inch"
++  cp \$EMMC_BOOTPATH/Display001_5.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++if [ "\$XRES" == "1280" -a "\$YRES" == "800" ]; then
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "10 Inch Display 2"
++  cp \$EMMC_BOOTPATH/Display002_10.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "10 Inch"
++  cp \$EMMC_BOOTPATH/Display001_10.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "\$XRES" == "1920" -a "\$YRES" == "1080" ]; then
++if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
++  echo "15 Inch Display 2"
++  cp \$EMMC_BOOTPATH/Display002_15.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++else
++  echo "15 Inch"
++  cp \$EMMC_BOOTPATH/Display001_15.dtb \$EMMC_BOOTPATH/Display001.dtb
++  DONE=1
++fi
++fi
++  
++if [ "\$DONE" == "0" ]; then
++  echo "Unknown Display Resolution"
++fi
++#========================================
++
++umount \${DESTDEV}p1 2>/dev/null
++umount \${DESTDEV}p2 2>/dev/null
++
++XEOF
++) > $GFA_PREFIX/UpdateEMMC.sh
++chmod a+x  $GFA_PREFIX/UpdateEMMC.sh
++
++exit 0
++fi
++#===== MakeSDUpdateTool === End
++
++#====== HELP on unknown Command =======
++echo -e "Unknown Command :: $1"
++echo -e "Usage: $0 \e[32m[Command]\e[0m"
++echo -e "\t without command ... update to new system"
++echo -e "\t \e[32mMakeBootableSD\e[0m ... create bootable SD card with factory defaults"
++echo -e "\t \e[32mMakeBootableEMMC\e[0m ... create bootable EMMC with factory defaults"
++echo -e "\t \e[32mMakeSDUpdateTool\e[0m ... create Folders and scripts for"
++echo -e "\t\t updating system from SD Card in /opt/GfA/SDUpdateTool"
++echo -e "\t\t To Do UpdateEMMC:"
++echo -e "\t\t\t cd /opt/GfA/SDUpdateTool"
++echo -e "\t\t\t ./UpdateEMMC.sh"
++echo -e "\t\t\t if folder /opt/GfASDupdateTool/custom_root exists"
++echo -e "\t\t\t whole tree will be copied to root filesystem as is"
++
++exit 0

+ 0 - 15
patches/0002-mysql-add-innodb-engine-to-package.patch

@@ -1,15 +0,0 @@
-diff --git a/package/mysql/mysql.mk b/package/mysql/mysql.mk
-index ea330f2515..826612b655 100644
---- a/package/mysql/mysql.mk
-+++ b/package/mysql/mysql.mk
-@@ -84,8 +84,8 @@ MYSQL_CONF_OPTS += \
- 	--without-plugin-example \
- 	--without-plugin-federated \
- 	--without-plugin-ibmdb2i \
--	--without-plugin-innobase \
--	--without-plugin-innodb_plugin \
-+	--with-plugin-innobase \
-+	--with-plugin-innodb_plugin \
- 	--without-plugin-ndbcluster
- 
- # Debugging is only available for the server, so no need for

+ 0 - 66
patches/0004-libmodbus-GfA-fflush-for-debug.patch

@@ -1,66 +0,0 @@
-From 4e7a6c3d241f1da3da89d384e84c0c1547d17451 Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Mon, 18 Jun 2018 18:39:18 +0200
-Subject: [PATCH] libmodbus GfA fflush for debug
-
----
- package/libmodbus/002-GfA-fflush-for-debug.patch | 47 ++++++++++++++++++++++++
- 1 file changed, 47 insertions(+)
- create mode 100644 package/libmodbus/002-GfA-fflush-for-debug.patch
-
-diff --git a/package/libmodbus/002-GfA-fflush-for-debug.patch b/package/libmodbus/002-GfA-fflush-for-debug.patch
-new file mode 100644
-index 0000000..93eaa9a
---- /dev/null
-+++ b/package/libmodbus/002-GfA-fflush-for-debug.patch
-@@ -0,0 +1,47 @@
-+diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus.c b/src/modbus.c
-+--- libmodbus-3.0.6/src/modbus.c	2014-04-02 23:34:00.000000000 +0200
-++++ b/src/modbus.c	2018-06-15 08:36:32.657047324 +0200
-+@@ -170,6 +170,7 @@ static int send_msg(modbus_t *ctx, uint8
-+         for (i = 0; i < msg_length; i++)
-+             printf("[%.2X]", msg[i]);
-+         printf("\n");
-++        fflush(stdout);
-+     }
-+ 
-+     /* In recovery mode, the write command will be issued until to be
-+@@ -407,6 +408,7 @@ static int receive_msg(modbus_t *ctx, ui
-+             int i;
-+             for (i=0; i < rc; i++)
-+                 printf("<%.2X>", msg[msg_length + i]);
-++            fflush(stdout);
-+         }
-+ 
-+         /* Sums bytes received */
-+diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
-+--- libmodbus-3.0.6/src/modbus-rtu.c	2018-06-16 17:44:19.011371930 +0200
-++++ b/src/modbus-rtu.c	2018-06-15 08:34:34.544888427 +0200
-+@@ -260,7 +260,7 @@ static int win32_ser_read(struct win32_s
-+ 
-+ ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
-+  ssize_t w, r, i;
-+- uint8_t rb[req_length];
-++ uint8_t rb[512];
-+ 
-+  // Transmit
-+  w = write(ctx->s, req, req_length);
-+@@ -273,6 +273,7 @@ ssize_t _modbus_rtu_write_n_read(modbus_
-+   for (i = 0; i < r; ++i)
-+   fprintf(stderr, "|%02X|", rb[i]);
-+   fprintf(stderr, "\n");
-++  fflush(stderr);
-+  }
-+ 
-+  return w;
-+@@ -325,6 +326,7 @@ int _modbus_rtu_check_integrity(modbus_t
-+         if (ctx->debug) {
-+             fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
-+                     crc_received, crc_calculated);
-++            fflush(stderr);                    
-+         }
-+         if (ctx->error_recovery & MODBUS_ERROR_RECOVERY_PROTOCOL) {
-+             _modbus_rtu_flush(ctx);
--- 
-2.7.4
-

+ 0 - 58
patches/0005-GfA-empty-input-queue-on-CRC-error.patch

@@ -1,58 +0,0 @@
-From d8d71642ad7b1209e2aa8d3fb227d37051076248 Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Fri, 22 Jun 2018 10:41:45 +0200
-Subject: [PATCH] GfA empty input queue on CRC error
-
----
- .../003-GfA-empty-input-queue-on-CRC-error.patch   | 39 ++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
- create mode 100644 package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
-
-diff --git a/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch b/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
-new file mode 100644
-index 0000000..79a7ae3
---- /dev/null
-+++ b/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
-@@ -0,0 +1,39 @@
-+diff '--exclude=.libs*' '--exclude=*.la' '--exclude=*.lo' '--exclude=Makefile*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
-+--- libmodbus-3.0.6/src/modbus-rtu.c	2018-06-22 10:34:55.987233891 +0200
-++++ b/src/modbus-rtu.c	2018-06-18 19:47:12.682614777 +0200
-+@@ -323,6 +323,35 @@ int _modbus_rtu_check_integrity(modbus_t
-+     if (crc_calculated == crc_received) {
-+         return msg_length;
-+     } else {
-++        modbus_rtu_t *ctx_rtu = ctx->backend_data;    
-++        
-++        if(ctx_rtu->echohw) {/* on active echomode empty receiver on crc error */
-++            int rc;
-++            fd_set rfds;
-++            struct timeval tv;    
-++        
-++            /* Add a file descriptor to the set */
-++            FD_ZERO(&rfds);
-++            FD_SET(ctx->s, &rfds);
-++            
-++            if (ctx->debug) {
-++                fprintf(stderr, "ERROR CRC received on ECHOHW empty input tv.tv_sec=%d tv.tv_usec=%d\n",
-++                        (int)ctx->response_timeout.tv_sec,
-++                        (int)ctx->response_timeout.tv_usec);
-++                fflush(stderr);                    
-++            }
-++        
-++            do {
-++               unsigned char cc[256]; /* dummy buffer für cleaning input */
-++           
-++               tv.tv_sec = ctx->response_timeout.tv_sec;
-++               tv.tv_usec = ctx->response_timeout.tv_usec;
-++
-++               rc = ctx->backend->select(ctx, &rfds, &tv, sizeof(cc));
-++               if(rc > 0) ctx->backend->recv(ctx, msg + msg_length, rc);           
-++               } while(rc > 0); /* read until transfer empty */
-++            }
-++               
-+         if (ctx->debug) {
-+             fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
-+                     crc_received, crc_calculated);
--- 
-2.7.4
-

+ 0 - 45
patches/0006-change-source-ref-of-expect-package.patch

@@ -1,45 +0,0 @@
-From 29d78335b3d30d1fd7f78d6fe8b3f5244cc2c519 Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Sun, 8 Jul 2018 20:49:14 +0200
-Subject: [PATCH 6/7] change source ref of expect package
-
----
- package/expect/expect.hash | 4 ++++
- package/expect/expect.mk   | 7 ++++---
- 2 files changed, 8 insertions(+), 3 deletions(-)
- create mode 100644 package/expect/expect.hash
-
-diff --git a/package/expect/expect.hash b/package/expect/expect.hash
-new file mode 100644
-index 0000000000..c89f323906
---- /dev/null
-+++ b/package/expect/expect.hash
-@@ -0,0 +1,4 @@
-+# From https://sourceforge.net/projects/expect/files/Expect/5.45.3/expect5.45.3.tar.gz.SHA256
-+sha256  c520717b7195944a69ce1492ec82ca0ac3f3baf060804e6c5ee6d505ea512be9  expect5.45.3.tar.gz
-+# Locally calculated
-+sha256  b2415b17dc8d9a287f4509047ef5ac3436baef7ba7c50faef5222dcdf61a2bab  README
-diff --git a/package/expect/expect.mk b/package/expect/expect.mk
-index d78ff6c208..ccde33a71b 100644
---- a/package/expect/expect.mk
-+++ b/package/expect/expect.mk
-@@ -4,12 +4,13 @@
- #
- ################################################################################
- 
--# Version 5.45.3
--EXPECT_VERSION = 2014-05-02
--EXPECT_SITE = cvs://expect.cvs.sourceforge.net:/cvsroot/expect
-+EXPECT_VERSION = 5.45.3
-+EXPECT_SITE = https://sourceforge.net/projects/expect/files/Expect/$(EXPECT_VERSION)
-+EXPECT_SOURCE = expect$(EXPECT_VERSION).tar.gz
- EXPECT_LICENSE = Public domain
- EXPECT_LICENSE_FILES = README
- 
-+# 0001-enable-cross-compilation.patch
- EXPECT_AUTORECONF = YES
- EXPECT_DEPENDENCIES = tcl
- EXPECT_CONF_OPTS = --with-tcl=$(BUILD_DIR)/tcl-$(TCL_VERSION)/unix
--- 
-2.17.1
-

+ 0 - 24
patches/0007-change-source-ref-of-qt-5.7.0.patch

@@ -1,24 +0,0 @@
-From ece4f60bdaa3fd818286ff1b6f41c993e5dc83bf Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Sun, 8 Jul 2018 20:49:46 +0200
-Subject: [PATCH 7/7] change source ref of qt 5.7.0
-
----
- package/qt5/qt5.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
-index 0710ef432c..ba8ae0d196 100644
---- a/package/qt5/qt5.mk
-+++ b/package/qt5/qt5.mk
-@@ -1,6 +1,6 @@
- QT5_VERSION_MAJOR = 5.7
- QT5_VERSION = $(QT5_VERSION_MAJOR).0
--QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
-+QT5_SITE = http://download.qt.io/archive/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
- ##QT5_VERSION = $(QT5_VERSION_MAJOR).1
- ##QT5_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules
- include $(sort $(wildcard package/qt5/*/*.mk))
--- 
-2.17.1
-

+ 0 - 73
patches/0009-uboot-tools-add-GfA-env.patch

@@ -1,73 +0,0 @@
-diff --git a/package/uboot-tools/0004-Add-GfA-Default-Environment.patch b/package/uboot-tools/0004-Add-GfA-Default-Environment.patch
-new file mode 100644
-index 0000000..e09b7bb
---- /dev/null
-+++ b/package/uboot-tools/0004-Add-GfA-Default-Environment.patch
-@@ -0,0 +1,67 @@
-+diff --git a/tools/env/fw_env.h b/tools/env/fw_env.h
-+index cd9c567..e75e711 100644
-+--- a/tools/env/fw_env.h
-++++ b/tools/env/fw_env.h
-+@@ -35,16 +35,60 @@
-+ #endif
-+ 
-+ #ifndef CONFIG_BOOTDELAY
-+-#define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds	*/
-++#define CONFIG_BOOTDELAY	1	/* autoboot after 5 seconds	*/
-+ #endif
-+ 
-+-#ifndef CONFIG_BOOTCOMMAND
-++/*#ifndef CONFIG_BOOTCOMMAND
-+ #define CONFIG_BOOTCOMMAND							\
-+ 	"bootp; "								\
-+ 	"setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} "	\
-+ 	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; "	\
-+ 	"bootm"
-+ #endif
-++*/
-++
-++#ifndef CONFIG_EXTRA_ENV_SETTINGS 
-++#define CONFIG_EXTRA_ENV_SETTINGS \
-++        "ramboot=fatload mmc 0 0x80200000 uImage; " \
-++                "fatload mmc 0 0x80F00000 Display001.dtb; " \
-++                "fdt addr 0x80F00000; " \
-++                "fatload mmc 0 0x81000000 initrd.gz; " \
-++                "setenv initrdsize 0x${filesize}; " \   
-++                "setenv bootargs console=ttyO0,115200 initrd=0x81000000,${initrdsize} " \
-++                        "root=/dev/ram0 rw init=/sbin/init debug initcall_debug earlyprintk; " \
-++                "bootm 0x80200000 - 0x80F00000\0" \
-++        "sdboot=fatload mmc 0 0x80200000 uImage; " \
-++                "fatload mmc 0 0x80F00000 Display001.dtb; " \
-++                "fdt addr 0x80F00000; " \
-++                "setenv bootargs console=ttyO0,115200 " \
-++                        "root=/dev/mmcblk0p2 rw rootwait vram=50M cma=50M; " \
-++                "bootm 0x80200000 - 0x80F00000\0" \
-++        "emmcboot=fatload mmc 1 0x80200000 uImage; " \
-++                "fatload mmc 1 0x80F00000 Display001.dtb; " \
-++                "fdt addr 0x80F00000; " \
-++                "setenv bootargs console=ttyO0,115200 " \
-++                        "root=/dev/mmcblk1p2 rw rootwait vram=50M cma=50M; " \
-++                "bootm 0x80200000 - 0x80F00000\0" \
-++        "bootcmd=mw.l 0x80020000 0x0040033c; " \
-++                "if cmp 0x80020000 0x44e10040 1; " \
-++                "then " \
-++                  "echo ---emmc--; " \
-++                  "mmc rescan; " \
-++                  "if fatload mmc 0:1 0x80200000 MLO; then " \
-++                    "run sdboot; " \
-++                  "else " \
-++                    "run emmcboot; " \
-++                  "fi; " \
-++                "else echo --sd--; " \
-++                  "mmc rescan; " \
-++                  "if fatload mmc 0:1 0x80200000 MLO; then " \
-++                    "run sdboot; " \
-++                  "else " \
-++                    "run emmcboot; " \
-++                  "fi; " \
-++                "fi;\0"
-++#endif
-++
-+ 
-+ struct env_opts {
-+ #ifdef CONFIG_FILE

+ 0 - 228
patches/0010-libmodbus-from-GfA-repo.patch

@@ -1,228 +0,0 @@
-diff --git a/package/libmodbus/001-GfA-echo-rtu.patch b/package/libmodbus/001-GfA-echo-rtu.patch
-deleted file mode 100644
-index 386172f..0000000
---- a/package/libmodbus/001-GfA-echo-rtu.patch
-+++ /dev/null
-@@ -1,105 +0,0 @@
--diff -Naur a/src/modbus-rtu.c b/src/modbus-rtu.c
----- a/src/modbus-rtu.c	2017-10-11 23:07:11.623017506 +0200
--+++ b/src/modbus-rtu.c	2017-10-11 23:07:20.495035402 +0200
--@@ -257,6 +257,27 @@
-- }
-- #endif
-- 
--+
--+ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
--+ ssize_t w, r, i;
--+ uint8_t rb[req_length];
--+
--+ // Transmit
--+ w = write(ctx->s, req, req_length);
--+
--+ // Read back written bytes if hw has echo
--+ r = 0;
--+ while (r < w)
--+  r += read(ctx->s, rb + r, w - r);
--+ if (ctx->debug) {
--+  for (i = 0; i < r; ++i)
--+  fprintf(stderr, "|%02X|", rb[i]);
--+  fprintf(stderr, "\n");
--+ }
--+
--+ return w;
--+}
--+
-- ssize_t _modbus_rtu_send(modbus_t *ctx, const uint8_t *req, int req_length)
-- {
-- #if defined(_WIN32)
--@@ -264,7 +285,14 @@
--     DWORD n_bytes = 0;
--     return (WriteFile(ctx_rtu->w_ser.fd, req, req_length, &n_bytes, NULL)) ? n_bytes : -1;
-- #else
---    return write(ctx->s, req, req_length);
--+    modbus_rtu_t *ctx_rtu = ctx->backend_data;
--+    ssize_t w;
--+    
--+    if(!ctx_rtu->echohw)    
--+      w = write(ctx->s, req, req_length);
--+     else
--+      w = _modbus_rtu_write_n_read(ctx, req, req_length);
--+    return w;
-- #endif
-- }
-- 
--@@ -772,6 +800,30 @@
--     }
-- }
-- 
--+
--+int modbus_rtu_set_echohw_mode(modbus_t* ctx, uint8_t mode) {
--+ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
--+ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
--+ rtu->echohw= mode;
--+ return 0;
--+ }
--+ /* Wrong backend and invalid mode specified */
--+ errno = EINVAL;
--+ return -1;
--+
--+}
--+
--+int modbus_rtu_get_echohw_mode(modbus_t* ctx) {
--+ if (ctx->backend->backend_type == _MODBUS_BACKEND_TYPE_RTU) {
--+ modbus_rtu_t* rtu = (modbus_rtu_t*) ctx->backend_data;
--+ return rtu->echohw;
--+ }
--+ /* Wrong backend and invalid mode specified */
--+ errno = EINVAL;
--+ return -1;
--+
--+}
--+
-- void _modbus_rtu_close(modbus_t *ctx)
-- {
--     /* Closes the file descriptor in RTU mode */
--diff -Naur a/src/modbus-rtu.h b/src/modbus-rtu.h
----- a/src/modbus-rtu.h	2017-10-11 23:07:11.623017506 +0200
--+++ b/src/modbus-rtu.h	2017-10-11 23:07:20.495035402 +0200
--@@ -37,6 +37,12 @@
-- int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);
-- int modbus_rtu_get_serial_mode(modbus_t *ctx);
-- 
--+#define MODBUS_RTU_HAS_ECHOHW 1
--+#define MODBUS_RTU_NO_ECHOHW 0
--+
--+int modbus_rtu_set_echohw_mode(modbus_t *ctx, uint8_t mode);
--+int modbus_rtu_get_echohw_mode(modbus_t *ctx);
--+
-- MODBUS_END_DECLS
-- 
-- #endif /* _MODBUS_RTU_H_ */
--diff -Naur a/src/modbus-rtu-private.h b/src/modbus-rtu-private.h
----- a/src/modbus-rtu-private.h	2017-10-11 23:07:11.623017506 +0200
--+++ b/src/modbus-rtu-private.h	2017-10-11 23:07:20.495035402 +0200
--@@ -81,6 +81,7 @@
-- #if HAVE_DECL_TIOCSRS485
--     int serial_mode;
-- #endif
--+    uint8_t echohw;
-- } modbus_rtu_t;
-- 
-- #endif /* _MODBUS_RTU_PRIVATE_H_ */
-diff --git a/package/libmodbus/002-GfA-fflush-for-debug.patch b/package/libmodbus/002-GfA-fflush-for-debug.patch
-deleted file mode 100644
-index 93eaa9a..0000000
---- a/package/libmodbus/002-GfA-fflush-for-debug.patch
-+++ /dev/null
-@@ -1,47 +0,0 @@
--diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus.c b/src/modbus.c
----- libmodbus-3.0.6/src/modbus.c	2014-04-02 23:34:00.000000000 +0200
--+++ b/src/modbus.c	2018-06-15 08:36:32.657047324 +0200
--@@ -170,6 +170,7 @@ static int send_msg(modbus_t *ctx, uint8
--         for (i = 0; i < msg_length; i++)
--             printf("[%.2X]", msg[i]);
--         printf("\n");
--+        fflush(stdout);
--     }
-- 
--     /* In recovery mode, the write command will be issued until to be
--@@ -407,6 +408,7 @@ static int receive_msg(modbus_t *ctx, ui
--             int i;
--             for (i=0; i < rc; i++)
--                 printf("<%.2X>", msg[msg_length + i]);
--+            fflush(stdout);
--         }
-- 
--         /* Sums bytes received */
--diff '--exclude=.libs*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
----- libmodbus-3.0.6/src/modbus-rtu.c	2018-06-16 17:44:19.011371930 +0200
--+++ b/src/modbus-rtu.c	2018-06-15 08:34:34.544888427 +0200
--@@ -260,7 +260,7 @@ static int win32_ser_read(struct win32_s
-- 
-- ssize_t _modbus_rtu_write_n_read(modbus_t *ctx, const uint8_t *req, int req_length) {
--  ssize_t w, r, i;
--- uint8_t rb[req_length];
--+ uint8_t rb[512];
-- 
--  // Transmit
--  w = write(ctx->s, req, req_length);
--@@ -273,6 +273,7 @@ ssize_t _modbus_rtu_write_n_read(modbus_
--   for (i = 0; i < r; ++i)
--   fprintf(stderr, "|%02X|", rb[i]);
--   fprintf(stderr, "\n");
--+  fflush(stderr);
--  }
-- 
--  return w;
--@@ -325,6 +326,7 @@ int _modbus_rtu_check_integrity(modbus_t
--         if (ctx->debug) {
--             fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
--                     crc_received, crc_calculated);
--+            fflush(stderr);                    
--         }
--         if (ctx->error_recovery & MODBUS_ERROR_RECOVERY_PROTOCOL) {
--             _modbus_rtu_flush(ctx);
-diff --git a/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch b/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
-deleted file mode 100644
-index 79a7ae3..0000000
---- a/package/libmodbus/003-GfA-empty-input-queue-on-CRC-error.patch
-+++ /dev/null
-@@ -1,39 +0,0 @@
--diff '--exclude=.libs*' '--exclude=*.la' '--exclude=*.lo' '--exclude=Makefile*' -Naurp libmodbus-3.0.6/src/modbus-rtu.c b/src/modbus-rtu.c
----- libmodbus-3.0.6/src/modbus-rtu.c	2018-06-22 10:34:55.987233891 +0200
--+++ b/src/modbus-rtu.c	2018-06-18 19:47:12.682614777 +0200
--@@ -323,6 +323,35 @@ int _modbus_rtu_check_integrity(modbus_t
--     if (crc_calculated == crc_received) {
--         return msg_length;
--     } else {
--+        modbus_rtu_t *ctx_rtu = ctx->backend_data;    
--+        
--+        if(ctx_rtu->echohw) {/* on active echomode empty receiver on crc error */
--+            int rc;
--+            fd_set rfds;
--+            struct timeval tv;    
--+        
--+            /* Add a file descriptor to the set */
--+            FD_ZERO(&rfds);
--+            FD_SET(ctx->s, &rfds);
--+            
--+            if (ctx->debug) {
--+                fprintf(stderr, "ERROR CRC received on ECHOHW empty input tv.tv_sec=%d tv.tv_usec=%d\n",
--+                        (int)ctx->response_timeout.tv_sec,
--+                        (int)ctx->response_timeout.tv_usec);
--+                fflush(stderr);                    
--+            }
--+        
--+            do {
--+               unsigned char cc[256]; /* dummy buffer für cleaning input */
--+           
--+               tv.tv_sec = ctx->response_timeout.tv_sec;
--+               tv.tv_usec = ctx->response_timeout.tv_usec;
--+
--+               rc = ctx->backend->select(ctx, &rfds, &tv, sizeof(cc));
--+               if(rc > 0) ctx->backend->recv(ctx, msg + msg_length, rc);           
--+               } while(rc > 0); /* read until transfer empty */
--+            }
--+               
--         if (ctx->debug) {
--             fprintf(stderr, "ERROR CRC received %0X != CRC calculated %0X\n",
--                     crc_received, crc_calculated);
-diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk
-index 1f8c730..62909e4 100644
---- a/package/libmodbus/libmodbus.mk
-+++ b/package/libmodbus/libmodbus.mk
-@@ -4,10 +4,12 @@
- #
- ################################################################################
- 
--LIBMODBUS_VERSION = 3.0.6
--LIBMODBUS_SITE = http://libmodbus.org/releases
-+LIBMODBUS_VERSION = GfA
-+LIBMODBUS_SITE = https://gogs.reru.org/GfA/libmodbus.git
-+LIBMODBUS_SITE_METHOD = git
- LIBMODBUS_LICENSE = LGPLv2.1+
- LIBMODBUS_LICENSE_FILES = COPYING.LESSER
-+LIBMODBUS_AUTORECONF = YES
- LIBMODBUS_INSTALL_STAGING = YES
- 
- $(eval $(autotools-package))

+ 0 - 98
patches/0011-wlan-autoconfig.patch

@@ -1,98 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index 2ee5587dc8..a4456bf836 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -52,13 +52,32 @@ cp $TMP_PATH/u-boot.img /mnt
- cp $TMP_PATH/uImage /mnt
- cp $TMP_PATH/*.dtb /mnt
- 
-+mkdir -p $TMP_PATH/bu_cfg
-+
-+if [ -e /etc/network/interfaces ]
-+then
-+        cp /etc/network/interfaces $TMP_PATH/bu_cfg
-+        rm /etc/network/interfaces
-+fi
-+
-+if [ -e /etc/wpa_supplicant.conf ]
-+then
-+        cp /etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
-+        rm /etc/wpa_supplicant.conf
-+fi
-+
-+if [ -e /etc/wpa_supplicant/wpa_supplicant.conf ]
-+then
-+        cp /etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
-+        rm /etc/wpa_supplicant/wpa_supplicant.conf
-+fi
-+
- #rootfs auspacken
- tar -C / --exclude=./tmp --exclude=./etc/inittab \
--	--exclude=./etc/network/interfaces \
- 	--exclude=./etc/hosts --exclude=./etc/hostname \
- 	--exclude=./etc/passwd --exclude=./etc/shadow \
- 	--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
--	--exclude=./etc/hostapd.conf --exclude=./etc/wpa_supplicant.conf \
-+	--exclude=./etc/hostapd.conf \
- 	--exclude=./etc/init.d/M99tincd \
- 	--exclude=./var/GfA/Display_GSM.ini \
- 	--exclude=./var/cron/crontabs/root \
-@@ -67,6 +86,35 @@ tar -C / --exclude=./tmp --exclude=./etc/inittab \
- echo "sync mmc be patient ...."
- sync
- sync
-+# --- copy old eth0 configuration
-+INTERFACE="eth0"
-+IFCONFIG=$TMP_PATH/bu_cfg/interfaces
-+
-+(\
-+cat << EOF
-+# Configure Loopback
-+auto lo
-+iface lo inet loopback
-+
-+EOF
-+) > /etc/network/interfaces
-+
-+awk -v par=$INTERFACE '/^iface/ && $2==par {f=1}/^iface/ && $2!=par {f=0}f && !/^\s*#/d && !/^\s*$/d  {print $0 }' $TMP_PATH/bu_cfg/interfaces \
-+>> /etc/network/interfaces
-+
-+(\
-+cat << EOF
-+iface eth1 inet dhcp
-+#---
-+iface usb0 inet static
-+        address 192.168.7.2
-+        netmask 255.255.255.252
-+#---
-+iface wlan0 inet dhcp
-+        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
-+#
-+EOF
-+) >> /etc/network/interfaces
- 
- if [ -e /etc/init.d/S98usb_g_ether ]
- then
-@@ -74,12 +122,21 @@ then
- 	rm /etc/init.d/S98usb_g_ether
- fi
- 
--
- if [ -e /etc/init.d/S80ti-sgx ]
- then
- 	rm /etc/init.d/S80ti-sgx
- fi
-         
-+if [ -e /etc/init.d/M99_wlan_usb ]
-+then
-+	rm /etc/init.d/M99_wlan_usb
-+fi
-+
-+if [ -e /etc/init.d/S99_wlan_usb ]
-+then
-+	rm /etc/init.d/S99_wlan_usb
-+fi
-+
- #echo "Update Firmware"
- #echo "."
- #/root/spi_tivia /root/btm43_0107.bin >/dev/null

+ 0 - 49
patches/0012-libmodbus_test-Update-dmsmasq.patch

@@ -1,49 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index a4456bf836..89ff561aa2 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -137,6 +137,31 @@ then
- 	rm /etc/init.d/S99_wlan_usb
- fi
- 
-+if [ -e /etc/init.d/M80dhcp-relay ]
-+then
-+	rm /etc/init.d/M80dhcp-relay
-+fi
-+
-+if [ -e /etc/init.d/S80dhcp-relay ]
-+then
-+	rm /etc/init.d/S80dhcp-relay
-+fi
-+
-+if [ -e /etc/init.d/M80dhcp-server ]
-+then
-+	rm /etc/init.d/M80dhcp-server
-+fi
-+
-+if [ -e /etc/init.d/S80dhcp-server ]
-+then
-+	rm /etc/init.d/S80dhcp-server
-+fi
-+
-+if [ -d /etc/dhcp ]
-+then
-+	rm -rf /etc/dhcp
-+fi
-+
- #echo "Update Firmware"
- #echo "."
- #/root/spi_tivia /root/btm43_0107.bin >/dev/null
-diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk
-index 62909e4a9e..13b9b260e9 100644
---- a/package/libmodbus/libmodbus.mk
-+++ b/package/libmodbus/libmodbus.mk
-@@ -4,7 +4,7 @@
- #
- ################################################################################
- 
--LIBMODBUS_VERSION = GfA
-+LIBMODBUS_VERSION = GfATest
- LIBMODBUS_SITE = https://gogs.reru.org/GfA/libmodbus.git
- LIBMODBUS_SITE_METHOD = git
- LIBMODBUS_LICENSE = LGPLv2.1+

+ 0 - 332
patches/0014-chroot_env_for_rootfs_update.patch

@@ -1,332 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index 89ff561..3e4b29d 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -4,7 +4,7 @@ uuencode=0
- binary=1
- 
- ##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
--TMP_PATH="/__GfA_Update"
-+TMP_PATH="$GFA_PREFIX/__GfA_Update"
- TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
- 
- untar_payload ()
-@@ -25,6 +25,131 @@ untar_payload ()
- 	fi
- }
- 
-+if [ -z $1 ]
-+then
-+## prepare for chrooted environment
-+chmod +x /bin/bash
-+updatename=`realpath $0`
-+echo -e "===\n prepare chroot and update script\n===\n"
-+(\
-+cat << EOF
-+#! /bin/bash
-+CHROOT=/__GfA_chroot
-+
-+#---------------------
-+recurse ()
-+# Param 1 is the nuumber of spaces that the output will be prepended with
-+# Param 2 full path to library
-+{
-+#Use 'readelf -d' to find dependencies
-+dependencies=\$(readelf -d \${2} | grep NEEDED | awk '{ print \$5 }' | tr -d '[]')
-+for d in \$dependencies; do
-+   echo "\${1}\${d} :: \${2}"
-+   rsync -lpR \${2} \${CHROOT}
-+   if [ -L \${2} ] ; then
-+   	LIBNAM=\`readlink -f \${2}\`
-+	rsync -lpR \${LIBNAM} \${CHROOT}
-+	echo "\${1}-->\${LIBNAM}"
-+   fi
-+   nm=\${d##*/}
-+   #libstdc++ hack for the '+'-s
-+   nm1=\${nm//"+"/"\+"}
-+   # /lib /lib64 /usr/lib and /usr/lib are searched
-+   children=\$(find / -name \${d} 2>/dev/null | grep -E "(^/(lib|lib32|usr/lib|usr/lib32)/\${nm1})")
-+   rc=\$?
-+   #at least locate... didn't fail
-+   if [ \${rc} == "0" ] ; then
-+      #we have at least one dependency
-+      if [ \${#children[@]} -gt 0 ]; then
-+         #check the dependeny's dependencies
-+         for c in \$children; do
-+          recurse "  \${1}" \${c}
-+         done
-+      else
-+         echo "\${1}no children found"
-+      fi
-+   else
-+      echo "\${1}locate failed for ${d}"
-+   fi
-+done
-+}
-+# -- recurse needs 2 params could/should be supplied from cmdline
-+echo "==== PREPARE CHROOT ENVIRONMENT in \${CHROOT} ===="
-+rm -rf \$CHROOT
-+mkdir -p \$CHROOT
-+#------------------------------------
-+tt=/bin/bash
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/bin/sh
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/bin/busybox
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/usr/sbin/fbset
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/usr/bin/awk
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/usr/bin/cut
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/usr/bin/tail
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+tt=/sbin/reboot
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
-+#----------------------------------------
-+cp -a /lib/ld-* \${CHROOT}/lib
-+cp -a /bin/*  \${CHROOT}/bin
-+
-+ln -s ./realroot/root \${CHROOT}/root
-+
-+mkdir -p \${CHROOT}/proc
-+mkdir -p \${CHROOT}/dev
-+mkdir -p \${CHROOT}/sys
-+mkdir -p \${CHROOT}/etc
-+mkdir -p \${CHROOT}/realroot
-+mkdir -p \${CHROOT}/var
-+mkdir -p \${CHROOT}/tmp
-+mkdir -p \${CHROOT}/mnt
-+
-+mkdir -p \${CHROOT}/realroot/media/usb0
-+mkdir -p \${CHROOT}/realroot/media/usb1
-+
-+mount -o bind /proc \${CHROOT}/proc    
-+mount -o bind /dev \${CHROOT}/dev
-+mount -o bind /sys \${CHROOT}/sys
-+mount -o bind /etc \${CHROOT}/etc
-+mount -o bind /var \${CHROOT}/var
-+mount -o bind /tmp \${CHROOT}/tmp
-+mount -o bind / \${CHROOT}/realroot
-+
-+mount -o bind /media/usb0 \${CHROOT}/realroot/media/usb0
-+mount -o bind /media/usb1 \${CHROOT}/realroot/media/usb1
-+
-+echo -e "\n===========\nchroot environment ready in \n \${CHROOT}\n===========\n"
-+chroot \${CHROOT} sh -c 'GFA_PREFIX=/realroot sh /realroot${updatename} DoRealUpdate' 
-+
-+EOF
-+) > /root/GfA_prep_chroot.sh
-+
-+chmod a+x /root/GfA_prep_chroot.sh
-+#--- execute built script
-+echo "==>>> execute chroot update script"
-+/root/GfA_prep_chroot.sh
-+else
- ## --- Kommandos zum Installieren
- ## -- get bootpartition
- such="root=/dev/mmcblk1"
-@@ -54,26 +179,26 @@ cp $TMP_PATH/*.dtb /mnt
- 
- mkdir -p $TMP_PATH/bu_cfg
- 
--if [ -e /etc/network/interfaces ]
-+if [ -e $GFA_PREFIX/etc/network/interfaces ]
- then
--        cp /etc/network/interfaces $TMP_PATH/bu_cfg
--        rm /etc/network/interfaces
-+        cp $GFA_PREFIX/etc/network/interfaces $TMP_PATH/bu_cfg
-+        rm $GFA_PREFIX/etc/network/interfaces
- fi
- 
--if [ -e /etc/wpa_supplicant.conf ]
-+if [ -e $GFA_PREFIX/etc/wpa_supplicant.conf ]
- then
--        cp /etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
--        rm /etc/wpa_supplicant.conf
-+        cp $GFA_PREFIX/etc/wpa_supplicant.conf $TMP_PATH/bu_cfg/wpa_supplicant.conf_old
-+        rm $GFA_PREFIX/etc/wpa_supplicant.conf
- fi
- 
--if [ -e /etc/wpa_supplicant/wpa_supplicant.conf ]
-+if [ -e $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
- then
--        cp /etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
--        rm /etc/wpa_supplicant/wpa_supplicant.conf
-+        cp $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf $TMP_PATH/bu_cfg
-+        rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
- fi
- 
- #rootfs auspacken
--tar -C / --exclude=./tmp --exclude=./etc/inittab \
-+tar -C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab \
- 	--exclude=./etc/hosts --exclude=./etc/hostname \
- 	--exclude=./etc/passwd --exclude=./etc/shadow \
- 	--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
-@@ -97,10 +222,10 @@ auto lo
- iface lo inet loopback
- 
- EOF
--) > /etc/network/interfaces
-+) > $GFA_PREFIX/etc/network/interfaces
- 
- awk -v par=$INTERFACE '/^iface/ && $2==par {f=1}/^iface/ && $2!=par {f=0}f && !/^\s*#/d && !/^\s*$/d  {print $0 }' $TMP_PATH/bu_cfg/interfaces \
-->> /etc/network/interfaces
-+>> $GFA_PREFIX/etc/network/interfaces
- 
- (\
- cat << EOF
-@@ -114,52 +239,52 @@ iface wlan0 inet dhcp
-         wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- #
- EOF
--) >> /etc/network/interfaces
-+) >> $GFA_PREFIX/etc/network/interfaces
- 
--if [ -e /etc/init.d/S98usb_g_ether ]
-+if [ -e $GFA_PREFIX/etc/init.d/S98usb_g_ether ]
- then
--	cp /etc/init.d/S98usb_g_ether /etc/init.d/M98usb_g_ether
--	rm /etc/init.d/S98usb_g_ether
-+	cp $GFA_PREFIX/etc/init.d/S98usb_g_ether $GFA_PREFIX/etc/init.d/M98usb_g_ether
-+	rm $GFA_PREFIX/etc/init.d/S98usb_g_ether
- fi
- 
--if [ -e /etc/init.d/S80ti-sgx ]
-+if [ -e $GFA_PREFIX/etc/init.d/S80ti-sgx ]
- then
--	rm /etc/init.d/S80ti-sgx
-+	rm $GFA_PREFIX/etc/init.d/S80ti-sgx
- fi
-         
--if [ -e /etc/init.d/M99_wlan_usb ]
-+if [ -e $GFA_PREFIX/etc/init.d/M99_wlan_usb ]
- then
--	rm /etc/init.d/M99_wlan_usb
-+	rm $GFA_PREFIX/etc/init.d/M99_wlan_usb
- fi
- 
--if [ -e /etc/init.d/S99_wlan_usb ]
-+if [ -e $GFA_PREFIX/etc/init.d/S99_wlan_usb ]
- then
--	rm /etc/init.d/S99_wlan_usb
-+	rm $GFA_PREFIX/etc/init.d/S99_wlan_usb
- fi
- 
--if [ -e /etc/init.d/M80dhcp-relay ]
-+if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-relay ]
- then
--	rm /etc/init.d/M80dhcp-relay
-+	rm $GFA_PREFIX/etc/init.d/M80dhcp-relay
- fi
- 
--if [ -e /etc/init.d/S80dhcp-relay ]
-+if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-relay ]
- then
--	rm /etc/init.d/S80dhcp-relay
-+	rm $GFA_PREFIX/etc/init.d/S80dhcp-relay
- fi
- 
--if [ -e /etc/init.d/M80dhcp-server ]
-+if [ -e $GFA_PREFIX/etc/init.d/M80dhcp-server ]
- then
--	rm /etc/init.d/M80dhcp-server
-+	rm $GFA_PREFIX/etc/init.d/M80dhcp-server
- fi
- 
--if [ -e /etc/init.d/S80dhcp-server ]
-+if [ -e $GFA_PREFIX/etc/init.d/S80dhcp-server ]
- then
--	rm /etc/init.d/S80dhcp-server
-+	rm $GFA_PREFIX/etc/init.d/S80dhcp-server
- fi
- 
--if [ -d /etc/dhcp ]
-+if [ -d $GFA_PREFIX/etc/dhcp ]
- then
--	rm -rf /etc/dhcp
-+	rm -rf $GFA_PREFIX/etc/dhcp
- fi
- 
- #echo "Update Firmware"
-@@ -170,7 +295,7 @@ fi
- #/root/gfa_spi -v
- #================================
- #--create mountable run folder insted of link
--RUNDIR=/run
-+RUNDIR=$GFA_PREFIX/run
- if [ -L $RUNDIR ]; then
-   mv $RUNDIR $RUNDIR'_WRK'
-   mkdir $RUNDIR
-@@ -182,28 +307,29 @@ if [ -L $RUNDIR ]; then
-   rm $RUNDIR'_WRK' 
- fi
- #--- craete missing nogroup group
--GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' /etc/group`
-+GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
- if [ -z "$GID_NOGROUP" ]; then
--  addgroup -S -g 65534 nogroup
-+#  addgroup -S -g 65534 nogroup
-+  echo "nogroup:x:65534:" >> $GFA_PREFIX/etc/group
- fi
- #--create missing users for mysql,
--if [ -z `awk -F\: '/mysql/ {print $3}' /etc/passwd` ]; then
--  UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
--  echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> /etc/passwd
-+if [ -z `awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
-+  UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/passwd`
-+  echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
- fi
- #--create missing users for postgresql,
--if [ -z `awk -F\: '/postgres/ {print $3}' /etc/passwd` ]; then
--  UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/passwd`
--  GID_PG=`awk -F\: '/postgres/ {print $3}' /etc/group`
-+if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
-+  UID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/passwd`
-+  GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
-   if [ -z "$GID_PG" ]; then
--    GID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' /etc/group`
--    echo "postgres:x:$GID_PG:" >> /etc/group
-+    GID_PG=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/group`
-+    echo "postgres:x:$GID_PG:" >> $GFA_PREFIX/etc/group
-     fi
--  echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> /etc/passwd
-+  echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
- fi
- #------------------
--chown -Rv mysql:nogroup /var/mysql
--chown -Rv postgres:postgres /var/lib/pgsql
-+chown -Rv mysql:nogroup $GFA_PREFIX/var/mysql
-+chown -Rv postgres:postgres $GFA_PREFIX/var/lib/pgsql
- #==============================================================================
- # Get Graphics resolution and set dtb to the right resolution
- BASEBOARD=`cat /tmp/BASEBOARD`
-@@ -288,4 +414,11 @@ fi
- echo "Update Done, pls. reboot System"
- umount /mnt
- echo "."
-+echo "restart system !!!"
-+sleep 2
-+#-----------------
-+reboot
-+exit 0
-+fi
-+#-------------
- exit 0

+ 0 - 23
patches/0015-set_my_cnf_for_GfA_logger.patch

@@ -1,23 +0,0 @@
-diff --git a/package/mysql/S97mysqld b/package/mysql/S97mysqld
-index 110ca2cd12..b8d90d165b 100644
---- a/package/mysql/S97mysqld
-+++ b/package/mysql/S97mysqld
-@@ -8,6 +8,18 @@ MYSQL_USER="mysql"
- case "$1" in
- 	start)
- 		if [ ! -d $MYSQL_DIR/mysql ] ; then
-+#--- my.cnf for GfA ---
-+(\
-+cat << EOF
-+[mysqld]
-+ignore-builtin-innodb
-+plugin-load=innodb=ha_innodb_plugin.so
-+innodb_file_per_table=1
-+innodb_file_format=barracuda
-+innodb_strict_mode=1
-+EOF
-+) > /etc/my.cnf
-+#----------------------
- 			echo "Creating MySQL system tables..."
- 			mysql_install_db --user=$MYSQL_USER --ldata=$MYSQL_DIR
- 		fi

+ 0 - 27
patches/0016-set-rtc-from-display_gsm.patch

@@ -1,27 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index 3e4b29d..a891487 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -90,6 +90,10 @@ tt=/bin/busybox
- echo -e "===\n \$tt\n"
- recurse "" \$tt
- 
-+tt=/bin/sed
-+echo -e "===\n \$tt\n"
-+recurse "" \$tt
-+
- tt=/usr/sbin/fbset
- echo -e "===\n \$tt\n"
- recurse "" \$tt
-@@ -287,6 +291,11 @@ then
- 	rm -rf $GFA_PREFIX/etc/dhcp
- fi
- 
-+if [ -e $GFA_PREFIX/var/GfA/Display_GSM.ini ]
-+then
-+	sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
-+fi
-+
- #echo "Update Firmware"
- #echo "."
- #/root/spi_tivia /root/btm43_0107.bin >/dev/null

+ 0 - 36
patches/0017-set-mysql-and-pstgres-owner-for-datadir.patch

@@ -1,36 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index 04618dcbb9..e5247ab42a 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -319,12 +319,13 @@ fi
- GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
- if [ -z "$GID_NOGROUP" ]; then
- #  addgroup -S -g 65534 nogroup
--  echo "nogroup:x:65534:" >> $GFA_PREFIX/etc/group
-+  GID_NOGROUP=65534
-+  echo "nogroup:x:${GID_NOUGROUP}:" >> $GFA_PREFIX/etc/group
- fi
- #--create missing users for mysql,
- if [ -z `awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
-   UID_MY=`awk -F: '{uid[$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' $GFA_PREFIX/etc/passwd`
--  echo "mysql:x:$UID_MY:65534:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
-+  echo "mysql:x:$UID_MY:${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> $GFA_PREFIX/etc/passwd
- fi
- #--create missing users for postgresql,
- if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
-@@ -337,8 +338,13 @@ if [ -z `awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd` ]; then
-   echo "postgres:x:$UID_PG:$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> $GFA_PREFIX/etc/passwd
- fi
- #------------------
--chown -Rv mysql:nogroup $GFA_PREFIX/var/mysql
--chown -Rv postgres:postgres $GFA_PREFIX/var/lib/pgsql
-+UID_MY=`awk -F\: '/mysql/ {print $3}' $GFA_PREFIX/etc/passwd`
-+UID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/passwd`
-+GID_PG=`awk -F\: '/postgres/ {print $3}' $GFA_PREFIX/etc/group`
-+GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
-+
-+chown -Rv ${UID_MY}:${GID_NOGROUP} $GFA_PREFIX/var/mysql
-+chown -Rv ${UID_PG}:${GID_PG} $GFA_PREFIX/var/lib/pgsql
- #==============================================================================
- # Get Graphics resolution and set dtb to the right resolution
- BASEBOARD=`cat /tmp/BASEBOARD`

+ 0 - 29
patches/0018-minicom-lrz-lsz-instead-of-rx-sx.patch

@@ -1,29 +0,0 @@
-diff --git a/package/minicom/0003-use-lsz-and-lrz-instead-of-rx-sx.patch b/package/minicom/0003-use-lsz-and-lrz-instead-of-rx-sx.patch
-new file mode 100644
-index 0000000000..0d8ee6877a
---- /dev/null
-+++ b/package/minicom/0003-use-lsz-and-lrz-instead-of-rx-sx.patch
-@@ -0,0 +1,23 @@
-+diff --git a/src/rwconf.c b/src/rwconf.c
-+index 1737a40..caef515 100644
-+--- a/src/rwconf.c
-++++ b/src/rwconf.c
-+@@ -77,12 +77,12 @@ struct pars mpars[] = {
-+   { "",			0,   "pname11" },
-+   { "",			0,   "pname12" },
-+ #if defined(__linux__) || defined(__GNU__)
-+-  { "/usr/bin/sz -vv -b",	0,   "pprog1" },
-+-  { "/usr/bin/sb -vv",		0,   "pprog2" },
-+-  { "/usr/bin/sx -vv",		0,   "pprog3" },
-+-  { "/usr/bin/rz -vv -b -E",	0,   "pprog4" },
-+-  { "/usr/bin/rb -vv",		0,   "pprog5" },
-+-  { "/usr/bin/rx -vv",		0,   "pprog6" },
-++  { "/usr/bin/lsz --zmodem -vv -b",	0,   "pprog1" },
-++  { "/usr/bin/lsz --ymodemsb -vv",		0,   "pprog2" },
-++  { "/usr/bin/lsz --xmodem -vv",		0,   "pprog3" },
-++  { "/usr/bin/lrz --zmodem -vv -b -E",	0,   "pprog4" },
-++  { "/usr/bin/lrz --ymodem -vv",		0,   "pprog5" },
-++  { "/usr/bin/lrz --xmodem -vv",		0,   "pprog6" },
-+   { "/usr/bin/kermit -i -l %l -b %b -s", 0, "pprog7" },
-+   { "/usr/bin/kermit -i -l %l -b %b -r", 0, "pprog8" },
-+ #else

+ 0 - 21
patches/0019-chroot-700_ssh_exclude_ssh.patch

@@ -1,21 +0,0 @@
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index e5247ab..6d45d3d 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -207,6 +207,7 @@ tar -C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab \
- 	--exclude=./etc/passwd --exclude=./etc/shadow \
- 	--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
- 	--exclude=./etc/hostapd.conf \
-+	--exclude=./root/.ssh \
- 	--exclude=./etc/init.d/M99tincd \
- 	--exclude=./var/GfA/Display_GSM.ini \
- 	--exclude=./var/cron/crontabs/root \
-@@ -345,6 +346,8 @@ GID_NOGROUP=`awk -F\: '/nogroup/ {print $3}' $GFA_PREFIX/etc/group`
- 
- chown -Rv ${UID_MY}:${GID_NOGROUP} $GFA_PREFIX/var/mysql
- chown -Rv ${UID_PG}:${GID_PG} $GFA_PREFIX/var/lib/pgsql
-+
-+chmod 700 $GFA_PREFIX/root/.ssh
- #==============================================================================
- # Get Graphics resolution and set dtb to the right resolution
- BASEBOARD=`cat /tmp/BASEBOARD`

+ 0 - 71
patches/0020-update-ca-certificates-to20190110.patch

@@ -1,71 +0,0 @@
-diff --git a/package/ca-certificates/Config.in b/package/ca-certificates/Config.in
-index a278a62..6bb7182 100644
---- a/package/ca-certificates/Config.in
-+++ b/package/ca-certificates/Config.in
-@@ -6,6 +6,7 @@ config BR2_PACKAGE_CA_CERTIFICATES
- 	  connections.
- 
- 	  It includes, among others, certificate authorities used by the
--	  Debian infrastructure and those shipped with Mozilla's browsers.
-+	  Debian infrastructure and those shipped with Mozilla's
-+	  browsers.
- 
- 	  http://anonscm.debian.org/gitweb/?p=collab-maint/ca-certificates.git
-diff --git a/package/ca-certificates/ca-certificates.hash b/package/ca-certificates/ca-certificates.hash
-index b467316..e83902f 100644
---- a/package/ca-certificates/ca-certificates.hash
-+++ b/package/ca-certificates/ca-certificates.hash
-@@ -1,3 +1 @@
--# hashes from: $(CA_CERTIFICATES_SITE)/ca-certificates_$(CA_CERTIFICATES_VERSION).dsc :
--sha1   4525a194736c6691dbd59fa87281b722837b4768                         ca-certificates_20160104.tar.xz
--sha256 09eb770122e23260316120c0cbbddc8a1d33e7147210ce44e146084d5d5abcdd ca-certificates_20160104.tar.xz
-+sha256	ee4bf0f4c6398005f5b5ca4e0b87b82837ac5c3b0280a1cb3a63c47555c3a675	ca-certificates_20190110.tar.xz
-diff --git a/package/ca-certificates/ca-certificates.mk b/package/ca-certificates/ca-certificates.mk
-index f26be64..21e2c03 100644
---- a/package/ca-certificates/ca-certificates.mk
-+++ b/package/ca-certificates/ca-certificates.mk
-@@ -4,19 +4,19 @@
- #
- ################################################################################
- 
--CA_CERTIFICATES_VERSION = 20160104
-+CA_CERTIFICATES_VERSION = 20190110
- CA_CERTIFICATES_SOURCE = ca-certificates_$(CA_CERTIFICATES_VERSION).tar.xz
--CA_CERTIFICATES_SITE = http://snapshot.debian.org/archive/debian/20160104T220912Z/pool/main/c/ca-certificates
-+CA_CERTIFICATES_SITE = http://snapshot.debian.org/archive/debian/20190510T144732Z/pool/main/c/ca-certificates
- CA_CERTIFICATES_DEPENDENCIES = host-openssl
- # ca-certificates can be built with either python 2 or python 3
- # but it must be at least python 2.7
- CA_CERTIFICATES_DEPENDENCIES += \
- 	$(if $(BR2_PACKAGE_PYTHON3),host-python3,host-python)
--CA_CERTIFICATES_LICENSE = GPLv2+ (script), MPLv2.0 (data)
-+CA_CERTIFICATES_LICENSE = GPL-2.0+ (script), MPL-2.0 (data)
- CA_CERTIFICATES_LICENSE_FILES = debian/copyright
- 
- define CA_CERTIFICATES_BUILD_CMDS
--	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) all
-+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) clean all
- endef
- 
- define CA_CERTIFICATES_INSTALL_TARGET_CMDS
-@@ -31,13 +31,17 @@ define CA_CERTIFICATES_INSTALL_TARGET_CMDS
- 	# Create symlinks to certificates under /etc/ssl/certs
- 	# and generate the bundle
- 	cd $(TARGET_DIR) ;\
--	for i in `find usr/share/ca-certificates -name "*.crt"` ; do \
-+	for i in `find usr/share/ca-certificates -name "*.crt" | LC_COLLATE=C sort` ; do \
- 		ln -sf ../../../$$i etc/ssl/certs/`basename $${i} .crt`.pem ;\
--		cat $$i >>etc/ssl/certs/ca-certificates.crt ;\
--	done
-+		cat $$i ;\
-+	done >$(@D)/ca-certificates.crt
- 
- 	# Create symlinks to the certificates by their hash values
- 	$(HOST_DIR)/usr/bin/c_rehash $(TARGET_DIR)/etc/ssl/certs
-+
-+	# Install the certificates bundle
-+	$(INSTALL) -D -m 644 $(@D)/ca-certificates.crt \
-+		$(TARGET_DIR)/etc/ssl/certs/ca-certificates.crt
- endef
- 
- $(eval $(generic-package))

+ 0 - 177
patches/0021-bump-libvncserver-to-0.9.12.patch

@@ -1,177 +0,0 @@
-diff --git a/package/libvncserver/0001-CMakeLists.txt-fix-build-without-C.patch b/package/libvncserver/0001-CMakeLists.txt-fix-build-without-C.patch
-new file mode 100644
-index 0000000..591c97f
---- /dev/null
-+++ b/package/libvncserver/0001-CMakeLists.txt-fix-build-without-C.patch
-@@ -0,0 +1,33 @@
-+From 868f0a9fa60bb45ee6cf762f323c5b3964b2ee69 Mon Sep 17 00:00:00 2001
-+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+Date: Sun, 23 Jun 2019 10:18:59 +0200
-+Subject: [PATCH] CMakeLists.txt: fix build without C++
-+
-+Specify that libvncserver is a C project file otherwise build will fail
-+if no C++ compiler is found by cmake
-+
-+Fixes:
-+ - http://autobuild.buildroot.org/results/16aaa4e86a2dbf1acf95f10d5131b0f7b8a3d61a
-+
-+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+[Upstream status: https://github.com/LibVNC/libvncserver/pull/317]
-+---
-+ CMakeLists.txt | 2 +-
-+ 1 file changed, 1 insertion(+), 1 deletion(-)
-+
-+diff --git a/CMakeLists.txt b/CMakeLists.txt
-+index 0d3b4dc..ad609ae 100644
-+--- a/CMakeLists.txt
-++++ b/CMakeLists.txt
-+@@ -1,7 +1,7 @@
-+ cmake_minimum_required(VERSION 3.4)
-+ cmake_policy(SET CMP0037 NEW)
-+ 
-+-project(LibVNCServer)
-++project(LibVNCServer C)
-+ include(CheckFunctionExists)
-+ include(CheckSymbolExists)
-+ include(CheckIncludeFile)
-+-- 
-+2.20.1
-+
-diff --git a/package/libvncserver/Config.in b/package/libvncserver/Config.in
-index 460aa78..2d5bf8a 100644
---- a/package/libvncserver/Config.in
-+++ b/package/libvncserver/Config.in
-@@ -3,10 +3,12 @@ config BR2_PACKAGE_LIBVNCSERVER
- 	depends on BR2_USE_MMU # VNCommand.c uses fork()
- 	# binutils issue (bad expression)
- 	depends on !BR2_nios2
-+	depends on !BR2_STATIC_LIBS
-+	select BR2_PACKAGE_LZO
- 	help
- 	  libvncserver is a VNC server/client library.
- 
--	  http://libvncserver.sourceforge.net/
-+	  https://libvnc.github.io/
- 
- if BR2_PACKAGE_LIBVNCSERVER
- 
-@@ -21,3 +23,8 @@ config BR2_PACKAGE_LIBVNCSERVER_TIGHTPNG
- 	  http://wiki.qemu.org/VNC_Tight_PNG
- 
- endif
-+
-+comment "libvncserver needs a toolchain w/ dynamic library"
-+	depends on BR2_USE_MMU
-+	depends on !BR2_nios
-+	depends on BR2_STATIC_LIBS
-diff --git a/package/libvncserver/libvncserver.hash b/package/libvncserver/libvncserver.hash
-index 8d994e4..d98d78d 100644
---- a/package/libvncserver/libvncserver.hash
-+++ b/package/libvncserver/libvncserver.hash
-@@ -1,2 +1,3 @@
- # Locally computed:
--sha256  193d630372722a532136fd25c5326b2ca1a636cbb8bf9bb115ef869c804d2894  LibVNCServer-0.9.11.tar.gz
-+sha256  33cbbb4e15bb390f723c311b323cef4a43bcf781984f92d92adda3243a116136  LibVNCServer-0.9.12.tar.gz
-+sha256  4d23c8c814e5baf007d854f01d8502e77dc56a41144934e003fb32c4e052d20f  COPYING
-diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk
-index d3f0657..b024c31 100644
---- a/package/libvncserver/libvncserver.mk
-+++ b/package/libvncserver/libvncserver.mk
-@@ -4,66 +4,74 @@
- #
- ################################################################################
- 
--LIBVNCSERVER_VERSION = 0.9.11
-+LIBVNCSERVER_VERSION = 0.9.12
- LIBVNCSERVER_SOURCE = LibVNCServer-$(LIBVNCSERVER_VERSION).tar.gz
- LIBVNCSERVER_SITE = https://github.com/LibVNC/libvncserver/archive
--LIBVNCSERVER_LICENSE = GPLv2+
-+LIBVNCSERVER_LICENSE = GPL-2.0+
- LIBVNCSERVER_LICENSE_FILES = COPYING
- LIBVNCSERVER_INSTALL_STAGING = YES
--LIBVNCSERVER_CONFIG_SCRIPTS = libvncserver-config
--LIBVNCSERVER_DEPENDENCIES = host-pkgconf
--
--# Upstream decided to remove generated autotools files from the
--# tarball, so we need to generate them.
--LIBVNCSERVER_AUTORECONF = YES
--
--# libvncserver does not get along with newer libva versions
--# https://github.com/LibVNC/libvncserver/issues/11
--LIBVNCSERVER_CONF_OPTS += --without-libva
-+LIBVNCSERVER_DEPENDENCIES = host-pkgconf lzo
-+LIBVNCSERVER_CONF_OPTS = -DWITH_LZO=ON
- 
- # only used for examples
--LIBVNCSERVER_CONF_OPTS += --with-sdl-config=/bin/false
-+LIBVNCSERVER_CONF_OPTS += \
-+	-DWITH_FFMPEG=OFF \
-+	-DWITH_SDL=OFF
- 
- ifneq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
--LIBVNCSERVER_CONF_OPTS += --without-pthread
-+LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=ON
-+else
-+LIBVNCSERVER_CONF_OPTS += -DWITH_THREADS=OFF
- endif
- 
- # openssl supports needs NPTL thread support
- ifeq ($(BR2_PACKAGE_OPENSSL)$(BR2_TOOLCHAIN_HAS_THREADS_NPTL),yy)
-+LIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=ON
- LIBVNCSERVER_DEPENDENCIES += openssl
- else
--LIBVNCSERVER_CONF_OPTS += --without-crypto --without-ssl
-+LIBVNCSERVER_CONF_OPTS += -DWITH_OPENSSL=OFF
- endif
- 
- ifeq ($(BR2_PACKAGE_LIBGCRYPT),y)
--LIBVNCSERVER_CONF_ENV += LIBGCRYPT_CONFIG=$(STAGING_DIR)/usr/bin/libgcrypt-config
-+LIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=ON
- LIBVNCSERVER_DEPENDENCIES += libgcrypt
- else
--LIBVNCSERVER_CONF_OPTS += --without-gcrypt
-+LIBVNCSERVER_CONF_OPTS += -DWITH_GCRYPT=OFF
- endif
- 
- ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)
--LIBVNCSERVER_DEPENDENCIES += gnutls host-pkgconf
-+LIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=ON
-+LIBVNCSERVER_DEPENDENCIES += gnutls
- else
--LIBVNCSERVER_CONF_OPTS += --without-gnutls
-+LIBVNCSERVER_CONF_OPTS += -DWITH_GNUTLS=OFF
- endif
- 
- ifeq ($(BR2_PACKAGE_JPEG),y)
-+LIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=ON
- LIBVNCSERVER_DEPENDENCIES += jpeg
- else
--LIBVNCSERVER_CONF_OPTS += --without-jpeg
-+LIBVNCSERVER_CONF_OPTS += -DWITH_JPEG=OFF
- endif
- 
- ifeq ($(BR2_PACKAGE_LIBPNG),y)
-+LIBVNCSERVER_CONF_OPTS += -DWITH_PNG=ON
- LIBVNCSERVER_DEPENDENCIES += libpng
- else
--LIBVNCSERVER_CONF_OPTS += --without-png
-+LIBVNCSERVER_CONF_OPTS += -DWITH_PNG=OFF
-+endif
-+
-+ifeq ($(BR2_PACKAGE_SYSTEMD),y)
-+LIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=ON
-+LIBVNCSERVER_DEPENDENCIES += systemd
-+else
-+LIBVNCSERVER_CONF_OPTS += -DWITH_SYSTEMD=OFF
- endif
- 
- ifeq ($(BR2_PACKAGE_ZLIB),y)
-+LIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=ON
- LIBVNCSERVER_DEPENDENCIES += zlib
- else
--LIBVNCSERVER_CONF_OPTS += --without-zlib
-+LIBVNCSERVER_CONF_OPTS += -DWITH_ZLIB=OFF
- endif
- 
--$(eval $(autotools-package))
-+$(eval $(cmake-package))

+ 0 - 21
patches/0022-CrossCompile-fixes.patch

@@ -1,21 +0,0 @@
-diff --git a/CrossCompile.sh b/CrossCompile.sh
-index a2feabc..cb6c0ae 100755
---- a/CrossCompile.sh
-+++ b/CrossCompile.sh
-@@ -18,11 +18,15 @@ fi
- export PATH=$PATH:$SYSROOT
- 
- export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
-+export CROSS=${CROSS_COMPILE}
- export ARCH=arm
- export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
- export BB_KERNEL_SOURCES=$KERNELDIR
- export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
--export CC_FULLPATH="${SYSROOT}${CROSS_COMPILE}"
-+export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
-+export CC=${CROSS_COMPILE}gcc
-+export CXX=${CROSS_COMPILE}g++
-+
- #--- gnupru
- export PASM=pasm
- ##export PSYSROOT=/home/ru/pru/pru-gcc/bin

+ 0 - 14
patches/0024-add-dependency-bluez-tools.patch

@@ -1,14 +0,0 @@
-diff --git a/package/bluez_utils/bluez_utils.mk b/package/bluez_utils/bluez_utils.mk
-index 1c93f2e..5e37b81 100644
---- a/package/bluez_utils/bluez_utils.mk
-+++ b/package/bluez_utils/bluez_utils.mk
-@@ -27,7 +27,8 @@ endif
- ifeq ($(BR2_PACKAGE_BLUEZ_UTILS_AUDIO),y)
- BLUEZ_UTILS_DEPENDENCIES +=	\
- 	alsa-lib		\
--	libsndfile
-+	libsndfile		\
-+	libvorbis
- BLUEZ_UTILS_CONF_OPTS +=	\
- 	--enable-alsa	\
- 	--enable-audio

+ 0 - 209
patches/0024-civetweb-to-v1.11.patch

@@ -1,209 +0,0 @@
-diff --git a/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch b/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch
-deleted file mode 100644
-index aee3cfc..0000000
---- a/package/civetweb/0001-Lua-fix-a-typo-changing-LFS_DIR-to-LFS_DIR.patch
-+++ /dev/null
-@@ -1,27 +0,0 @@
--From 0821066f9adf8410891cd07684ecac50a9bc36a4 Mon Sep 17 00:00:00 2001
--From: Fabio Porcedda <fabio.porcedda@gmail>
--Date: Wed, 25 Feb 2015 18:40:24 +0100
--Subject: [PATCH] Lua: fix a typo changing %(LFS_DIR) to $(LFS_DIR)
--
--Also this fix a error on GNU Make v4.0:
--  Makefile:203: *** mixed implicit and normal rules.  Stop.
--
--Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail>
-----
-- resources/Makefile.in-lua | 2 +-
-- 1 file changed, 1 insertion(+), 1 deletion(-)
--
--diff --git a/resources/Makefile.in-lua b/resources/Makefile.in-lua
--index 0902f11..f3d95fd 100644
----- a/resources/Makefile.in-lua
--+++ b/resources/Makefile.in-lua
--@@ -57,5 +57,5 @@ LFS_CFLAGS = -I$(LFS_DIR)
-- 
-- OBJECTS += $(LUA_OBJECTS) $(SQLITE_OBJECTS) $(LFS_OBJECTS)
-- CFLAGS += $(LUA_CFLAGS) $(SQLITE_CFLAGS) $(LFS_CFLAGS) -DUSE_LUA -DUSE_LUA_SQLITE3 -DUSE_LUA_FILE_SYSTEM
---SOURCE_DIRS = $(LUA_DIR) $(SQLITE_DIR) %(LFS_DIR)
--+SOURCE_DIRS = $(LUA_DIR) $(SQLITE_DIR) $(LFS_DIR)
-- 
---- 
--2.3.0
--
-diff --git a/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch b/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch
-new file mode 100644
-index 0000000..bd1b06a
---- /dev/null
-+++ b/package/civetweb/0001-modlua.ini-include-dlfcn.h.patch
-@@ -0,0 +1,34 @@
-+From ca4325c6963e505d6fb628163abf2359427ea022 Mon Sep 17 00:00:00 2001
-+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+Date: Thu, 29 Nov 2018 21:43:28 +0100
-+Subject: [PATCH] modlua.ini: include dlfcn.h
-+
-+dlfcn.h must be included to be able to use dlopen otherwise build will
-+fail on:
-+src/mod_lua.inl:2845:41: error: 'RTLD_LAZY' undeclared (first use in this function)
-+  lib_handle_uuid = dlopen("libuuid.so", RTLD_LAZY);
-+
-+Fixes:
-+ - http://autobuild.buildroot.org/results/7a189f49c5a8b6f7b3d4c57cda5982adc65dbc19
-+
-+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+[Upstream status: https://github.com/civetweb/civetweb/pull/706]
-+---
-+ src/mod_lua.inl | 1 +
-+ 1 file changed, 1 insertion(+)
-+
-+diff --git a/src/mod_lua.inl b/src/mod_lua.inl
-+index 97a5de1e..ce7a4b2e 100644
-+--- a/src/mod_lua.inl
-++++ b/src/mod_lua.inl
-+@@ -2,6 +2,7 @@
-+  * See https://github.com/civetweb/civetweb/
-+  */
-+ 
-++#include <dlfcn.h>
-+ #include "civetweb_lua.h"
-+ #include "civetweb_private_lua.h"
-+ 
-+-- 
-+2.14.1
-+
-diff --git a/package/civetweb/Config.in b/package/civetweb/Config.in
-index d68a1ff..9e43969 100644
---- a/package/civetweb/Config.in
-+++ b/package/civetweb/Config.in
-@@ -2,6 +2,7 @@ config BR2_PACKAGE_CIVETWEB
- 	bool "civetweb"
- 	depends on BR2_TOOLCHAIN_HAS_THREADS
- 	depends on BR2_USE_MMU # fork()
-+	select BR2_PACKAGE_CIVETWEB_SERVER if !BR2_PACKAGE_CIVETWEB_LIB
- 	help
- 	  Full featured embedded web server with Lua support.
- 
-@@ -9,6 +10,17 @@ config BR2_PACKAGE_CIVETWEB
- 
- if BR2_PACKAGE_CIVETWEB
- 
-+config BR2_PACKAGE_CIVETWEB_SERVER
-+	bool "enable the web server application"
-+	help
-+	  Include the web server and its config files.
-+
-+config BR2_PACKAGE_CIVETWEB_LIB
-+	bool "enable library for embedding"
-+	help
-+	  Enable the civetweb library for embedding in another
-+	  application.
-+
- config BR2_PACKAGE_CIVETWEB_WITH_LUA
- 	bool "enable Lua support"
- 	# required by the bundled Sqlite3 and Lua code
-diff --git a/package/civetweb/civetweb.hash b/package/civetweb/civetweb.hash
-index 745f4a8..e6f60ff 100644
---- a/package/civetweb/civetweb.hash
-+++ b/package/civetweb/civetweb.hash
-@@ -1,2 +1,3 @@
- # Locally calculated
--sha256 79a852a26068eb6d2f8de5ee72e021f0d2c8bd176eb81f41909a876b736815d9  civetweb-v1.5.tar.gz
-+sha256 de7d5e7a2d9551d325898c71e41d437d5f7b51e754b242af897f7be96e713a42  civetweb-1.11.tar.gz
-+sha256 1cd00da00b8649b4005757f4019acfd3102ecd407f47998081697e8e9086f706  LICENSE.md
-diff --git a/package/civetweb/civetweb.mk b/package/civetweb/civetweb.mk
-index d29765b..99da1b6 100644
---- a/package/civetweb/civetweb.mk
-+++ b/package/civetweb/civetweb.mk
-@@ -4,16 +4,26 @@
- #
- ################################################################################
- 
--CIVETWEB_VERSION = v1.5
--CIVETWEB_SITE = $(call github,sunsetbrew,civetweb,$(CIVETWEB_VERSION))
-+CIVETWEB_VERSION = 1.11
-+CIVETWEB_SITE = $(call github,civetweb,civetweb,v$(CIVETWEB_VERSION))
- CIVETWEB_LICENSE = MIT
- CIVETWEB_LICENSE_FILES = LICENSE.md
- 
--CIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1
-+CIVETWEB_CONF_OPTS = TARGET_OS=LINUX WITH_IPV6=1 \
-+	$(if $(BR2_INSTALL_LIBSTDCPP),WITH_CPP=1)
- CIVETWEB_COPT = -DHAVE_POSIX_FALLOCATE=0
- CIVETWEB_LIBS = -lpthread -lm
- CIVETWEB_SYSCONFDIR = /etc
- CIVETWEB_HTMLDIR = /var/www
-+CIVETWEB_INSTALL_OPTS = \
-+	DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \
-+	CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \
-+	HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \
-+	SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)"
-+
-+ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),)
-+CIVETWEB_COPT += -DNO_ATOMICS=1
-+endif
- 
- ifeq ($(BR2_PACKAGE_CIVETWEB_WITH_LUA),y)
- CIVETWEB_CONF_OPTS += WITH_LUA=1
-@@ -22,25 +32,54 @@ endif
- 
- ifeq ($(BR2_PACKAGE_OPENSSL),y)
- CIVETWEB_COPT += -DNO_SSL_DL
--CIVETWEB_LIBS += -lssl -lcrypto -lz
--CIVETWEB_DEPENDENCIES += openssl
-+CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
-+CIVETWEB_DEPENDENCIES += openssl host-pkgconf
- else
- CIVETWEB_COPT += -DNO_SSL
- endif
- 
-+ifeq ($(BR2_PACKAGE_CIVETWEB_SERVER),y)
-+CIVETWEB_BUILD_TARGETS += build
-+CIVETWEB_INSTALL_TARGETS += install
-+endif
-+
-+ifeq ($(BR2_PACKAGE_CIVETWEB_LIB),y)
-+CIVETWEB_INSTALL_STAGING = YES
-+CIVETWEB_INSTALL_TARGETS += install-headers
-+
-+ifeq ($(BR2_STATIC_LIBS)$(BR2_STATIC_SHARED_LIBS),y)
-+CIVETWEB_BUILD_TARGETS += lib
-+CIVETWEB_INSTALL_TARGETS += install-lib
-+endif
-+
-+ifeq ($(BR2_SHARED_LIBS)$(BR2_STATIC_SHARED_LIBS),y)
-+CIVETWEB_BUILD_TARGETS += slib
-+CIVETWEB_INSTALL_TARGETS += install-slib
-+CIVETWEB_COPT += -fPIC
-+endif
-+
-+endif # BR2_PACKAGE_CIVETWEB_LIB
-+
- define CIVETWEB_BUILD_CMDS
--	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) build \
-+	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_BUILD_TARGETS) \
- 		$(CIVETWEB_CONF_OPTS) \
- 		COPT="$(CIVETWEB_COPT)" LIBS="$(CIVETWEB_LIBS)"
- endef
- 
-+define CIVETWEB_INSTALL_STAGING_CMDS
-+	mkdir -p $(STAGING_DIR)/usr/include
-+	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \
-+		PREFIX="$(STAGING_DIR)/usr" \
-+		$(CIVETWEB_INSTALL_OPTS) \
-+		$(CIVETWEB_CONF_OPTS) \
-+		COPT='$(CIVETWEB_COPT)'
-+endef
-+
- define CIVETWEB_INSTALL_TARGET_CMDS
--	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) install \
--		DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \
--		CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \
--		HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \
--		SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)" \
-+	mkdir -p $(TARGET_DIR)/usr/include
-+	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(CIVETWEB_INSTALL_TARGETS) \
- 		PREFIX="$(TARGET_DIR)/usr" \
-+		$(CIVETWEB_INSTALL_OPTS) \
- 		$(CIVETWEB_CONF_OPTS) \
- 		COPT='$(CIVETWEB_COPT)'
- endef

+ 0 - 129
patches/0024-mmc-tools-new-version.patch

@@ -1,129 +0,0 @@
-diff --git a/package/mmc-utils/0001-fix-mmc-h-includes.patch b/package/mmc-utils/0001-fix-mmc-h-includes.patch
-deleted file mode 100644
-index 8d0b2eb..0000000
---- a/package/mmc-utils/0001-fix-mmc-h-includes.patch
-+++ /dev/null
-@@ -1,41 +0,0 @@
--mmc-utils: fix mmc.h includes
--
--Some toolchains include asm-generic/int-l64.h from their asm/types.h
--file for certain 64-bit architectures. This causes a conflict between
--types like this one:
--
--asm-generic/int-l64.h:28:25: error: conflicting types for '__s64'
-- typedef __signed__ long __s64;
--	     ^
--In file included from mmc.h:17:0,
--	 from mmc_cmds.c:30:
--asm-generic/int-ll64.h:29:44: note: previous declaration of '__s64' was
--here
-- __extension__ typedef __signed__ long long __s64;
--
--[Ryan: added include of linux/types.h because mmc/ioctl.h does not
--       include it in kernel version before 3.4]
--
--Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
--Signed-off-by: Ryan Barnett <rjbarnet@rockwellcollins.com>
-----
-- mmc.h |    4 +++-
-- 1 files changed, 3 insertions(+), 1 deletions(-)
--diff --git a/mmc.h b/mmc.h
--index 9871d62..2d54ec5 100644
----- a/mmc.h
--+++ b/mmc.h
--@@ -14,9 +14,12 @@
--  * Boston, MA 021110-1307, USA.
--  */
--
---#include <asm-generic/int-ll64.h>
--+#include <linux/types.h>
-- #include <linux/mmc/ioctl.h>
-- #include <stdio.h>
--+#ifndef _ASM_GENERIC_INT_L64_H
--+#include <asm-generic/int-ll64.h>
--+#endif
--
-- #define CHECK(expr, msg, err_stmt) { if (expr) { fprintf(stderr, msg); err_stmt; } }
--
-diff --git a/package/mmc-utils/0001-mmc_cmds.c-fix-build-with-gcc-4.9.patch b/package/mmc-utils/0001-mmc_cmds.c-fix-build-with-gcc-4.9.patch
-new file mode 100644
-index 0000000..7725f9c
---- /dev/null
-+++ b/package/mmc-utils/0001-mmc_cmds.c-fix-build-with-gcc-4.9.patch
-@@ -0,0 +1,37 @@
-+From 6208cc78f6efd1fafc4f5bc6a487247a383df80f Mon Sep 17 00:00:00 2001
-+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+Date: Sat, 28 Sep 2019 20:44:52 +0200
-+Subject: [PATCH] mmc_cmds.c: fix build with gcc 4.9
-+
-+Fix following error with gcc 4.9:
-+
-+mmc_cmds.c:1918:9: error: missing braces around initializer [-Werror=missing-braces]
-+  struct rpmb_frame frame_status = {0};
-+
-+Fixes:
-+ - http://autobuild.buildroot.org/results/bf3b6f9f6ef39b99842b3c92495b7bf359c68158
-+
-+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-+[Upstream status: sent to linux-mmc@vger.kernel.org]
-+---
-+ mmc_cmds.c | 4 +++-
-+ 1 file changed, 3 insertions(+), 1 deletion(-)
-+
-+diff --git a/mmc_cmds.c b/mmc_cmds.c
-+index fb37189..6b09f26 100644
-+--- a/mmc_cmds.c
-++++ b/mmc_cmds.c
-+@@ -1915,7 +1915,9 @@ static int do_rpmb_op(int fd,
-+ 	u_int16_t rpmb_type;
-+ 	struct mmc_ioc_multi_cmd *mioc;
-+ 	struct mmc_ioc_cmd *ioc;
-+-	struct rpmb_frame frame_status = {0};
-++	struct rpmb_frame frame_status;
-++
-++	memset(&frame_status, 0, sizeof(frame_status));
-+ 
-+ 	if (!frame_in || !frame_out || !out_cnt)
-+ 		return -EINVAL;
-+-- 
-+2.23.0
-+
-diff --git a/package/mmc-utils/mmc-utils.hash b/package/mmc-utils/mmc-utils.hash
-new file mode 100644
-index 0000000..86c644f
---- /dev/null
-+++ b/package/mmc-utils/mmc-utils.hash
-@@ -0,0 +1,3 @@
-+# Locally computed
-+sha256 df8876e0e671f502bb8872cecca3cc6d1055253fa314f3544d22829e129e024e  mmc-utils-d40ec535b9d4e4c974e8c2fbfb422cd0348cc5e8.tar.gz
-+sha256 c3165393bcd710624e2909327a6fbeb736c47bdbe66de1c1a364ac7324d3e4d6  mmc.h
-diff --git a/package/mmc-utils/mmc-utils.mk b/package/mmc-utils/mmc-utils.mk
-index 7473a1b..8c264a4 100644
---- a/package/mmc-utils/mmc-utils.mk
-+++ b/package/mmc-utils/mmc-utils.mk
-@@ -4,16 +4,21 @@
- #
- ################################################################################
- 
--MMC_UTILS_VERSION = 2cb6695e8dec00d887bdd5309d1b57d836fcd214
-+MMC_UTILS_VERSION = d40ec535b9d4e4c974e8c2fbfb422cd0348cc5e8
- MMC_UTILS_SITE = git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
--MMC_UTILS_LICENSE = GPLv2
-+MMC_UTILS_LICENSE = GPL-2.0
-+MMC_UTILS_LICENSE_FILES = mmc.h
- 
-+# override AM_CFLAGS as the project Makefile uses it to pass
-+# -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2, and the latter conflicts
-+# with the _FORTIFY_SOURCE that we pass when hardening options are
-+# enabled.
- define MMC_UTILS_BUILD_CMDS
--	$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS)
-+	$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) AM_CFLAGS=
- endef
- 
- define MMC_UTILS_INSTALL_TARGET_CMDS
--	$(INSTALL) -D -m 0755 $(@D)/mmc $(TARGET_DIR)/usr/bin/mmc
-+	$(MAKE) -C $(@D) prefix=/usr DESTDIR=$(TARGET_DIR) install
- endef
- 
- $(eval $(generic-package))

+ 0 - 77
patches/0025-CrossCompile-fixes.patch

@@ -1,77 +0,0 @@
-diff --git a/CrossCompile.sh b/CrossCompile.sh
-index cb6c0ae..c068ea1 100755
---- a/CrossCompile.sh
-+++ b/CrossCompile.sh
-@@ -3,9 +3,53 @@
- #
- 
- WRKDIR=`pwd`
--CMDDIR=`dirname $0`
-+CMDDIR=`dirname \`readlink -f $0\``
- cd $CMDDIR
- 
-+#=== Asssign GNU_TARGET_NAME from .config
-+_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
-+_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
-+
-+# -- get target os
-+_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
-+if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
-+	_TARGET_OS="uclinux"
-+	else
-+	_TARGET_OS="linux"
-+fi	
-+
-+# -- get libc
-+_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
-+_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
-+
-+if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
-+	_LIBC="uclibc"
-+	else
-+	if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
-+		_LIBC="musl"
-+		else
-+		_LIBC="gnu"
-+	fi
-+fi	 		
-+
-+# -- ABI
-+_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
-+_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
-+_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
-+if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
-+	if [ "$_LIBC" = "uclibc" ]; then
-+		_ABI="gnueabi"
-+		else
-+		_ABI="eabi"
-+	fi
-+	if [ "$_BR2_ARM_EABIHF" = "y" ]; then
-+		_ABI="${_ABI}hf"
-+	fi
-+fi
-+	
-+_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
-+#===============================================================
-+
- TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
- echo $TOOLCHAIN
- 
-@@ -17,12 +61,14 @@ fi
- 
- export PATH=$PATH:$SYSROOT
- 
--export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
-+export CROSS_COMPILE="${_GNU_TARGET_NAME}-"
- export CROSS=${CROSS_COMPILE}
-+
- export ARCH=arm
--export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
-+_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
-+export KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
- export BB_KERNEL_SOURCES=$KERNELDIR
--export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
-+export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
- export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
- export CC=${CROSS_COMPILE}gcc
- export CXX=${CROSS_COMPILE}g++

+ 0 - 146
patches/0026-MakeTOOLCHAIN.patch

@@ -1,146 +0,0 @@
-diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
-new file mode 100755
-index 0000000..134f9f1
---- /dev/null
-+++ b/MakeTOOLCHAIN.sh
-@@ -0,0 +1,140 @@
-+#!/bin/bash
-+echo "====== Build Toolchain INSTALL Script ===="
-+SHWRKDIR=/tmp/XXXMakeTOOLCHAIN
-+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
-+UPDATE_BINARY=$SHWRKDIR/dest/toolchain.tar.Z
-+UPDATE_FILENAME="../Install-TOOLCHAIN-$BUILD.sh"
-+TOOLCHAIN_DIR="/opt/GfA"
-+UPDATE_IN_SCRIPT="MakeTOOLCHAIN.sh.in"
-+
-+rm -rf $SHWRKDIR
-+mkdir -p $SHWRKDIR/dest
-+mkdir -p $SHWRKDIR/Kernel-$BUILD
-+#====================================
-+WRKDIR=`pwd`
-+CMDDIR=`pwd`
-+#=== Asssign GNU_TARGET_NAME from .config
-+_ARCH=`grep BR2_ARCH\= .config | awk -F\= -F\" '{print $2}'`
-+_TARGET_VENDOR=`grep BR2_TOOLCHAIN_BUILDROOT_VENDOR\= .config | awk -F\= -F\" '{print $2}'`
-+
-+# -- get target os
-+_BR2_BINFMT_FLAT=`grep BR2_BINFMT_FLAT\= .config | awk -F\= '{print $2}'`
-+if [ "$_BR2_BINFMT_FLAT" = "y" ]; then
-+        _TARGET_OS="uclinux"
-+        else
-+        _TARGET_OS="linux"
-+fi      
-+
-+# -- get libc
-+_BR2_TOOLCHAIN_USES_UCLIBC=`grep BR2_TOOLCHAIN_USES_UCLIBC\= .config | awk -F\= '{print $2}'`
-+_BR2_TOOLCHAIN_USES_MUSL=`grep BR2_TOOLCHAIN_USES_MUSL\= .config | awk -F\= '{print $2}'`
-+
-+if [ "$_BR2_TOOLCHAIN_USES_UCLIBC" = "y" ]; then
-+        _LIBC="uclibc"
-+        else
-+        if [ "$_BR2_TOOLCHAIN_USES_MUSL" = "y" ]; then
-+                _LIBC="musl"
-+                else
-+                _LIBC="gnu"
-+        fi
-+fi      
-+
-+# -- ABI
-+_BR2_arm=`grep BR2_arm\= .config | awk -F\= '{print $2}'`
-+_BR2_armeb=`grep BR2_armeb\= .config | awk -F\= '{print $2}'`
-+_BR2_ARM_EABIHF=`grep BR2_ARM_EABIHF\= .config | awk -F\= '{print $2}'`
-+if [ "$_BR2_arm" = "y" ] || [ "$_BR2_armeb" = "y" ]; then
-+        if [ "$_LIBC" = "uclibc" ]; then
-+                _ABI="gnueabi"
-+                else
-+                _ABI="eabi"
-+        fi
-+        if [ "$_BR2_ARM_EABIHF" = "y" ]; then
-+                _ABI="${_ABI}hf"
-+        fi
-+fi
-+        
-+_GNU_TARGET_NAME="${_ARCH}-${_TARGET_VENDOR}-${_TARGET_OS}-${_LIBC}${_ABI}"
-+#===============================================================
-+TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
-+if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
-+        SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
-+else
-+        SYSROOT=$TOOLCHAIN/usr/bin
-+fi
-+CROSS_COMPILE="${_GNU_TARGET_NAME}-"
-+CROSS=${CROSS_COMPILE}
-+_KERNELDIR=`grep BR2_LINUX_KERNEL_VERSION\= .config | awk -F\= -F\" '{print $2}'`
-+KERNELDIR=${CMDDIR}/output/build/linux-${_KERNELDIR}
-+#====================================
-+echo $TOOLCHAIN
-+echo "copy Toolchain ... pls be patient"
-+rsync -a $TOOLCHAIN $SHWRKDIR/
-+echo "copy Kernel ... pls be patient"
-+rsync -a $KERNELDIR $SHWRKDIR/Kernel-$BUILD/
-+
-+(\
-+cat << EOF
-+#!/bin/sh
-+
-+export SYSROOT=$SYSROOT
-+export PATH=\$PATH:$SYSROOT
-+export KERNELDIR=$TOOLCHAIN_DIR/Kernel-$BUILD/linux-${_KERNELDIR}
-+export CROSS_COMPILE=${CROSS_COMPILE}
-+export CROSS=${CROSS_COMPILE}
-+
-+export ARCH=arm
-+export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/${_GNU_TARGET_NAME}/sysroot
-+export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
-+export CC=${CROSS_COMPILE}gcc
-+export CXX=${CROSS_COMPILE}g++
-+
-+if [ \$# -eq "0" ] 
-+then
-+PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset
-+else
-+\$1
-+fi
-+
-+EOF
-+) > $SHWRKDIR/CrossCompile-${BUILD}.sh
-+
-+chmod a+x $SHWRKDIR/CrossCompile-${BUILD}.sh
-+
-+echo "packing Binaries to Tarball ... pls be patient"
-+tar -C $SHWRKDIR --exclude=./dest -czf $SHWRKDIR/dest/toolchain.tar.Z ./
-+echo "--------------------- DONE -----------------------"
-+# update script
-+(\
-+cat << EOF
-+#!/bin/sh
-+
-+TOOLCHAIN_DIR=$TOOLCHAIN_DIR
-+TAR_PARAMETERS="-C \$TOOLCHAIN_DIR -xzvf -"
-+
-+untar_payload ()
-+{
-+        match=\$(grep -a -n -m 1 '^PAYLOAD:$' \$0 | cut -d ':' -f 1)
-+        payload_start=\$((match + 1))
-+        tail -n +\$payload_start \$0 | tar \$TAR_PARAMETERS
-+}
-+
-+## --- Kommandos zum Installieren
-+
-+#--- Toolchain-Tarball entpacken
-+
-+if [ ! -d \${TOOLCHAIN_DIR} ]; then
-+        sudo mkdir -p \${TOOLCHAIN_DIR}
-+fi
-+sudo chown -Rv \$USER:\$USER \${TOOLCHAIN_DIR}
-+
-+untar_payload
-+
-+exit 0
-+EOF
-+) > $UPDATE_FILENAME
-+
-+echo "PAYLOAD:" >> $UPDATE_FILENAME
-+cat $UPDATE_BINARY >> $UPDATE_FILENAME
-+
-+chmod a+x $UPDATE_FILENAME

+ 0 - 12
patches/0027-qt57-archive-path-changed.patch

@@ -1,12 +0,0 @@
-diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
-index ba8ae0d..13d6410 100644
---- a/package/qt5/qt5.mk
-+++ b/package/qt5/qt5.mk
-@@ -1,6 +1,6 @@
- QT5_VERSION_MAJOR = 5.7
- QT5_VERSION = $(QT5_VERSION_MAJOR).0
--QT5_SITE = http://download.qt.io/archive/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
-+QT5_SITE = http://download.qt.io/new_archive/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
- ##QT5_VERSION = $(QT5_VERSION_MAJOR).1
- ##QT5_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules
- include $(sort $(wildcard package/qt5/*/*.mk))

+ 0 - 762
patches/0028-Update-Script-New.patch

@@ -1,762 +0,0 @@
-diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
-index 99b77c9..c3f9894 100755
---- a/MakeRootfsUpdate.sh
-+++ b/MakeRootfsUpdate.sh
-@@ -1,5 +1,6 @@
- #!/bin/bash
- WRKDIR=/tmp/XXXUpdateRootfs
-+BOOTDIR=$WRKDIR/_GfABoot
- BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
- UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
- UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
-@@ -7,67 +8,34 @@ UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
- 
- ROOTFSMNT=/tmp/XXXRootFs
- 
--sudo umount $ROOTFSMNT
-+sudo umount $ROOTFSMNT 2>/dev/null
- sudo rm -rf $ROOTFSMNT
- sudo mkdir -p $ROOTFSMNT
--
- sudo mount -o loop ./output/images/rootfs.ext2 $ROOTFSMNT
- 
--rm -rf $WRKDIR
-+sudo rm -rf $WRKDIR
- mkdir -p $WRKDIR/dest
- 
--cp ./output/images/*.dtb $WRKDIR
--cp ./output/images/uImage $WRKDIR
--cp ./output/images/MLO $WRKDIR
--cp ./output/images/u-boot.img $WRKDIR
--
--sudo tar -C $ROOTFSMNT -czvf $WRKDIR/rootfs.tar.gz ./
--sudo umount $ROOTFSMNT
--#cp ./output/images/rootfs.tar.gz $WRKDIR
--
--tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
--
--# Check for payload format option (default is binary).
--binary=1
--uuencode=0
--
--if [[ "$1" == '--binary' ]]; then
--	binary=1
--	uuencode=0
--	shift
--fi
--if [[ "$1" == '--uuencode' ]]; then
--	binary=0
--	uuencode=1
--	shift
--fi
--
-+sudo bash <<EOF
-+mkdir -p $BOOTDIR
-+cp ./output/images/*.dtb $BOOTDIR
-+cp ./output/images/uImage $BOOTDIR
-+cp ./output/images/MLO $BOOTDIR
-+cp ./output/images/u-boot.img $BOOTDIR
-+tar -C $ROOTFSMNT -cf - . | tar xvf - -C $WRKDIR
-+umount $ROOTFSMNT 2>/dev/null
-+tar -C $WRKDIR --exclude=./dest -czvf $UPDATE_BINARY ./
-+EOF
-+
-+#----
- if [[ ! -f $UPDATE_BINARY ]]; then
- 	echo "       UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
--	echo "Usage: $0 [--binary | --uuencode]"
-+	echo "Usage: $0"
- 	exit 1
- fi
- 
--
--if [[ $binary -ne 0 ]]; then
--	# Append binary data.
--	sed \
--		-e 's/uuencode=./uuencode=0/' \
--		-e 's/binary=./binary=1/' \
--			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
--	echo "PAYLOAD:" >> $UPDATE_FILENAME
--
--	cat $UPDATE_BINARY >> $UPDATE_FILENAME
--fi
--if [[ $uuencode -ne 0 ]]; then
--	# Append uuencoded data.
--	sed \
--		-e 's/uuencode=./uuencode=1/' \
--		-e 's/binary=./binary=0/' \
--			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
--	echo "PAYLOAD:" >> $UPDATE_FILENAME
--
--	cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
--fi
-+cat $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
-+echo "PAYLOAD:" >> $UPDATE_FILENAME
-+cat $UPDATE_BINARY >> $UPDATE_FILENAME
- 
- chmod a+x $UPDATE_FILENAME
-diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
-index 13aeadf..af10b8a 100644
---- a/UpdateRootfs.sh.in
-+++ b/UpdateRootfs.sh.in
-@@ -1,28 +1,13 @@
- #!/bin/sh
- 
--uuencode=0
--binary=1
--
--##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
- TMP_PATH="$GFA_PREFIX/__GfA_Update"
--TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
-+TAR_PARAMETERS="-C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab --exclude=./etc/hosts --exclude=./etc/hostname --exclude=./etc/passwd --exclude=./etc/shadow --exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd --exclude=./etc/hostapd.conf --exclude=./root/.ssh --exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini --exclude=./var/cron/crontabs/root -xzvf -"
- 
- untar_payload ()
- {
--
--	echo "remove $TMP_PATH : "
--	rm -rf $TMP_PATH
--	echo ">> $? "
--	mkdir -p $TMP_PATH
--
- 	match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
- 	payload_start=$((match + 1))
--	if [[ $binary -ne 0 ]]; then
--		tail -n +$payload_start $0 | tar $TAR_PARAMETERS
--	fi
--	if [[ $uuencode -ne 0 ]]; then
--		tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
--	fi
-+	tail -n +$payload_start $0 | tar $TAR_PARAMETERS
- }
- 
- if [ -z $1 ]
-@@ -164,22 +149,17 @@ then
- else
- 	bootpart="/dev/mmcblk0p1"
- fi	
-+#===== DoRealUpdate === Start
-+if [ $1 == "DoRealUpdate" ]
-+then
- 
--umount /mnt
--mount $bootpart /mnt
--
--## -- alte Firmwarebinaries löschen
--#rm /root/btm*.bin
-+umount /mnt 2>/dev/null
-+umount $GFA_PREFIX/_GfABoot 2>/dev/null
- 
--#--- Kernel MLO und Rootfs-Tarball entpacken
--untar_payload
--# --- 
-+rm -rf $GFA_PREFIX/_GfABoot
-+mkdir $GFA_PREFIX/_GfABoot
-+mount $bootpart $GFA_PREFIX/_GfABoot
- 
--rm /mnt/rootfs.tar.gz
--cp $TMP_PATH/MLO /mnt
--cp $TMP_PATH/u-boot.img /mnt
--cp $TMP_PATH/uImage /mnt
--cp $TMP_PATH/*.dtb /mnt
- 
- mkdir -p $TMP_PATH/bu_cfg
- 
-@@ -201,17 +181,9 @@ then
-         rm $GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
- fi
- 
--#rootfs auspacken
--tar -C $GFA_PREFIX/ --exclude=./tmp --exclude=./etc/inittab \
--	--exclude=./etc/hosts --exclude=./etc/hostname \
--	--exclude=./etc/passwd --exclude=./etc/shadow \
--	--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \
--	--exclude=./etc/hostapd.conf \
--	--exclude=./root/.ssh \
--	--exclude=./etc/init.d/M99tincd \
--	--exclude=./var/GfA/Display_GSM.ini \
--	--exclude=./var/cron/crontabs/root \
--	-xzvf $TMP_PATH/rootfs.tar.gz
-+#--- Kernel MLO und Rootfs-Tarball entpacken
-+untar_payload
-+# --- 
- 
- echo "sync mmc be patient ...."
- sync
-@@ -297,12 +269,6 @@ then
- 	sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' $GFA_PREFIX/var/GfA/Display_GSM.ini
- fi
- 
--#echo "Update Firmware"
--#echo "."
--#/root/spi_tivia /root/btm43_0107.bin >/dev/null
--#echo ".."
--#echo "Update Firmware Done"
--#/root/gfa_spi -v
- #================================
- #--create mountable run folder insted of link
- RUNDIR=$GFA_PREFIX/run
-@@ -430,13 +396,562 @@ fi
- 
- #=================
- echo "Update Done, pls. reboot System"
--umount /mnt
-+umount $GFA_PREFIX/_GfABoot 2>/dev/null
-+rm -rf $GFA_PREFIX/_GfABoot
-+
- echo "."
- echo "restart system !!!"
- sleep 2
- #-----------------
- reboot
-+fi
-+fi
-+#======================  DoRealUpdate ==== Ende =====
-+#===== MakeBootableSD/EMMC === Start
-+if [ $1 == "MakeBootableSD" -o $1 == "MakeBootableEMMC" ]
-+then
-+such="root=/dev/mmcblk1"
-+
-+if [ $1 == "MakeBootableSD" ]; then
-+	TODEV="SD"
-+else
-+	TODEV="EMMC"
-+fi
-+
-+grep -q $such /proc/cmdline
-+if [ $? == 0 ]; then
-+    bootpart="/dev/mmcblk1p1"
-+    bootdev="EMMC"
-+    DESTNAME="SD"
-+    DESTDEV="/dev/mmcblk0"
-+    DESTBOOTPART="/dev/mmcblk0p1"
-+    DESTROOTPART="/dev/mmcblk0p2"
-+else
-+    bootpart="/dev/mmcblk0p1"
-+    bootdev="SD"
-+    DESTNAME="EMMC"
-+    DESTDEV="/dev/mmcblk1"
-+    DESTBOOTPART="/dev/mmcblk1p1"
-+    DESTROOTPART="/dev/mmcblk1p2"
-+fi
-+
-+echo ""
-+echo -e "\e[7mMake Bootable $TODEV\e[0m"
-+
-+if [ $bootdev == $TODEV ]; then
-+    echo "System was booted from $TODEV, Making Bootable$TODEV not possible ! ==> EXIT"
-+    exit 1
-+fi
-+
-+if [ ! -b $DESTDEV ]; then
-+    echo -e "\e[31mNo $DESTNAME available ! ==> EXIT\e[0m"
-+    exit 2
-+fi
-+
-+echo -e "\e[31m$DESTNAME will be formatted, all Data will be deleted!!\e[0m"
-+echo ""
-+read -n 1 -p "are you sure? (y/n) : " antwort
-+
-+if [ ${#antwort} == 0 ]; then
-+  antwort = "n"  
-+fi
-+
-+if [ $antwort == "y" -o $antwort == "Y" ]; then
-+  echo -e "\nStart copying .."
-+else
-+  echo -e "\nEXIT on user reqest"
-+  exit 3
-+fi
-+
-+echo "Formatting $DESTNAME ...."
-+umount $DESTBOOTPART 2>/dev/null
-+umount $DESTROOTPART 2>/dev/null
-+dd if=/dev/zero of=$DESTDEV bs=2M count=1 conv=notrunc
-+busybox fdisk $DESTDEV <<EOF
-+o
-+p
-+n
-+p
-+1
-+
-++64M
-+t
-+e
-+a
-+1
-+n
-+p
-+2
-+
-+
-+p
-+w
-+EOF
-+/sbin/mkfs.vfat -F 16 $DESTBOOTPART
-+if [ -e /usr/sbin/mkfs.ext4 ]; then
-+       /usr/sbin/mkfs.ext4 -F $DESTROOTPART
-+else
-+       mkfs.ext4 -F $DESTROOTPART
-+fi
-+#======
-+GFA_PREFIX="/tmp/__MakeSD"
-+rm -rf $GFA_PREFIX
-+TAR_PARAMETERS="-C $GFA_PREFIX/ -xzvf -"
-+
-+# mount partiotions
-+mkdir -p $GFA_PREFIX
-+mount $DESTROOTPART $GFA_PREFIX
-+mkdir -p $GFA_PREFIX/_GfABoot
-+mount $DESTBOOTPART $GFA_PREFIX/_GfABoot
-+
-+#--- Kernel MLO und Rootfs-Tarball entpacken
-+untar_payload
-+# --- 
-+cd 
-+df -h
-+# ==========
-+#=====
-+# Get Graphics resolution and set dtb to the right resolution
-+BASEBOARD=`cat /tmp/BASEBOARD`
-+
-+DONE=0
-+YRES="$(fbset | awk '/geom/ {print $3}')"
-+XRES="$(fbset | awk '/geom/ {print $2}')"
-+
-+EMMC_BOOTPATH=$GFA_PREFIX/_GfABoot
-+
-+echo "XRES $XRES, YRES $YRES"
-+
-+if [ "$XRES" == "480" -a "$YRES" == "272" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "4.3 Inch Display 2"
-+  cp $EMMC_BOOTPATH/Display002_4.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "4.3 Inch"
-+  cp $EMMC_BOOTPATH/Display001_4.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "$XRES" == "800" -a "$YRES" == "480" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "7 Inch Display 2"
-+  cp $EMMC_BOOTPATH/Display002_7.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+if [ "$BASEBOARD" == "DISPLAY002_RS485" ]; then
-+  echo "7 Inch Display 2 rs485"
-+  cp $EMMC_BOOTPATH/Display002_7_rs485.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "7 Inch"
-+  cp $EMMC_BOOTPATH/Display001_7.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+fi
-+  
-+if [ "$XRES" == "640" -a "$YRES" == "480" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "5.7 Inch Display 2"
-+  cp $EMMC_BOOTPATH/Display002_5.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "5.7 Inch"
-+  cp $EMMC_BOOTPATH/Display001_5.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+if [ "$XRES" == "1280" -a "$YRES" == "800" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "10 Inch Display 2"
-+  cp $EMMC_BOOTPATH/Display002_10.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "10 Inch"
-+  cp $EMMC_BOOTPATH/Display001_10.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "$XRES" == "1920" -a "$YRES" == "1080" ]; then
-+if [ "$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "15 Inch Display 2"
-+  cp $EMMC_BOOTPATH/Display002_15.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "15 Inch"
-+  cp $EMMC_BOOTPATH/Display001_15.dtb $EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "$DONE" == "0" ]; then
-+  echo "Unknown Display Resolution"
-+fi
-+#========================================
-+
-+# umount boot
-+umount $DESTBOOTPART
-+rm -rf $GFA_PREFIX/_GfABoot
-+# umount rootfs
-+umount $DESTROOTPART
-+
-+exit 0
-+fi
-+#===== MakeBootableSD/EMMC === Ende
-+
-+#===== MakeSDUpdateTool === Start
-+if [ $1 == "MakeSDUpdateTool" ]
-+then
-+such="root=/dev/mmcblk1"
-+
-+grep -q $such /proc/cmdline
-+if [ $? == 0 ]; then
-+    bootpart="/dev/mmcblk1p1"
-+    bootdev="EMMC"
-+else
-+    bootpart="/dev/mmcblk0p1"
-+    bootdev="SD"
-+fi
-+
-+echo ""
-+echo -e "\e[7mMake SDUpdateTool\e[0m"
-+
-+if [ $bootdev != "SD" ]; then
-+    echo "System was booted from $bootdev, Making SDUpdateTool not possible ! ==> EXIT"
-+    exit 1
-+fi
-+
-+GFA_PREFIX="/opt/GfA/SDUpdateTool"
-+GFA_DATAPATH=$GFA_PREFIX/_BootRoot
-+
-+rm -rf $GFA_DATAPATH
-+mkdir -p $GFA_DATAPATH
-+TAR_PARAMETERS="-C $GFA_DATAPATH/ -xzvf -"
-+
-+#--- Kernel MLO und Rootfs-Tarball entpacken
-+untar_payload
-+# --- 
-+echo -e "===\n Make UpdateEMMC.sh \n===\n"
-+(\
-+cat << XEOF
-+#!/bin/sh
-+
-+CALLDIR=\`pwd\`
-+WRKDIR=/opt/GfA/SDUpdateTool
-+  
-+DESTDEV="/dev/mmcblk1"
-+
-+EMMC_BOOTPATH="/tmp/EMMCBOOT"
-+EMMC_ROOTPATH="/tmp/EMMCROOT"
-+such=\$DESTDEV
-+
-+grep -q \$such /proc/cmdline
-+if [ \$? == 0 ]; then
-+    bootpart="/dev/mmcblk1p1"
-+    bootdev="EMMC"
-+else
-+    bootpart="/dev/mmcblk0p1"
-+    bootdev="SD"
-+fi
-+
-+echo ""
-+echo -e "\e[7mUpdate EMMC from SD\e[0m"
-+
-+if [ \$bootdev != "SD" ]; then
-+    echo "System was booted from \$bootdev, update from SD not possible ! =="
-+    exit 1
-+fi
-+
-+umount \${DESTDEV}p1 2>/dev/null
-+umount \${DESTDEV}p2 2>/dev/null
-+
-+rm -rf \$EMMC_BOOTPATH
-+rm -rf \$EMMC_ROOTPATH
-+mkdir -p \$EMMC_BOOTPATH
-+mkdir -p \$EMMC_ROOTPATH
-+
-+mount \${DESTDEV}p1 \$EMMC_BOOTPATH
-+mount \${DESTDEV}p2 \$EMMC_ROOTPATH
-+
-+#== copy network config ==
-+TMP_PATH=\$WRKDIR/_GfA_tmp
-+GFA_PREFIX=\$EMMC_ROOTPATH
-+
-+rm -rf \$TMP_PATH
-+mkdir -p \$TMP_PATH
-+mkdir -p \$TMP_PATH/bu_cfg
-+
-+if [ -e \$GFA_PREFIX/etc/network/interfaces ]
-+then
-+        cp \$GFA_PREFIX/etc/network/interfaces \$TMP_PATH/bu_cfg
-+        rm \$GFA_PREFIX/etc/network/interfaces
-+fi
-+
-+if [ -e \$GFA_PREFIX/etc/wpa_supplicant.conf ]
-+then
-+        cp \$GFA_PREFIX/etc/wpa_supplicant.conf \$TMP_PATH/bu_cfg/wpa_supplicant.conf_old
-+        rm \$GFA_PREFIX/etc/wpa_supplicant.conf
-+fi
-+
-+if [ -e \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf ]
-+then
-+        cp \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf \$TMP_PATH/bu_cfg
-+        rm \$GFA_PREFIX/etc/wpa_supplicant/wpa_supplicant.conf
-+fi
-+
-+#=== copy ROOTFS
-+cd \$WRKDIR/_BootRoot
-+rsync -avR --exclude=/_GfABoot \\
-+--exclude=./tmp --exclude=./etc/inittab \\
-+--exclude=./etc/hosts --exclude=./etc/hostname \\
-+--exclude=./etc/passwd --exclude=./etc/shadow \\
-+--exclude=./etc/vncpwd --exclude=./etc/init.d/S99tincd \\
-+--exclude=./etc/hostapd.conf --exclude=./root/.ssh \\
-+--exclude=./etc/init.d/M99tincd --exclude=./var/GfA/Display_GSM.ini \\
-+--exclude=./var/cron/crontabs/root \\
-+ ./ \$EMMC_ROOTPATH/
-+
-+# --- copy old eth0 configuration
-+INTERFACE="eth0"
-+IFCONFIG=\$TMP_PATH/bu_cfg/interfaces
-+  
-+(\\
-+cat << EOF
-+# Configure Loopback
-+auto lo
-+iface lo inet loopback
-+   
-+EOF
-+) > \$GFA_PREFIX/etc/network/interfaces
-+
-+awk -v par=\$INTERFACE '/^iface/ && \$2==par {f=1}/^iface/ && \$2!=par {f=0}f && !/^\s*#/d && !/^\s*\$/d  {print \$0 }' \$TMP_PATH/bu_cfg/interfaces \\
-+>> \$GFA_PREFIX/etc/network/interfaces
-+  
-+(\\
-+cat << EOF
-+iface eth1 inet dhcp
-+#---
-+iface usb0 inet static
-+        address 192.168.7.2
-+        netmask 255.255.255.252
-+#---
-+iface wlan0 inet dhcp
-+        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
-+#  
-+EOF
-+) >> \$GFA_PREFIX/etc/network/interfaces
-+
-+if [ -e \$GFA_PREFIX/etc/init.d/S98usb_g_ether ]
-+then
-+        cp \$GFA_PREFIX/etc/init.d/S98usb_g_ether \$GFA_PREFIX/etc/init.d/M98usb_g_ether
-+        rm \$GFA_PREFIX/etc/init.d/S98usb_g_ether
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/S80ti-sgx ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/S80ti-sgx
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/M99_wlan_usb ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/M99_wlan_usb
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/S99_wlan_usb ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/S99_wlan_usb
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-relay ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/M80dhcp-relay
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-relay ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/S80dhcp-relay
-+fi
-+if [ -e \$GFA_PREFIX/etc/init.d/M80dhcp-server ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/M80dhcp-server
-+fi
-+  
-+if [ -e \$GFA_PREFIX/etc/init.d/S80dhcp-server ]
-+then
-+        rm \$GFA_PREFIX/etc/init.d/S80dhcp-server
-+fi
-+  
-+if [ -d \$GFA_PREFIX/etc/dhcp ]
-+then
-+        rm -rf \$GFA_PREFIX/etc/dhcp
-+fi
-+  
-+if [ -e \$GFA_PREFIX/var/GfA/Display_GSM.ini ]
-+then
-+        sed -i 's/TSYNCCMD=rdate time.memod.de/TSYNCCMD=\/etc\/init.d\/S99rtc_GfA set/' \$GFA_PREFIX/var/GfA/Display_GSM.ini
-+fi
-+#================================
-+#--create mountable run folder insted of link
-+RUNDIR=\$GFA_PREFIX/run
-+if [ -L \$RUNDIR ]; then
-+  mv \$RUNDIR \$RUNDIR'_WRK'
-+  mkdir \$RUNDIR
-+  mount -t tmpfs tmpfs \$RUNDIR
-+  WRKDIR=\`pwd\`
-+  cd \$RUNDIR'_WRK'
-+  cp -a ./* \$RUNDIR
-+  cd \$WRKDIR
-+  rm \$RUNDIR'_WRK'
-+fi
-+#--- craete missing nogroup group
-+GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
-+if [ -z "\$GID_NOGROUP" ]; then
-+#  addgroup -S -g 65534 nogroup
-+  GID_NOGROUP=65534
-+  echo "nogroup:x:\${GID_NOUGROUP}:" >> \$GFA_PREFIX/etc/group
-+fi
-+#--create missing users for mysql,
-+if [ -z \`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
-+  UID_MY=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
-+  echo "mysql:x:\$UID_MY:\${GID_NOUGROUP}:MySQL daemon:/var/mysql:/bin/false" >> \$GFA_PREFIX/etc/passwd
-+fi
-+#--create missing users for postgresql,
-+if [ -z \`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\` ]; then
-+  UID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/passwd\`
-+  GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\`
-+  if [ -z "\$GID_PG" ]; then
-+    GID_PG=\`awk -F: '{uid[\$3]=1}END{for(x=1000; x<=1500; x++) {if(uid[x] != ""){}else{print x; exit;}}}' \$GFA_PREFIX/etc/group\`
-+    echo "postgres:x:\$GID_PG:" >> \$GFA_PREFIX/etc/group
-+    fi
-+  echo "postgres:x:\$UID_PG:\$GID_PG:PostgreSQL Server:/var/lib/pgsql:/bin/sh" >> \$GFA_PREFIX/etc/passwd
-+fi
-+#------------------
-+UID_MY=\`awk -F\: '/mysql/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
-+UID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/passwd\`
-+GID_PG=\`awk -F\: '/postgres/ {print \$3}' \$GFA_PREFIX/etc/group\` 
-+GID_NOGROUP=\`awk -F\: '/nogroup/ {print \$3}' \$GFA_PREFIX/etc/group\`
-+
-+chown -Rv \${UID_MY}:\${GID_NOGROUP} \$GFA_PREFIX/var/mysql
-+chown -Rv \${UID_PG}:\${GID_PG} \$GFA_PREFIX/var/lib/pgsql 
-+
-+chmod 700 \$GFA_PREFIX/root/.ssh
-+#===== copy custom_root files if folder exists
-+if [ -d "\$WRKDIR/custom_root" ]; then
-+  cd \$WRKDIR/custom_root
-+  rsync -avR  \\
-+   ./ \$EMMC_ROOTPATH/
-+fi
-+#==============================================================================
-+#=== copy BOOTFS
-+rm -rf \$EMMC_BOOTPATH/*
-+cd \$WRKDIR/_BootRoot/_GfABoot
-+rsync -avR ./ \$EMMC_BOOTPATH/
-+#=====
-+# Get Graphics resolution and set dtb to the right resolution
-+BASEBOARD=\`cat /tmp/BASEBOARD\`
-+
-+DONE=0
-+YRES="\$(fbset | awk '/geom/ {print \$3}')"
-+XRES="\$(fbset | awk '/geom/ {print \$2}')"
-+
-+echo "XRES \$XRES, YRES \$YRES"
-+
-+if [ "\$XRES" == "480" -a "\$YRES" == "272" ]; then
-+if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "4.3 Inch Display 2"
-+  cp \$EMMC_BOOTPATH/Display002_4.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "4.3 Inch"
-+  cp \$EMMC_BOOTPATH/Display001_4.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "\$XRES" == "800" -a "\$YRES" == "480" ]; then
-+if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "7 Inch Display 2"
-+  cp \$EMMC_BOOTPATH/Display002_7.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+if [ "\$BASEBOARD" == "DISPLAY002_RS485" ]; then
-+  echo "7 Inch Display 2 rs485"
-+  cp \$EMMC_BOOTPATH/Display002_7_rs485.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "7 Inch"
-+  cp \$EMMC_BOOTPATH/Display001_7.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+fi
-+  
-+if [ "\$XRES" == "640" -a "\$YRES" == "480" ]; then
-+if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "5.7 Inch Display 2"
-+  cp \$EMMC_BOOTPATH/Display002_5.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "5.7 Inch"
-+  cp \$EMMC_BOOTPATH/Display001_5.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+if [ "\$XRES" == "1280" -a "\$YRES" == "800" ]; then
-+if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "10 Inch Display 2"
-+  cp \$EMMC_BOOTPATH/Display002_10.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "10 Inch"
-+  cp \$EMMC_BOOTPATH/Display001_10.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "\$XRES" == "1920" -a "\$YRES" == "1080" ]; then
-+if [ "\$BASEBOARD" == "DISPLAY002_DI4" ]; then
-+  echo "15 Inch Display 2"
-+  cp \$EMMC_BOOTPATH/Display002_15.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+else
-+  echo "15 Inch"
-+  cp \$EMMC_BOOTPATH/Display001_15.dtb \$EMMC_BOOTPATH/Display001.dtb
-+  DONE=1
-+fi
-+fi
-+  
-+if [ "\$DONE" == "0" ]; then
-+  echo "Unknown Display Resolution"
-+fi
-+#========================================
-+
-+umount \${DESTDEV}p1 2>/dev/null
-+umount \${DESTDEV}p2 2>/dev/null
-+
-+XEOF
-+) > $GFA_PREFIX/UpdateEMMC.sh
-+chmod a+x  $GFA_PREFIX/UpdateEMMC.sh
-+
- exit 0
- fi
--#-------------
-+#===== MakeSDUpdateTool === End
-+
-+#====== HELP on unknown Command =======
-+echo -e "Unknown Command :: $1"
-+echo -e "Usage: $0 \e[32m[Command]\e[0m"
-+echo -e "\t without command ... update to new system"
-+echo -e "\t \e[32mMakeBootableSD\e[0m ... create bootable SD card with factory defaults"
-+echo -e "\t \e[32mMakeBootableEMMC\e[0m ... create bootable EMMC with factory defaults"
-+echo -e "\t \e[32mMakeSDUpdateTool\e[0m ... create Folders and scripts for"
-+echo -e "\t\t updating system from SD Card in /opt/GfA/SDUpdateTool"
-+echo -e "\t\t To Do UpdateEMMC:"
-+echo -e "\t\t\t cd /opt/GfA/SDUpdateTool"
-+echo -e "\t\t\t ./UpdateEMMC.sh"
-+echo -e "\t\t\t if folder /opt/GfASDupdateTool/custom_root exists"
-+echo -e "\t\t\t whole tree will be copied to root filesystem as is"
-+
- exit 0

+ 0 - 37
patches/0029-add-contiki-settings-for-crosscompile.patch

@@ -1,37 +0,0 @@
-diff --git a/CrossCompile.sh b/CrossCompile.sh
-index c068ea1..5982fef 100755
---- a/CrossCompile.sh
-+++ b/CrossCompile.sh
-@@ -73,6 +73,14 @@ export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
- export CC=${CROSS_COMPILE}gcc
- export CXX=${CROSS_COMPILE}g++
- 
-+export AS=arm-buildroot-linux-gnueabihf-as
-+export NM=arm-buildroot-linux-gnueabihf-nm
-+export OBJCOPY=arm-buildroot-linux-gnueabihf-objcopy
-+export STRIP=arm-buildroot-linux-gnueabihf-strip
-+#for contiki-ng
-+export LD_OVERRIDE=$CC
-+
-+
- #--- gnupru
- export PASM=pasm
- ##export PSYSROOT=/home/ru/pru/pru-gcc/bin
-diff --git a/MakeTOOLCHAIN.sh b/MakeTOOLCHAIN.sh
-index 134f9f1..0fecf27 100755
---- a/MakeTOOLCHAIN.sh
-+++ b/MakeTOOLCHAIN.sh
-@@ -89,6 +89,13 @@ export CC_FULLPATH="${SYSROOT}/${CROSS_COMPILE}"
- export CC=${CROSS_COMPILE}gcc
- export CXX=${CROSS_COMPILE}g++
- 
-+export AS=${CROSS_COMPILE}as
-+export NM==${CROSS_COMPILE}nm
-+export OBJCOPY==${CROSS_COMPILE}objcopy
-+export STRIP==${CROSS_COMPILE}strip
-+#for contiki-ng
-+export LD_OVERRIDE=${CROSS_COMPILE}gcc
-+
- if [ \$# -eq "0" ] 
- then
- PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]\$PS1";unset PROMPT_COMMAND' bash ; reset

+ 2 - 10
patches/0023-libvncserver-websock.patch → patches/0101-libvncserver-force-threads.patch

@@ -1,16 +1,8 @@
 diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk
 diff --git a/package/libvncserver/libvncserver.mk b/package/libvncserver/libvncserver.mk
-index b024c31..a4afb42 100644
+index b024c3161d..d2d1231037 100644
 --- a/package/libvncserver/libvncserver.mk
 --- a/package/libvncserver/libvncserver.mk
 +++ b/package/libvncserver/libvncserver.mk
 +++ b/package/libvncserver/libvncserver.mk
-@@ -11,14 +11,14 @@ LIBVNCSERVER_LICENSE = GPL-2.0+
- LIBVNCSERVER_LICENSE_FILES = COPYING
- LIBVNCSERVER_INSTALL_STAGING = YES
- LIBVNCSERVER_DEPENDENCIES = host-pkgconf lzo
--LIBVNCSERVER_CONF_OPTS = -DWITH_LZO=ON
-+LIBVNCSERVER_CONF_OPTS = -DWITH_LZO=ON -DWITH_WEBSOCKETS=ON -DWITH_IPv6=OFF
- 
- # only used for examples
- LIBVNCSERVER_CONF_OPTS += \
+@@ -18,7 +18,7 @@ LIBVNCSERVER_CONF_OPTS += \
  	-DWITH_FFMPEG=OFF \
  	-DWITH_FFMPEG=OFF \
  	-DWITH_SDL=OFF
  	-DWITH_SDL=OFF
  
  

+ 38 - 0
patches/0102-revert-pulseaudio-to-12.2-due-to-compile-issues-in-q.patch

@@ -0,0 +1,38 @@
+From ef36127560e35c60b895e04978d4d10c63d1ec99 Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Sun, 17 Nov 2019 07:17:05 +0000
+Subject: [PATCH 1/2] revert pulseaudio to 12.2 due to compile issues in
+ qt5webengine 5.12.5
+
+---
+ package/pulseaudio/pulseaudio.hash | 1 +
+ package/pulseaudio/pulseaudio.mk   | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/package/pulseaudio/pulseaudio.hash b/package/pulseaudio/pulseaudio.hash
+index 11d9a275c8..b9b9bea998 100644
+--- a/package/pulseaudio/pulseaudio.hash
++++ b/package/pulseaudio/pulseaudio.hash
+@@ -1,5 +1,6 @@
+ # From https://lists.freedesktop.org/archives/pulseaudio-discuss/2019-September/031373.html
+ sha256 961b23ca1acfd28f2bc87414c27bb40e12436efcf2158d29721b1e89f3f28057  pulseaudio-13.0.tar.xz
++sha256 809668ffc296043779c984f53461c2b3987a45b7a25eb2f0a1d11d9f23ba4055  pulseaudio-12.2.tar.xz
+ # Locally computed
+ sha256 c38aee9e3c8c4d5d594ff548a1be05453023016d6286931f6512db215ec1fd42  GPL
+ sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861  LGPL
+diff --git a/package/pulseaudio/pulseaudio.mk b/package/pulseaudio/pulseaudio.mk
+index b833d4ad27..b59823eb8b 100644
+--- a/package/pulseaudio/pulseaudio.mk
++++ b/package/pulseaudio/pulseaudio.mk
+@@ -4,7 +4,7 @@
+ #
+ ################################################################################
+ 
+-PULSEAUDIO_VERSION = 13.0
++PULSEAUDIO_VERSION = 12.2
+ PULSEAUDIO_SOURCE = pulseaudio-$(PULSEAUDIO_VERSION).tar.xz
+ PULSEAUDIO_SITE = http://freedesktop.org/software/pulseaudio/releases
+ PULSEAUDIO_INSTALL_STAGING = YES
+-- 
+2.20.1
+

+ 118 - 0
patches/0104-gfx-settings-for-GfA.patch

@@ -0,0 +1,118 @@
+From f5e8b3a24e47726a6241594e0ade2da8811c8920 Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Thu, 26 Dec 2019 17:05:20 +0000
+Subject: [PATCH] gfx-settings for GfA
+
+---
+ package/ti-gfx/Config.in   | 10 ++++------
+ package/ti-gfx/S80ti-gfx   | 10 ++++++++++
+ package/ti-gfx/esrev.sh    |  3 +--
+ package/ti-gfx/powervr.ini |  4 +++-
+ package/ti-gfx/ti-gfx.mk   |  4 ++--
+ 5 files changed, 20 insertions(+), 11 deletions(-)
+
+diff --git a/package/ti-gfx/Config.in b/package/ti-gfx/Config.in
+index 76aabcb..6ec2f23 100644
+--- a/package/ti-gfx/Config.in
++++ b/package/ti-gfx/Config.in
+@@ -1,7 +1,6 @@
+ config BR2_PACKAGE_TI_GFX
+ 	bool "ti-gfx"
+ 	depends on BR2_LINUX_KERNEL && BR2_TOOLCHAIN_USES_GLIBC && BR2_arm
+-	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ 	select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ 	select BR2_PACKAGE_HAS_LIBEGL
+ 	select BR2_PACKAGE_HAS_LIBGLES
+@@ -32,9 +31,8 @@ config BR2_PACKAGE_PROVIDES_POWERVR
+ config BR2_PACKAGE_TI_GFX_DEBUG
+ 	bool "enable debug support"
+ 	help
+-	  Turns on debugging in the kernel module, install libraries
+-	  built with debugging enabled, installs various tests and
+-	  installs esrev script.
++	  Turns on debugging in the kernel module, install libraries built with
++	  debugging enabled, installs various tests and installs esrev script.
+ 
+ config BR2_PACKAGE_TI_GFX_DEMOS
+ 	bool "install demos"
+@@ -51,8 +49,8 @@ choice
+ 	prompt "Target"
+ 	default BR2_PACKAGE_TI_GFX_ES3
+ 	help
+-	  Select the SOC for which you would like to install
+-	  drivers. Please use the chart at
++	  Select the SOC for which you would like to install drivers. Please use the
++	  chart at
+ 	  http://processors.wiki.ti.com/index.php/OMAP35x_Graphics_SDK_Getting_Started_Guide
+ 
+ config BR2_PACKAGE_TI_GFX_ES3
+diff --git a/package/ti-gfx/S80ti-gfx b/package/ti-gfx/S80ti-gfx
+index fc5999a..a204815 100644
+--- a/package/ti-gfx/S80ti-gfx
++++ b/package/ti-gfx/S80ti-gfx
+@@ -3,6 +3,8 @@
+ start() {
+ 	echo "ti-gfx: starting pvr driver"
+ 
++	TMPFB=`mktemp`
++	cat /dev/fb0 > $TMPFB
+ 	BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')"
+ 	YRES="$(fbset | awk '/geom/ {print $3}')"
+ 	# Set RGBA ordering to something the drivers like
+@@ -22,6 +24,14 @@ start() {
+ 	mknod /dev/pvrsrvkm c $pvr_maj 0
+ 	chmod 600 /dev/pvrsrvkm
+ 
++	#-- cursor off	
++	echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty0
++	# -- disa screensaver
++	echo 0 > /sys/class/graphics/fb0/blank
++	
++	cat $TMPFB > /dev/fb0
++	rm $TMPFB
++	
+ 	if ! /usr/bin/pvrsrvctl --start --no-module; then
+ 		echo "ti-gfx: unable to start server"
+ 	fi
+diff --git a/package/ti-gfx/esrev.sh b/package/ti-gfx/esrev.sh
+index 8109334..6220d44 100644
+--- a/package/ti-gfx/esrev.sh
++++ b/package/ti-gfx/esrev.sh
+@@ -48,8 +48,7 @@ case $CPUTYPE in
+ 	devmem 0x48180900 w 0x2
+ 	devmem 0x48180920 w 0x2
+ 
+-	ES_REVISION="$(devmem 0x56000014 | sed -e s:0x00010205:6: \
+-		-e s:0x00010201:3: -e s:0x00010003:2:)"
++	ES_REVISION="$(devmem2 0x56000014 | sed -e s:0x00010205:6: -e s:0x00010201:3: -e s:0x00010003:2: | tail -n1 | awk -F': ' '{print $2}')"
+ 	;;
+ *)
+ 	echo Unable to determine SGX hardware
+diff --git a/package/ti-gfx/powervr.ini b/package/ti-gfx/powervr.ini
+index 8d2d853..cceecdd 100644
+--- a/package/ti-gfx/powervr.ini
++++ b/package/ti-gfx/powervr.ini
+@@ -1,2 +1,4 @@
+ [default]
+-WindowSystem=libpvrPVR2D_FRONTWSEGL.so
++#WindowSystem=libpvrPVR2D_FRONTWSEGL.so
++WindowSystem=libpvrPVR2D_FLIPWSEGL.so
++ParamBufferSize=16777216
+diff --git a/package/ti-gfx/ti-gfx.mk b/package/ti-gfx/ti-gfx.mk
+index 9fad553..428878a 100644
+--- a/package/ti-gfx/ti-gfx.mk
++++ b/package/ti-gfx/ti-gfx.mk
+@@ -94,8 +94,8 @@ TI_GFX_HDR_DIRS = OGLES2/EGL OGLES2/EWS OGLES2/GLES2 OGLES2/KHR \
+ 	OGLES/GLES bufferclass_ti/ pvr2d/ wsegl/
+ 
+ define TI_GFX_EXTRACT_CMDS
+-	chmod +x $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE)
+-	printf "Y\nY\n qY\n\n" | $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE) \
++	chmod +x $(DL_DIR)/$(TI_GFX_SOURCE)
++	printf "Y\nY\n qY\n\n" | $(DL_DIR)/$(TI_GFX_SOURCE) \
+ 		--prefix $(@D) \
+ 		--mode console
+ endef
+-- 
+2.7.4
+

+ 43 - 0
patches/0105-evtest-SW_IO1-SW_IO4.patch

@@ -0,0 +1,43 @@
+From b00068d5c4d79de42e9d954f763a9afe909afb32 Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Wed, 1 Jan 2020 21:34:31 +0000
+Subject: [PATCH 2/2] evtest-SW_IO1-SW_IO4
+
+---
+ package/evtest/0002-SW_IO1-SW_IO4.patch | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+ create mode 100644 package/evtest/0002-SW_IO1-SW_IO4.patch
+
+diff --git a/package/evtest/0002-SW_IO1-SW_IO4.patch b/package/evtest/0002-SW_IO1-SW_IO4.patch
+new file mode 100644
+index 0000000..89b1c89
+--- /dev/null
++++ b/package/evtest/0002-SW_IO1-SW_IO4.patch
+@@ -0,0 +1,24 @@
++diff --git a/evtest.c b/evtest.c
++index 548c203..f0a681d 100644
++--- a/evtest.c
+++++ b/evtest.c
++@@ -786,6 +786,19 @@ static const char * const switches[SW_MAX + 1] = {
++ #ifdef SW_PEN_INSERTED
++ 	NAME_ELEMENT(SW_PEN_INSERTED),
++ #endif
+++#ifdef SW_IO1
+++        NAME_ELEMENT(SW_IO1),
+++#endif
+++#ifdef SW_IO2
+++        NAME_ELEMENT(SW_IO2),
+++#endif
+++#ifdef SW_IO3
+++        NAME_ELEMENT(SW_IO3),
+++#endif
+++#ifdef SW_IO4
+++        NAME_ELEMENT(SW_IO4),
+++#endif
+++
++ };
++ 
++ static const char * const force[FF_MAX + 1] = {
+-- 
+2.7.4
+

+ 46 - 0
patches/0106-libmodbus-GfA.patch

@@ -0,0 +1,46 @@
+diff --git a/package/libmodbus/Config.in b/package/libmodbus/Config.in
+index 642b57c..ccf1190 100644
+--- a/package/libmodbus/Config.in
++++ b/package/libmodbus/Config.in
+@@ -1,8 +1,8 @@
+ config BR2_PACKAGE_LIBMODBUS
+ 	bool "libmodbus"
+ 	help
+-	  libmodbus is a free software library to send/receive data
+-	  according to the Modbus protocol. This library is written in C
+-	  and supports RTU (serial) and TCP (Ethernet) communications.
++	  libmodbus is a free software library to send/receive data according
++	  to the Modbus protocol. This library is written in C and supports
++	  RTU (serial) and TCP (Ethernet) communications.
+ 
+ 	  http://libmodbus.org
+diff --git a/package/libmodbus/libmodbus.hash b/package/libmodbus/libmodbus.hash
+deleted file mode 100644
+index 2931f3f..0000000
+--- a/package/libmodbus/libmodbus.hash
++++ /dev/null
+@@ -1,3 +0,0 @@
+-# Locally computed
+-sha256  d7d9fa94a16edb094e5fdf5d87ae17a0dc3f3e3d687fead81835d9572cf87c16  libmodbus-3.1.6.tar.gz
+-sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LESSER
+diff --git a/package/libmodbus/libmodbus.mk b/package/libmodbus/libmodbus.mk
+index 584ac75..13b9b26 100644
+--- a/package/libmodbus/libmodbus.mk
++++ b/package/libmodbus/libmodbus.mk
+@@ -4,11 +4,12 @@
+ #
+ ################################################################################
+ 
+-LIBMODBUS_VERSION = 3.1.6
+-LIBMODBUS_SITE = http://libmodbus.org/releases
+-LIBMODBUS_LICENSE = LGPL-2.1+
++LIBMODBUS_VERSION = GfATest
++LIBMODBUS_SITE = https://gogs.reru.org/GfA/libmodbus.git
++LIBMODBUS_SITE_METHOD = git
++LIBMODBUS_LICENSE = LGPLv2.1+
+ LIBMODBUS_LICENSE_FILES = COPYING.LESSER
++LIBMODBUS_AUTORECONF = YES
+ LIBMODBUS_INSTALL_STAGING = YES
+-LIBMODBUS_CONF_OPTS = --without-documentation --disable-tests
+ 
+ $(eval $(autotools-package))

+ 15 - 0
patches/0107-ti-gfx-wrong-source-path.patch

@@ -0,0 +1,15 @@
+diff --git a/package/ti-gfx/ti-gfx.mk b/package/ti-gfx/ti-gfx.mk
+index 3b8d2e15df..45517fc59d 100644
+--- a/package/ti-gfx/ti-gfx.mk
++++ b/package/ti-gfx/ti-gfx.mk
+@@ -94,8 +94,8 @@ TI_GFX_HDR_DIRS = OGLES2/EGL OGLES2/EWS OGLES2/GLES2 OGLES2/KHR \
+ 	OGLES/GLES bufferclass_ti/ pvr2d/ wsegl/
+ 
+ define TI_GFX_EXTRACT_CMDS
+-	chmod +x $(DL_DIR)/$(TI_GFX_SOURCE)
+-	printf "Y\nY\n qY\n\n" | $(DL_DIR)/$(TI_GFX_SOURCE) \
++	chmod +x $(DL_DIR)/ti-gfx/$(TI_GFX_SOURCE)
++	printf "Y\nY\n qY\n\n" | $(DL_DIR)/ti-gfx/$(TI_GFX_SOURCE) \
+ 		--prefix $(@D) \
+ 		--mode console
+ endef

+ 140 - 0
patches/0108-revert-to-glibc-2.30-due-to-time64-issues.patch

@@ -0,0 +1,140 @@
+From a0a6bb9222ee234154997df5d78fc0e1b687329e Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Sat, 17 Apr 2021 08:50:17 +0000
+Subject: [PATCH] revert to glibc 2.30 due to time64 issues
+
+---
+ .../glibc.hash                                       |  7 +++++++
+ .../glibc.hash                                       |  7 +++++++
+ .../glibc.hash                                       |  7 -------
+ .../glibc.hash                                       |  7 -------
+ package/glibc/arc-2019.09-release/glibc.hash         |  7 +++++++
+ package/glibc/glibc.mk                               | 20 ++++++++++----------
+ 6 files changed, 31 insertions(+), 24 deletions(-)
+ create mode 100644 package/glibc/06983fe52cfe8e4779035c27e8cc5d2caab31531/glibc.hash
+ create mode 100644 package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash
+ delete mode 100644 package/glibc/2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2/glibc.hash
+ delete mode 100644 package/glibc/2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99/glibc.hash
+ create mode 100644 package/glibc/arc-2019.09-release/glibc.hash
+
+diff --git a/package/glibc/06983fe52cfe8e4779035c27e8cc5d2caab31531/glibc.hash b/package/glibc/06983fe52cfe8e4779035c27e8cc5d2caab31531/glibc.hash
+new file mode 100644
+index 0000000..ce378c0
+--- /dev/null
++++ b/package/glibc/06983fe52cfe8e4779035c27e8cc5d2caab31531/glibc.hash
+@@ -0,0 +1,7 @@
++# Locally calculated (fetched from Github)
++sha256 703877c0df77fce00719fe55cc62b07bb8d5f44fdb704bbb1b0bf2cf38afe10a  glibc-06983fe52cfe8e4779035c27e8cc5d2caab31531.tar.gz
++
++# Hashes for license files
++sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING
++sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB
++sha256 35bdb41dc0bcb10702ddacbd51ec4c0fe6fb3129f734e8c85fc02e4d3eb0ce3f LICENSES
+diff --git a/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash b/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash
+new file mode 100644
+index 0000000..6677d32
+--- /dev/null
++++ b/package/glibc/2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427/glibc.hash
+@@ -0,0 +1,7 @@
++# Locally calculated (fetched from Github)
++sha256  4462f56696332efbc5b0c2f86d7aa75a2a02c3d44bc4345fa42b5bab1225de5c  glibc-2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427.tar.gz
++
++# Hashes for license files
++sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
++sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
++sha256  35bdb41dc0bcb10702ddacbd51ec4c0fe6fb3129f734e8c85fc02e4d3eb0ce3f  LICENSES
+diff --git a/package/glibc/2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2/glibc.hash b/package/glibc/2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2/glibc.hash
+deleted file mode 100644
+index b1d5243..0000000
+--- a/package/glibc/2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2/glibc.hash
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# Locally calculated (fetched from Github)
+-sha256  f4710e9a435a7b83e1d23dd75434f0d36b898eba9b4249c946c32b467d852fd4  glibc-2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2.tar.gz
+-
+-# Hashes for license files
+-sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
+-sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
+-sha256  b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc  LICENSES
+diff --git a/package/glibc/2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99/glibc.hash b/package/glibc/2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99/glibc.hash
+deleted file mode 100644
+index 5585915..0000000
+--- a/package/glibc/2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99/glibc.hash
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# Locally calculated (fetched from Github)
+-sha256 c3828224d69a42f5b6982cbec8ae01cf494fe975ce9023e36ff2c10a2fb93e42 glibc-2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99.tar.gz
+-
+-# Hashes for license files
+-sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
+-sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
+-sha256  b33d0bd9f685b46853548814893a6135e74430d12f6d94ab3eba42fc591f83bc  LICENSES
+diff --git a/package/glibc/arc-2019.09-release/glibc.hash b/package/glibc/arc-2019.09-release/glibc.hash
+new file mode 100644
+index 0000000..296035c
+--- /dev/null
++++ b/package/glibc/arc-2019.09-release/glibc.hash
+@@ -0,0 +1,7 @@
++# Locally calculated (fetched from Github)
++sha256  0e0fd7603938fd8ebd793385a3d72c6e1fba22e16a600a16cc953a93f0e85943  glibc-arc-2019.09-release.tar.gz
++
++# Hashes for license files
++sha256  8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643  COPYING
++sha256  dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551  COPYING.LIB
++sha256  35bdb41dc0bcb10702ddacbd51ec4c0fe6fb3129f734e8c85fc02e4d3eb0ce3f  LICENSES
+diff --git a/package/glibc/glibc.mk b/package/glibc/glibc.mk
+index f84f670..4621c9c 100644
+--- a/package/glibc/glibc.mk
++++ b/package/glibc/glibc.mk
+@@ -4,20 +4,20 @@
+ #
+ ################################################################################
+ 
+-ifeq ($(BR2_csky),y)
++ifeq ($(BR2_arc),y)
++GLIBC_VERSION =  arc-2019.09-release
++GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION))
++else ifeq ($(BR2_RISCV_32),y)
++GLIBC_VERSION = 06983fe52cfe8e4779035c27e8cc5d2caab31531
++GLIBC_SITE = $(call github,riscv,riscv-glibc,$(GLIBC_VERSION))
++else ifeq ($(BR2_csky),y)
+ GLIBC_VERSION = 7630ed2fa60caea98f500e4a7a51b88f9bf1e176
+ GLIBC_SITE = $(call github,c-sky,glibc,$(GLIBC_VERSION))
+ else
+ # Generate version string using:
+ #   git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master | cut -d '-' -f 2-
+ # When updating the version, please also update localedef
+-ifeq ($(BR2_RISCV_32),y)
+-# RISC-V 32-bit (RV32) requires glibc 2.33 or newer
+-# Until 2.33 is released, just use master
+-GLIBC_VERSION = 2.32.9000-69-gbd394d131c10c9ec22c6424197b79410042eed99
+-else
+-GLIBC_VERSION = 2.32-37-g760e1d287825fa91d4d5a0cc921340c740d803e2
+-endif
++GLIBC_VERSION = 2.30-67-g4748829f86a458b76642f3e98b1d80f7b868e427
+ # Upstream doesn't officially provide an https download link.
+ # There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
+ # sometimes the connection times out. So use an unofficial github mirror.
+@@ -29,7 +29,6 @@ endif
+ 
+ GLIBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+, BSD-3-Clause, MIT (library)
+ GLIBC_LICENSE_FILES = COPYING COPYING.LIB LICENSES
+-GLIBC_CPE_ID_VENDOR = gnu
+ 
+ # glibc is part of the toolchain so disable the toolchain dependency
+ GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
+@@ -131,9 +130,10 @@ define GLIBC_CONFIGURE_CMDS
+ 		--enable-shared \
+ 		$(if $(BR2_x86_64),--enable-lock-elision) \
+ 		--with-pkgversion="Buildroot" \
++		--without-cvs \
+ 		--disable-profile \
+-		--disable-werror \
+ 		--without-gd \
++		--enable-obsolete-rpc \
+ 		--enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \
+ 		--with-headers=$(STAGING_DIR)/usr/include)
+ 	$(GLIBC_ADD_MISSING_STUB_H)
+-- 
+2.7.4
+

+ 20 - 29
patches/0003-add-SW_IO1-to-SW_IO4-to-headers-and-evtest.patch → patches/0109-kernel-haders-r2_485-and-IN1-IN4-headersettings.patch

@@ -1,42 +1,33 @@
-From 0eae7cb833670b5f198bf76cfbc978e4e5dbafc6 Mon Sep 17 00:00:00 2001
+From 00a9ceaaa12ba9b315ec7f7a7d2c2e76d3b1d176 Mon Sep 17 00:00:00 2001
 From: Reinhard Russinger <reinhard@russinger.at>
 From: Reinhard Russinger <reinhard@russinger.at>
-Date: Tue, 5 Jun 2018 12:47:19 +0200
-Subject: [PATCH] add SW_IO1 to SW_IO4 to headers and evtest
+Date: Sat, 17 Apr 2021 08:53:58 +0000
+Subject: [PATCH] kernel-haders-r2_485 and IN1-IN4 headersettings
 
 
 ---
 ---
- package/evtest/SW_IO1-SW_IO4.patch                 | 21 ++++++++++++++++
+ .../linux-017-omap_serial_for_rs485.patch          | 12 ++++++++++
  .../linux-027-input_events_add_IN1-IN4.patch       | 28 ++++++++++++++++++++++
  .../linux-027-input_events_add_IN1-IN4.patch       | 28 ++++++++++++++++++++++
- 2 files changed, 49 insertions(+)
- create mode 100644 package/evtest/SW_IO1-SW_IO4.patch
+ 2 files changed, 40 insertions(+)
+ create mode 100644 package/linux-headers/linux-017-omap_serial_for_rs485.patch
  create mode 100644 package/linux-headers/linux-027-input_events_add_IN1-IN4.patch
  create mode 100644 package/linux-headers/linux-027-input_events_add_IN1-IN4.patch
 
 
-diff --git a/package/evtest/SW_IO1-SW_IO4.patch b/package/evtest/SW_IO1-SW_IO4.patch
+diff --git a/package/linux-headers/linux-017-omap_serial_for_rs485.patch b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
 new file mode 100644
 new file mode 100644
-index 0000000..903228c
+index 0000000..38b7ffa
 --- /dev/null
 --- /dev/null
-+++ b/package/evtest/SW_IO1-SW_IO4.patch
-@@ -0,0 +1,21 @@
-+--- ../QT57_GfA/buildroot57/output/build/evtest-1.33/evtest.c	2015-07-23 01:51:31.000000000 +0200
-++++ ./evtest.c	2018-05-04 21:29:25.006054153 +0200
-+@@ -741,6 +741,18 @@ static const char * const switches[SW_MA
-+ #ifdef SW_MUTE_DEVICE
-+ 	NAME_ELEMENT(SW_MUTE_DEVICE),
-+ #endif
-++#ifdef SW_IO1
-++	NAME_ELEMENT(SW_IO1),
-++#endif
-++#ifdef SW_IO2
-++	NAME_ELEMENT(SW_IO2),
-++#endif
-++#ifdef SW_IO3
-++	NAME_ELEMENT(SW_IO3),
-++#endif
-++#ifdef SW_IO4
-++	NAME_ELEMENT(SW_IO4),
-++#endif
++++ b/package/linux-headers/linux-017-omap_serial_for_rs485.patch
+@@ -0,0 +1,12 @@
++--- a/include/uapi/linux/serial.h	2016-11-08 16:38:32.000000000 +0100
+++++ b/include/uapi/linux/serial.h	2017-02-18 14:27:23.569732653 +0100
++@@ -119,7 +119,8 @@ struct serial_rs485 {
++ #define SER_RS485_RX_DURING_TX		(1 << 4)
++ 	__u32	delay_rts_before_send;	/* Delay before send (milliseconds) */
++ 	__u32	delay_rts_after_send;	/* Delay after send (milliseconds) */
++-	__u32	padding[5];		/* Memory is cheap, new structs
+++	__u32   udelay_before_enable_tx;/* Delay before switching to tx direction */
+++	__u32	padding[4];		/* Memory is cheap, new structs
++ 					   are a royal PITA .. */
 + };
 + };
 + 
 + 
-+ static const char * const force[FF_MAX + 1] = {
 diff --git a/package/linux-headers/linux-027-input_events_add_IN1-IN4.patch b/package/linux-headers/linux-027-input_events_add_IN1-IN4.patch
 diff --git a/package/linux-headers/linux-027-input_events_add_IN1-IN4.patch b/package/linux-headers/linux-027-input_events_add_IN1-IN4.patch
 new file mode 100644
 new file mode 100644
 index 0000000..849a847
 index 0000000..849a847

+ 0 - 18
patches/0110-netplug-handle-st-downandout.patch

@@ -1,18 +0,0 @@
-diff --git a/package/netplug/0004-handle-st-downandout-proper.patch b/package/netplug/0004-handle-st-downandout-proper.patch
-new file mode 100644
-index 0000000000..420fc15433
---- /dev/null
-+++ b/package/netplug/0004-handle-st-downandout-proper.patch
-@@ -0,0 +1,12 @@
-+diff --git a/if_info.c b/if_info.c
-+index ea6c333..ca5e4d0 100644
-+--- a/if_info.c
-++++ b/if_info.c
-+@@ -186,6 +186,7 @@ ifsm_flagchange(struct if_info *info, unsigned int newflags)
-+         if (newflags & IFF_UP) {
-+             switch(info->state) {
-+             case ST_DOWN:
-++            case ST_DOWNANDOUT:
-+                 info->state = ST_INACTIVE;
-+                 break;
-+ 

+ 25 - 0
patches/0110-python-pyudef-fix_syntax_error.patch

@@ -0,0 +1,25 @@
+From 3a642e2fd60beb22ea3e0db011ef8a8ba6562289 Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Sat, 17 Apr 2021 08:55:52 +0000
+Subject: [PATCH] python-pyudef-fix_syntax_error
+
+---
+ .../0001-Workaround-finding-libudev-on-systems-without-ldconf.patch     | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch b/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch
+index 67c2766..838e5c5 100644
+--- a/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch
++++ b/package/python-pyudev/0001-Workaround-finding-libudev-on-systems-without-ldconf.patch
+@@ -37,7 +37,7 @@ index 9dffb3c..aa9942f 100644
+ -    library_name = find_library(name)
+ -    if not library_name:
+ +    try:
+-+        lib = cdll.LoadLibrary(f'lib{name}.so')
+++        lib = cdll.LoadLibrary('lib{name}.so')
+ +    except OSError:
+          raise ImportError('No library named %s' % name)
+ -    lib = CDLL(library_name, use_errno=True)
+-- 
+2.7.4
+

+ 0 - 26
patches/0111-change-package-urls.patch

@@ -1,26 +0,0 @@
-diff --git a/package/pcre/pcre.mk b/package/pcre/pcre.mk
-index a10950d..213a11c 100644
---- a/package/pcre/pcre.mk
-+++ b/package/pcre/pcre.mk
-@@ -5,7 +5,7 @@
- ################################################################################
- 
- PCRE_VERSION = 8.39
--PCRE_SITE = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre
-+PCRE_SITE = ftp://ftp.pcre.org/pub/pcre
- PCRE_SOURCE = pcre-$(PCRE_VERSION).tar.bz2
- PCRE_LICENSE = BSD-3c
- PCRE_LICENSE_FILES = LICENCE
-diff --git a/package/wpan-tools/wpan-tools.mk b/package/wpan-tools/wpan-tools.mk
-index d223800..b904416 100644
---- a/package/wpan-tools/wpan-tools.mk
-+++ b/package/wpan-tools/wpan-tools.mk
-@@ -5,7 +5,7 @@
- ################################################################################
- 
- WPAN_TOOLS_VERSION = 0.5
--WPAN_TOOLS_SITE = http://wpan.cakelab.org/releases
-+WPAN_TOOLS_SITE = https://github.com/linux-wpan/wpan-tools/releases
- WPAN_TOOLS_DEPENDENCIES = host-pkgconf libnl
- WPAN_TOOLS_LICENSE = iw license
- WPAN_TOOLS_LICENSE_FILES = COPYING

+ 45 - 0
patches/0111-qtwebenine-use-only-3-Cpu-s.patch

@@ -0,0 +1,45 @@
+From 5901d178ea1c75ffbd8f2f477d80490fe200401a Mon Sep 17 00:00:00 2001
+From: Reinhard Russinger <reinhard@russinger.at>
+Date: Sat, 17 Apr 2021 08:57:10 +0000
+Subject: [PATCH] qtwebenine use only 3 Cpu's
+
+---
+ package/qt5/qt5webengine/qt5webengine.mk | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
+index 64c9c96..786c1b3 100644
+--- a/package/qt5/qt5webengine/qt5webengine.mk
++++ b/package/qt5/qt5webengine/qt5webengine.mk
+@@ -29,6 +29,15 @@ endif
+ 
+ QT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss
+ 
++ifeq ($(BR2_PACKAGE_QT5BASE_FONTCONFIG),y)
++	QT5WEBENGINE_DEPENDENCIES += host-freetype
++endif
++
++ifeq ($(BR2_PACKAGE_QT5BASE_JPEG),y)
++	QT5WEBENGINE_DEPENDENCIES += host-libjpeg
++endif
++ 
++
+ QT5WEBENGINE_CONF_OPTS += WEBENGINE_CONFIG+=use_system_ffmpeg
+ 
+ ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y)
+@@ -51,7 +60,11 @@ define QT5WEBENGINE_PYTHON2_SYMLINK
+ endef
+ QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK
+ 
+-QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
++##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
++QT5WEBENGINE_ENV += NINJAFLAGS="-j3"
++
++##P_JOBS=$(shell echo $(PARALLEL_JOBS)/2) | bc)
++##QT5WEBENGINE_ENV += NINJAFLAGS="-j$(P_JOBS)"
+ 
+ define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
+ 	sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config
+-- 
+2.7.4
+