ソースを参照

package/libusb: needs gcc >= 4.9

libusb depends on gcc >= 4.9 because of _Thread_local since version
1.0.24 and
https://github.com/libusb/libusb/commit/9a1bc8cafb904c20a869c74ad6d657686a1c4bb1

Fixes:
 - http://autobuild.buildroot.org/results/7b7f4b31095f8a7eecb347b574391003a2def8bc

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Fabrice Fontaine 3 年 前
コミット
8a26801c9f
50 ファイル変更236 行追加80 行削除
  1. 4 3
      package/acsccid/Config.in
  2. 4 2
      package/apcupsd/Config.in
  3. 4 2
      package/avrdude/Config.in
  4. 5 2
      package/cc-tool/Config.in
  5. 4 2
      package/ccid/Config.in
  6. 4 2
      package/dfu-util/Config.in
  7. 4 0
      package/dfu-util/Config.in.host
  8. 4 2
      package/dump1090/Config.in
  9. 4 0
      package/gr-osmosdr/Config.in
  10. 4 2
      package/hackrf/Config.in
  11. 5 2
      package/hidapi/Config.in
  12. 3 2
      package/hplip/Config.in
  13. 4 2
      package/imx-usb-loader/Config.in
  14. 5 0
      package/imx-usb-loader/Config.in.host
  15. 4 0
      package/kodi/Config.in
  16. 4 2
      package/libftdi/Config.in
  17. 4 2
      package/libftdi1/Config.in
  18. 4 2
      package/libgphoto2/Config.in
  19. 4 2
      package/libhid/Config.in
  20. 4 2
      package/libiio/Config.in
  21. 4 2
      package/libiqrf/Config.in
  22. 4 2
      package/libnfc/Config.in
  23. 4 3
      package/libphidget/Config.in
  24. 4 2
      package/librtlsdr/Config.in
  25. 4 2
      package/libusb/Config.in
  26. 5 0
      package/mfgtools/Config.in.host
  27. 5 0
      package/mxsldr/Config.in.host
  28. 4 2
      package/omxplayer/Config.in
  29. 5 2
      package/openfpgaloader/Config.in
  30. 5 2
      package/openjdk/Config.in
  31. 23 5
      package/openocd/Config.in
  32. 4 0
      package/openocd/Config.in.host
  33. 4 0
      package/pcsc-lite/Config.in
  34. 4 3
      package/phidgetwebservice/Config.in
  35. 4 2
      package/python-libusb1/Config.in
  36. 4 2
      package/python-nfc/Config.in
  37. 4 2
      package/python-pylibftdi/Config.in
  38. 4 2
      package/python-pyusb/Config.in
  39. 4 0
      package/qemu/Config.in.host
  40. 5 0
      package/raspberrypi-usbboot/Config.in.host
  41. 4 2
      package/sispmctl/Config.in
  42. 4 2
      package/sunxi-tools/Config.in
  43. 5 0
      package/sunxi-tools/Config.in.host
  44. 5 0
      package/tegrarcm/Config.in.host
  45. 12 0
      package/uhd/Config.in
  46. 4 2
      package/uhubctl/Config.in
  47. 4 2
      package/upower/Config.in
  48. 4 2
      package/usb_modeswitch/Config.in
  49. 4 2
      package/usb_modeswitch_data/Config.in
  50. 4 2
      package/usbredir/Config.in

+ 4 - 3
package/acsccid/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_ACSCCID
 	bool "acsccid"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite, libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_USE_MMU # pcsc-lite
 	depends on !BR2_STATIC_LIBS # pcsc-lite
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
@@ -14,7 +15,7 @@ config BR2_PACKAGE_ACSCCID
 
 	  http://acsccid.sourceforge.net/
 
-comment "acsccid needs a toolchain w/ threads, dynamic library"
+comment "acsccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
-		BR2_STATIC_LIBS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/apcupsd/Config.in

@@ -28,14 +28,16 @@ config BR2_PACKAGE_APCUPSD_MODBUS
 config BR2_PACKAGE_APCUPSD_MODBUS_USB
 	bool "modbus usb"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	select BR2_PACKAGE_APCUPSD_MODBUS
 	help
 	  Compile MODBUS/USB driver code
 
-comment "modbus usb support needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "modbus usb support needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 config BR2_PACKAGE_APCUPSD_NET
 	bool "net"

+ 4 - 2
package/avrdude/Config.in

@@ -4,6 +4,7 @@ config BR2_PACKAGE_AVRDUDE
 	depends on BR2_USE_WCHAR # elfutils
 	depends on !BR2_STATIC_LIBS # elfutils
 	depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_ELFUTILS
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
@@ -14,6 +15,7 @@ config BR2_PACKAGE_AVRDUDE
 
 	  https://github.com/kcuzner/avrdude
 
-comment "avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS \
+comment "avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR \
+		|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 \
 		|| !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC)

+ 5 - 2
package/cc-tool/Config.in

@@ -3,6 +3,7 @@ config BR2_PACKAGE_CC_TOOL
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_WCHAR # boost-filesystem
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_BOOST
 	select BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
@@ -16,5 +17,7 @@ config BR2_PACKAGE_CC_TOOL
 
 	  https://github.com/dashesy/cc-tool/
 
-comment "cc-tool needs a toolchain w/ C++, threads, wchar"
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+comment "cc-tool needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 "
+	depends on !BR2_INSTALL_LIBSTDCPP || \
+		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/ccid/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_CCID
 	bool "ccid"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_USE_MMU # pcsc-lite
 	depends on !BR2_STATIC_LIBS # pcsc-lite
 	select BR2_PACKAGE_PCSC_LITE
@@ -10,6 +11,7 @@ config BR2_PACKAGE_CCID
 
 	  https://ccid.apdu.fr/
 
-comment "ccid needs a toolchain w/ threads, dynamic library"
+comment "ccid needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/dfu-util/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_DFU_UTIL
 	bool "dfu-util"
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Dfu-util is the host side implementation of the DFU 1.0
@@ -9,5 +10,6 @@ config BR2_PACKAGE_DFU_UTIL
 
 	  http://dfu-util.sourceforge.net/
 
-comment "dfu-util needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "dfu-util needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 0
package/dfu-util/Config.in.host

@@ -1,8 +1,12 @@
 config BR2_PACKAGE_HOST_DFU_UTIL
 	bool "host dfu-util"
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  Dfu-util is the host side implementation of the DFU 1.0
 	  specification of the USB forum. DFU is intended to download
 	  and upload firmware to devices connected over USB.
 
 	  http://dfu-util.sourceforge.net/
+
+comment "host dfu-util needs a toolchain w/ host gcc >= 4.9"
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 4 - 2
package/dump1090/Config.in

@@ -1,11 +1,13 @@
 config BR2_PACKAGE_DUMP1090
 	bool "dump1090"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # librtlsdr
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librtlsdr -> libusb
 	select BR2_PACKAGE_LIBRTLSDR
 	help
 	  Dump1090 is a simple Mode S decoder for RTLSDR devices
 
 	  https://github.com/MalcolmRobb/dump1090
 
-comment "dump1090 needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "dump1090 needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 0
package/gr-osmosdr/Config.in

@@ -25,10 +25,14 @@ config BR2_PACKAGE_GR_OSMOSDR_IQFILE
 
 config BR2_PACKAGE_GR_OSMOSDR_RTLSDR
 	bool "Osmocom RTLSDR support"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # librtlsdr -> libusb
 	select BR2_PACKAGE_LIBRTLSDR
 	help
 	  Enable Osmocom RTLSDR support
 
+comment "Osmocom RTLSDR support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 config BR2_PACKAGE_GR_OSMOSDR_RTLSDR_TCP
 	bool "RTLSDR TCP Client support"
 	help

+ 4 - 2
package/hackrf/Config.in

@@ -2,6 +2,7 @@ config BR2_PACKAGE_HACKRF
 	bool "hackrf"
 	depends on !BR2_STATIC_LIBS
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_FFTW
 	select BR2_PACKAGE_FFTW_SINGLE
 	select BR2_PACKAGE_LIBUSB
@@ -10,5 +11,6 @@ config BR2_PACKAGE_HACKRF
 
 	  https://github.com/mossmann/hackrf/tree/master/host
 
-comment "hackrf needs a toolchain w/ threads, dynamic library"
-	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
+comment "hackrf needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
+	depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 5 - 2
package/hidapi/Config.in

@@ -2,6 +2,7 @@ config BR2_PACKAGE_HIDAPI
 	bool "hidapi"
 	depends on BR2_PACKAGE_HAS_UDEV
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBGUDEV
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
@@ -14,5 +15,7 @@ config BR2_PACKAGE_HIDAPI
 
 	  http://github.com/libusb/hidapi/
 
-comment "hidapi needs udev /dev management and a toolchain w/ NPTL threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_PACKAGE_HAS_UDEV
+comment "hidapi needs udev /dev management and a toolchain w/ NPTL, threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \
+		!BR2_PACKAGE_HAS_UDEV || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 3 - 2
package/hplip/Config.in

@@ -3,6 +3,7 @@ config BR2_PACKAGE_HPLIP
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_PACKAGE_CUPS
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on !BR2_STATIC_LIBS # libdl
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_JPEG
@@ -17,7 +18,7 @@ config BR2_PACKAGE_HPLIP
 
 	  http://hplipopensource.com/
 
-comment "hplip needs a toolchain w/ C++, threads, dynamic library"
+comment "hplip needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.9"
 	depends on BR2_PACKAGE_CUPS
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
-		BR2_STATIC_LIBS
+		BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/imx-usb-loader/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_IMX_USB_LOADER
 	bool "imx-usb-loader"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  This package contains tools to download and execute code
@@ -9,5 +10,6 @@ config BR2_PACKAGE_IMX_USB_LOADER
 
 	  https://github.com/boundarydevices/imx_usb_loader
 
-comment "imx-usb-loader needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "imx-usb-loader needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 5 - 0
package/imx-usb-loader/Config.in.host

@@ -1,9 +1,14 @@
 config BR2_PACKAGE_HOST_IMX_USB_LOADER
 	bool "host imx-usb-loader"
 	depends on BR2_arm || BR2_aarch64
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  This package contains tools to download and execute code
 	  on Freescale i.MX5x/6x/7x/8x and Vybrid SoCs through the
 	  Serial Download Protocol.
 
 	  https://github.com/boundarydevices/imx_usb_loader
+
+comment "host imx-usb-loader needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm || BR2_aarch64
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 4 - 0
package/kodi/Config.in

@@ -258,11 +258,15 @@ config BR2_PACKAGE_KODI_LIBUSB
 	# https://github.com/xbmc/xbmc/blob/Jarvis/configure.ac#L1554
 	# "if libudev is available, we don't need libusb"
 	depends on !BR2_PACKAGE_HAS_UDEV
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
 	  Enable libusb support.
 
+comment "usb support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 config BR2_PACKAGE_KODI_LIBVA
 	bool "va"
 	depends on \

+ 4 - 2
package/libftdi/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBFTDI
 	bool "libftdi"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -23,5 +24,6 @@ comment "libftdi C++ bindings need a toolchain w/ wchar, C++"
 
 endif # BR2_PACKAGE_LIBFTDI
 
-comment "libftdi needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libftdi needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libftdi1/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBFTDI1
 	bool "libftdi1"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Userspace access to FTDI USB interface chips (version 1.x)
@@ -33,5 +34,6 @@ config BR2_PACKAGE_LIBFTDI1_FDTI_EEPROM
 
 endif # BR2_PACKAGE_LIBFTDI1
 
-comment "libftdi1 needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libftdi1 needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libgphoto2/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBGPHOTO2
 	bool "libgphoto2"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBTOOL
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBXML2
@@ -10,5 +11,6 @@ config BR2_PACKAGE_LIBGPHOTO2
 
 	  http://gphoto.org/proj/libgphoto2/
 
-comment "libgphoto needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libgphoto needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libhid/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBHID
 	bool "libhid"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -8,5 +9,6 @@ config BR2_PACKAGE_LIBHID
 
 	  https://directory.fsf.org/wiki/Libhid
 
-comment "libhid needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libhid needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libiio/Config.in

@@ -33,13 +33,15 @@ config BR2_PACKAGE_LIBIIO_USB_BACKEND
 	bool "USB backend"
 	default y
 	depends on BR2_TOOLCHAIN_HAS_THREADS # from libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBIIO_XML_BACKEND
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable the USB backend of the library.
 
-comment "The USB backend needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "The USB backend needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 config BR2_PACKAGE_LIBIIO_SERIAL_BACKEND
 	bool "Serial backend"

+ 4 - 2
package/libiqrf/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBIQRF
 	bool "libiqrf"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  This library implement specific protocol
@@ -10,5 +11,6 @@ config BR2_PACKAGE_LIBIQRF
 
 	  https://github.com/nandra/libiqrf
 
-comment "libiqrf needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libiqrf needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libnfc/Config.in

@@ -24,13 +24,15 @@ comment "acr122_pcsc driver needs a toolchain w/ threads, dynamic library"
 config BR2_PACKAGE_LIBNFC_ACR122_USB
 	bool "acr122_usb driver"
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
 	  support for acr122_usb driver
 
-comment "acr122_usb driver needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "acr122_usb driver needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 config BR2_PACKAGE_LIBNFC_ACR122S
 	bool "acr122s driver"

+ 4 - 3
package/libphidget/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBPHIDGET
 	bool "libphidget"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on !BR2_STATIC_LIBS
 	select BR2_PACKAGE_LIBUSB
 	help
@@ -23,6 +24,6 @@ config BR2_PACKAGE_LIBPHIDGET
 
 	  http://phidgets.com/
 
-comment "libphidget needs a toolchain w/ threads, dynamic library"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_STATIC_LIBS
+comment "libphidget needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/librtlsdr/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBRTLSDR
 	bool "librtlsdr"
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Library and command line programs for accessing
@@ -28,5 +29,6 @@ config BR2_PACKAGE_LIBRTLSDR_ZEROCOPY
 
 endif
 
-comment "librtlsdr needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "librtlsdr needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/libusb/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBUSB
 	bool "libusb"
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # _Thread_local
 	help
 	  Userspace library for accessing USB devices
 
@@ -13,5 +14,6 @@ config BR2_PACKAGE_LIBUSB_EXAMPLES
 
 endif
 
-comment "libusb needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "libusb needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 5 - 0
package/mfgtools/Config.in.host

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_HOST_MFGTOOLS
 	bool "host mfgtools"
 	depends on BR2_arm
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  This package contains the Freescale manufacturing tool.
 	  It is designed to program firmware to i.MX boards during
@@ -8,3 +9,7 @@ config BR2_PACKAGE_HOST_MFGTOOLS
 	  Freescale UTP protocol.
 
 	  https://github.com/codeauroraforum/mfgtools
+
+comment "host mfgtools needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 5 - 0
package/mxsldr/Config.in.host

@@ -1,9 +1,14 @@
 config BR2_PACKAGE_HOST_MXSLDR
 	bool "host mxsldr"
 	depends on BR2_arm || BR2_armeb
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  This package contains tools to download and execute code on
 	  Freescale i.MX23 and i.MX28 SoC's through the Serial
 	  Download Protocol.
 
 	  https://gitlab.denx.de/denx/mxsldr
+
+comment "host mxsldr needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm || BR2_armeb
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 4 - 2
package/omxplayer/Config.in

@@ -5,6 +5,7 @@ config BR2_PACKAGE_OMXPLAYER
 	depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS # ffmpeg
 	depends on BR2_INSTALL_LIBSTDCPP # boost
 	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, boost, libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_USE_WCHAR # boost
 	depends on BR2_PACKAGE_RPI_USERLAND
 	select BR2_PACKAGE_ALSA_LIB
@@ -25,10 +26,11 @@ config BR2_PACKAGE_OMXPLAYER
 
 	  https://github.com/popcornmix/omxplayer
 
-comment "omxplayer needs rpi-userland and a toolchain w/ C++, threads, wchar, dynamic library"
+comment "omxplayer needs rpi-userland and a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.9"
 	depends on BR2_arm
 	depends on BR2_USE_MMU
 	depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
 	depends on !BR2_PACKAGE_RPI_USERLAND
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
-		|| !BR2_USE_WCHAR || BR2_STATIC_LIBS
+		|| !BR2_USE_WCHAR || BR2_STATIC_LIBS \
+		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 5 - 2
package/openfpgaloader/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_OPENFPGALOADER
 	bool "openfpgaloader"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi1
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi1 -> libusb
 	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_LIBFTDI1
 	help
@@ -8,5 +9,7 @@ config BR2_PACKAGE_OPENFPGALOADER
 
 	  https://github.com/trabucayre/openFPGALoader/
 
-comment "openfpgaloader needs a toolchain w/ threads, C++"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
+comment "openfpgaloader needs a toolchain w/ threads, C++, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_INSTALL_LIBSTDCPP || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 5 - 2
package/openjdk/Config.in

@@ -20,6 +20,7 @@ config BR2_PACKAGE_OPENJDK
 	depends on !BR2_STATIC_LIBS # glibc
 	depends on BR2_INSTALL_LIBSTDCPP # cups
 	depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib, cups, libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_TOOLCHAIN_USES_GLIBC
 	depends on BR2_USE_MMU # cups
 	depends on BR2_PACKAGE_XORG7
@@ -151,12 +152,14 @@ comment "openjdk needs X.Org"
 	depends on BR2_USE_MMU
 	depends on !BR2_PACKAGE_XORG7
 
-comment "openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++"
+comment "openjdk needs glibc, and a toolchain w/ wchar, dynamic library, threads, C++, gcc >= 4.9"
 	depends on BR2_USE_MMU
 	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS
 	depends on BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS
 	depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \
-		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC
+		!BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_USES_GLIBC || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 comment "openjdk does not support soft float configurations"
 	depends on BR2_PACKAGE_OPENJDK_ARCH_SUPPORTS

+ 23 - 5
package/openocd/Config.in

@@ -13,6 +13,7 @@ comment "Adapters"
 config BR2_PACKAGE_OPENOCD_CMSIS_DAP
 	bool "CMSIS-DAP compliant debuggers"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_PACKAGE_HAS_UDEV # hidapi
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # hidapi
 	select BR2_PACKAGE_LIBUSB
@@ -24,6 +25,7 @@ config BR2_PACKAGE_OPENOCD_CMSIS_DAP
 config BR2_PACKAGE_OPENOCD_FTDI
 	bool "MPSSE mode of FTDI based devices"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the MPSSE mode of FTDI
@@ -32,6 +34,7 @@ config BR2_PACKAGE_OPENOCD_FTDI
 config BR2_PACKAGE_OPENOCD_STLINK
 	bool "ST-Link JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the ST-Link JTAG
@@ -40,6 +43,7 @@ config BR2_PACKAGE_OPENOCD_STLINK
 config BR2_PACKAGE_OPENOCD_TI_ICDI
 	bool "TI ICDI JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the TI ICDI JTAG
@@ -48,6 +52,7 @@ config BR2_PACKAGE_OPENOCD_TI_ICDI
 config BR2_PACKAGE_OPENOCD_ULINK
 	bool "Keil ULINK JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the Keil ULINK JTAG
@@ -56,6 +61,7 @@ config BR2_PACKAGE_OPENOCD_ULINK
 config BR2_PACKAGE_OPENOCD_UBLASTER2
 	bool "Altera USB-Blaster II Compatible"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the Altera USB-Blaster
@@ -64,6 +70,7 @@ config BR2_PACKAGE_OPENOCD_UBLASTER2
 config BR2_PACKAGE_OPENOCD_JLINK
 	bool "Segger J-Link JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Segger J-Link JTAG Programmer and clone such as Atmel
@@ -72,6 +79,7 @@ config BR2_PACKAGE_OPENOCD_JLINK
 config BR2_PACKAGE_OPENOCD_OSDBM
 	bool "OSDBM JTAG (only) Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the OSBDM (JTAG only)
@@ -80,6 +88,7 @@ config BR2_PACKAGE_OPENOCD_OSDBM
 config BR2_PACKAGE_OPENOCD_OPENDOUS
 	bool "eStick/opendous JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the eStick/opendous JTAG
@@ -89,6 +98,7 @@ config BR2_PACKAGE_OPENOCD_AICE
 	bool "Andes JTAG Programmer"
 	depends on BR2_USE_MMU # use fork()
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Enable building support for the Andes JTAG
@@ -97,6 +107,7 @@ config BR2_PACKAGE_OPENOCD_AICE
 config BR2_PACKAGE_OPENOCD_VSLLINK
 	bool "Versaloon-Link JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -106,6 +117,7 @@ config BR2_PACKAGE_OPENOCD_VSLLINK
 config BR2_PACKAGE_OPENOCD_USBPROG
 	bool "USBProg JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -115,6 +127,7 @@ config BR2_PACKAGE_OPENOCD_USBPROG
 config BR2_PACKAGE_OPENOCD_RLINK
 	bool "Raisonance RLink JTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -124,6 +137,7 @@ config BR2_PACKAGE_OPENOCD_RLINK
 config BR2_PACKAGE_OPENOCD_ARMEW
 	bool "Olimex ARM-JTAG-EW Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb-compat -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb-compat -> libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -143,6 +157,7 @@ config BR2_PACKAGE_OPENOCD_VPI
 config BR2_PACKAGE_OPENOCD_UBLASTER
 	bool "Altera USB-Blaster"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
 	select BR2_PACKAGE_LIBFTDI1
 	help
 	  Enable building support for the Altera USB-Blaster
@@ -183,6 +198,7 @@ config BR2_PACKAGE_OPENOCD_GW16012
 config BR2_PACKAGE_OPENOCD_PRESTO
 	bool "ASIX Presto Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
 	select BR2_PACKAGE_LIBFTDI1
 	help
 	  Enable building support for ASIX Presto Programmer
@@ -191,6 +207,7 @@ config BR2_PACKAGE_OPENOCD_PRESTO
 config BR2_PACKAGE_OPENOCD_OPENJTAG
 	bool "OpenJTAG Programmer"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libftdi -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
 	select BR2_PACKAGE_LIBFTDI1
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT # needs usb.h
@@ -209,10 +226,11 @@ config BR2_PACKAGE_OPENOCD_SYSFS
 	  Enable building support for programming driven via
 	  sysfs gpios.
 
-# Many adapters need libusb or libusb-compat, which require threads,
-# but we don't want to duplicate this comment for all adapters that
-# select libusb or libusb-compat.
-comment "many openocd adapters needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+# Many adapters need libusb or libusb-compat, which require threads and
+# gcc >= 4.9 but we don't want to duplicate this comment for all
+# adapters that select libusb or libusb-compat.
+comment "many openocd adapters needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 endif # BR2_PACKAGE_OPENOCD

+ 4 - 0
package/openocd/Config.in.host

@@ -1,6 +1,10 @@
 config BR2_PACKAGE_HOST_OPENOCD
 	bool "host openocd"
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  OpenOCD - Open On-Chip Debugger
 
 	  http://openocd.org/
+
+comment "host openocd needs a toolchain w/ host gcc >= 4.9"
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 4 - 0
package/pcsc-lite/Config.in

@@ -13,10 +13,14 @@ if BR2_PACKAGE_PCSC_LITE
 config BR2_PACKAGE_PCSC_LITE_FORCE_LIBUSB
 	bool "use libusb"
 	depends on !BR2_PACKAGE_HAS_UDEV
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Select Y if you want to support usb smart card readers.
 
+comment "libusb support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 config BR2_PACKAGE_PCSC_LITE_DEBUGATR
 	bool "enable ATR debug messages"
 	help

+ 4 - 3
package/phidgetwebservice/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_PHIDGETWEBSERVICE
 	bool "phidgetwebservice"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb, libphidget
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libphidget -> libusb
 	depends on !BR2_STATIC_LIBS # libphidget
 	select BR2_PACKAGE_LIBPHIDGET
 	help
@@ -17,6 +18,6 @@ config BR2_PACKAGE_PHIDGETWEBSERVICE
 
 	  http://phidgets.com/
 
-comment "phidgetwebservice needs a toolchain w/ threads, dynamic library"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_STATIC_LIBS
+comment "phidgetwebservice needs a toolchain w/ threads, dynamic library, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/python-libusb1/Config.in

@@ -1,11 +1,13 @@
 config BR2_PACKAGE_PYTHON_LIBUSB1
 	bool "python-libusb1"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Pure-python wrapper for libusb-1.0.
 
 	  http://github.com/vpelletier/python-libusb1
 
-comment "python-libusb1 needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "python-libusb1 needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/python-nfc/Config.in

@@ -2,6 +2,7 @@ config BR2_PACKAGE_PYTHON_NFC
 	bool "python-nfc"
 	depends on BR2_PACKAGE_PYTHON
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	select BR2_PACKAGE_LIBUSB_COMPAT
 	help
@@ -9,6 +10,7 @@ config BR2_PACKAGE_PYTHON_NFC
 
 	  https://launchpad.net/nfcpy
 
-comment "python-nfc needs a toolchain w/ threads"
+comment "python-nfc needs a toolchain w/ threads, gcc >= 4.9"
 	depends on BR2_PACKAGE_PYTHON
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/python-pylibftdi/Config.in

@@ -1,11 +1,13 @@
 config BR2_PACKAGE_PYTHON_PYLIBFTDI
 	bool "python-pylibftdi"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libftdi -> libusb
 	select BR2_PACKAGE_LIBFTDI
 	help
 	  This package contains the python language binding libftdi.
 
 	  https://pypi.python.org/pypi/pylibftdi
 
-comment "python-pylibftdi needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "python-pylibftdi needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/python-pyusb/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_PYTHON_PYUSB
 	bool "python-pyusb"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  The PyUSB module provides easy access to the Universal
@@ -8,5 +9,6 @@ config BR2_PACKAGE_PYTHON_PYUSB
 
 	  http://sourceforge.net/apps/trac/pyusb/
 
-comment "python-pyusb needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "python-pyusb needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 0
package/qemu/Config.in.host

@@ -88,7 +88,11 @@ config BR2_PACKAGE_HOST_QEMU_VIRTFS
 
 config BR2_PACKAGE_HOST_QEMU_USB
 	bool "USB passthrough support"
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  Enables USB passthrough support from guest to host.
 
+comment "USB passthrough support needs a toolchain w/ host gcc >= 4.9"
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9
+
 endif

+ 5 - 0
package/raspberrypi-usbboot/Config.in.host

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT
 	bool "host raspberrypi-usbboot"
 	depends on BR2_arm
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  This package builds and install the "rpiboot" tool for the
 	  host machine. This tool allows to boot the Broadcom BCM
@@ -10,3 +11,7 @@ config BR2_PACKAGE_HOST_RASPBERRYPI_USBBOOT
 	  built into the Compute module).
 
 	  https://github.com/raspberrypi/usbboot
+
+comment "host raspberrypi-usbboot needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 4 - 2
package/sispmctl/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_SISPMCTL
 	bool "sispmctl"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_USE_WCHAR
 	depends on BR2_USE_MMU # fork()
 	select BR2_PACKAGE_LIBUSB
@@ -13,6 +14,7 @@ config BR2_PACKAGE_SISPMCTL
 
 	  http://sispmctl.sourceforge.net/
 
-comment "sispmctl needs a toolchain w/ threads, wchar"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
+comment "sispmctl needs a toolchain w/ threads, wchar, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 	depends on BR2_USE_MMU

+ 4 - 2
package/sunxi-tools/Config.in

@@ -24,14 +24,16 @@ config BR2_PACKAGE_SUNXI_TOOLS_BOOTINFO
 config BR2_PACKAGE_SUNXI_TOOLS_FEL
 	bool "sunxi-fel"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  The sunxi-fel command can interact with a sunxi device in
 	  fel mode. This allows do download code to memory and execute
 	  it.
 
-comment "sunxi-fel needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "sunxi-fel needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 config BR2_PACKAGE_SUNXI_TOOLS_NAND_PART
 	bool "sunxi-nand-part"

+ 5 - 0
package/sunxi-tools/Config.in.host

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_HOST_SUNXI_TOOLS
 	bool "host sunxi-tools"
 	depends on BR2_arm
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  Tools for Allwinner A10 (aka sun4i) and A13 (aka sun5i)
 	  based devices. This includes fex2bin which can be used to
@@ -10,3 +11,7 @@ config BR2_PACKAGE_HOST_SUNXI_TOOLS
 	  mainline Linux kernel version.
 
 	  http://linux-sunxi.org/Sunxi-tools
+
+comment "host sunxi-tools needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 5 - 0
package/tegrarcm/Config.in.host

@@ -1,8 +1,13 @@
 config BR2_PACKAGE_HOST_TEGRARCM
 	bool "host tegrarcm"
 	depends on BR2_arm || BR2_armeb
+	depends on BR2_HOST_GCC_AT_LEAST_4_9 # host-libusb
 	help
 	  This program is used to send code to a Tegra device in
 	  recovery mode.
 
 	  https://github.com/NVIDIA/tegrarcm
+
+comment "host tegrarcm needs a toolchain w/ host gcc >= 4.9"
+	depends on BR2_arm || BR2_armeb
+	depends on !BR2_HOST_GCC_AT_LEAST_4_9

+ 12 - 0
package/uhd/Config.in

@@ -33,16 +33,24 @@ if BR2_PACKAGE_UHD
 
 config BR2_PACKAGE_UHD_B100
 	bool "b100 support"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_UHD_USB
 	help
 	  enable B100 support
 
+comment "B100 support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 config BR2_PACKAGE_UHD_B200
 	bool "b200 support"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_UHD_USB
 	help
 	  enable B200 support
 
+comment "B200 support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 config BR2_PACKAGE_UHD_E300
 	bool "E300 support"
 	select BR2_PACKAGE_UHD_MPMD
@@ -72,8 +80,12 @@ config BR2_PACKAGE_UHD_RFNOC
 
 config BR2_PACKAGE_UHD_USB
 	bool "USB support"
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  enable UHD USB support
 
+comment "USB support needs a toolchain w/ gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
 endif

+ 4 - 2
package/uhubctl/Config.in

@@ -1,11 +1,13 @@
 config BR2_PACKAGE_UHUBCTL
 	bool "uhubctl"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  Control USB power per-port on smart USB hubs.
 
 	  https://github.com/mvp/uhubctl
 
-comment "uhubctl needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "uhubctl needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/upower/Config.in

@@ -2,6 +2,7 @@ config BR2_PACKAGE_UPOWER
 	bool "upower"
 	depends on BR2_PACKAGE_HAS_UDEV
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libgudev, libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	depends on BR2_USE_MMU # libgudev
 	depends on BR2_USE_WCHAR # libgudev
 	select BR2_PACKAGE_LIBGUDEV
@@ -22,6 +23,7 @@ comment "upower needs udev /dev management"
 	depends on BR2_USE_MMU
 	depends on !BR2_PACKAGE_HAS_UDEV
 
-comment "upower needs a toolchain w/ threads, wchar"
+comment "upower needs a toolchain w/ threads, wchar, gcc >= 4.9"
 	depends on BR2_USE_MMU
-	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/usb_modeswitch/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_USB_MODESWITCH
 	bool "usb_modeswitch"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_JIMTCL if !BR2_PACKAGE_TCL || BR2_PACKAGE_TCL_SHLIB_ONLY
 	select BR2_PACKAGE_LIBUSB
 	help
@@ -20,5 +21,6 @@ config BR2_PACKAGE_USB_MODESWITCH
 
 	  http://www.draisberghof.de/usb_modeswitch/
 
-comment "usb_modeswitch needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "usb_modeswitch needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/usb_modeswitch_data/Config.in

@@ -1,6 +1,7 @@
 config BR2_PACKAGE_USB_MODESWITCH_DATA
 	bool "usb_modeswitch_data"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # usb_modeswitch -> libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # usb_modeswitch -> libusb
 	select BR2_PACKAGE_USB_MODESWITCH
 	help
 	  USB mode switch data
@@ -9,5 +10,6 @@ config BR2_PACKAGE_USB_MODESWITCH_DATA
 
 	  http://www.draisberghof.de/usb_modeswitch/
 
-comment "usb_modeswitch_data needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "usb_modeswitch_data needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

+ 4 - 2
package/usbredir/Config.in

@@ -1,9 +1,11 @@
-comment "usbredir needs a toolchain w/ threads"
-	depends on !BR2_TOOLCHAIN_HAS_THREADS
+comment "usbredir needs a toolchain w/ threads, gcc >= 4.9"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || \
+		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
 
 config BR2_PACKAGE_USBREDIR
 	bool "usbredir"
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
+	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # libusb
 	select BR2_PACKAGE_LIBUSB
 	help
 	  usbredir is the name of a network protocol for sending usb