summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.in6
-rw-r--r--Config.in.legacy44
-rw-r--r--DEVELOPERS4
-rw-r--r--Makefile34
-rw-r--r--board/freescale/common/imx/genimage.cfg.template (renamed from board/freescale/common/genimage.cfg.template)0
-rwxr-xr-xboard/freescale/common/imx/post-image.sh (renamed from board/freescale/common/post-image.sh)2
-rw-r--r--board/freescale/common/mxs/genimage.cfg.template39
-rwxr-xr-xboard/freescale/common/mxs/post-image.sh54
-rw-r--r--board/freescale/imx23evk/readme.txt48
-rw-r--r--board/freescale/imx25pdk/readme.txt2
-rw-r--r--board/freescale/imx28evk/genimage.cfg29
-rwxr-xr-xboard/freescale/imx28evk/post-image.sh14
-rw-r--r--board/freescale/imx51evk/readme.txt2
-rw-r--r--board/freescale/imx6sabre/readme.txt2
-rw-r--r--board/freescale/imx6ulevk/readme.txt2
-rw-r--r--board/freescale/imx7dsdb/readme.txt2
-rw-r--r--board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg28
-rw-r--r--board/olimex/imx233_olinuxino/linux-3.18.config152
-rw-r--r--board/olimex/imx233_olinuxino/linux-wifi.fragment18
-rwxr-xr-xboard/olimex/imx233_olinuxino/post-image.sh20
-rw-r--r--board/olimex/imx233_olinuxino/readme.txt85
-rw-r--r--board/technexion/imx6ulpico/readme.txt2
-rw-r--r--boot/uboot/Config.in4
-rw-r--r--boot/uboot/uboot.hash2
-rw-r--r--configs/freescale_imx28evk_defconfig2
-rw-r--r--configs/freescale_imx6dlsabreauto_defconfig2
-rw-r--r--configs/freescale_imx6dlsabresd_defconfig2
-rw-r--r--configs/freescale_imx6qsabreauto_defconfig2
-rw-r--r--configs/freescale_imx6qsabresd_defconfig2
-rw-r--r--configs/freescale_imx6sololiteevk_defconfig2
-rw-r--r--configs/freescale_imx6sxsabresd_defconfig2
-rw-r--r--configs/freescale_imx6ulevk_defconfig2
-rw-r--r--configs/freescale_imx7dsabresd_defconfig2
-rw-r--r--configs/imx23evk_defconfig34
-rw-r--r--configs/imx6ulpico_defconfig2
-rw-r--r--configs/mx25pdk_defconfig2
-rw-r--r--configs/mx51evk_defconfig2
-rw-r--r--configs/mx53loco_defconfig2
-rw-r--r--configs/olimex_imx233_olinuxino_defconfig20
-rw-r--r--configs/warp7_defconfig4
-rw-r--r--configs/warpboard_defconfig2
-rw-r--r--fs/common.mk3
-rw-r--r--fs/tar/tar.mk3
-rw-r--r--linux/linux.mk8
-rw-r--r--package/Config.in6
-rw-r--r--package/Makefile.in2
-rw-r--r--package/audit/Config.in2
-rw-r--r--package/bash/0031-patchlevel-31.patch116
-rw-r--r--package/bash/0032-patchlevel-32.patch55
-rw-r--r--package/bash/0033-patchlevel-33.patch229
-rw-r--r--package/bash/0034-patchlevel-34.patch94
-rw-r--r--package/bash/0035-patchlevel-35.patch67
-rw-r--r--package/bash/0036-patchlevel-36.patch61
-rw-r--r--package/bash/0037-patchlevel-37.patch47
-rw-r--r--package/bash/0038-patchlevel-38.patch92
-rw-r--r--package/bash/0039-patchlevel-39.patch61
-rw-r--r--package/bash/0040-patchlevel-40.patch51
-rw-r--r--package/bash/0041-patchlevel-41.patch76
-rw-r--r--package/bash/0042-patchlevel-42.patch59
-rw-r--r--package/bash/0043-patchlevel-43.patch63
-rw-r--r--package/bash/0044-patchlevel-44.patch52
-rw-r--r--package/bash/0045-patchlevel-45.patch56
-rw-r--r--package/bash/0046-patchlevel-46.patch59
-rw-r--r--package/bash/bash.hash2
-rw-r--r--package/bash/bash.mk2
-rw-r--r--package/bluez5_utils/bluez5_utils.hash2
-rw-r--r--package/bluez5_utils/bluez5_utils.mk2
-rw-r--r--package/bridge-utils/0002-libbridge-fix-headers-conflict-with-musl-libc.patch140
-rw-r--r--package/btrfs-progs/btrfs-progs.hash2
-rw-r--r--package/btrfs-progs/btrfs-progs.mk2
-rwxr-xr-xpackage/busybox/S50telnet5
-rw-r--r--package/busybox/busybox.mk6
-rw-r--r--package/canfestival/Config.in2
-rw-r--r--package/cmake/0001-rename_cmake_rootfile.patch28
-rw-r--r--package/cmake/Config.in9
-rw-r--r--package/cmake/cmake.hash4
-rw-r--r--package/cmake/cmake.mk6
-rw-r--r--package/cryptsetup/cryptsetup.hash2
-rw-r--r--package/cryptsetup/cryptsetup.mk2
-rw-r--r--package/domoticz/domoticz.hash2
-rw-r--r--package/domoticz/domoticz.mk2
-rw-r--r--package/efibootmgr/0001-Allow-build-with-uClibc.patch40
-rw-r--r--package/efibootmgr/Config.in7
-rw-r--r--package/efibootmgr/efibootmgr.mk8
-rw-r--r--package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch29
-rw-r--r--package/efivar/0002-Allow-build-with-uClibc.patch38
-rw-r--r--package/efivar/Config.in7
-rw-r--r--package/efivar/efivar.hash2
-rw-r--r--package/efivar/efivar.mk2
-rw-r--r--package/efl/efl.hash4
-rw-r--r--package/efl/efl.mk2
-rw-r--r--package/fdk-aac/Config.in17
-rw-r--r--package/ffmpeg/ffmpeg.hash2
-rw-r--r--package/ffmpeg/ffmpeg.mk2
-rw-r--r--package/gcc/gcc-initial/gcc-initial.mk13
-rw-r--r--package/git/git.hash2
-rw-r--r--package/git/git.mk2
-rw-r--r--package/glog/Config.in3
-rw-r--r--package/gstreamer1/gst-omx/gst-omx.hash4
-rw-r--r--package/gstreamer1/gst-omx/gst-omx.mk2
-rw-r--r--package/gstreamer1/gst1-imx/gst1-imx.hash2
-rw-r--r--package/gstreamer1/gst1-imx/gst1-imx.mk2
-rw-r--r--package/gstreamer1/gst1-libav/gst1-libav.hash4
-rw-r--r--package/gstreamer1/gst1-libav/gst1-libav.mk2
-rw-r--r--package/gstreamer1/gst1-plugins-bad/0001-vmncdec-Sanity-check-width-height-before-using-it.patch51
-rw-r--r--package/gstreamer1/gst1-plugins-bad/Config.in36
-rw-r--r--package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash4
-rw-r--r--package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk31
-rw-r--r--package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash4
-rw-r--r--package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk2
-rw-r--r--package/gstreamer1/gst1-plugins-good/0001-flxdec-add-some-write-bounds-checking.patch305
-rw-r--r--package/gstreamer1/gst1-plugins-good/0002-flxdec-fix-some-warnings-comparing-unsigned-0.patch50
-rw-r--r--package/gstreamer1/gst1-plugins-good/0003-flxdec-Don-t-unref-parent-in-the-chain-function.patch29
-rw-r--r--package/gstreamer1/gst1-plugins-good/0004-flxdec-rewrite-logic-based-on-GstByteReader-Writer.patch1039
-rw-r--r--package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash4
-rw-r--r--package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk2
-rw-r--r--package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash4
-rw-r--r--package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk2
-rw-r--r--package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash4
-rw-r--r--package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk2
-rw-r--r--package/gstreamer1/gst1-validate/Config.in1
-rw-r--r--package/gstreamer1/gst1-validate/gst1-validate.hash4
-rw-r--r--package/gstreamer1/gst1-validate/gst1-validate.mk3
-rw-r--r--package/gstreamer1/gstreamer1/gstreamer1.hash4
-rw-r--r--package/gstreamer1/gstreamer1/gstreamer1.mk19
-rw-r--r--package/htop/htop.mk7
-rw-r--r--package/kexec-lite/kexec-lite.hash2
-rw-r--r--package/kexec-lite/kexec-lite.mk2
-rw-r--r--package/kodi/0012-Fix_includes_in_amcodec.patch38
-rw-r--r--package/kodi/kodi.mk17
-rw-r--r--package/lcms2/lcms2.hash7
-rw-r--r--package/lcms2/lcms2.mk4
-rw-r--r--package/lftp/lftp.hash4
-rw-r--r--package/lftp/lftp.mk2
-rw-r--r--package/libatomic_ops/Config.in4
-rw-r--r--package/libatomic_ops/libatomic_ops.hash2
-rw-r--r--package/libatomic_ops/libatomic_ops.mk2
-rw-r--r--package/libdrm/libdrm.hash4
-rw-r--r--package/libdrm/libdrm.mk2
-rw-r--r--package/libgtk2/libgtk2.hash4
-rw-r--r--package/libgtk2/libgtk2.mk2
-rw-r--r--package/libgtk3/libgtk3.hash4
-rw-r--r--package/libgtk3/libgtk3.mk2
-rw-r--r--package/libnet/0001-support-musl-libc.patch50
-rw-r--r--package/libnet/Config.in5
-rw-r--r--package/libpjsip/0001-Use-mutex-types-compatible-with-musl-fixes-musl-buil.patch53
-rw-r--r--package/libpjsip/0002-Replace-__sched_priority-with-sched_priority-fixes-m.patch82
-rw-r--r--package/libpjsip/libpjsip.hash6
-rw-r--r--package/libpjsip/libpjsip.mk4
-rw-r--r--package/libva-intel-driver/libva-intel-driver.hash4
-rw-r--r--package/libva-intel-driver/libva-intel-driver.mk2
-rw-r--r--package/libva/libva.hash4
-rw-r--r--package/libva/libva.mk2
-rw-r--r--package/libxmlrpc/0001-fix-gennmtab-build.patch2
-rw-r--r--package/libxmlrpc/0004-use-correct-curl-config.patch36
-rw-r--r--package/libxmlrpc/0006-fix-ar-ranlib-handling.patch28
-rw-r--r--package/libxmlrpc/0006-narrowing.patch20
-rw-r--r--package/libxmlrpc/libxmlrpc.hash2
-rw-r--r--package/libxmlrpc/libxmlrpc.mk2
-rw-r--r--package/linux-pam/Config.in2
-rw-r--r--package/lvm2/lvm2.hash2
-rw-r--r--package/lvm2/lvm2.mk2
-rw-r--r--package/makedevs/Config.in5
-rw-r--r--package/makedevs/makedevs.mk10
-rw-r--r--package/mesa3d-headers/mesa3d-headers.mk2
-rw-r--r--package/mesa3d/mesa3d.hash4
-rw-r--r--package/mesa3d/mesa3d.mk2
-rw-r--r--package/moarvm/Config.in3
-rw-r--r--package/moarvm/moarvm.hash2
-rw-r--r--package/moarvm/moarvm.mk10
-rw-r--r--package/netsniff-ng/Config.in7
-rw-r--r--package/netsniff-ng/netsniff-ng.hash2
-rw-r--r--package/netsniff-ng/netsniff-ng.mk2
-rw-r--r--package/nodejs/6.9.1/0001-gyp-force-link-command-to-use-CXX.patch (renamed from package/nodejs/6.7.0/0001-gyp-force-link-command-to-use-CXX.patch)0
-rw-r--r--package/nodejs/6.9.1/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch (renamed from package/nodejs/6.7.0/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch)0
-rw-r--r--package/nodejs/Config.in2
-rw-r--r--package/nodejs/nodejs.hash4
-rw-r--r--package/norm/0003-remove-kernel-headers-include-musl-fix.patch55
-rw-r--r--package/odroid-scripts/S02odroidc2_fb (renamed from package/odroid-scripts/S50odroidc2_fb)0
-rw-r--r--package/odroid-scripts/odroid-scripts.hash2
-rw-r--r--package/odroid-scripts/odroid-scripts.mk6
-rw-r--r--package/openvpn/openvpn.hash4
-rw-r--r--package/openvpn/openvpn.mk2
-rw-r--r--package/patchelf/patchelf.hash2
-rw-r--r--package/patchelf/patchelf.mk5
-rw-r--r--package/php-amqp/Config.in2
-rw-r--r--package/php/php.hash2
-rw-r--r--package/php/php.mk2
-rw-r--r--package/python-pillow/python-pillow.hash4
-rw-r--r--package/python-pillow/python-pillow.mk4
-rw-r--r--package/qemu/Config.in8
-rw-r--r--package/qemu/qemu.mk7
-rw-r--r--package/qt5/qt5.mk1
-rw-r--r--package/qt5/qt5webkit/qt5webkit.hash4
-rw-r--r--package/qt5/qt5webkit/qt5webkit.mk14
-rw-r--r--package/rabbitmq-c/Config.in4
-rw-r--r--package/readline/0001-patchlevel-1.patch47
-rw-r--r--package/readline/0002-patchlevel-2.patch48
-rw-r--r--package/readline/0003-patchlevel-3.patch51
-rw-r--r--package/readline/0004-patchlevel-4.patch49
-rw-r--r--package/readline/0005-patchlevel-5.patch62
-rw-r--r--package/readline/0006-patchlevel-6.patch67
-rw-r--r--package/readline/0007-patchlevel-7.patch51
-rw-r--r--package/readline/0008-patchlevel-8.patch51
-rw-r--r--package/readline/readline.hash2
-rw-r--r--package/readline/readline.mk2
-rw-r--r--package/ruby/ruby.hash4
-rw-r--r--package/ruby/ruby.mk2
-rw-r--r--package/screen/screen.mk1
-rw-r--r--package/ser2net/ser2net.hash2
-rw-r--r--package/ser2net/ser2net.mk2
-rw-r--r--package/snowball-hdmiservice/Config.in14
-rw-r--r--package/snowball-hdmiservice/snowball-hdmiservice.hash2
-rw-r--r--package/snowball-hdmiservice/snowball-hdmiservice.mk25
-rw-r--r--package/snowball-init/Config.in17
-rw-r--r--package/snowball-init/snowball-init.hash2
-rw-r--r--package/snowball-init/snowball-init.mk16
-rw-r--r--package/sqlite/sqlite.hash4
-rw-r--r--package/sqlite/sqlite.mk2
-rw-r--r--package/sudo/sudo.hash2
-rw-r--r--package/sudo/sudo.mk9
-rw-r--r--package/sunxi-tools/sunxi-tools.hash2
-rw-r--r--package/sunxi-tools/sunxi-tools.mk4
-rw-r--r--package/swupdate/swupdate.hash2
-rw-r--r--package/swupdate/swupdate.mk2
-rw-r--r--package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch18
-rw-r--r--package/systemd/0004-importd-export-raw-needs-missing.h-for-O_TMPFILE.patch31
-rw-r--r--package/systemd/0005-missing.h-add-missing-definitions-for-__O_TMPFILE.patch63
-rw-r--r--package/systemd/0006-basic-fileio-we-always-have-O_TMPFILE-now.patch65
-rw-r--r--package/systemd/systemd.hash2
-rw-r--r--package/systemd/systemd.mk2
-rw-r--r--package/tinycbor/Config.in2
-rw-r--r--package/tinycbor/tinycbor.hash4
-rw-r--r--package/tinycbor/tinycbor.mk13
-rw-r--r--package/tslib/0001-enable_raw_module.patch14
-rw-r--r--package/tslib/0002-add_finddef_and_inputattach_utils.patch718
-rw-r--r--package/tslib/tslib.hash2
-rw-r--r--package/tslib/tslib.mk2
-rw-r--r--package/uboot-tools/uboot-tools.hash2
-rw-r--r--package/uboot-tools/uboot-tools.mk2
-rw-r--r--package/uclibc-ng-test/Config.in22
-rw-r--r--package/uclibc-ng-test/uclibc-ng-test.mk45
-rw-r--r--package/uhttpd/Config.in18
-rw-r--r--package/uhttpd/uhttpd.hash2
-rw-r--r--package/uhttpd/uhttpd.mk35
-rw-r--r--package/ustream-ssl/Config.in12
-rw-r--r--package/ustream-ssl/ustream-ssl.mk21
-rw-r--r--package/vala/vala.hash4
-rw-r--r--package/vala/vala.mk2
-rw-r--r--package/webrtc-audio-processing/Config.in8
-rw-r--r--package/wine/wine.mk2
-rw-r--r--package/wpa_supplicant/Config.in7
-rw-r--r--package/wpa_supplicant/wpa_supplicant.mk5
-rw-r--r--package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash4
-rw-r--r--package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk2
-rw-r--r--package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash4
-rw-r--r--package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk2
-rw-r--r--package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash4
-rw-r--r--package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk2
-rw-r--r--package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash4
-rw-r--r--package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk2
-rw-r--r--package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash4
-rw-r--r--package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk2
-rw-r--r--package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash4
-rw-r--r--package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk2
-rw-r--r--package/x11r7/xdriver_xf86-video-glint/0002-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-mga/0002-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-nv/0002-abi23.patch39
-rw-r--r--package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash4
-rw-r--r--package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk2
-rw-r--r--package/x11r7/xdriver_xf86-video-qxl/0001-systemincludes.patch39
-rw-r--r--package/x11r7/xdriver_xf86-video-qxl/0002-xserverfix.patch51
-rw-r--r--package/x11r7/xdriver_xf86-video-qxl/Config.in1
-rw-r--r--package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk3
-rw-r--r--package/x11r7/xdriver_xf86-video-r128/0002-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-savage/0002-abi23.patch39
-rw-r--r--package/x11r7/xdriver_xf86-video-siliconmotion/0001-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-sis/0002-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-sis/0003-xi.patch (renamed from package/x11r7/xdriver_xf86-video-sis/0007-xi.patch)0
-rw-r--r--package/x11r7/xdriver_xf86-video-tdfx/0002-abi23.patch39
-rw-r--r--package/x11r7/xdriver_xf86-video-trident/0001-abi23.patch33
-rw-r--r--package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash4
-rw-r--r--package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk2
-rw-r--r--package/x264/Config.in1
-rw-r--r--package/xmlstarlet/xmlstarlet.mk6
-rw-r--r--toolchain/helpers.mk3
-rw-r--r--toolchain/toolchain-external/Config.in1007
-rw-r--r--toolchain/toolchain-external/pkg-toolchain-external.mk615
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in62
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk47
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in73
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk47
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in17
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk22
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in24
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk12
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in35
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk13
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in93
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk13
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in17
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk13
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in25
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk13
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in29
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk12
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/Config.in5
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/Config.in.options345
-rw-r--r--toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk15
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in15
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk16
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in27
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk16
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in26
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options9
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash3
-rw-r--r--toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk16
-rw-r--r--toolchain/toolchain-external/toolchain-external-musl-cross/Config.in30
-rw-r--r--toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options19
-rw-r--r--toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.hash12
-rw-r--r--toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.mk12
-rw-r--r--toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in20
-rw-r--r--toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options10
-rw-r--r--toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash5
-rw-r--r--toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk24
-rw-r--r--toolchain/toolchain-external/toolchain-external.hash67
-rw-r--r--toolchain/toolchain-external/toolchain-external.mk792
-rw-r--r--toolchain/toolchain/toolchain.mk14
350 files changed, 3546 insertions, 6966 deletions
diff --git a/Config.in b/Config.in
index 5cf0c4d29..98096dff1 100644
--- a/Config.in
+++ b/Config.in
@@ -707,6 +707,12 @@ config BR2_REPRODUCIBLE
this allows to generate exactly identical binaries from one
build to the other, including on different machines.
+ The current implementation is restricted to builds with the
+ same output directory. Many (absolute) paths are recorded in
+ intermediary files, and it is very likely that some of these
+ paths leak into the target rootfs. If you build with the
+ same O=... path, however, the result is identical.
+
This is labeled as an experimental feature, as not all
packages behave properly to ensure reproducibility.
diff --git a/Config.in.legacy b/Config.in.legacy
index 8c41b0509..aeefb392c 100644
--- a/Config.in.legacy
+++ b/Config.in.legacy
@@ -143,6 +143,50 @@ comment "----------------------------------------------------"
endif
###############################################################################
+comment "Legacy options removed in 2017.02"
+
+config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
+ bool "Blackfin.uclinux.org 2014R1 toolchain removed"
+ select BR2_LEGACY
+ help
+ The ADI Blackfin toolchain has many bugs which are fixed in
+ more recent gcc and uClibc-ng releases. Use the Buildroot
+ toolchain instead.
+
+config BR2_PACKAGE_MAKEDEVS
+ bool "makedevs removed"
+ select BR2_LEGACY
+ help
+ The makedevs tool is part of busybox. The Buildroot fork
+ should not be used outside of the Buildroot infrastructure.
+
+config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
+ bool "Arago ARMv7 2011.09 removed"
+ select BR2_LEGACY
+ help
+ The Arago toolchains are every old and not updated anymore.
+
+config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
+ bool "Arago ARMv5 2011.09 removed"
+ select BR2_LEGACY
+ help
+ The Arago toolchains are every old and not updated anymore.
+
+config BR2_PACKAGE_SNOWBALL_HDMISERVICE
+ bool "snowball-hdmiservice removed"
+ select BR2_LEGACY
+ help
+ We no longer have support for the Snowball platform in
+ Buildroot, so this package was no longer useful.
+
+config BR2_PACKAGE_SNOWBALL_INIT
+ bool "snowball-init removed"
+ select BR2_LEGACY
+ help
+ We no longer have support for the Snowball platform in
+ Buildroot, so this package was no longer useful.
+
+###############################################################################
comment "Legacy options removed in 2016.11"
config BR2_PACKAGE_PHP_SAPI_CLI_CGI
diff --git a/DEVELOPERS b/DEVELOPERS
index 9d0ede76a..684be4866 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1222,6 +1222,10 @@ F: package/gssdp/
F: package/gupnp/
F: package/gupnp-av/
+N: Rahul Jain <rahul.jain@imgtec.com>
+F: package/uhttpd/
+F: package/ustream-ssl/
+
N: Renaud Aubin <root@renaud.io>
F: package/libhttpparser/
diff --git a/Makefile b/Makefile
index 119839c3d..00bcd0f49 100644
--- a/Makefile
+++ b/Makefile
@@ -24,6 +24,9 @@
# You shouldn't need to mess with anything beyond this point...
#--------------------------------------------------------------
+# Delete default rules. We don't use them. This saves a bit of time.
+.SUFFIXES:
+
# we want bash as shell
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
@@ -84,6 +87,8 @@ all:
# Set and export the version string
export BR2_VERSION := 2017.02-git
+# Actual time the release is cut (for reproducible builds)
+BR2_VERSION_EPOCH = 1478206447
# Save running make version since it's clobbered by the make package
RUNNING_MAKE_VERSION := $(MAKE_VERSION)
@@ -123,7 +128,8 @@ export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlo
noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \
defconfig %_defconfig allyesconfig allnoconfig silentoldconfig release \
randpackageconfig allyespackageconfig allnopackageconfig \
- print-version olddefconfig distclean
+ print-version olddefconfig distclean manual manual-html manual-split-html \
+ manual-pdf manual-text manual-epub
# Some global targets do not trigger a build, but are used to collect
# metadata, or do various checks. When such targets are triggered,
@@ -134,9 +140,12 @@ noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconf
# We're building in two situations: when MAKECMDGOALS is empty
# (default target is to build), or when MAKECMDGOALS contains
# something else than one of the nobuild_targets.
-nobuild_targets := source source-check \
- legal-info external-deps _external-deps \
- clean distclean help
+nobuild_targets := source %-source source-check \
+ legal-info %-legal-info external-deps _external-deps \
+ clean distclean help show-targets graph-depends \
+ %-graph-depends %-show-depends %-show-version \
+ graph-build graph-size list-defconfigs \
+ savedefconfig printvars
ifeq ($(MAKECMDGOALS),)
BR_BUILDING = y
else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),)
@@ -165,10 +174,10 @@ endif
# bash prints the name of the directory on 'cd <dir>' if CDPATH is
# set, so unset it here to not cause problems. Notice that the export
-# line doesn't affect the environment of $(shell ..) calls, so
-# explictly throw away any output from 'cd' here.
+# line doesn't affect the environment of $(shell ..) calls.
export CDPATH :=
-BASE_DIR := $(shell mkdir -p $(O) && cd $(O) >/dev/null && pwd)
+
+BASE_DIR := $(CANONICAL_O)
$(if $(BASE_DIR),, $(error output directory "$(O)" does not exist))
@@ -239,9 +248,12 @@ endif
# timezone and locale may affect build output
ifeq ($(BR2_REPRODUCIBLE),y)
-export TZ=UTC
-export LANG=C
-export LC_ALL=C
+export TZ = UTC
+export LANG = C
+export LC_ALL = C
+export GZIP = -n
+BR2_VERSION_GIT_EPOCH = $(shell GIT_DIR=$(TOPDIR)/.git $(GIT) log -1 --format=%at)
+export SOURCE_DATE_EPOCH = $(if $(wildcard $(TOPDIR)/.git),$(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH))
endif
# To put more focus on warnings, be less verbose as default
@@ -656,7 +668,7 @@ endif
rm -rf $(TARGET_DIR)/usr/info $(TARGET_DIR)/usr/share/info
rm -rf $(TARGET_DIR)/usr/doc $(TARGET_DIR)/usr/share/doc
rm -rf $(TARGET_DIR)/usr/share/gtk-doc
- -rmdir $(TARGET_DIR)/usr/share 2>/dev/null
+ rmdir $(TARGET_DIR)/usr/share 2>/dev/null || true
$(STRIP_FIND_CMD) | xargs -0 $(STRIPCMD) 2>/dev/null || true
# See http://sourceware.org/gdb/wiki/FAQ, "GDB does not see any threads
diff --git a/board/freescale/common/genimage.cfg.template b/board/freescale/common/imx/genimage.cfg.template
index acce058b2..acce058b2 100644
--- a/board/freescale/common/genimage.cfg.template
+++ b/board/freescale/common/imx/genimage.cfg.template
diff --git a/board/freescale/common/post-image.sh b/board/freescale/common/imx/post-image.sh
index 7d48550a5..9e4da82dc 100755
--- a/board/freescale/common/post-image.sh
+++ b/board/freescale/common/imx/post-image.sh
@@ -35,7 +35,7 @@ main()
local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
sed -e "s/%FILES%/${FILES}/" \
- board/freescale/common/genimage.cfg.template > ${GENIMAGE_CFG}
+ board/freescale/common/imx/genimage.cfg.template > ${GENIMAGE_CFG}
rm -rf "${GENIMAGE_TMP}"
diff --git a/board/freescale/common/mxs/genimage.cfg.template b/board/freescale/common/mxs/genimage.cfg.template
new file mode 100644
index 000000000..e094fb7f2
--- /dev/null
+++ b/board/freescale/common/mxs/genimage.cfg.template
@@ -0,0 +1,39 @@
+# Minimal SD card image for the Freescale MX23/MX28 Template
+#
+# We mimic the .sdcard Freescale's MX23/MX28 image format:
+# * u-boot.sb is placed at offset 1M,
+# * a FAT partition at offset 16 MB is containing zImage/uImage and DTB files
+# * a single root filesystem partition is required (ext2, ext3 or ext4)
+#
+
+image boot.vfat {
+ vfat {
+ files = {
+ %FILES%
+ }
+ }
+ size = 16M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition u-boot {
+ partition-type = 0x53
+ image = "u-boot.sd"
+ offset = 1M
+ size = 16M
+ }
+
+ partition kernel {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext2"
+ }
+}
diff --git a/board/freescale/common/mxs/post-image.sh b/board/freescale/common/mxs/post-image.sh
new file mode 100755
index 000000000..0bfb835c6
--- /dev/null
+++ b/board/freescale/common/mxs/post-image.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+
+#
+# dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME
+# in ${BR_CONFIG}, then prints the corresponding list of file names for the
+# genimage configuration file
+#
+dtb_list()
+{
+ local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})"
+
+ for dt in $DTB_LIST; do
+ echo -n "\"$dt.dtb\", "
+ done
+}
+
+#
+# linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in
+# ${BR_CONFIG}, then prints the corresponding file name for the genimage
+# configuration file
+#
+linux_image()
+{
+ if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
+ echo "\"uImage\""
+ else
+ echo "\"zImage\""
+ fi
+}
+
+main()
+{
+ local FILES="$(dtb_list) $(linux_image)"
+ local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"
+ local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+
+ sed -e "s/%FILES%/${FILES}/" \
+ board/freescale/common/mxs/genimage.cfg.template > ${GENIMAGE_CFG}
+
+ rm -rf "${GENIMAGE_TMP}"
+
+ genimage \
+ --rootpath "${TARGET_DIR}" \
+ --tmppath "${GENIMAGE_TMP}" \
+ --inputpath "${BINARIES_DIR}" \
+ --outputpath "${BINARIES_DIR}" \
+ --config "${GENIMAGE_CFG}"
+
+ rm -f ${GENIMAGE_CFG}
+
+ exit $?
+}
+
+main $@
diff --git a/board/freescale/imx23evk/readme.txt b/board/freescale/imx23evk/readme.txt
new file mode 100644
index 000000000..6574577dc
--- /dev/null
+++ b/board/freescale/imx23evk/readme.txt
@@ -0,0 +1,48 @@
+**************************
+Freescale i.MX23 EVK board
+**************************
+
+This file documents the Buildroot support for the Freescale i.MX23 EVK board.
+
+Build
+=====
+
+First, configure Buildroot for your i.MX23 EVK board:
+
+ make imx23evk_defconfig
+
+Build all components:
+
+ make
+
+You will find in output/images/ directory the following files:
+ - imx23-evk.dtb
+ - rootfs.tar
+ - u-boot.sd
+ - zImage
+
+Create a bootable SD card
+=========================
+
+To determine the device associated to the SD card have a look in the
+/proc/partitions file:
+
+ cat /proc/partitions
+
+Then, run the following command:
+
+*** WARNING! The command will destroy all the card content. Use with care! ***
+
+ sudo dd if=output/images/sdcard.img of=/dev/<your-microsd-device>
+
+Boot the i.MX23 EVK board
+=========================
+
+- Put the Boot Mode Select jumper as 1 0 0 1 so that it can boot
+ from the SD card
+- Insert the SD card in the SD Card slot of the board;
+- Connect an RS232 UART cable to the Debug UART Port and connect using a
+ terminal emulator at 115200 bps, 8n1;
+- power on the board.
+
+Enjoy!
diff --git a/board/freescale/imx25pdk/readme.txt b/board/freescale/imx25pdk/readme.txt
index df7c61726..1aece6c9b 100644
--- a/board/freescale/imx25pdk/readme.txt
+++ b/board/freescale/imx25pdk/readme.txt
@@ -40,7 +40,7 @@ command as root:
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX25 PDK board
=========================
diff --git a/board/freescale/imx28evk/genimage.cfg b/board/freescale/imx28evk/genimage.cfg
deleted file mode 100644
index 4df432f99..000000000
--- a/board/freescale/imx28evk/genimage.cfg
+++ /dev/null
@@ -1,29 +0,0 @@
-image kernel.vfat {
- vfat {
- files = {
- "zImage", "imx28-evk.dtb"
- }
- }
- size = 16M
-}
-
-image sdcard.img {
- hdimage {
- }
- partition boot {
- partition-type = 0x53
- image = "u-boot.sd"
- offset = 1M
- size = 16M
- }
-
- partition kernel {
- partition-type = 0xC
- image = "kernel.vfat"
- }
-
- partition rootfs {
- partition-type = 0x83
- image = "rootfs.ext2"
- }
-}
diff --git a/board/freescale/imx28evk/post-image.sh b/board/freescale/imx28evk/post-image.sh
deleted file mode 100755
index b4ac4608f..000000000
--- a/board/freescale/imx28evk/post-image.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env bash
-
-BOARD_DIR="$(dirname $0)"
-GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
-GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
-
-rm -rf "${GENIMAGE_TMP}"
-
-genimage \
- --rootpath "${TARGET_DIR}" \
- --tmppath "${GENIMAGE_TMP}" \
- --inputpath "${BINARIES_DIR}" \
- --outputpath "${BINARIES_DIR}" \
- --config "${GENIMAGE_CFG}"
diff --git a/board/freescale/imx51evk/readme.txt b/board/freescale/imx51evk/readme.txt
index bf739fd65..d67a3fd72 100644
--- a/board/freescale/imx51evk/readme.txt
+++ b/board/freescale/imx51evk/readme.txt
@@ -40,7 +40,7 @@ command as root:
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX51 EVK board
=========================
diff --git a/board/freescale/imx6sabre/readme.txt b/board/freescale/imx6sabre/readme.txt
index e409d8f19..a1bd82fdc 100644
--- a/board/freescale/imx6sabre/readme.txt
+++ b/board/freescale/imx6sabre/readme.txt
@@ -71,7 +71,7 @@ command as root:
*** WARNING! The script will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the SABRE board
====================
diff --git a/board/freescale/imx6ulevk/readme.txt b/board/freescale/imx6ulevk/readme.txt
index 98de2775d..25b95fec5 100644
--- a/board/freescale/imx6ulevk/readme.txt
+++ b/board/freescale/imx6ulevk/readme.txt
@@ -43,7 +43,7 @@ command as root:
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX6UL EVK board
=========================
diff --git a/board/freescale/imx7dsdb/readme.txt b/board/freescale/imx7dsdb/readme.txt
index 9aeeb166d..c6030f696 100644
--- a/board/freescale/imx7dsdb/readme.txt
+++ b/board/freescale/imx7dsdb/readme.txt
@@ -40,7 +40,7 @@ command as root:
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX7D SDB board
=========================
diff --git a/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg b/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg
deleted file mode 100644
index 78979dcc9..000000000
--- a/board/olimex/imx233_olinuxino/genimage-imx233_olinuxino.cfg
+++ /dev/null
@@ -1,28 +0,0 @@
-image kernel.vfat {
- vfat {
- files = {
- "uImage"
- }
- }
- size = 5M
-}
-
-image sdcard.img {
- hdimage {
- }
- partition boot {
- partition-type = 0x53
- image = "u-boot.sd"
- size = 16M
- }
-
- partition kernel {
- partition-type = 0xC
- image = "kernel.vfat"
- }
-
- partition rootfs {
- partition-type = 0x83
- image = "rootfs.ext2"
- }
-}
diff --git a/board/olimex/imx233_olinuxino/linux-3.18.config b/board/olimex/imx233_olinuxino/linux-3.18.config
deleted file mode 100644
index d46d4d5cb..000000000
--- a/board/olimex/imx233_olinuxino/linux-3.18.config
+++ /dev/null
@@ -1,152 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PERF_EVENTS=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-CONFIG_BLK_DEV_INTEGRITY=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_MXS=y
-# CONFIG_ARM_THUMB is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-CONFIG_AEABI=y
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_CMDLINE="console=ttyAMA0,115200 root=/dev/mmcblk0p2 rw rootwait"
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_SYN_COOKIES=y
-CONFIG_CFG80211=y
-CONFIG_CFG80211_WEXT=y
-CONFIG_MAC80211=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FIRMWARE_IN_KERNEL is not set
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_DATAFLASH=y
-CONFIG_MTD_SST25L=y
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_GPMI_NAND=y
-CONFIG_MTD_UBI=y
-# CONFIG_BLK_DEV is not set
-CONFIG_EEPROM_AT24=y
-CONFIG_EEPROM_93CX6=y
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_NETDEVICES=y
-# CONFIG_ETHERNET is not set
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_SMSC95XX=y
-CONFIG_RTL8187=m
-CONFIG_ATH_CARDS=m
-CONFIG_ATH9K_HTC=m
-CONFIG_RT2X00=m
-CONFIG_RT73USB=m
-CONFIG_RT2800USB=m
-CONFIG_RT2800USB_RT53XX=y
-CONFIG_RT2800USB_RT55XX=y
-CONFIG_RT2800USB_UNKNOWN=y
-CONFIG_RTL_CARDS=m
-CONFIG_RTL8192CU=m
-# CONFIG_RTLWIFI_DEBUG is not set
-CONFIG_ZD1211RW=m
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
-# CONFIG_LEGACY_PTYS is not set
-# CONFIG_DEVKMEM is not set
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_SERIAL_MXS_AUART=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-# CONFIG_I2C_COMPAT is not set
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MXS=y
-CONFIG_SPI=y
-CONFIG_SPI_GPIO=m
-CONFIG_SPI_MXS=y
-CONFIG_PTP_1588_CLOCK=y
-CONFIG_GPIO_SYSFS=y
-# CONFIG_HWMON is not set
-CONFIG_WATCHDOG=y
-CONFIG_STMP3XXX_RTC_WATCHDOG=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_FB=y
-CONFIG_FB_MXS=y
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_PWM=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_LOGO=y
-CONFIG_SOUND=y
-CONFIG_SND=y
-CONFIG_SND_HRTIMER=y
-# CONFIG_SND_SUPPORT_OLD_API is not set
-# CONFIG_SND_VERBOSE_PROCFS is not set
-# CONFIG_SND_DRIVERS is not set
-# CONFIG_SND_ARM is not set
-# CONFIG_SND_SPI is not set
-# CONFIG_SND_USB is not set
-CONFIG_SND_SOC=y
-CONFIG_USB=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_USB_CHIPIDEA=y
-CONFIG_USB_CHIPIDEA_HOST=y
-CONFIG_USB_MXS_PHY=y
-CONFIG_MMC=y
-CONFIG_MMC_MXS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_ONESHOT=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-CONFIG_LEDS_TRIGGER_GPIO=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_STMP=y
-CONFIG_DMADEVICES=y
-CONFIG_MXS_DMA=y
-CONFIG_STAGING=y
-CONFIG_MXS_LRADC=y
-CONFIG_IIO=y
-CONFIG_IIO_SYSFS_TRIGGER=y
-CONFIG_PWM=y
-CONFIG_PWM_MXS=y
-CONFIG_EXT4_FS=y
-CONFIG_TMPFS=y
-CONFIG_TMPFS_POSIX_ACL=y
-# CONFIG_MISC_FILESYSTEMS is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
-CONFIG_FRAME_WARN=2048
-CONFIG_UNUSED_SYMBOLS=y
-CONFIG_DEBUG_FS=y
-CONFIG_STRICT_DEVMEM=y
-CONFIG_DEBUG_USER=y
-CONFIG_KEYS=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-# CONFIG_CRYPTO_ANSI_CPRNG is not set
-CONFIG_CRYPTO_DEV_MXS_DCP=y
-CONFIG_CRC_CCITT=y
-CONFIG_CRC_ITU_T=y
-CONFIG_CRC7=m
-CONFIG_FONTS=y
diff --git a/board/olimex/imx233_olinuxino/linux-wifi.fragment b/board/olimex/imx233_olinuxino/linux-wifi.fragment
new file mode 100644
index 000000000..b70dea2c6
--- /dev/null
+++ b/board/olimex/imx233_olinuxino/linux-wifi.fragment
@@ -0,0 +1,18 @@
+# Network testing
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+CONFIG_CFG80211_WEXT=y
+CONFIG_MAC80211=y
+# MII PHY device drivers
+CONFIG_WLAN=y
+CONFIG_RTL8187=m
+CONFIG_ATH9K_HTC=m
+CONFIG_RT2X00=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RTL_CARDS=m
+CONFIG_RTL8192CU=m
+CONFIG_ZD1211RW=m
diff --git a/board/olimex/imx233_olinuxino/post-image.sh b/board/olimex/imx233_olinuxino/post-image.sh
deleted file mode 100755
index 703cbe7ee..000000000
--- a/board/olimex/imx233_olinuxino/post-image.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-BOARD_DIR="$(dirname $0)"
-BOARD_NAME="$(basename ${BOARD_DIR})"
-GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
-GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
-
-# Create symlink to "rename" kernel image
-ln -sf uImage.imx23-olinuxino ${BINARIES_DIR}/uImage
-
-rm -rf "${GENIMAGE_TMP}"
-
-genimage \
- --rootpath "${TARGET_DIR}" \
- --tmppath "${GENIMAGE_TMP}" \
- --inputpath "${BINARIES_DIR}" \
- --outputpath "${BINARIES_DIR}" \
- --config "${GENIMAGE_CFG}"
-
-exit $?
diff --git a/board/olimex/imx233_olinuxino/readme.txt b/board/olimex/imx233_olinuxino/readme.txt
index 4b24ac2c1..1e676c45d 100644
--- a/board/olimex/imx233_olinuxino/readme.txt
+++ b/board/olimex/imx233_olinuxino/readme.txt
@@ -8,89 +8,22 @@ It also pulls up the console on the serial port, not on TV output.
=== Output files after building ==============================================
output/images
-+-- kernel.vfat (VFAT kernel partition image generated by genimage)
++-- boot.vfat (VFAT kernel partition image generated by genimage)
++-- imx23-olinuxino.dtb (device tree blob)
+-- rootfs.ext2 (Root file system)
+-- sdcard.img (Complete SD card image generated by genimage)
+-- u-boot.sd (U-Boot image)
-+-- uImage -> uImage.imx23-olinuxino (To copy kernel as "uImage" to kernel.vfat)
-+-- uImage.imx23-olinuxino (Kernel uImage)
++-- uImage (Kernel binary)
=== Use of generated SD card image ===========================================
-Just write sdcard.img directly to the SD card
+To determine the device associated to the SD card have a look in the
+/proc/partitions file:
-***** WARNING: Double check that /dev/sdc is your MicroSD card *****
-***** It might be /dev/sdb or some other device name *****
-***** Failure to do so may result in you wiping your hard disk *****
+ cat /proc/partitions
- # dd if=output/images/sdcard.img of=/dev/sdc bs=512
+Then, run the following command as root:
-=== Manual creation of SD card image =========================================
+*** WARNING! The command will destroy all the card content. Use with care! ***
-You'll need a spare MicroSD card with Freescale's special partition layout.
-This is basically three partitions:
-
-1) Type 53, the U-Boot partition, should be 16MB.
-2) VFAT, place the kernel uImage there
-3) Anything you like, for this example an ext2 partition, type 83 (linux).
-
-Assuming you see your MicroSD card as /dev/sdc you'd need to do, as root
-and from the buildroot project top level directory:
-(remember to replace /dev/sdc* with the appropiate device name!)
-
-***** WARNING: Double check that /dev/sdc is your MicroSD card *****
-***** It might be /dev/sdb or some other device name *****
-***** Failure to do so may result in you wiping your hard disk *****
-
-1. Unmount the filesystem(s) if they're already mounted, usually...
-
- # for fs in `grep /dev/sdc /proc/mounts|cut -d ' ' -f 1`;do umount $fs;done
-
- ...should work
-
-2. Blank the partition table out
-
- # dd if=/dev/zero of=/dev/sdc bs=1024 count=1024
-
-3. Set up the partitions
-
- # fdisk /dev/sdc
- n
- p
- 1
- <ENTER>
- +16MB
- t
- 53
- n
- p
- 2
- <ENTER>
- +5M
- t
- 2
- 4
- n
- p
- 3
- <ENTER>
- <ENTER>
- w
-
-4. Fill up the first (U-Boot) partition
- # dd if=output/images/u-boot.sd bs=512 of=/dev/sdc1
-
-5. Create VFAT Filesystem
- # mkfs.vfat /dev/sdc2
-
-6. Mount and copy output/images/uImage.imx23-olinuxino to the VFAT partition, rename to uImage
- # mount /dev/sdc2 /mnt
- # cp output/images/uImages/uImage.imx23-olinuxino /mnt/uImage
- # umount /mnt
-
-7. Fill up the third (filesystem) partition
- # dd if=output/images/rootfs.ext2 of=/dev/sdc3 bs=512
-
-8. Remove the MicroSD card from your linux PC and put it into your olinuxino.
-
-9. Boot! You're done!
+ sudo dd if=output/images/sdcard.img of=/dev/<your-microsd-device>
diff --git a/board/technexion/imx6ulpico/readme.txt b/board/technexion/imx6ulpico/readme.txt
index a7c3a445d..7eab3f6b8 100644
--- a/board/technexion/imx6ulpico/readme.txt
+++ b/board/technexion/imx6ulpico/readme.txt
@@ -46,7 +46,7 @@ command as root:
*** WARNING! This will destroy all the card content. Use with care! ***
For details about the medium image layout, see the definition in
-board/freescale/common/genimage.cfg.template.
+board/freescale/common/imx/genimage.cfg.template.
Boot the i.MX6UL Pico board
=========================
diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in
index fabf27db7..3b4bfac07 100644
--- a/boot/uboot/Config.in
+++ b/boot/uboot/Config.in
@@ -38,7 +38,7 @@ choice
Select the specific U-Boot version you want to use
config BR2_TARGET_UBOOT_LATEST_VERSION
- bool "2016.09.01"
+ bool "2016.11"
config BR2_TARGET_UBOOT_CUSTOM_VERSION
bool "Custom version"
@@ -86,7 +86,7 @@ endif
config BR2_TARGET_UBOOT_VERSION
string
- default "2016.09.01" if BR2_TARGET_UBOOT_LATEST_VERSION
+ default "2016.11" if BR2_TARGET_UBOOT_LATEST_VERSION
default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \
if BR2_TARGET_UBOOT_CUSTOM_VERSION
default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL
diff --git a/boot/uboot/uboot.hash b/boot/uboot/uboot.hash
index db60dabf9..5b2c3bf49 100644
--- a/boot/uboot/uboot.hash
+++ b/boot/uboot/uboot.hash
@@ -1,2 +1,2 @@
# Locally computed:
-sha256 95728e89dd476d17428f94080752ab48884be477b6a678941582aeef618b70bb u-boot-2016.09.01.tar.bz2
+sha256 45813e6565dcc0436abe6752624324cdbf5f3ac106570d76d32b46ec529bcdc8 u-boot-2016.11.tar.bz2
diff --git a/configs/freescale_imx28evk_defconfig b/configs/freescale_imx28evk_defconfig
index 9c870cfcf..b2242e701 100644
--- a/configs/freescale_imx28evk_defconfig
+++ b/configs/freescale_imx28evk_defconfig
@@ -31,4 +31,4 @@ BR2_TARGET_ROOTFS_EXT4=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx28evk/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh"
diff --git a/configs/freescale_imx6dlsabreauto_defconfig b/configs/freescale_imx6dlsabreauto_defconfig
index ed5f67cab..1cf5fee0f 100644
--- a/configs/freescale_imx6dlsabreauto_defconfig
+++ b/configs/freescale_imx6dlsabreauto_defconfig
@@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabreauto"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/freescale_imx6dlsabresd_defconfig b/configs/freescale_imx6dlsabresd_defconfig
index 0cbe97447..904f0a244 100644
--- a/configs/freescale_imx6dlsabresd_defconfig
+++ b/configs/freescale_imx6dlsabresd_defconfig
@@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-sabresd"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
# required tools to create the microSD image
diff --git a/configs/freescale_imx6qsabreauto_defconfig b/configs/freescale_imx6qsabreauto_defconfig
index 9ae2f813e..64efd4219 100644
--- a/configs/freescale_imx6qsabreauto_defconfig
+++ b/configs/freescale_imx6qsabreauto_defconfig
@@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabreauto"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/freescale_imx6qsabresd_defconfig b/configs/freescale_imx6qsabresd_defconfig
index 913a72421..962c274d6 100644
--- a/configs/freescale_imx6qsabresd_defconfig
+++ b/configs/freescale_imx6qsabresd_defconfig
@@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/freescale_imx6sololiteevk_defconfig b/configs/freescale_imx6sololiteevk_defconfig
index 79ebcb83c..bf0b9e5f2 100644
--- a/configs/freescale_imx6sololiteevk_defconfig
+++ b/configs/freescale_imx6sololiteevk_defconfig
@@ -18,7 +18,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
# required tools to create the microSD image
diff --git a/configs/freescale_imx6sxsabresd_defconfig b/configs/freescale_imx6sxsabresd_defconfig
index fed1a3e08..9b5cdb85e 100644
--- a/configs/freescale_imx6sxsabresd_defconfig
+++ b/configs/freescale_imx6sxsabresd_defconfig
@@ -21,7 +21,7 @@ BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-sdb"
# filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
# required tools to create the microSD image
diff --git a/configs/freescale_imx6ulevk_defconfig b/configs/freescale_imx6ulevk_defconfig
index d033b9950..3c5a9099a 100644
--- a/configs/freescale_imx6ulevk_defconfig
+++ b/configs/freescale_imx6ulevk_defconfig
@@ -31,6 +31,6 @@ BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# filesystem / image
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/freescale_imx7dsabresd_defconfig b/configs/freescale_imx7dsabresd_defconfig
index 4bedef10b..97d3cde16 100644
--- a/configs/freescale_imx7dsabresd_defconfig
+++ b/configs/freescale_imx7dsabresd_defconfig
@@ -33,4 +33,4 @@ BR2_TARGET_UBOOT_FORMAT_IMX=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
diff --git a/configs/imx23evk_defconfig b/configs/imx23evk_defconfig
new file mode 100644
index 000000000..fe0744036
--- /dev/null
+++ b/configs/imx23evk_defconfig
@@ -0,0 +1,34 @@
+# architecture
+BR2_arm=y
+BR2_arm926t=y
+
+# Linux headers same as kernel, a 4.8 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y
+
+# system
+BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+
+# kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6"
+BR2_LINUX_KERNEL_DEFCONFIG="mxs"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-evk"
+
+# bootloader
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="mx23evk"
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01"
+BR2_TARGET_UBOOT_FORMAT_SD=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT4=y
+
+# To generate SD card image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh"
diff --git a/configs/imx6ulpico_defconfig b/configs/imx6ulpico_defconfig
index 5ad8d7941..7b9965497 100644
--- a/configs/imx6ulpico_defconfig
+++ b/configs/imx6ulpico_defconfig
@@ -45,6 +45,6 @@ BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# filesystem / image
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/mx25pdk_defconfig b/configs/mx25pdk_defconfig
index 645fe8a13..65a6d12f5 100644
--- a/configs/mx25pdk_defconfig
+++ b/configs/mx25pdk_defconfig
@@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# Filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/mx51evk_defconfig b/configs/mx51evk_defconfig
index 1fca28253..db82a36ea 100644
--- a/configs/mx51evk_defconfig
+++ b/configs/mx51evk_defconfig
@@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# Filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/mx53loco_defconfig b/configs/mx53loco_defconfig
index 94ac818d1..7597ae9ca 100644
--- a/configs/mx53loco_defconfig
+++ b/configs/mx53loco_defconfig
@@ -14,7 +14,7 @@ BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
# Filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/olimex_imx233_olinuxino_defconfig b/configs/olimex_imx233_olinuxino_defconfig
index f74f42222..37ec4d783 100644
--- a/configs/olimex_imx233_olinuxino_defconfig
+++ b/configs/olimex_imx233_olinuxino_defconfig
@@ -2,6 +2,9 @@
BR2_arm=y
BR2_arm926t=y
+# Linux headers same as kernel, a 4.8 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y
+
# System
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
@@ -9,15 +12,15 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
# Kernel
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.18.2"
-BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
-BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/olimex/imx233_olinuxino/linux-3.18.config"
-BR2_LINUX_KERNEL_APPENDED_UIMAGE=y
-BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8.6"
+BR2_LINUX_KERNEL_DEFCONFIG="mxs"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/olimex/imx233_olinuxino/linux-wifi.fragment"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx23-olinuxino"
+BR2_LINUX_KERNEL_UIMAGE=y
+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x42000000"
# Firmware for WiFi
BR2_PACKAGE_LINUX_FIRMWARE=y
@@ -30,13 +33,14 @@ BR2_PACKAGE_ZD1211_FIRMWARE=y
# Filesystem
BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT4=y
# BR2_TARGET_ROOTFS_TAR is not set
# U-Boot
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.01"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="mx23_olinuxino"
BR2_TARGET_UBOOT_FORMAT_SD=y
@@ -44,5 +48,5 @@ BR2_TARGET_UBOOT_FORMAT_SD=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/olimex/imx233_olinuxino/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/mxs/post-image.sh"
diff --git a/configs/warp7_defconfig b/configs/warp7_defconfig
index 31251f464..fca7a1d06 100644
--- a/configs/warp7_defconfig
+++ b/configs/warp7_defconfig
@@ -25,7 +25,7 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7s-warp"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BOARDNAME="warp7_secure"
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.11"
BR2_TARGET_UBOOT_FORMAT_IMX=y
# wifi firmware for brcm43430
@@ -38,7 +38,7 @@ BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# Filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/configs/warpboard_defconfig b/configs/warpboard_defconfig
index 5e9c0514b..531a8783b 100644
--- a/configs/warpboard_defconfig
+++ b/configs/warpboard_defconfig
@@ -42,7 +42,7 @@ BR2_PACKAGE_HOST_DFU_UTIL=y
BR2_PACKAGE_HOST_IMX_USB_LOADER=y
# Filesystem
-BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/post-image.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh"
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
diff --git a/fs/common.mk b/fs/common.mk
index 2b31e1293..7515fdc77 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -95,6 +95,9 @@ endif
$$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\
echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \
echo $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep))
+ifeq ($$(BR2_REPRODUCIBLE),y)
+ echo "find $$(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$$(SOURCE_DATE_EPOCH)" >> $$(FAKEROOT_SCRIPT)
+endif
$$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT)
chmod a+x $$(FAKEROOT_SCRIPT)
PATH=$$(BR_PATH) $$(HOST_DIR)/usr/bin/fakeroot -- $$(FAKEROOT_SCRIPT)
diff --git a/fs/tar/tar.mk b/fs/tar/tar.mk
index 11c69c5a8..b14c977d7 100644
--- a/fs/tar/tar.mk
+++ b/fs/tar/tar.mk
@@ -7,7 +7,8 @@
TAR_OPTS := $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS))
define ROOTFS_TAR_CMD
- tar $(TAR_OPTS) -cf $@ --numeric-owner -C $(TARGET_DIR) .
+ (cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \
+ tar $(TAR_OPTS) -cf $@ --null -T - --no-recursion --numeric-owner)
endef
$(eval $(call ROOTFS_TARGET,tar))
diff --git a/linux/linux.mk b/linux/linux.mk
index 988427ca7..7e826ccdf 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -94,6 +94,14 @@ LINUX_MAKE_ENV = \
$(TARGET_MAKE_ENV) \
BR_BINARIES_DIR=$(BINARIES_DIR)
+ifeq ($(BR2_REPRODUCIBLE),y)
+LINUX_MAKE_ENV += \
+ KBUILD_BUILD_VERSION=1 \
+ KBUILD_BUILD_USER=buildroot \
+ KBUILD_BUILD_HOST=buildroot \
+ KBUILD_BUILD_TIMESTAMP="$(shell date -d @$(SOURCE_DATE_EPOCH))"
+endif
+
# Get the real Linux version, which tells us where kernel modules are
# going to be installed in the target filesystem.
LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null`
diff --git a/package/Config.in b/package/Config.in
index 9ed296f2d..b076dfd8b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -114,6 +114,7 @@ menu "Debugging, profiling and benchmark"
source "package/tinymembench/Config.in"
source "package/trace-cmd/Config.in"
source "package/trinity/Config.in"
+ source "package/uclibc-ng-test/Config.in"
source "package/valgrind/Config.in"
source "package/whetstone/Config.in"
endmenu
@@ -169,7 +170,6 @@ menu "Filesystem and flash utilities"
source "package/genext2fs/Config.in"
source "package/genpart/Config.in"
source "package/genromfs/Config.in"
- source "package/makedevs/Config.in"
source "package/mmc-utils/Config.in"
source "package/mtd/Config.in"
source "package/mtools/Config.in"
@@ -453,7 +453,6 @@ endmenu
source "package/sispmctl/Config.in"
source "package/smartmontools/Config.in"
source "package/smstools3/Config.in"
- source "package/snowball-hdmiservice/Config.in"
source "package/spi-tools/Config.in"
source "package/sredird/Config.in"
source "package/statserial/Config.in"
@@ -912,6 +911,7 @@ menu "Crypto"
source "package/polarssl/Config.in"
source "package/tinydtls/Config.in"
source "package/trousers/Config.in"
+ source "package/ustream-ssl/Config.in"
endmenu
menu "Database"
@@ -1418,7 +1418,6 @@ menu "Miscellaneous"
source "package/qemu/Config.in"
source "package/qpdf/Config.in"
source "package/shared-mime-info/Config.in"
- source "package/snowball-init/Config.in"
source "package/taskd/Config.in"
source "package/wine/Config.in"
source "package/xutil_util-macros/Config.in"
@@ -1615,6 +1614,7 @@ endif
source "package/tunctl/Config.in"
source "package/tvheadend/Config.in"
source "package/udpcast/Config.in"
+ source "package/uhttpd/Config.in"
source "package/ulogd/Config.in"
source "package/ushare/Config.in"
source "package/ussp-push/Config.in"
diff --git a/package/Makefile.in b/package/Makefile.in
index 5d591e9a4..bd73219bb 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -184,7 +184,7 @@ endif
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
TARGET_CROSS = $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-
else
-TARGET_CROSS = $(HOST_DIR)/usr/bin/$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))-
+TARGET_CROSS = $(HOST_DIR)/usr/bin/$(TOOLCHAIN_EXTERNAL_PREFIX)-
endif
# Define TARGET_xx variables for all common binutils/gcc
diff --git a/package/audit/Config.in b/package/audit/Config.in
index 7550f3a6c..023ac79d3 100644
--- a/package/audit/Config.in
+++ b/package/audit/Config.in
@@ -10,7 +10,7 @@ config BR2_PACKAGE_AUDIT
depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_STATIC_LIBS
- depends on !BR2_TOOLCHAIN_USES_MUSL
+ depends on !BR2_TOOLCHAIN_USES_MUSL # strndupa()
help
The audit package contains the user space utilities for
storing and searching the audit records generated by
diff --git a/package/bash/0031-patchlevel-31.patch b/package/bash/0031-patchlevel-31.patch
deleted file mode 100644
index d285a1f88..000000000
--- a/package/bash/0031-patchlevel-31.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-031
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-031
-
-Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
-Bug-Reference-ID: <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html
-
-Bug-Description:
-
-The new nameref assignment functionality introduced in bash-4.3 did not perform
-enough validation on the variable value and would create variables with
-invalid names.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500
---- b/subst.h 2014-09-01 12:16:56.000000000 -0400
-***************
-*** 48,51 ****
---- 48,52 ----
- #define ASS_MKGLOBAL 0x0008 /* force global assignment */
- #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */
-+ #define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */
-
- /* Flags for the string extraction functions. */
-*** a/bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400
---- b/variables.c 2014-09-01 14:37:44.000000000 -0400
-***************
-*** 2504,2511 ****
- int hflags, aflags;
- {
-! char *newval;
- SHELL_VAR *entry;
-
- entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
- /* Follow the nameref chain here if this is the global variables table */
- if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
---- 2566,2590 ----
- int hflags, aflags;
- {
-! char *newname, *newval;
- SHELL_VAR *entry;
-+ #if defined (ARRAY_VARS)
-+ arrayind_t ind;
-+ char *subp;
-+ int sublen;
-+ #endif
-
-+ newname = 0;
-+ #if defined (ARRAY_VARS)
-+ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name))
-+ {
-+ newname = array_variable_name (name, &subp, &sublen);
-+ if (newname == 0)
-+ return (SHELL_VAR *)NULL; /* XXX */
-+ entry = hash_lookup (newname, table);
-+ }
-+ else
-+ #endif
- entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table);
-+
- /* Follow the nameref chain here if this is the global variables table */
- if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table)
-***************
-*** 2538,2541 ****
---- 2617,2630 ----
- }
- }
-+ #if defined (ARRAY_VARS)
-+ else if (entry == 0 && newname)
-+ {
-+ entry = make_new_array_variable (newname); /* indexed array by default */
-+ if (entry == 0)
-+ return entry;
-+ ind = array_expand_index (name, subp, sublen);
-+ bind_array_element (entry, ind, value, aflags);
-+ }
-+ #endif
- else if (entry == 0)
- {
-***************
-*** 2658,2662 ****
- if (nameref_cell (nv) == 0)
- return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
-! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
- }
- else
---- 2747,2752 ----
- if (nameref_cell (nv) == 0)
- return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
-! /* XXX - bug here with ref=array[index] */
-! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF));
- }
- else
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 30
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 31
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0032-patchlevel-32.patch b/package/bash/0032-patchlevel-32.patch
deleted file mode 100644
index 6cdc0f1e8..000000000
--- a/package/bash/0032-patchlevel-32.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-032
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-032
-
-Bug-Reported-by: crispusfairbairn@gmail.com
-Bug-Reference-ID: <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html
-
-Bug-Description:
-
-When bash is running in Posix mode, it allows signals -- including SIGCHLD --
-to interrupt the `wait' builtin, as Posix requires. However, the interrupt
-causes bash to not run a SIGCHLD trap for all exited children. This patch
-fixes the issue and restores the documented behavior in Posix mode.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/jobs.c 2014-05-14 09:20:15.000000000 -0400
---- b/jobs.c 2014-09-09 11:50:38.000000000 -0400
-***************
-*** 3340,3344 ****
- {
- interrupt_immediately = 0;
-! trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */
- wait_signal_received = SIGCHLD;
- /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
---- 3346,3352 ----
- {
- interrupt_immediately = 0;
-! /* This was trap_handler (SIGCHLD) but that can lose traps if
-! children_exited > 1 */
-! queue_sigchld_trap (children_exited);
- wait_signal_received = SIGCHLD;
- /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up;
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 31
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 32
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0033-patchlevel-33.patch b/package/bash/0033-patchlevel-33.patch
deleted file mode 100644
index 45fb686e3..000000000
--- a/package/bash/0033-patchlevel-33.patch
+++ /dev/null
@@ -1,229 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-033
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-033
-
-Bug-Reported-by: mickael9@gmail.com, Jan Rome <jan.rome@gmail.com>
-Bug-Reference-ID: <20140907224046.382ED3610CC@mickael-laptop.localdomain>,
- <540D661D.50908@gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html
- http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html
-
-Bug-Description:
-
-Bash does not clean up the terminal state in all cases where bash or
-readline modifies it and bash is subsequently terminated by a fatal signal.
-This happens when the `read' builtin modifies the terminal settings, both
-when readline is active and when it is not. It occurs most often when a script
-installs a trap that exits on a signal without re-sending the signal to itself.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/shell.c 2014-01-14 08:04:32.000000000 -0500
---- b/shell.c 2014-12-22 10:27:50.000000000 -0500
-***************
-*** 74,77 ****
---- 74,78 ----
-
- #if defined (READLINE)
-+ # include <readline/readline.h>
- # include "bashline.h"
- #endif
-***************
-*** 910,913 ****
---- 912,923 ----
- fflush (stderr);
-
-+ /* Clean up the terminal if we are in a state where it's been modified. */
-+ #if defined (READLINE)
-+ if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function)
-+ (*rl_deprep_term_function) ();
-+ #endif
-+ if (read_tty_modified ())
-+ read_tty_cleanup ();
-+
- /* Do trap[0] if defined. Allow it to override the exit status
- passed to us. */
-*** a/bash-4.3-patched/builtins/read.def 2014-10-01 12:57:38.000000000 -0400
---- b/builtins/read.def 2014-12-22 10:48:54.000000000 -0500
-***************
-*** 141,148 ****
- int sigalrm_seen;
-
-! static int reading;
- static SigHandler *old_alrm;
- static unsigned char delim;
-
- /* In all cases, SIGALRM just sets a flag that we check periodically. This
- avoids problems with the semi-tricky stuff we do with the xfree of
---- 141,150 ----
- int sigalrm_seen;
-
-! static int reading, tty_modified;
- static SigHandler *old_alrm;
- static unsigned char delim;
-
-+ static struct ttsave termsave;
-+
- /* In all cases, SIGALRM just sets a flag that we check periodically. This
- avoids problems with the semi-tricky stuff we do with the xfree of
-***************
-*** 189,193 ****
- SHELL_VAR *var;
- TTYSTRUCT ttattrs, ttset;
-- struct ttsave termsave;
- #if defined (ARRAY_VARS)
- WORD_LIST *alist;
---- 191,194 ----
-***************
-*** 222,226 ****
- USE_VAR(lastsig);
-
-! sigalrm_seen = reading = 0;
-
- i = 0; /* Index into the string that we are reading. */
---- 223,227 ----
- USE_VAR(lastsig);
-
-! sigalrm_seen = reading = tty_modified = 0;
-
- i = 0; /* Index into the string that we are reading. */
-***************
-*** 439,442 ****
---- 440,445 ----
- goto assign_vars;
- }
-+ if (interactive_shell == 0)
-+ initialize_terminating_signals ();
- old_alrm = set_signal_handler (SIGALRM, sigalrm);
- add_unwind_protect (reset_alarm, (char *)NULL);
-***************
-*** 483,487 ****
---- 486,493 ----
- if (i < 0)
- sh_ttyerror (1);
-+ tty_modified = 1;
- add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+ if (interactive_shell == 0)
-+ initialize_terminating_signals ();
- }
- }
-***************
-*** 498,502 ****
---- 504,511 ----
- sh_ttyerror (1);
-
-+ tty_modified = 1;
- add_unwind_protect ((Function *)ttyrestore, (char *)&termsave);
-+ if (interactive_shell == 0)
-+ initialize_terminating_signals ();
- }
-
-***************
-*** 589,592 ****
---- 598,603 ----
- else
- lastsig = 0;
-+ if (terminating_signal && tty_modified)
-+ ttyrestore (&termsave); /* fix terminal before exiting */
- CHECK_TERMSIG;
- eof = 1;
-***************
-*** 979,982 ****
---- 990,1007 ----
- {
- ttsetattr (ttp->fd, ttp->attrs);
-+ tty_modified = 0;
-+ }
-+
-+ void
-+ read_tty_cleanup ()
-+ {
-+ if (tty_modified)
-+ ttyrestore (&termsave);
-+ }
-+
-+ int
-+ read_tty_modified ()
-+ {
-+ return (tty_modified);
- }
-
-*** ./bash-4.3-patched/builtins/common.h 2014-10-01 12:57:47.000000000 -0400
---- b/builtins/common.h 2014-12-22 10:10:14.000000000 -0500
-***************
-*** 123,126 ****
---- 141,148 ----
- extern void getopts_reset __P((int));
-
-+ /* Functions from read.def */
-+ extern void read_tty_cleanup __P((void));
-+ extern int read_tty_modified __P((void));
-+
- /* Functions from set.def */
- extern int minus_o_option_value __P((char *));
-*** a/bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400
---- b/bashline.c 2014-09-08 11:28:56.000000000 -0400
-***************
-*** 203,206 ****
---- 203,207 ----
- extern int array_needs_making;
- extern int posixly_correct, no_symbolic_links;
-+ extern int sigalrm_seen;
- extern char *current_prompt_string, *ps1_prompt;
- extern STRING_INT_ALIST word_token_alist[];
-***************
-*** 4209,4214 ****
- /* If we're going to longjmp to top_level, make sure we clean up readline.
- check_signals will call QUIT, which will eventually longjmp to top_level,
-! calling run_interrupt_trap along the way. */
-! if (interrupt_state)
- rl_cleanup_after_signal ();
- bashline_reset_event_hook ();
---- 4262,4268 ----
- /* If we're going to longjmp to top_level, make sure we clean up readline.
- check_signals will call QUIT, which will eventually longjmp to top_level,
-! calling run_interrupt_trap along the way. The check for sigalrm_seen is
-! to clean up the read builtin's state. */
-! if (terminating_signal || interrupt_state || sigalrm_seen)
- rl_cleanup_after_signal ();
- bashline_reset_event_hook ();
-*** a/bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500
---- b/sig.c 2014-09-08 11:26:33.000000000 -0400
-***************
-*** 533,538 ****
- /* Set the event hook so readline will call it after the signal handlers
- finish executing, so if this interrupted character input we can get
-! quick response. */
-! if (interactive_shell && interactive && no_line_editing == 0)
- bashline_set_event_hook ();
- #endif
---- 533,540 ----
- /* Set the event hook so readline will call it after the signal handlers
- finish executing, so if this interrupted character input we can get
-! quick response. If readline is active or has modified the terminal we
-! need to set this no matter what the signal is, though the check for
-! RL_STATE_TERMPREPPED is possibly redundant. */
-! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
- bashline_set_event_hook ();
- #endif
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 32
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 33
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0034-patchlevel-34.patch b/package/bash/0034-patchlevel-34.patch
deleted file mode 100644
index 79c8945c5..000000000
--- a/package/bash/0034-patchlevel-34.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-034
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-034
-
-Bug-Reported-by: Dreamcat4 <dreamcat4@gmail.com>
-Bug-Reference-ID: <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html
-
-Bug-Description:
-
-If neither the -f nor -v options is supplied to unset, and a name argument is
-found to be a function and unset, subsequent name arguments are not treated as
-variables before attempting to unset a function by that name.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/builtins/set.def 2013-04-19 07:20:34.000000000 -0400
---- b/builtins/set.def 2015-05-05 13:25:36.000000000 -0400
-***************
-*** 752,758 ****
---- 797,805 ----
- {
- int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
-+ int global_unset_func, global_unset_var;
- char *name;
-
- unset_function = unset_variable = unset_array = nameref = any_failed = 0;
-+ global_unset_func = global_unset_var = 0;
-
- reset_internal_getopt ();
-***************
-*** 762,769 ****
- {
- case 'f':
-! unset_function = 1;
- break;
- case 'v':
-! unset_variable = 1;
- break;
- case 'n':
---- 809,816 ----
- {
- case 'f':
-! global_unset_func = 1;
- break;
- case 'v':
-! global_unset_var = 1;
- break;
- case 'n':
-***************
-*** 778,782 ****
- list = loptend;
-
-! if (unset_function && unset_variable)
- {
- builtin_error (_("cannot simultaneously unset a function and a variable"));
---- 825,829 ----
- list = loptend;
-
-! if (global_unset_func && global_unset_var)
- {
- builtin_error (_("cannot simultaneously unset a function and a variable"));
-***************
-*** 796,799 ****
---- 843,849 ----
- name = list->word->word;
-
-+ unset_function = global_unset_func;
-+ unset_variable = global_unset_var;
-+
- #if defined (ARRAY_VARS)
- unset_array = 0;
-
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 33
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 34
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0035-patchlevel-35.patch b/package/bash/0035-patchlevel-35.patch
deleted file mode 100644
index c18b60dc5..000000000
--- a/package/bash/0035-patchlevel-35.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-035
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-035
-
-Bug-Reported-by: <romerox.adrian@gmail.com>
-Bug-Reference-ID: <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html
-
-Bug-Description:
-
-A locale with a long name can trigger a buffer overflow and core dump. This
-applies on systems that do not have locale_charset in libc, are not using
-GNU libiconv, and are not using the libintl that ships with bash in lib/intl.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/lib/sh/unicode.c 2014-01-30 16:47:19.000000000 -0500
---- b/lib/sh/unicode.c 2015-05-01 08:58:30.000000000 -0400
-***************
-*** 79,83 ****
- if (s)
- {
-! strcpy (charsetbuf, s+1);
- t = strchr (charsetbuf, '@');
- if (t)
---- 79,84 ----
- if (s)
- {
-! strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1);
-! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
- t = strchr (charsetbuf, '@');
- if (t)
-***************
-*** 85,89 ****
- return charsetbuf;
- }
-! strcpy (charsetbuf, locale);
- return charsetbuf;
- }
---- 86,91 ----
- return charsetbuf;
- }
-! strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1);
-! charsetbuf[sizeof (charsetbuf) - 1] = '\0';
- return charsetbuf;
- }
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 34
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 35
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0036-patchlevel-36.patch b/package/bash/0036-patchlevel-36.patch
deleted file mode 100644
index f35b29b5b..000000000
--- a/package/bash/0036-patchlevel-36.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-036
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-036
-
-Bug-Reported-by: emanuelczirai@cryptolab.net
-Bug-Reference-ID: <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html
-
-Bug-Description:
-
-When evaluating and setting integer variables, and the assignment fails to
-create a variable (for example, when performing an operation on an array
-variable with an invalid subscript), bash attempts to dereference a null
-pointer, causing a segmentation violation.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-20150206/variables.c 2015-01-23 20:39:27.000000000 -0500
---- b/variables.c 2015-02-19 13:56:12.000000000 -0500
-***************
-*** 2834,2841 ****
- v = bind_variable (lhs, rhs, 0);
-
-! if (v && isint)
-! VSETATTR (v, att_integer);
-!
-! VUNSETATTR (v, att_invisible);
-
- return (v);
---- 2834,2843 ----
- v = bind_variable (lhs, rhs, 0);
-
-! if (v)
-! {
-! if (isint)
-! VSETATTR (v, att_integer);
-! VUNSETATTR (v, att_invisible);
-! }
-
- return (v);
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 35
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 36
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0037-patchlevel-37.patch b/package/bash/0037-patchlevel-37.patch
deleted file mode 100644
index 5f8aff356..000000000
--- a/package/bash/0037-patchlevel-37.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-037
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-037
-
-Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org>
-Bug-Reference-ID: <20150204144240.GN13956@eeg.ccf.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html
-
-Bug-Description:
-
-If an associative array uses `@' or `*' as a subscript, `declare -p' produces
-output that cannot be reused as input.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/assoc.c 2011-11-05 16:39:05.000000000 -0400
---- b/assoc.c 2015-02-04 15:28:25.000000000 -0500
-***************
-*** 437,440 ****
---- 440,445 ----
- if (sh_contains_shell_metas (tlist->key))
- istr = sh_double_quote (tlist->key);
-+ else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0')
-+ istr = sh_double_quote (tlist->key);
- else
- istr = tlist->key;
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 36
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 37
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0038-patchlevel-38.patch b/package/bash/0038-patchlevel-38.patch
deleted file mode 100644
index 09fd9c2ec..000000000
--- a/package/bash/0038-patchlevel-38.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-038
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-038
-
-Bug-Reported-by: worley@alum.mit.edu (Dale R. Worley)
-Bug-Reference-ID: <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html
-
-Bug-Description:
-
-There are a number of instances where `time' is not recognized as a reserved
-word when the shell grammar says it should be.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400
---- b/parse.y 2014-06-11 10:25:53.000000000 -0400
-***************
-*** 2819,2827 ****
- case OR_OR:
- case '&':
- case DO:
- case THEN:
- case ELSE:
- case '{': /* } */
-! case '(': /* ) */
- case BANG: /* ! time pipeline */
- case TIME: /* time time pipeline */
---- 2819,2832 ----
- case OR_OR:
- case '&':
-+ case WHILE:
- case DO:
-+ case UNTIL:
-+ case IF:
- case THEN:
-+ case ELIF:
- case ELSE:
- case '{': /* } */
-! case '(': /* )( */
-! case ')': /* only valid in case statement */
- case BANG: /* ! time pipeline */
- case TIME: /* time time pipeline */
-*** a/bash-4.3-patched/y.tab.c 2014-10-05 13:52:50.000000000 -0400
---- b/y.tab.c 2015-05-19 15:08:43.000000000 -0400
-***************
-*** 5131,5139 ****
- case OR_OR:
- case '&':
- case DO:
- case THEN:
- case ELSE:
- case '{': /* } */
-! case '(': /* ) */
- case BANG: /* ! time pipeline */
- case TIME: /* time time pipeline */
---- 5131,5144 ----
- case OR_OR:
- case '&':
-+ case WHILE:
- case DO:
-+ case UNTIL:
-+ case IF:
- case THEN:
-+ case ELIF:
- case ELSE:
- case '{': /* } */
-! case '(': /* )( */
-! case ')': /* only valid in case statement */
- case BANG: /* ! time pipeline */
- case TIME: /* time time pipeline */
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 37
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 38
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0039-patchlevel-39.patch b/package/bash/0039-patchlevel-39.patch
deleted file mode 100644
index 2a555b96c..000000000
--- a/package/bash/0039-patchlevel-39.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-039
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-039
-
-Bug-Reported-by: SN <poczta-sn@gazeta.pl>
-Bug-Reference-ID: <54E2554C.205@gazeta.pl>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html
-
-Bug-Description:
-
-Using the output of `declare -p' when run in a function can result in variables
-that are invisible to `declare -p'. This problem occurs when an assignment
-builtin such as `declare' receives a quoted compound array assignment as one of
-its arguments.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/arrayfunc.c 2014-10-01 13:08:48.000000000 -0400
---- b/arrayfunc.c 2015-02-19 14:33:05.000000000 -0500
-***************
-*** 405,408 ****
---- 405,411 ----
- else
- array_insert (a, i, l->word->word);
-+
-+ VUNSETATTR (var, att_invisible); /* no longer invisible */
-+
- return var;
- }
-***************
-*** 635,638 ****
---- 638,645 ----
- if (nlist)
- dispose_words (nlist);
-+
-+ if (var)
-+ VUNSETATTR (var, att_invisible); /* no longer invisible */
-+
- return (var);
- }
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 38
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 39
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0040-patchlevel-40.patch b/package/bash/0040-patchlevel-40.patch
deleted file mode 100644
index 2a03c45a9..000000000
--- a/package/bash/0040-patchlevel-40.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-040
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacrias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-040
-
-Bug-Reported-by: Jean Delvare <jdelvare@suse.de>
-Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html
-
-Bug-Description:
-
-There is a memory leak that occurs when bash expands an array reference on
-the rhs of an assignment statement.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400
---- b/subst.c 2015-06-22 09:16:53.000000000 -0400
-***************
-*** 5783,5787 ****
- if (pflags & PF_ASSIGNRHS)
- {
-! temp = array_variable_name (name, &tt, (int *)0);
- if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
- temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
---- 5783,5787 ----
- if (pflags & PF_ASSIGNRHS)
- {
-! var = array_variable_part (name, &tt, (int *)0);
- if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']')
- temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind);
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 39
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 40
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0041-patchlevel-41.patch b/package/bash/0041-patchlevel-41.patch
deleted file mode 100644
index c8ba4b108..000000000
--- a/package/bash/0041-patchlevel-41.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-041
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-041
-
-Bug-Reported-by: Hanno Böck <hanno@hboeck.de>
-Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html,
- http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html
-
-Bug-Description:
-
-There are several out-of-bounds read errors that occur when completing command
-lines where assignment statements appear before the command name. The first
-two appear only when programmable completion is enabled; the last one only
-happens when listing possible completions.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500
---- b/bashline.c 2015-08-12 10:21:58.000000000 -0400
-***************
-*** 1469,1476 ****
---- 1469,1489 ----
- os = start;
- n = 0;
-+ was_assignment = 0;
- s = find_cmd_start (os);
- e = find_cmd_end (end);
- do
- {
-+ /* Don't read past the end of rl_line_buffer */
-+ if (s > rl_end)
-+ {
-+ s1 = s = e1;
-+ break;
-+ }
-+ /* Or past point if point is within an assignment statement */
-+ else if (was_assignment && s > rl_point)
-+ {
-+ s1 = s = e1;
-+ break;
-+ }
- /* Skip over assignment statements preceding a command name. If we
- don't find a command name at all, we can perform command name
-*** a/bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400
---- b/lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400
-***************
-*** 690,693 ****
---- 690,695 ----
- if (temp == 0 || *temp == '\0')
- return (pathname);
-+ else if (temp[1] == 0 && temp == pathname)
-+ return (pathname);
- /* If the basename is NULL, we might have a pathname like '/usr/src/'.
- Look for a previous slash and, if one is found, return the portion
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 40
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 41
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0042-patchlevel-42.patch b/package/bash/0042-patchlevel-42.patch
deleted file mode 100644
index bb3471c63..000000000
--- a/package/bash/0042-patchlevel-42.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-042
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-042
-
-Bug-Reported-by: Nathan Neulinger <nneul@neulinger.org>
-Bug-Reference-ID: <558EFDF2.7060402@neulinger.org>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html
-
-Bug-Description:
-
-There is a problem when parsing command substitutions containing `case'
-commands within pipelines that causes the parser to not correctly identify
-the end of the command substitution.
-
-Patch (apply with `patch -p0'):
-
-*** a/bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400
---- b/parse.y 2015-06-29 10:59:27.000000000 -0400
-***************
-*** 3709,3712 ****
---- 3709,3714 ----
- tflags |= LEX_INWORD;
- lex_wlen = 0;
-+ if (tflags & LEX_RESWDOK)
-+ lex_rwlen = 0;
- }
- }
-*** a/bash-4.3-patched/y.tab.c 2015-05-18 19:27:05.000000000 -0400
---- b/y.tab.c 2015-06-29 10:59:27.000000000 -0400
-***************
-*** 6021,6024 ****
---- 6021,6026 ----
- tflags |= LEX_INWORD;
- lex_wlen = 0;
-+ if (tflags & LEX_RESWDOK)
-+ lex_rwlen = 0;
- }
- }
-*** a/bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 41
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 42
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0043-patchlevel-43.patch b/package/bash/0043-patchlevel-43.patch
deleted file mode 100644
index a30a9817c..000000000
--- a/package/bash/0043-patchlevel-43.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-043
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-043
-
-Bug-Reported-by: lolilolicon <lolilolicon@gmail.com>
-Bug-Reference-ID: <CAMtVo_MF16KWanCB4C8WxA88Qt26zWsvV6V7+_U2fM0E6tCDxw@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00040.html
-
-Bug-Description:
-
-When the lastpipe option is enabled, the last component can contain nested
-pipelines and cause a segmentation fault under certain circumestances.
-
-Patch (apply with `patch -p0'):
-
-*** a/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400
---- b/execute_cmd.c 2014-08-15 08:55:24.000000000 -0400
-***************
-*** 2406,2412 ****
- {
- #if defined (JOB_CONTROL)
-! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
-! #endif
- lstdin = wait_for (lastpid);
- #if defined (JOB_CONTROL)
- /* If wait_for removes the job from the jobs table, use result of last
---- 2433,2447 ----
- {
- #if defined (JOB_CONTROL)
-! if (INVALID_JOB (lastpipe_jid) == 0)
-! {
-! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
-! lstdin = wait_for (lastpid);
-! }
-! else
-! lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */
-! #else
- lstdin = wait_for (lastpid);
-+ #endif
-+
- #if defined (JOB_CONTROL)
- /* If wait_for removes the job from the jobs table, use result of last
-*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 42
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 43
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0044-patchlevel-44.patch b/package/bash/0044-patchlevel-44.patch
deleted file mode 100644
index 62d541222..000000000
--- a/package/bash/0044-patchlevel-44.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-044
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-044
-
-Bug-Reported-by: Ondrej Oprala <ooprala@redhat.com>
-Bug-Reference-ID: <539ED55B.2080103@redhat.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html
-
-Bug-Description:
-
-A typo prevents the `compat42' shopt option from working as intended.
-
-Patch (apply with `patch -p0'):
-
-diff -rC 2 bash-4.3.42/builtins/shopt.def bash-4.3.43/builtins/shopt.def
-*** a/builtins/shopt.def 2013-02-27 09:43:20.000000000 -0500
---- b/builtins/shopt.def 2015-10-16 11:25:28.000000000 -0400
-***************
-*** 161,165 ****
- { "compat40", &shopt_compat40, set_compatibility_level },
- { "compat41", &shopt_compat41, set_compatibility_level },
-! { "compat42", &shopt_compat41, set_compatibility_level },
- #if defined (READLINE)
- { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
---- 161,165 ----
- { "compat40", &shopt_compat40, set_compatibility_level },
- { "compat41", &shopt_compat41, set_compatibility_level },
-! { "compat42", &shopt_compat42, set_compatibility_level },
- #if defined (READLINE)
- { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL},
-
-*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 43
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 44
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0045-patchlevel-45.patch b/package/bash/0045-patchlevel-45.patch
deleted file mode 100644
index bb11b1a05..000000000
--- a/package/bash/0045-patchlevel-45.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-045
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-045
-
-Bug-Reported-by: Basin Ilya <basinilya@gmail.com>
-Bug-Reference-ID: <5624C0AC.8070802@gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00141.html
-
-Bug-Description:
-
-If a file open attempted as part of a redirection fails because it is interrupted
-by a signal, the shell needs to process any pending traps to allow the redirection
-to be canceled.
-
-Patch (apply with `patch -p0'):
-
-*** a/redir.c 2014-12-03 10:47:38.000000000 -0500
---- b/redir.c 2015-01-16 10:15:47.000000000 -0500
-***************
-*** 672,676 ****
- e = errno;
- if (fd < 0 && e == EINTR)
-! QUIT;
- errno = e;
- }
---- 672,679 ----
- e = errno;
- if (fd < 0 && e == EINTR)
-! {
-! QUIT;
-! run_pending_traps ();
-! }
- errno = e;
- }
-
-*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 44
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 45
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/0046-patchlevel-46.patch b/package/bash/0046-patchlevel-46.patch
deleted file mode 100644
index bc3798a08..000000000
--- a/package/bash/0046-patchlevel-46.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-046
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-
- BASH PATCH REPORT
- =================
-
-Bash-Release: 4.3
-Patch-ID: bash43-046
-
-Bug-Reported-by: Sergey Tselikh <stselikh@gmail.com>
-Bug-Reference-ID: <20150816110235.91f3e12e3f20d20cdaad963e@gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00080.html
-
-Bug-Description:
-
-An incorrect conversion from an indexed to associative array can result in a
-core dump.
-
-Patch (apply with `patch -p0'):
-
-*** a/subst.c 2015-08-13 11:32:54.000000000 -0400
---- b/subst.c 2015-08-18 10:13:59.000000000 -0400
-***************
-*** 9562,9566 ****
- opts[opti] = '\0';
- if (opti > 0)
-! make_internal_declare (tlist->word->word, opts);
-
- t = do_word_assignment (tlist->word, 0);
---- 9562,9573 ----
- opts[opti] = '\0';
- if (opti > 0)
-! {
-! t = make_internal_declare (tlist->word->word, opts);
-! if (t != EXECUTION_SUCCESS)
-! {
-! last_command_exit_value = t;
-! exp_jump_to_top_level (DISCARD);
-! }
-! }
-
- t = do_word_assignment (tlist->word, 0);
-
-*** a/patchlevel.h 2012-12-29 10:47:57.000000000 -0500
---- b/patchlevel.h 2014-03-20 20:01:28.000000000 -0400
-***************
-*** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 45
-
- #endif /* _PATCHLEVEL_H_ */
---- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
-! #define PATCHLEVEL 46
-
- #endif /* _PATCHLEVEL_H_ */
diff --git a/package/bash/bash.hash b/package/bash/bash.hash
index faf236458..adbd60868 100644
--- a/package/bash/bash.hash
+++ b/package/bash/bash.hash
@@ -1,2 +1,2 @@
# Locally calculated after checking pgp signature
-sha256 317881019bbf2262fb814b7dd8e40632d13c3608d2f237800a8828fbb8a640dd bash-4.3.30.tar.gz
+sha256 d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb bash-4.4.tar.gz
diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index 3cd8d8273..090cf5224 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -4,7 +4,7 @@
#
################################################################################
-BASH_VERSION = 4.3.30
+BASH_VERSION = 4.4
BASH_SITE = $(BR2_GNU_MIRROR)/bash
# Build after since bash is better than busybox shells
BASH_DEPENDENCIES = ncurses readline host-bison \
diff --git a/package/bluez5_utils/bluez5_utils.hash b/package/bluez5_utils/bluez5_utils.hash
index cbb3aa3ca..b030f1a08 100644
--- a/package/bluez5_utils/bluez5_utils.hash
+++ b/package/bluez5_utils/bluez5_utils.hash
@@ -1,2 +1,2 @@
# From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc:
-sha256 21d1bc9150d3576296595217efb98a746b592389d25d5637e8bee5da7272593b bluez-5.39.tar.xz
+sha256 16c9c05d2a1da644ce3570d975ada3643d2e60c007a955bac09c0a0efeb58d15 bluez-5.43.tar.xz
diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk
index 49cc7c217..66c3eab1e 100644
--- a/package/bluez5_utils/bluez5_utils.mk
+++ b/package/bluez5_utils/bluez5_utils.mk
@@ -4,7 +4,7 @@
#
################################################################################
-BLUEZ5_UTILS_VERSION = 5.39
+BLUEZ5_UTILS_VERSION = 5.43
BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz
BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth
BLUEZ5_UTILS_INSTALL_STAGING = YES
diff --git a/package/bridge-utils/0002-libbridge-fix-headers-conflict-with-musl-libc.patch b/package/bridge-utils/0002-libbridge-fix-headers-conflict-with-musl-libc.patch
deleted file mode 100644
index fd7f45ed4..000000000
--- a/package/bridge-utils/0002-libbridge-fix-headers-conflict-with-musl-libc.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 24e5409190820a14e4d097924b1acaab62bb3b99 Mon Sep 17 00:00:00 2001
-From: Baruch Siach <baruch@tkos.co.il>
-Date: Sun, 30 Oct 2016 18:12:00 +0200
-Subject: [PATCH] libbridge: fix headers conflict with musl libc
-
-Don't including kernel headers directly to avoid headers conflict like:
-
-In file included from .../sysroot/usr/include/linux/if_bridge.h:18:0,
- from libbridge.h:26,
- from libbridge_if.c:26:
-.../sysroot/usr/include/linux/in6.h:32:8: error: redefinition of ‘struct in6_addr’
- struct in6_addr {
- ^
-In file included from libbridge.h:24:0,
- from libbridge_if.c:26:
-.../sysroot/usr/include/netinet/in.h:23:8: note: originally defined here
- struct in6_addr {
- ^
-
-Instead copy the required linux/if_bridge.h definitions into
-libbridge_private.h.
-
-Signed-off-by: Baruch Siach <baruch@tkos.co.il>
----
-Patch status: Nacked
-(https://lists.linuxfoundation.org/pipermail/bridge/2016-November/010107.html)
----
- libbridge/libbridge.h | 1 -
- libbridge/libbridge_private.h | 83 ++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 82 insertions(+), 2 deletions(-)
-
-diff --git a/libbridge/libbridge.h b/libbridge/libbridge.h
-index ff047f933cd6..18b40cd90413 100644
---- a/libbridge/libbridge.h
-+++ b/libbridge/libbridge.h
-@@ -23,7 +23,6 @@
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <linux/if.h>
--#include <linux/if_bridge.h>
-
- /* defined in net/if.h but that conflicts with linux/if.h... */
- extern unsigned int if_nametoindex (const char *__ifname);
-diff --git a/libbridge/libbridge_private.h b/libbridge/libbridge_private.h
-index 99a511dae00a..565025b7bccb 100644
---- a/libbridge/libbridge_private.h
-+++ b/libbridge/libbridge_private.h
-@@ -24,7 +24,88 @@
- #include <linux/sockios.h>
- #include <sys/time.h>
- #include <sys/ioctl.h>
--#include <linux/if_bridge.h>
-+
-+/* From linux/if_ether.h */
-+#ifndef ETH_ALEN
-+#define ETH_ALEN 6
-+#endif
-+
-+/* From linux/if_bridge.h */
-+#ifndef BRCTL_GET_VERSION
-+#define BRCTL_GET_VERSION 0
-+#define BRCTL_GET_BRIDGES 1
-+#define BRCTL_ADD_BRIDGE 2
-+#define BRCTL_DEL_BRIDGE 3
-+#define BRCTL_ADD_IF 4
-+#define BRCTL_DEL_IF 5
-+#define BRCTL_GET_BRIDGE_INFO 6
-+#define BRCTL_GET_PORT_LIST 7
-+#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
-+#define BRCTL_SET_BRIDGE_HELLO_TIME 9
-+#define BRCTL_SET_BRIDGE_MAX_AGE 10
-+#define BRCTL_SET_AGEING_TIME 11
-+#define BRCTL_SET_GC_INTERVAL 12
-+#define BRCTL_GET_PORT_INFO 13
-+#define BRCTL_SET_BRIDGE_STP_STATE 14
-+#define BRCTL_SET_BRIDGE_PRIORITY 15
-+#define BRCTL_SET_PORT_PRIORITY 16
-+#define BRCTL_SET_PATH_COST 17
-+#define BRCTL_GET_FDB_ENTRIES 18
-+
-+#define BR_STATE_DISABLED 0
-+#define BR_STATE_LISTENING 1
-+#define BR_STATE_LEARNING 2
-+#define BR_STATE_FORWARDING 3
-+#define BR_STATE_BLOCKING 4
-+
-+struct __bridge_info {
-+ __u64 designated_root;
-+ __u64 bridge_id;
-+ __u32 root_path_cost;
-+ __u32 max_age;
-+ __u32 hello_time;
-+ __u32 forward_delay;
-+ __u32 bridge_max_age;
-+ __u32 bridge_hello_time;
-+ __u32 bridge_forward_delay;
-+ __u8 topology_change;
-+ __u8 topology_change_detected;
-+ __u8 root_port;
-+ __u8 stp_enabled;
-+ __u32 ageing_time;
-+ __u32 gc_interval;
-+ __u32 hello_timer_value;
-+ __u32 tcn_timer_value;
-+ __u32 topology_change_timer_value;
-+ __u32 gc_timer_value;
-+};
-+
-+struct __port_info {
-+ __u64 designated_root;
-+ __u64 designated_bridge;
-+ __u16 port_id;
-+ __u16 designated_port;
-+ __u32 path_cost;
-+ __u32 designated_cost;
-+ __u8 state;
-+ __u8 top_change_ack;
-+ __u8 config_pending;
-+ __u8 unused0;
-+ __u32 message_age_timer_value;
-+ __u32 forward_delay_timer_value;
-+ __u32 hold_timer_value;
-+};
-+
-+struct __fdb_entry {
-+ __u8 mac_addr[ETH_ALEN];
-+ __u8 port_no;
-+ __u8 is_local;
-+ __u32 ageing_timer_value;
-+ __u8 port_hi;
-+ __u8 pad0;
-+ __u16 unused;
-+};
-+#endif /* BRCTL_GET_VERSION */
-
- #define MAX_BRIDGES 1024
- #define MAX_PORTS 1024
---
-2.10.1
-
diff --git a/package/btrfs-progs/btrfs-progs.hash b/package/btrfs-progs/btrfs-progs.hash
index de9c56b93..6d262a162 100644
--- a/package/btrfs-progs/btrfs-progs.hash
+++ b/package/btrfs-progs/btrfs-progs.hash
@@ -1,2 +1,2 @@
# From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc
-sha256 81c023f519c8565b23eddb90e6d0eec2be63ee52e440708e418539dbaa635c5f btrfs-progs-v4.8.2.tar.xz
+sha256 bf26ead666c337a62a74bc9ec7f8dd9ee200e60e5fe5289967d53328eff261c5 btrfs-progs-v4.8.4.tar.xz
diff --git a/package/btrfs-progs/btrfs-progs.mk b/package/btrfs-progs/btrfs-progs.mk
index 2dd924635..e780903dc 100644
--- a/package/btrfs-progs/btrfs-progs.mk
+++ b/package/btrfs-progs/btrfs-progs.mk
@@ -4,7 +4,7 @@
#
################################################################################
-BTRFS_PROGS_VERSION = 4.8.2
+BTRFS_PROGS_VERSION = 4.8.4
BTRFS_PROGS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/people/kdave/btrfs-progs
BTRFS_PROGS_SOURCE = btrfs-progs-v$(BTRFS_PROGS_VERSION).tar.xz
BTRFS_PROGS_DEPENDENCIES = host-pkgconf e2fsprogs lzo util-linux zlib
diff --git a/package/busybox/S50telnet b/package/busybox/S50telnet
index 47e2b63e1..82952b8cb 100755
--- a/package/busybox/S50telnet
+++ b/package/busybox/S50telnet
@@ -3,10 +3,13 @@
# Start telnet....
#
+TELNETD_ARGS=-F
+[ -r /etc/default/telnet ] && . /etc/default/telnet
+
start() {
printf "Starting telnetd: "
start-stop-daemon -S -q -m -b -p /var/run/telnetd.pid \
- -x /usr/sbin/telnetd -- -F
+ -x /usr/sbin/telnetd -- $TELNETD_ARGS
[ $? = 0 ] && echo "OK" || echo "FAIL"
}
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index fc23a90a2..f4a241d38 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -36,6 +36,12 @@ BUSYBOX_MAKE_ENV = \
$(TARGET_MAKE_ENV) \
CFLAGS="$(BUSYBOX_CFLAGS)" \
CFLAGS_busybox="$(BUSYBOX_CFLAGS_busybox)"
+
+ifeq ($(BR2_REPRODUCIBLE),y)
+BUSYBOX_MAKE_ENV += \
+ KCONFIG_NOTIMESTAMP=1
+endif
+
BUSYBOX_MAKE_OPTS = \
CC="$(TARGET_CC)" \
ARCH=$(KERNEL_ARCH) \
diff --git a/package/canfestival/Config.in b/package/canfestival/Config.in
index 5522afe54..ca949565f 100644
--- a/package/canfestival/Config.in
+++ b/package/canfestival/Config.in
@@ -11,7 +11,7 @@ comment "canfestival needs a glibc or uClibc toolchain w/ threads and dynamic li
config BR2_PACKAGE_CANFESTIVAL
bool "canfestival"
depends on BR2_PACKAGE_CANFESTIVAL_ARCH_SUPPORTS
- depends on !BR2_TOOLCHAIN_USES_MUSL
+ depends on !BR2_TOOLCHAIN_USES_MUSL # sigval_t
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_STATIC_LIBS
help
diff --git a/package/cmake/0001-rename_cmake_rootfile.patch b/package/cmake/0001-rename_cmake_rootfile.patch
index 915b7e32b..8c168c15a 100644
--- a/package/cmake/0001-rename_cmake_rootfile.patch
+++ b/package/cmake/0001-rename_cmake_rootfile.patch
@@ -5,19 +5,25 @@ files are removed at build time via the target-finalize rule.
This buildroot-specific patch makes sure ctest looks also for
"Modules/CMake.cmake.ctest" before complaining
+[Vincent: tweak patch for 3.6.3]
+
Signed-off-by: Davide Viti <zinosat@tiscali.it>
+Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---- cmake-3.0.2/Source/cmake.cxx~ 2014-09-11 15:24:01.000000000 +0200
-+++ cmake-3.0.2/Source/cmake.cxx 2014-11-25 15:48:04.461033690 +0100
-@@ -957,7 +957,10 @@
- "Path to cpack program executable.", cmCacheManager::INTERNAL);
+diff -rup a/Source/cmake.cxx b/Source/cmake.cxx
+--- a/Source/cmake.cxx 2016-07-07 15:47:27.000000000 +0100
++++ b/Source/cmake.cxx 2016-07-14 10:14:59.914265515 +0100
+@@ -771,7 +771,12 @@ int cmake::AddCMakePaths()
+ "Path to cpack program executable.", cmState::INTERNAL);
#endif
- if(!cmSystemTools::FileExists(
-- (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake").c_str()))
-+ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake").c_str()) &&
-+ !cmSystemTools::FileExists(
-+ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake.ctest").c_str())
+ if (!cmSystemTools::FileExists(
+- (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str())) {
++ (cmSystemTools::GetCMakeRoot() + "/Modules/CMake.cmake").c_str()) &&
++ !cmSystemTools::FileExists(
++ (cmSystemTools::GetCMakeRoot()+"/Modules/CMake.cmake.ctest").c_str()
++ )
+ )
- {
++ {
// couldn't find modules
- cmSystemTools::Error("Could not find CMAKE_ROOT !!!\n"
+ cmSystemTools::Error(
+ "Could not find CMAKE_ROOT !!!\n"
diff --git a/package/cmake/Config.in b/package/cmake/Config.in
index 6f04a4ad3..716d80ec5 100644
--- a/package/cmake/Config.in
+++ b/package/cmake/Config.in
@@ -20,11 +20,14 @@ config BR2_PACKAGE_CMAKE_CTEST
select BR2_PACKAGE_EXPAT
select BR2_PACKAGE_BZIP2
select BR2_PACKAGE_XZ
+ select BR2_PACKAGE_LIBUV
depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 # from jsoncpp
depends on BR2_USE_WCHAR # libarchive
depends on BR2_INSTALL_LIBSTDCPP
depends on !BR2_STATIC_LIBS
+ depends on BR2_TOOLCHAIN_HAS_THREADS # libuv
+ depends on BR2_USE_MMU # libuv
help
CTest is a testing tool distributed as a part of CMake. It
can be used to automate updating (using CVS for example),
@@ -34,7 +37,9 @@ config BR2_PACKAGE_CMAKE_CTEST
http://www.cmake.org/
-comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7"
+comment "ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.7, threads"
depends on BR2_PACKAGE_CMAKE_ARCH_SUPPORTS
+ depends on BR2_USE_MMU
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
- BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+ BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 || \
+ !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/cmake/cmake.hash b/package/cmake/cmake.hash
index e40d4ea39..687e5a448 100644
--- a/package/cmake/cmake.hash
+++ b/package/cmake/cmake.hash
@@ -1,2 +1,2 @@
-# From http://www.cmake.org/files/v3.5/cmake-3.5.2-SHA-256.txt
-sha256 92d8410d3d981bb881dfff2aed466da55a58d34c7390d50449aa59b32bb5e62a cmake-3.5.2.tar.gz
+# From http://www.cmake.org/files/v3.7/cmake-3.7.0-SHA-256.txt
+sha256 ed63e05c41aeb6c036e503114ab15847f29c312f9f21f5f1a7060a4b4ec2fb31 cmake-3.7.0.tar.gz
diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
index 7a80c1bfe..522d7fec8 100644
--- a/package/cmake/cmake.mk
+++ b/package/cmake/cmake.mk
@@ -4,8 +4,8 @@
#
################################################################################
-CMAKE_VERSION_MAJOR = 3.5
-CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).2
+CMAKE_VERSION_MAJOR = 3.7
+CMAKE_VERSION = $(CMAKE_VERSION_MAJOR).0
CMAKE_SITE = https://cmake.org/files/v$(CMAKE_VERSION_MAJOR)
CMAKE_LICENSE = BSD-3c
CMAKE_LICENSE_FILES = Copyright.txt
@@ -22,7 +22,7 @@ CMAKE_LICENSE_FILES = Copyright.txt
# the system-wide libraries instead of rebuilding and statically
# linking with the ones bundled into the CMake sources.
-CMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz
+CMAKE_DEPENDENCIES = zlib jsoncpp libcurl libarchive expat bzip2 xz libuv
CMAKE_CONF_OPTS = \
-DKWSYS_LFS_WORKS=TRUE \
diff --git a/package/cryptsetup/cryptsetup.hash b/package/cryptsetup/cryptsetup.hash
index 5972bf8be..b8c0d2b4e 100644
--- a/package/cryptsetup/cryptsetup.hash
+++ b/package/cryptsetup/cryptsetup.hash
@@ -1,2 +1,2 @@
# From https://www.kernel.org/pub/linux/utils/cryptsetup/v1.7/sha256sums.asc
-sha256 dbb35dbf5f0c1749168c86c913fe98e872247bfc8425314b494c2423e7e43342 cryptsetup-1.7.2.tar.xz
+sha256 af2b04e8475cf40b8d9ffd97a1acfa73aa787c890430afd89804fb544d6adc02 cryptsetup-1.7.3.tar.xz
diff --git a/package/cryptsetup/cryptsetup.mk b/package/cryptsetup/cryptsetup.mk
index d7bd25122..50bf5f2aa 100644
--- a/package/cryptsetup/cryptsetup.mk
+++ b/package/cryptsetup/cryptsetup.mk
@@ -5,7 +5,7 @@
################################################################################
CRYPTSETUP_VERSION_MAJOR = 1.7
-CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).2
+CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).3
CRYPTSETUP_SOURCE = cryptsetup-$(CRYPTSETUP_VERSION).tar.xz
CRYPTSETUP_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/cryptsetup/v$(CRYPTSETUP_VERSION_MAJOR)
CRYPTSETUP_DEPENDENCIES = lvm2 popt util-linux host-pkgconf \
diff --git a/package/domoticz/domoticz.hash b/package/domoticz/domoticz.hash
index fef72f52b..7feab8fbc 100644
--- a/package/domoticz/domoticz.hash
+++ b/package/domoticz/domoticz.hash
@@ -1,2 +1,2 @@
# Locally computed:
-sha256 4b2d59c2bd70e61c486b372059164a688c53b8aa9f1aedb4beb3316ae2a130c5 domoticz-3.5837.tar.gz
+sha256 fb88edbe428851a7a337a85faa93f6da00713b3ad086ff6957031dc9b3b58bba domoticz-3.5877.tar.gz
diff --git a/package/domoticz/domoticz.mk b/package/domoticz/domoticz.mk
index 2272da87c..f43dbda49 100644
--- a/package/domoticz/domoticz.mk
+++ b/package/domoticz/domoticz.mk
@@ -4,7 +4,7 @@
#
################################################################################
-DOMOTICZ_VERSION = 3.5837
+DOMOTICZ_VERSION = 3.5877
DOMOTICZ_SITE = $(call github,domoticz,domoticz,$(DOMOTICZ_VERSION))
DOMOTICZ_LICENSE = GPLv3
DOMOTICZ_LICENSE_FILES = License.txt
diff --git a/package/efibootmgr/0001-Allow-build-with-uClibc.patch b/package/efibootmgr/0001-Allow-build-with-uClibc.patch
new file mode 100644
index 000000000..fd29233dc
--- /dev/null
+++ b/package/efibootmgr/0001-Allow-build-with-uClibc.patch
@@ -0,0 +1,40 @@
+From bbfcc60497c326576bb23cb01d90115ef3cf6947 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Fri, 25 Nov 2016 20:26:52 +0200
+Subject: [PATCH] Remove unneeded <uchar.h> include
+
+This fixes the build with uClibc.
+
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+---
+ src/efibootdump.c | 1 -
+ src/eficonman.c | 1 -
+ 2 files changed, 2 deletions(-)
+
+diff --git a/src/efibootdump.c b/src/efibootdump.c
+index 6ff8360..7c5a1c5 100644
+--- a/src/efibootdump.c
++++ b/src/efibootdump.c
+@@ -19,7 +19,6 @@
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <uchar.h>
+ #include <unistd.h>
+
+ #include "error.h"
+diff --git a/src/eficonman.c b/src/eficonman.c
+index 2c2be38..9bfae79 100644
+--- a/src/eficonman.c
++++ b/src/eficonman.c
+@@ -17,7 +17,6 @@
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <uchar.h>
+ #include <unistd.h>
+
+ #define _(String) gettext (String)
+--
+2.10.2
+
diff --git a/package/efibootmgr/Config.in b/package/efibootmgr/Config.in
index 988bf6d65..8b29938d8 100644
--- a/package/efibootmgr/Config.in
+++ b/package/efibootmgr/Config.in
@@ -1,10 +1,11 @@
config BR2_PACKAGE_EFIBOOTMGR
bool "efibootmgr"
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar
- depends on BR2_TOOLCHAIN_USES_GLIBC # efivar
+ depends on !BR2_TOOLCHAIN_USES_MUSL # efivar
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # efivar
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII # efivar
+ select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT
select BR2_PACKAGE_EFIVAR
help
A Linux user-space application to modify the Intel Extensible
@@ -14,9 +15,9 @@ config BR2_PACKAGE_EFIBOOTMGR
https://github.com/rhinstaller/efibootmgr
-comment "efibootmgr requires a glibc toolchain w/ headers >= 3.12, gcc >= 4.9"
+comment "efibootmgr requires a glibc or uClibc toolchain w/ headers >= 3.12, gcc >= 4.9"
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \
- !BR2_TOOLCHAIN_USES_GLIBC || \\
+ BR2_TOOLCHAIN_USES_MUSL || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
diff --git a/package/efibootmgr/efibootmgr.mk b/package/efibootmgr/efibootmgr.mk
index 731d6e9f5..487c8ca66 100644
--- a/package/efibootmgr/efibootmgr.mk
+++ b/package/efibootmgr/efibootmgr.mk
@@ -8,7 +8,8 @@ EFIBOOTMGR_VERSION = 14
EFIBOOTMGR_SITE = $(call github,rhinstaller,efibootmgr,$(EFIBOOTMGR_VERSION))
EFIBOOTMGR_LICENSE = GPLv2+
EFIBOOTMGR_LICENSE_FILES = COPYING
-EFIBOOTMGR_DEPENDENCIES = efivar
+EFIBOOTMGR_DEPENDENCIES = efivar $(if $(BR2_NEEDS_GETTEXT),gettext)
+EFIBOOTMGR_LDFLAGS = $(TARGET_LDFLAGS) $(if $(BR2_NEEDS_GETTEXT),-lintl)
define EFIBOOTMSR_PATCH_HEADER_PATH
$(SED) 's,-I/,-I$(STAGING_DIR)/,' $(@D)/Makefile
@@ -17,11 +18,12 @@ endef
EFIBOOTMGR_POST_PATCH_HOOKS += EFIBOOTMSR_PATCH_HEADER_PATH
define EFIBOOTMGR_BUILD_CMDS
- $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE1) -C $(@D)
+ $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
+ LDFLAGS="$(EFIBOOTMGR_LDFLAGS)" $(MAKE1) -C $(@D)
endef
define EFIBOOTMGR_INSTALL_TARGET_CMDS
- $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+ $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
DESTDIR=$(TARGET_DIR) install
endef
diff --git a/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch b/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch
new file mode 100644
index 000000000..2bc3ff243
--- /dev/null
+++ b/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch
@@ -0,0 +1,29 @@
+From 314eb67b239e60c2ed3700e2baf9cd0e590465f3 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Thu, 27 Oct 2016 09:19:18 -0400
+Subject: [PATCH] Use -z muldefs to avoid the multiple definitions bug
+ without -flto
+
+This fixes github issue #64
+
+Signed-off-by: Peter Jones <pjones@redhat.com>
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+---
+ Make.defaults | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Make.defaults b/Make.defaults
+index aa974d9..c9d599f 100644
+--- a/Make.defaults
++++ b/Make.defaults
+@@ -32,6 +32,7 @@ cflags = $(CFLAGS) -I${TOPDIR}/src/include/efivar/ \
+ clang_ccldflags =
+ gcc_ccldflags =
+ ccldflags = $(cflags) -L. $(CCLDFLAGS) $(LDFLAGS) \
++ -Wl,-z,muldefs \
+ $(if $(findstring clang,$(CCLD)),$(clang_ccldflags),) \
+ $(if $(findstring gcc,$(CCLD)),$(gcc_ccldflags),) \
+ $(call pkg-config-ccldflags)
+--
+2.10.2
+
diff --git a/package/efivar/0002-Allow-build-with-uClibc.patch b/package/efivar/0002-Allow-build-with-uClibc.patch
new file mode 100644
index 000000000..7c195872b
--- /dev/null
+++ b/package/efivar/0002-Allow-build-with-uClibc.patch
@@ -0,0 +1,38 @@
+From 2255601757a8a58baddad2d37d0bcc6b003a3732 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Fri, 25 Nov 2016 19:42:27 +0200
+Subject: [PATCH] Allow build with uClibc
+
+Basically this replaces type definitions in <uchar.h>.
+
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+---
+ src/export.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/export.c b/src/export.c
+index 7f2d4dd..72c02d1 100644
+--- a/src/export.c
++++ b/src/export.c
+@@ -21,11 +21,17 @@
+ #include <inttypes.h>
+ #include <stdint.h>
+ #include <stdlib.h>
+-#include <uchar.h>
+
+ #include <efivar.h>
+ #include "lib.h"
+
++#ifdef __UCLIBC__
++typedef int_least16_t char16_t;
++typedef int_least32_t char32_t;
++#else
++#include <uchar.h>
++#endif
++
+ #define EFIVAR_MAGIC 0xf3df1597
+
+ #define ATTRS_UNSET 0xa5a5a5a5a5a5a5a5
+--
+2.10.2
+
diff --git a/package/efivar/Config.in b/package/efivar/Config.in
index 466a30ac5..1bdb6cad6 100644
--- a/package/efivar/Config.in
+++ b/package/efivar/Config.in
@@ -9,9 +9,8 @@ config BR2_PACKAGE_EFIVAR
# toolchains.
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
- # doesn't build with uclibc due to lack of uchar.h
# doesn't build with musl due to lack of __bswap_constant_16
- depends on BR2_TOOLCHAIN_USES_GLIBC
+ depends on !BR2_TOOLCHAIN_USES_MUSL
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
select BR2_PACKAGE_POPT
help
@@ -19,9 +18,9 @@ config BR2_PACKAGE_EFIVAR
https://github.com/rhinstaller/efivar
-comment "efivar requires a glibc toolchain w/ headers >= 3.12, gcc >= 4.9"
+comment "efivar requires a glibc or uClibc toolchain w/ headers >= 3.12, gcc >= 4.9"
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \
- !BR2_TOOLCHAIN_USES_GLIBC || \
+ BR2_TOOLCHAIN_USES_MUSL || \
!BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS && \
!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
diff --git a/package/efivar/efivar.hash b/package/efivar/efivar.hash
index 3671bbc05..e337b9645 100644
--- a/package/efivar/efivar.hash
+++ b/package/efivar/efivar.hash
@@ -1,2 +1,2 @@
# locally computed hash
-sha256 7fed0b31fe796d7dfef40cccb97b8bb0b806f16e568074ad2d456be30e195f5e efivar-28.tar.gz
+sha256 20709c76311f8eb8be92977b7ac008ce62501fa9f7fe885a784321540fc352f9 efivar-30.tar.gz
diff --git a/package/efivar/efivar.mk b/package/efivar/efivar.mk
index cff3ac1d1..913322e2f 100644
--- a/package/efivar/efivar.mk
+++ b/package/efivar/efivar.mk
@@ -4,7 +4,7 @@
#
################################################################################
-EFIVAR_VERSION = 28
+EFIVAR_VERSION = 30
EFIVAR_SITE = $(call github,rhinstaller,efivar,$(EFIVAR_VERSION))
EFIVAR_LICENSE = LGPLv2.1
EFIVAR_LICENSE_FILES = COPYING
diff --git a/package/efl/efl.hash b/package/efl/efl.hash
index 18393a43e..4077ddd43 100644
--- a/package/efl/efl.hash
+++ b/package/efl/efl.hash
@@ -1,2 +1,2 @@
-# From https://download.enlightenment.org/rel/libs/efl/efl-1.18.2.tar.xz.sha256
-sha256 292faf76557fe56a6bc15b48b5ea3eb1f0790e2ed7f2ade4ae79ef7973d67bed efl-1.18.2.tar.xz
+# From https://download.enlightenment.org/rel/libs/efl/efl-1.18.3.tar.xz.sha256
+sha256 0748ec0847f543d96b149cb3a84e6438724e827a38d530922ecb4bd59d3e64c0 efl-1.18.3.tar.xz
diff --git a/package/efl/efl.mk b/package/efl/efl.mk
index 6af7aa0c5..bdf304d3c 100644
--- a/package/efl/efl.mk
+++ b/package/efl/efl.mk
@@ -4,7 +4,7 @@
#
################################################################################
-EFL_VERSION = 1.18.2
+EFL_VERSION = 1.18.3
EFL_SOURCE = efl-$(EFL_VERSION).tar.xz
EFL_SITE = http://download.enlightenment.org/rel/libs/efl
EFL_LICENSE = BSD-2c, LGPLv2.1+, GPLv2+
diff --git a/package/fdk-aac/Config.in b/package/fdk-aac/Config.in
index 9e18d2203..f51c5ab19 100644
--- a/package/fdk-aac/Config.in
+++ b/package/fdk-aac/Config.in
@@ -1,11 +1,14 @@
+# These are the architectures supported by FDK AAC
+config BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
+ bool
+ default y if BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \
+ BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
+ BR2_powerpc || BR2_sh
+
config BR2_PACKAGE_FDK_AAC
bool "fdk-aac"
+ depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
- # These are the architectures supported by FDK AAC
- depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \
- BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
- BR2_powerpc || BR2_sh
-
help
The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec")
is software that implements the MPEG Advanced Audio Coding ("AAC")
@@ -14,7 +17,5 @@ config BR2_PACKAGE_FDK_AAC
http://sourceforge.net/projects/opencore-amr/files/fdk-aac/
comment "fdk-aac needs a toolchain w/ C++"
+ depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
depends on !BR2_INSTALL_LIBSTDCPP
- depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \
- BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
- BR2_powerpc || BR2_sh
diff --git a/package/ffmpeg/ffmpeg.hash b/package/ffmpeg/ffmpeg.hash
index 541f421de..aa9f0f738 100644
--- a/package/ffmpeg/ffmpeg.hash
+++ b/package/ffmpeg/ffmpeg.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 88f70c1b8cab108f494ecbab5ba302cdb35d59a84cea88008b5fe49be068d5da ffmpeg-3.2.tar.xz
+sha256 1ecf93da5d601e6fb3096c65cbe33fdaf042d690a3c50c4efadb0a9b74f2badf ffmpeg-3.2.1.tar.xz
diff --git a/package/ffmpeg/ffmpeg.mk b/package/ffmpeg/ffmpeg.mk
index de6d8416c..699de2ac8 100644
--- a/package/ffmpeg/ffmpeg.mk
+++ b/package/ffmpeg/ffmpeg.mk
@@ -4,7 +4,7 @@
#
################################################################################
-FFMPEG_VERSION = 3.2
+FFMPEG_VERSION = 3.2.1
FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz
FFMPEG_SITE = http://ffmpeg.org/releases
FFMPEG_INSTALL_STAGING = YES
diff --git a/package/gcc/gcc-initial/gcc-initial.mk b/package/gcc/gcc-initial/gcc-initial.mk
index 7bb988bdf..a51e29cfc 100644
--- a/package/gcc/gcc-initial/gcc-initial.mk
+++ b/package/gcc/gcc-initial/gcc-initial.mk
@@ -25,19 +25,6 @@ HOST_GCC_INITIAL_SUBDIR = build
HOST_GCC_INITIAL_PRE_CONFIGURE_HOOKS += HOST_GCC_CONFIGURE_SYMLINK
-# gcc on ARC has a bug: in its libgcc, even when no C library is
-# available (--with-newlib is passed, and therefore inhibit_libc is
-# defined), it tries to use the C library for the libgmon
-# library. Since it's not needed in gcc-initial, we disabled it here.
-ifeq ($(BR2_GCC_VERSION_ARC),y)
-define HOST_GCC_INITIAL_DISABLE_LIBGMON
- $(SED) 's/crtbeginS.o libgmon.a crtg.o/crtbeginS.o crtg.o/' \
- $(@D)/libgcc/config.host
-endef
-HOST_GCC_INITIAL_POST_PATCH_HOOKS += HOST_GCC_INITIAL_DISABLE_LIBGMON
-HOST_GCC_INITIAL_POST_RSYNC_HOOKS += HOST_GCC_INITIAL_DISABLE_LIBGMON
-endif
-
HOST_GCC_INITIAL_CONF_OPTS = \
$(HOST_GCC_COMMON_CONF_OPTS) \
--enable-languages=c \
diff --git a/package/git/git.hash b/package/git/git.hash
index 0815641c1..ee7615797 100644
--- a/package/git/git.hash
+++ b/package/git/git.hash
@@ -1,2 +1,2 @@
# From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc
-sha256 94802903dd707d85ca3b9a2be35e936a54ce86375f52c6a789efe7ce7e238671 git-2.10.2.tar.xz
+sha256 7e7e8d69d494892373b87007674be5820a4bc1ef596a0117d03ea3169119fd0b git-2.11.0.tar.xz
diff --git a/package/git/git.mk b/package/git/git.mk
index a7768ac53..7d4d36363 100644
--- a/package/git/git.mk
+++ b/package/git/git.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GIT_VERSION = 2.10.2
+GIT_VERSION = 2.11.0
GIT_SOURCE = git-$(GIT_VERSION).tar.xz
GIT_SITE = https://www.kernel.org/pub/software/scm/git
GIT_LICENSE = GPLv2 LGPLv2.1+
diff --git a/package/glog/Config.in b/package/glog/Config.in
index f70875810..534997af4 100644
--- a/package/glog/Config.in
+++ b/package/glog/Config.in
@@ -3,14 +3,11 @@ config BR2_PACKAGE_GLOG
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on !BR2_STATIC_LIBS
- # build issues with this external toolchain
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
help
C++ implementation of the Google logging module
https://github.com/google/glog
comment "glog needs a toolchain w/ C++, threads, dynamic library"
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
BR2_STATIC_LIBS
diff --git a/package/gstreamer1/gst-omx/gst-omx.hash b/package/gstreamer1/gst-omx/gst-omx.hash
index 40d519711..d52b61fd6 100644
--- a/package/gstreamer1/gst-omx/gst-omx.hash
+++ b/package/gstreamer1/gst-omx/gst-omx.hash
@@ -1,2 +1,2 @@
-# locally computed
-sha256 0b4874961e6488ad9e5808114bd486ea981c540907262caab1419355fd82d745 gst-omx-1.2.0.tar.xz
+# From https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-1.10.2.tar.xz.sha256sum
+sha256 c069a9cf775c92f889ca8f3b2fc718e428cd0579b7b805851a960c850a7aa497 gst-omx-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst-omx/gst-omx.mk b/package/gstreamer1/gst-omx/gst-omx.mk
index 4ca441656..fcc7058b1 100644
--- a/package/gstreamer1/gst-omx/gst-omx.mk
+++ b/package/gstreamer1/gst-omx/gst-omx.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST_OMX_VERSION = 1.2.0
+GST_OMX_VERSION = 1.10.2
GST_OMX_SOURCE = gst-omx-$(GST_OMX_VERSION).tar.xz
GST_OMX_SITE = https://gstreamer.freedesktop.org/src/gst-omx
diff --git a/package/gstreamer1/gst1-imx/gst1-imx.hash b/package/gstreamer1/gst1-imx/gst1-imx.hash
index d345debc3..b0124aae2 100644
--- a/package/gstreamer1/gst1-imx/gst1-imx.hash
+++ b/package/gstreamer1/gst1-imx/gst1-imx.hash
@@ -1,2 +1,2 @@
# locally computed hash
-sha256 a75f8bc3219fa3c62637f443cef0196c9eafb90aaa5af094847d007124895822 gst1-imx-0.12.2.tar.gz
+sha256 a75f8bc3219fa3c62637f443cef0196c9eafb90aaa5af094847d007124895822 gst1-imx-0.12.3.tar.gz
diff --git a/package/gstreamer1/gst1-imx/gst1-imx.mk b/package/gstreamer1/gst1-imx/gst1-imx.mk
index 3c6b1b602..71b4e1e19 100644
--- a/package/gstreamer1/gst1-imx/gst1-imx.mk
+++ b/package/gstreamer1/gst1-imx/gst1-imx.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_IMX_VERSION = 0.12.2
+GST1_IMX_VERSION = 0.12.3
GST1_IMX_SITE = $(call github,Freescale,gstreamer-imx,$(GST1_IMX_VERSION))
GST1_IMX_LICENSE = LGPLv2+
diff --git a/package/gstreamer1/gst1-libav/gst1-libav.hash b/package/gstreamer1/gst1-libav/gst1-libav.hash
index 46d48a956..8cda287f2 100644
--- a/package/gstreamer1/gst1-libav/gst1-libav.hash
+++ b/package/gstreamer1/gst1-libav/gst1-libav.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.8.3.tar.xz.sha256sum
-sha256 9006a05990089f7155ee0e848042f6bb24e52ab1d0a59ff8d1b5d7e33001a495 gst-libav-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-1.10.2.tar.xz.sha256sum
+sha256 a3dd7036211f061e1eda04f985b7a9dd1a91b754f767ff2587eb6ec28f44e73c gst-libav-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-libav/gst1-libav.mk b/package/gstreamer1/gst1-libav/gst1-libav.mk
index 5706c6462..8687ac652 100644
--- a/package/gstreamer1/gst1-libav/gst1-libav.mk
+++ b/package/gstreamer1/gst1-libav/gst1-libav.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_LIBAV_VERSION = 1.8.3
+GST1_LIBAV_VERSION = 1.10.2
GST1_LIBAV_SOURCE = gst-libav-$(GST1_LIBAV_VERSION).tar.xz
GST1_LIBAV_SITE = https://gstreamer.freedesktop.org/src/gst-libav
GST1_LIBAV_CONF_OPTS = --with-system-libav
diff --git a/package/gstreamer1/gst1-plugins-bad/0001-vmncdec-Sanity-check-width-height-before-using-it.patch b/package/gstreamer1/gst1-plugins-bad/0001-vmncdec-Sanity-check-width-height-before-using-it.patch
deleted file mode 100644
index ebc87bb9e..000000000
--- a/package/gstreamer1/gst1-plugins-bad/0001-vmncdec-Sanity-check-width-height-before-using-it.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 465091253bb3c3198d055b2e9f02d95237204663 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Wed, 16 Nov 2016 20:41:39 +0200
-Subject: [PATCH] vmncdec: Sanity-check width/height before using it
-
-We will allocate a screen area of width*height*bpp bytes, however this
-calculation can easily overflow if too high width or height are given
-inside the stream. Nonetheless we would just assume that enough memory
-was allocated, try to fill it and overwrite as much memory as wanted.
-
-Also allocate the screen area filled with zeroes to ensure that we start
-with full-black and not any random (or not so random) data.
-
-https://scarybeastsecurity.blogspot.gr/2016/11/0day-poc-risky-design-decisions-in.html
-
-Ideally we should just remove this plugin in favour of the one in
-gst-libav, which generally seems to be of better code quality.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=774533
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- gst/vmnc/vmncdec.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/gst/vmnc/vmncdec.c b/gst/vmnc/vmncdec.c
-index 5504302..a843136 100644
---- a/gst/vmnc/vmncdec.c
-+++ b/gst/vmnc/vmncdec.c
-@@ -261,7 +261,7 @@ vmnc_handle_wmvi_rectangle (GstVMncDec * dec, struct RfbRectangle *rect,
- gst_video_codec_state_unref (state);
-
- g_free (dec->imagedata);
-- dec->imagedata = g_malloc (dec->format.width * dec->format.height *
-+ dec->imagedata = g_malloc0 (dec->format.width * dec->format.height *
- dec->format.bytes_per_pixel);
- GST_DEBUG_OBJECT (dec, "Allocated image data at %p", dec->imagedata);
-
-@@ -791,6 +791,10 @@ vmnc_handle_packet (GstVMncDec * dec, const guint8 * data, int len,
- GST_WARNING_OBJECT (dec, "Rectangle out of range, type %d", r.type);
- return ERROR_INVALID;
- }
-+ } else if (r.width > 16384 || r.height > 16384) {
-+ GST_WARNING_OBJECT (dec, "Width or height too high: %ux%u", r.width,
-+ r.height);
-+ return ERROR_INVALID;
- }
-
- switch (r.type) {
---
-2.10.2
-
diff --git a/package/gstreamer1/gst1-plugins-bad/Config.in b/package/gstreamer1/gst1-plugins-bad/Config.in
index 2f288cabc..16c0b7e3f 100644
--- a/package/gstreamer1/gst1-plugins-bad/Config.in
+++ b/package/gstreamer1/gst1-plugins-bad/Config.in
@@ -419,6 +419,9 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SUBENC
config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO
bool "stereo"
+config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE
+ bool "timecode"
+
config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA
bool "tta"
@@ -520,6 +523,18 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FBDEV
help
Linux framebuffer video sink
+config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC
+ bool "fdk-aac"
+ select BR2_PACKAGE_FDK_AAC
+ depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
+ depends on BR2_INSTALL_LIBSTDCPP
+ help
+ MPEG AAC encoder/decoder
+
+comment "fdk-aac needs a toolchain w/ C++"
+ depends on BR2_PACKAGE_FDK_AAC_ARCH_SUPPORTS
+ depends on !BR2_INSTALL_LIBSTDCPP
+
config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL
bool "gl"
default y
@@ -650,6 +665,10 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SNDFILE
bool "sndfile"
select BR2_PACKAGE_LIBSNDFILE
+config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP
+ bool "srtp"
+ select BR2_PACKAGE_LIBSRTP
+
config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD
bool "vcd"
@@ -670,6 +689,23 @@ config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBP
help
Webp image format plugin
+config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC
+ bool "webrtc"
+ # All depends from webrtc-audio-processing
+ depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
+ depends on BR2_INSTALL_LIBSTDCPP
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ select BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING
+ select BR2_PACKAGE_WEBRTC
+ help
+ WebRTC echo-cancellation, gain control and noise suppression
+
+comment "webrtc needs a toolchain w/ C++, NPTL, gcc >= 4.8"
+ depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
+ depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
+ || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
config BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265
bool "x265"
depends on BR2_INSTALL_LIBSTDCPP
diff --git a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash
index a0d6cdccc..999a4e866 100644
--- a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash
+++ b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.3.tar.xz.sha256sum
-sha256 7899fcb18e6a1af2888b19c90213af018a57d741c6e72ec56b133bc73ec8509b gst-plugins-bad-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.10.2.tar.xz.sha256sum
+sha256 0795ca9303a99cc7e44dda0e6e18524de02b39892e4b68eaba488f7b9db53a3a gst-plugins-bad-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk
index eb935bc29..ba9f30542 100644
--- a/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk
+++ b/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_PLUGINS_BAD_VERSION = 1.8.3
+GST1_PLUGINS_BAD_VERSION = 1.10.2
GST1_PLUGINS_BAD_SOURCE = gst-plugins-bad-$(GST1_PLUGINS_BAD_VERSION).tar.xz
GST1_PLUGINS_BAD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-bad
GST1_PLUGINS_BAD_INSTALL_STAGING = YES
@@ -44,7 +44,6 @@ GST1_PLUGINS_BAD_CONF_OPTS += \
--disable-ladspa \
--disable-lv2 \
--disable-libde265 \
- --disable-srtp \
--disable-linsys \
--disable-modplug \
--disable-mimic \
@@ -517,6 +516,12 @@ else
GST1_PLUGINS_BAD_CONF_OPTS += --disable-stereo
endif
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TIMECODE),y)
+GST1_PLUGINS_BAD_CONF_OPTS += --enable-timecode
+else
+GST1_PLUGINS_BAD_CONF_OPTS += --disable-timecode
+endif
+
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA),y)
GST1_PLUGINS_BAD_CONF_OPTS += --enable-tta
else
@@ -642,6 +647,14 @@ else
GST1_PLUGINS_BAD_CONF_OPTS += --disable-fbdev
endif
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC),y)
+GST1_PLUGINS_BAD_CONF_OPTS += --enable-fdk_aac
+GST1_PLUGINS_BAD_DEPENDENCIES += fdk-aac
+GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y
+else
+GST1_PLUGINS_BAD_CONF_OPTS += --disable-fdk_aac
+endif
+
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_GL),y)
GST1_PLUGINS_BAD_CONF_OPTS += --enable-gl
else
@@ -766,6 +779,13 @@ else
GST1_PLUGINS_BAD_CONF_OPTS += --disable-sndfile
endif
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SRTP),y)
+GST1_PLUGINS_BAD_CONF_OPTS += --enable-srtp
+GST1_PLUGINS_BAD_DEPENDENCIES += libsrtp
+else
+GST1_PLUGINS_BAD_CONF_OPTS += --disable-srtp
+endif
+
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD),y)
GST1_PLUGINS_BAD_CONF_OPTS += --enable-vcd
else
@@ -786,6 +806,13 @@ else
GST1_PLUGINS_BAD_CONF_OPTS += --disable-webp
endif
+ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_WEBRTC),y)
+GST1_PLUGINS_BAD_CONF_OPTS += --enable-webrtc
+GST1_PLUGINS_BAD_DEPENDENCIES += webrtc-audio-processing
+else
+GST1_PLUGINS_BAD_CONF_OPTS += --disable-webrtc
+endif
+
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_X265),y)
GST1_PLUGINS_BAD_CONF_OPTS += --enable-x265
GST1_PLUGINS_BAD_DEPENDENCIES += x265
diff --git a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash
index 83f0e8346..3f4d0cd42 100644
--- a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash
+++ b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.8.3.tar.xz.sha256sum
-sha256 114871d4d63606b4af424a8433cd923e4ff66896b244bb7ac97b9da47f71e79e gst-plugins-base-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.10.2.tar.xz.sha256sum
+sha256 fbc0d40fcb746d2efe2ea47444674029912f66e6107f232766d33b722b97de20 gst-plugins-base-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk
index 5a3589729..1014bd78d 100644
--- a/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk
+++ b/package/gstreamer1/gst1-plugins-base/gst1-plugins-base.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_PLUGINS_BASE_VERSION = 1.8.3
+GST1_PLUGINS_BASE_VERSION = 1.10.2
GST1_PLUGINS_BASE_SOURCE = gst-plugins-base-$(GST1_PLUGINS_BASE_VERSION).tar.xz
GST1_PLUGINS_BASE_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-base
GST1_PLUGINS_BASE_INSTALL_STAGING = YES
diff --git a/package/gstreamer1/gst1-plugins-good/0001-flxdec-add-some-write-bounds-checking.patch b/package/gstreamer1/gst1-plugins-good/0001-flxdec-add-some-write-bounds-checking.patch
deleted file mode 100644
index c8a76520e..000000000
--- a/package/gstreamer1/gst1-plugins-good/0001-flxdec-add-some-write-bounds-checking.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-From ec66c7c584f0b41c98e93758d9b53bd6dd582df2 Mon Sep 17 00:00:00 2001
-From: Matthew Waters <matthew@centricular.com>
-Date: Tue, 22 Nov 2016 19:05:00 +1100
-Subject: [PATCH] flxdec: add some write bounds checking
-
-Without checking the bounds of the frame we are writing into, we can
-write off the end of the destination buffer.
-
-https://scarybeastsecurity.blogspot.dk/2016/11/0day-exploit-advancing-exploitation.html
-
-https://bugzilla.gnome.org/show_bug.cgi?id=774834
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- gst/flx/gstflxdec.c | 116 +++++++++++++++++++++++++++++++++++++++++-----------
- 1 file changed, 91 insertions(+), 25 deletions(-)
-
-diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
-index 604be2f..d51a8e6 100644
---- a/gst/flx/gstflxdec.c
-+++ b/gst/flx/gstflxdec.c
-@@ -74,9 +74,9 @@ static gboolean gst_flxdec_src_query_handler (GstPad * pad, GstObject * parent,
- GstQuery * query);
-
- static void flx_decode_color (GstFlxDec *, guchar *, guchar *, gint);
--static void flx_decode_brun (GstFlxDec *, guchar *, guchar *);
--static void flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
--static void flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
-+static gboolean flx_decode_brun (GstFlxDec *, guchar *, guchar *);
-+static gboolean flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
-+static gboolean flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
-
- #define rndalign(off) ((off) + ((off) & 1))
-
-@@ -203,13 +203,14 @@ gst_flxdec_sink_event_handler (GstPad * pad, GstObject * parent,
- return ret;
- }
-
--static void
-+static gboolean
- flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
- guchar * dest)
- {
- FlxFrameChunk *hdr;
-+ gboolean ret = TRUE;
-
-- g_return_if_fail (data != NULL);
-+ g_return_val_if_fail (data != NULL, FALSE);
-
- while (count--) {
- hdr = (FlxFrameChunk *) data;
-@@ -228,17 +229,17 @@ flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
- break;
-
- case FLX_BRUN:
-- flx_decode_brun (flxdec, data, dest);
-+ ret = flx_decode_brun (flxdec, data, dest);
- data += rndalign (hdr->size) - FlxFrameChunkSize;
- break;
-
- case FLX_LC:
-- flx_decode_delta_fli (flxdec, data, dest);
-+ ret = flx_decode_delta_fli (flxdec, data, dest);
- data += rndalign (hdr->size) - FlxFrameChunkSize;
- break;
-
- case FLX_SS2:
-- flx_decode_delta_flc (flxdec, data, dest);
-+ ret = flx_decode_delta_flc (flxdec, data, dest);
- data += rndalign (hdr->size) - FlxFrameChunkSize;
- break;
-
-@@ -256,7 +257,12 @@ flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
- data += rndalign (hdr->size) - FlxFrameChunkSize;
- break;
- }
-+
-+ if (!ret)
-+ break;
- }
-+
-+ return ret;
- }
-
-
-@@ -289,13 +295,13 @@ flx_decode_color (GstFlxDec * flxdec, guchar * data, guchar * dest, gint scale)
- }
- }
-
--static void
-+static gboolean
- flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- {
- gulong count, lines, row;
- guchar x;
-
-- g_return_if_fail (flxdec != NULL);
-+ g_return_val_if_fail (flxdec != NULL, FALSE);
-
- lines = flxdec->hdr.height;
- while (lines--) {
-@@ -313,12 +319,21 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- if (count > 0x7f) {
- /* literal run */
- count = 0x100 - count;
-+ if ((glong) row - count < 0) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
-+ return FALSE;
-+ }
- row -= count;
-
- while (count--)
- *dest++ = *data++;
-
- } else {
-+ if ((glong) row - count < 0) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
-+ return FALSE;
-+ }
-+
- /* replicate run */
- row -= count;
- x = *data++;
-@@ -328,22 +343,28 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- }
- }
- }
-+
-+ return TRUE;
- }
-
--static void
-+static gboolean
- flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
- {
- gulong count, packets, lines, start_line;
- guchar *start_p, x;
-
-- g_return_if_fail (flxdec != NULL);
-- g_return_if_fail (flxdec->delta_data != NULL);
-+ g_return_val_if_fail (flxdec != NULL, FALSE);
-+ g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
-
- /* use last frame for delta */
- memcpy (dest, flxdec->delta_data, flxdec->size);
-
- start_line = (data[0] + (data[1] << 8));
- lines = (data[2] + (data[3] << 8));
-+ if (start_line + lines > flxdec->hdr.height) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. too many lines.");
-+ return FALSE;
-+ }
- data += 4;
-
- /* start position of delta */
-@@ -356,7 +377,8 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
-
- while (packets--) {
- /* skip count */
-- dest += *data++;
-+ guchar skip = *data++;
-+ dest += skip;
-
- /* RLE count */
- count = *data++;
-@@ -364,12 +386,24 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
- if (count > 0x7f) {
- /* literal run */
- count = 0x100 - count;
-- x = *data++;
-
-+ if (skip + count > flxdec->hdr.width) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
-+ "line too long.");
-+ return FALSE;
-+ }
-+
-+ x = *data++;
- while (count--)
- *dest++ = x;
-
- } else {
-+ if (skip + count > flxdec->hdr.width) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
-+ "line too long.");
-+ return FALSE;
-+ }
-+
- /* replicate run */
- while (count--)
- *dest++ = *data++;
-@@ -378,21 +412,27 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
- start_p += flxdec->hdr.width;
- dest = start_p;
- }
-+
-+ return TRUE;
- }
-
--static void
-+static gboolean
- flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- {
- gulong count, lines, start_l, opcode;
- guchar *start_p;
-
-- g_return_if_fail (flxdec != NULL);
-- g_return_if_fail (flxdec->delta_data != NULL);
-+ g_return_val_if_fail (flxdec != NULL, FALSE);
-+ g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
-
- /* use last frame for delta */
- memcpy (dest, flxdec->delta_data, flxdec->size);
-
- lines = (data[0] + (data[1] << 8));
-+ if (lines > flxdec->hdr.height) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. too many lines.");
-+ return FALSE;
-+ }
- data += 2;
-
- start_p = dest;
-@@ -405,9 +445,15 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- while ((opcode = (data[0] + (data[1] << 8))) & 0xc000) {
- data += 2;
- if ((opcode & 0xc000) == 0xc000) {
-- /* skip count */
-- start_l += (0x10000 - opcode);
-- dest += flxdec->hdr.width * (0x10000 - opcode);
-+ /* line skip count */
-+ gulong skip = (0x10000 - opcode);
-+ if (skip > flxdec->hdr.height) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
-+ "skip line count too big.");
-+ return FALSE;
-+ }
-+ start_l += skip;
-+ dest += flxdec->hdr.width * skip;
- } else {
- /* last pixel */
- dest += flxdec->hdr.width;
-@@ -419,7 +465,8 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- /* last opcode is the packet count */
- while (opcode--) {
- /* skip count */
-- dest += *data++;
-+ guchar skip = *data++;
-+ dest += skip;
-
- /* RLE count */
- count = *data++;
-@@ -427,12 +474,25 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- if (count > 0x7f) {
- /* replicate word run */
- count = 0x100 - count;
-+
-+ if (skip + count > flxdec->hdr.width) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
-+ "line too long.");
-+ return FALSE;
-+ }
-+
- while (count--) {
- *dest++ = data[0];
- *dest++ = data[1];
- }
- data += 2;
- } else {
-+ if (skip + count > flxdec->hdr.width) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
-+ "line too long.");
-+ return FALSE;
-+ }
-+
- /* literal word run */
- while (count--) {
- *dest++ = *data++;
-@@ -442,6 +502,8 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- }
- lines--;
- }
-+
-+ return TRUE;
- }
-
- static GstFlowReturn
-@@ -571,9 +633,13 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
- out = gst_buffer_new_and_alloc (flxdec->size * 4);
-
- /* decode chunks */
-- flx_decode_chunks (flxdec,
-- ((FlxFrameType *) chunk)->chunks,
-- chunk + FlxFrameTypeSize, flxdec->frame_data);
-+ if (!flx_decode_chunks (flxdec,
-+ ((FlxFrameType *) chunk)->chunks,
-+ chunk + FlxFrameTypeSize, flxdec->frame_data)) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Could not decode chunk"), NULL);
-+ return GST_FLOW_ERROR;
-+ }
-
- /* save copy of the current frame for possible delta. */
- memcpy (flxdec->delta_data, flxdec->frame_data, flxdec->size);
---
-2.10.2
-
diff --git a/package/gstreamer1/gst1-plugins-good/0002-flxdec-fix-some-warnings-comparing-unsigned-0.patch b/package/gstreamer1/gst1-plugins-good/0002-flxdec-fix-some-warnings-comparing-unsigned-0.patch
deleted file mode 100644
index bf10ba68d..000000000
--- a/package/gstreamer1/gst1-plugins-good/0002-flxdec-fix-some-warnings-comparing-unsigned-0.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From af7f70e60e364b551c2589dee5fb458a83fa0e7e Mon Sep 17 00:00:00 2001
-From: Matthew Waters <matthew@centricular.com>
-Date: Tue, 22 Nov 2016 23:46:00 +1100
-Subject: [PATCH] flxdec: fix some warnings comparing unsigned < 0
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-bf43f44fcfada5ec4a3ce60cb374340486fe9fac was comparing an unsigned
-expression to be < 0 which was always false.
-
-gstflxdec.c: In function ‘flx_decode_brun’:
-gstflxdec.c:322:33: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
- if ((glong) row - count < 0) {
- ^
-gstflxdec.c:332:33: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
- if ((glong) row - count < 0) {
- ^
-
-https://bugzilla.gnome.org/show_bug.cgi?id=774834
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- gst/flx/gstflxdec.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
-index d51a8e6..e675c99 100644
---- a/gst/flx/gstflxdec.c
-+++ b/gst/flx/gstflxdec.c
-@@ -319,7 +319,7 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- if (count > 0x7f) {
- /* literal run */
- count = 0x100 - count;
-- if ((glong) row - count < 0) {
-+ if ((glong) row - (glong) count < 0) {
- GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
- return FALSE;
- }
-@@ -329,7 +329,7 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- *dest++ = *data++;
-
- } else {
-- if ((glong) row - count < 0) {
-+ if ((glong) row - (glong) count < 0) {
- GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
- return FALSE;
- }
---
-2.10.2
-
diff --git a/package/gstreamer1/gst1-plugins-good/0003-flxdec-Don-t-unref-parent-in-the-chain-function.patch b/package/gstreamer1/gst1-plugins-good/0003-flxdec-Don-t-unref-parent-in-the-chain-function.patch
deleted file mode 100644
index f14b1fe1c..000000000
--- a/package/gstreamer1/gst1-plugins-good/0003-flxdec-Don-t-unref-parent-in-the-chain-function.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 1b574eddf789a59aff11ee0b6eb3fe1af288ff06 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Wed, 23 Nov 2016 11:20:49 +0200
-Subject: [PATCH] flxdec: Don't unref() parent in the chain function
-
-We don't own the reference here, it is owned by the caller and given to
-us for the scope of this function. Leftover mistake from 0.10 porting.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=774897
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- gst/flx/gstflxdec.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
-index e675c99..a237976 100644
---- a/gst/flx/gstflxdec.c
-+++ b/gst/flx/gstflxdec.c
-@@ -677,7 +677,6 @@ wrong_type:
- {
- GST_ELEMENT_ERROR (flxdec, STREAM, WRONG_TYPE, (NULL),
- ("not a flx file (type %x)", flxh->type));
-- gst_object_unref (flxdec);
- return GST_FLOW_ERROR;
- }
- }
---
-2.10.2
-
diff --git a/package/gstreamer1/gst1-plugins-good/0004-flxdec-rewrite-logic-based-on-GstByteReader-Writer.patch b/package/gstreamer1/gst1-plugins-good/0004-flxdec-rewrite-logic-based-on-GstByteReader-Writer.patch
deleted file mode 100644
index 43592605a..000000000
--- a/package/gstreamer1/gst1-plugins-good/0004-flxdec-rewrite-logic-based-on-GstByteReader-Writer.patch
+++ /dev/null
@@ -1,1039 +0,0 @@
-From 7c7a9f8df1b545eec1ef4461b742c3696d4d0e9e Mon Sep 17 00:00:00 2001
-From: Matthew Waters <matthew@centricular.com>
-Date: Wed, 23 Nov 2016 07:09:06 +1100
-Subject: [PATCH] flxdec: rewrite logic based on GstByteReader/Writer
-
-Solves overreading/writing the given arrays and will error out if the
-streams asks to do that.
-
-Also does more error checking that the stream is valid and won't
-overrun any allocated arrays. Also mitigate integer overflow errors
-calculating allocation sizes.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=774859
-Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
----
- gst/flx/flx_color.c | 1 -
- gst/flx/flx_fmt.h | 72 -------
- gst/flx/gstflxdec.c | 610 ++++++++++++++++++++++++++++++++++++----------------
- gst/flx/gstflxdec.h | 4 +-
- 4 files changed, 427 insertions(+), 260 deletions(-)
-
-diff --git a/gst/flx/flx_color.c b/gst/flx/flx_color.c
-index 047bfdf..3a58135 100644
---- a/gst/flx/flx_color.c
-+++ b/gst/flx/flx_color.c
-@@ -101,7 +101,6 @@ flx_set_palette_vector (FlxColorSpaceConverter * flxpal, guint start, guint num,
- } else {
- memcpy (&flxpal->palvec[start * 3], newpal, grab * 3);
- }
--
- }
-
- void
-diff --git a/gst/flx/flx_fmt.h b/gst/flx/flx_fmt.h
-index 9ab31ba..abff200 100644
---- a/gst/flx/flx_fmt.h
-+++ b/gst/flx/flx_fmt.h
-@@ -123,78 +123,6 @@ typedef struct _FlxFrameType
- } FlxFrameType;
- #define FlxFrameTypeSize 10
-
--#if G_BYTE_ORDER == G_BIG_ENDIAN
--#define LE_TO_BE_16(i16) ((guint16) (((i16) << 8) | ((i16) >> 8)))
--#define LE_TO_BE_32(i32) \
-- (((guint32) (LE_TO_BE_16((guint16) (i32))) << 16) | (LE_TO_BE_16((i32) >> 16)))
--
--#define FLX_FRAME_TYPE_FIX_ENDIANNESS(frm_type_p) \
-- do { \
-- (frm_type_p)->chunks = LE_TO_BE_16((frm_type_p)->chunks); \
-- (frm_type_p)->delay = LE_TO_BE_16((frm_type_p)->delay); \
-- } while(0)
--
--#define FLX_HUFFMAN_TABLE_FIX_ENDIANNESS(hffmn_table_p) \
-- do { \
-- (hffmn_table_p)->codelength = \
-- LE_TO_BE_16((hffmn_table_p)->codelength); \
-- (hffmn_table_p)->numcodes = LE_TO_BE_16((hffmn_table_p)->numcodes); \
-- } while(0)
--
--#define FLX_SEGMENT_TABLE_FIX_ENDIANNESS(sgmnt_table_p) \
-- ((sgmnt_table_p)->segments = LE_TO_BE_16((sgmnt_table_p)->segments))
--
--#define FLX_PREFIX_CHUNK_FIX_ENDIANNESS(prfx_chnk_p) \
-- do { \
-- (prfx_chnk_p)->chunks = LE_TO_BE_16((prfx_chnk_p)->chunks); \
-- } while(0)
--
--#define FLX_FRAME_CHUNK_FIX_ENDIANNESS(frm_chnk_p) \
-- do { \
-- (frm_chnk_p)->size = LE_TO_BE_32((frm_chnk_p)->size); \
-- (frm_chnk_p)->id = LE_TO_BE_16((frm_chnk_p)->id); \
-- } while(0)
--
--#define FLX_HDR_FIX_ENDIANNESS(hdr_p) \
-- do { \
-- (hdr_p)->size = LE_TO_BE_32((hdr_p)->size); \
-- (hdr_p)->type = LE_TO_BE_16((hdr_p)->type); \
-- (hdr_p)->frames = LE_TO_BE_16((hdr_p)->frames); \
-- (hdr_p)->width = LE_TO_BE_16((hdr_p)->width); \
-- (hdr_p)->height = LE_TO_BE_16((hdr_p)->height); \
-- (hdr_p)->depth = LE_TO_BE_16((hdr_p)->depth); \
-- (hdr_p)->flags = LE_TO_BE_16((hdr_p)->flags); \
-- (hdr_p)->speed = LE_TO_BE_32((hdr_p)->speed); \
-- (hdr_p)->reserved1 = LE_TO_BE_16((hdr_p)->reserved1); \
-- (hdr_p)->created = LE_TO_BE_32((hdr_p)->created); \
-- (hdr_p)->creator = LE_TO_BE_32((hdr_p)->creator); \
-- (hdr_p)->updated = LE_TO_BE_32((hdr_p)->updated); \
-- (hdr_p)->updater = LE_TO_BE_32((hdr_p)->updater); \
-- (hdr_p)->aspect_dx = LE_TO_BE_16((hdr_p)->aspect_dx); \
-- (hdr_p)->aspect_dy = LE_TO_BE_16((hdr_p)->aspect_dy); \
-- (hdr_p)->ext_flags = LE_TO_BE_16((hdr_p)->ext_flags); \
-- (hdr_p)->keyframes = LE_TO_BE_16((hdr_p)->keyframes); \
-- (hdr_p)->totalframes = LE_TO_BE_16((hdr_p)->totalframes); \
-- (hdr_p)->req_memory = LE_TO_BE_32((hdr_p)->req_memory); \
-- (hdr_p)->max_regions = LE_TO_BE_16((hdr_p)->max_regions); \
-- (hdr_p)->transp_num = LE_TO_BE_16((hdr_p)->transp_num); \
-- (hdr_p)->oframe1 = LE_TO_BE_32((hdr_p)->oframe1); \
-- (hdr_p)->oframe2 = LE_TO_BE_32((hdr_p)->oframe2); \
-- } while(0)
--#else
--
--#define LE_TO_BE_16(i16) ((i16))
--#define LE_TO_BE_32(i32) ((i32))
--
--#define FLX_FRAME_TYPE_FIX_ENDIANNESS(frm_type_p)
--#define FLX_HUFFMAN_TABLE_FIX_ENDIANNESS(hffmn_table_p)
--#define FLX_SEGMENT_TABLE_FIX_ENDIANNESS(sgmnt_table_p)
--#define FLX_PREFIX_CHUNK_FIX_ENDIANNESS(prfx_chnk_p)
--#define FLX_FRAME_CHUNK_FIX_ENDIANNESS(frm_chnk_p)
--#define FLX_HDR_FIX_ENDIANNESS(hdr_p)
--
--#endif /* G_BYTE_ORDER == G_BIG_ENDIAN */
--
- G_END_DECLS
-
- #endif /* __GST_FLX_FMT_H__ */
-diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c
-index a237976..aa1bed5 100644
---- a/gst/flx/gstflxdec.c
-+++ b/gst/flx/gstflxdec.c
-@@ -1,5 +1,6 @@
- /* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@temple-baptist.com>
-+ * Copyright (C) <2016> Matthew Waters <matthew@centricular.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
-@@ -24,6 +25,7 @@
- /*
- * http://www.coolutils.com/Formats/FLI
- * http://woodshole.er.usgs.gov/operations/modeling/flc.html
-+ * http://www.compuphase.com/flic.htm
- */
-
- #ifdef HAVE_CONFIG_H
-@@ -73,10 +75,14 @@ static GstStateChangeReturn gst_flxdec_change_state (GstElement * element,
- static gboolean gst_flxdec_src_query_handler (GstPad * pad, GstObject * parent,
- GstQuery * query);
-
--static void flx_decode_color (GstFlxDec *, guchar *, guchar *, gint);
--static gboolean flx_decode_brun (GstFlxDec *, guchar *, guchar *);
--static gboolean flx_decode_delta_fli (GstFlxDec *, guchar *, guchar *);
--static gboolean flx_decode_delta_flc (GstFlxDec *, guchar *, guchar *);
-+static gboolean flx_decode_color (GstFlxDec * flxdec, GstByteReader * reader,
-+ GstByteWriter * writer, gint scale);
-+static gboolean flx_decode_brun (GstFlxDec * flxdec,
-+ GstByteReader * reader, GstByteWriter * writer);
-+static gboolean flx_decode_delta_fli (GstFlxDec * flxdec,
-+ GstByteReader * reader, GstByteWriter * writer);
-+static gboolean flx_decode_delta_flc (GstFlxDec * flxdec,
-+ GstByteReader * reader, GstByteWriter * writer);
-
- #define rndalign(off) ((off) + ((off) & 1))
-
-@@ -204,57 +210,59 @@ gst_flxdec_sink_event_handler (GstPad * pad, GstObject * parent,
- }
-
- static gboolean
--flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
-- guchar * dest)
-+flx_decode_chunks (GstFlxDec * flxdec, gulong n_chunks, GstByteReader * reader,
-+ GstByteWriter * writer)
- {
-- FlxFrameChunk *hdr;
- gboolean ret = TRUE;
-
-- g_return_val_if_fail (data != NULL, FALSE);
--
-- while (count--) {
-- hdr = (FlxFrameChunk *) data;
-- FLX_FRAME_CHUNK_FIX_ENDIANNESS (hdr);
-- data += FlxFrameChunkSize;
-+ while (n_chunks--) {
-+ GstByteReader chunk;
-+ guint32 size;
-+ guint16 type;
-+
-+ if (!gst_byte_reader_get_uint32_le (reader, &size))
-+ goto parse_error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &type))
-+ goto parse_error;
-+ GST_LOG_OBJECT (flxdec, "chunk has type 0x%02x size %d", type, size);
-+
-+ if (!gst_byte_reader_get_sub_reader (reader, &chunk,
-+ size - FlxFrameChunkSize)) {
-+ GST_ERROR_OBJECT (flxdec, "Incorrect size in the chunk header");
-+ goto error;
-+ }
-
-- switch (hdr->id) {
-+ switch (type) {
- case FLX_COLOR64:
-- flx_decode_color (flxdec, data, dest, 2);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ ret = flx_decode_color (flxdec, &chunk, writer, 2);
- break;
-
- case FLX_COLOR256:
-- flx_decode_color (flxdec, data, dest, 0);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ ret = flx_decode_color (flxdec, &chunk, writer, 0);
- break;
-
- case FLX_BRUN:
-- ret = flx_decode_brun (flxdec, data, dest);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ ret = flx_decode_brun (flxdec, &chunk, writer);
- break;
-
- case FLX_LC:
-- ret = flx_decode_delta_fli (flxdec, data, dest);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ ret = flx_decode_delta_fli (flxdec, &chunk, writer);
- break;
-
- case FLX_SS2:
-- ret = flx_decode_delta_flc (flxdec, data, dest);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ ret = flx_decode_delta_flc (flxdec, &chunk, writer);
- break;
-
- case FLX_BLACK:
-- memset (dest, 0, flxdec->size);
-+ ret = gst_byte_writer_fill (writer, 0, flxdec->size);
- break;
-
- case FLX_MINI:
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
- break;
-
- default:
-- GST_WARNING ("Unimplented chunk type: 0x%02x size: %d - skipping",
-- hdr->id, hdr->size);
-- data += rndalign (hdr->size) - FlxFrameChunkSize;
-+ GST_WARNING ("Unimplemented chunk type: 0x%02x size: %d - skipping",
-+ type, size);
- break;
- }
-
-@@ -263,43 +271,60 @@ flx_decode_chunks (GstFlxDec * flxdec, gulong count, guchar * data,
- }
-
- return ret;
-+
-+parse_error:
-+ GST_ERROR_OBJECT (flxdec, "Failed to decode chunk");
-+error:
-+ return FALSE;
- }
-
-
--static void
--flx_decode_color (GstFlxDec * flxdec, guchar * data, guchar * dest, gint scale)
-+static gboolean
-+flx_decode_color (GstFlxDec * flxdec, GstByteReader * reader,
-+ GstByteWriter * writer, gint scale)
- {
-- guint packs, count, indx;
-+ guint8 count, indx;
-+ guint16 packs;
-
-- g_return_if_fail (flxdec != NULL);
--
-- packs = (data[0] + (data[1] << 8));
--
-- data += 2;
-+ if (!gst_byte_reader_get_uint16_le (reader, &packs))
-+ goto error;
- indx = 0;
-
-- GST_LOG ("GstFlxDec: cmap packs: %d", packs);
-+ GST_LOG ("GstFlxDec: cmap packs: %d", (guint) packs);
- while (packs--) {
-+ const guint8 *data;
-+ guint16 actual_count;
-+
- /* color map index + skip count */
-- indx += *data++;
-+ if (!gst_byte_reader_get_uint8 (reader, &indx))
-+ goto error;
-
- /* number of rgb triplets */
-- count = *data++ & 0xff;
-- if (count == 0)
-- count = 256;
-+ if (!gst_byte_reader_get_uint8 (reader, &count))
-+ goto error;
-
-- GST_LOG ("GstFlxDec: cmap count: %d (indx: %d)", count, indx);
-- flx_set_palette_vector (flxdec->converter, indx, count, data, scale);
-+ actual_count = count == 0 ? 256 : count;
-
-- data += (count * 3);
-+ if (!gst_byte_reader_get_data (reader, count * 3, &data))
-+ goto error;
-+
-+ GST_LOG_OBJECT (flxdec, "cmap count: %d (indx: %d)", actual_count, indx);
-+ flx_set_palette_vector (flxdec->converter, indx, actual_count,
-+ (guchar *) data, scale);
- }
-+
-+ return TRUE;
-+
-+error:
-+ GST_ERROR_OBJECT (flxdec, "Error decoding color palette");
-+ return FALSE;
- }
-
- static gboolean
--flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
-+flx_decode_brun (GstFlxDec * flxdec, GstByteReader * reader,
-+ GstByteWriter * writer)
- {
-- gulong count, lines, row;
-- guchar x;
-+ gulong lines, row;
-
- g_return_val_if_fail (flxdec != NULL, FALSE);
-
-@@ -310,82 +335,125 @@ flx_decode_brun (GstFlxDec * flxdec, guchar * data, guchar * dest)
- * contain more then 255 RLE packets. we use the frame
- * width instead.
- */
-- data++;
-+ if (!gst_byte_reader_skip (reader, 1))
-+ goto error;
-
- row = flxdec->hdr.width;
- while (row) {
-- count = *data++;
-+ gint8 count;
-+
-+ if (!gst_byte_reader_get_int8 (reader, &count))
-+ goto error;
-+
-+ if (count <= 0) {
-+ const guint8 *data;
-
-- if (count > 0x7f) {
- /* literal run */
-- count = 0x100 - count;
-- if ((glong) row - (glong) count < 0) {
-- GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
-+ count = ABS (count);
-+
-+ GST_LOG_OBJECT (flxdec, "have literal run of size %d", count);
-+
-+ if (count > row) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid BRUN line detected. "
-+ "bytes to write exceeds the end of the row");
- return FALSE;
- }
- row -= count;
-
-- while (count--)
-- *dest++ = *data++;
--
-+ if (!gst_byte_reader_get_data (reader, count, &data))
-+ goto error;
-+ if (!gst_byte_writer_put_data (writer, data, count))
-+ goto error;
- } else {
-- if ((glong) row - (glong) count < 0) {
-- GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected.");
-+ guint8 x;
-+
-+ GST_LOG_OBJECT (flxdec, "have replicate run of size %d", count);
-+
-+ if (count > row) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid BRUN packet detected."
-+ "bytes to write exceeds the end of the row");
- return FALSE;
- }
-
- /* replicate run */
- row -= count;
-- x = *data++;
-
-- while (count--)
-- *dest++ = x;
-+ if (!gst_byte_reader_get_uint8 (reader, &x))
-+ goto error;
-+ if (!gst_byte_writer_fill (writer, x, count))
-+ goto error;
- }
- }
- }
-
- return TRUE;
-+
-+error:
-+ GST_ERROR_OBJECT (flxdec, "Failed to decode BRUN packet");
-+ return FALSE;
- }
-
- static gboolean
--flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
-+flx_decode_delta_fli (GstFlxDec * flxdec, GstByteReader * reader,
-+ GstByteWriter * writer)
- {
-- gulong count, packets, lines, start_line;
-- guchar *start_p, x;
-+ guint16 start_line, lines;
-+ guint line_start_i;
-
- g_return_val_if_fail (flxdec != NULL, FALSE);
- g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
-
- /* use last frame for delta */
-- memcpy (dest, flxdec->delta_data, flxdec->size);
-+ if (!gst_byte_writer_put_data (writer, flxdec->delta_data, flxdec->size))
-+ goto error;
-+
-+ if (!gst_byte_reader_get_uint16_le (reader, &start_line))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &lines))
-+ goto error;
-+ GST_LOG_OBJECT (flxdec, "height %d start line %d line count %d",
-+ flxdec->hdr.height, start_line, lines);
-
-- start_line = (data[0] + (data[1] << 8));
-- lines = (data[2] + (data[3] << 8));
- if (start_line + lines > flxdec->hdr.height) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. too many lines.");
- return FALSE;
- }
-- data += 4;
-
-- /* start position of delta */
-- dest += (flxdec->hdr.width * start_line);
-- start_p = dest;
-+ line_start_i = flxdec->hdr.width * start_line;
-+ if (!gst_byte_writer_set_pos (writer, line_start_i))
-+ goto error;
-
- while (lines--) {
-+ guint8 packets;
-+
- /* packet count */
-- packets = *data++;
-+ if (!gst_byte_reader_get_uint8 (reader, &packets))
-+ goto error;
-+ GST_LOG_OBJECT (flxdec, "have %d packets", packets);
-
- while (packets--) {
- /* skip count */
-- guchar skip = *data++;
-- dest += skip;
-+ guint8 skip;
-+ gint8 count;
-+ if (!gst_byte_reader_get_uint8 (reader, &skip))
-+ goto error;
-+
-+ /* skip bytes */
-+ if (!gst_byte_writer_set_pos (writer,
-+ gst_byte_writer_get_pos (writer) + skip))
-+ goto error;
-
- /* RLE count */
-- count = *data++;
-+ if (!gst_byte_reader_get_int8 (reader, &count))
-+ goto error;
-+
-+ if (count < 0) {
-+ guint8 x;
-
-- if (count > 0x7f) {
- /* literal run */
-- count = 0x100 - count;
-+ count = ABS (count);
-+ GST_LOG_OBJECT (flxdec, "have literal run of size %d at offset %d",
-+ count, skip);
-
- if (skip + count > flxdec->hdr.width) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
-@@ -393,11 +461,16 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
- return FALSE;
- }
-
-- x = *data++;
-- while (count--)
-- *dest++ = x;
--
-+ if (!gst_byte_reader_get_uint8 (reader, &x))
-+ goto error;
-+ if (!gst_byte_writer_fill (writer, x, count))
-+ goto error;
- } else {
-+ const guint8 *data;
-+
-+ GST_LOG_OBJECT (flxdec, "have replicate run of size %d at offset %d",
-+ count, skip);
-+
- if (skip + count > flxdec->hdr.width) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLI packet detected. "
- "line too long.");
-@@ -405,45 +478,60 @@ flx_decode_delta_fli (GstFlxDec * flxdec, guchar * data, guchar * dest)
- }
-
- /* replicate run */
-- while (count--)
-- *dest++ = *data++;
-+ if (!gst_byte_reader_get_data (reader, count, &data))
-+ goto error;
-+ if (!gst_byte_writer_put_data (writer, data, count))
-+ goto error;
- }
- }
-- start_p += flxdec->hdr.width;
-- dest = start_p;
-+ line_start_i += flxdec->hdr.width;
-+ if (!gst_byte_writer_set_pos (writer, line_start_i))
-+ goto error;
- }
-
- return TRUE;
-+
-+error:
-+ GST_ERROR_OBJECT (flxdec, "Failed to decode FLI packet");
-+ return FALSE;
- }
-
- static gboolean
--flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
-+flx_decode_delta_flc (GstFlxDec * flxdec, GstByteReader * reader,
-+ GstByteWriter * writer)
- {
-- gulong count, lines, start_l, opcode;
-- guchar *start_p;
-+ guint16 lines, start_l;
-
- g_return_val_if_fail (flxdec != NULL, FALSE);
- g_return_val_if_fail (flxdec->delta_data != NULL, FALSE);
-
- /* use last frame for delta */
-- memcpy (dest, flxdec->delta_data, flxdec->size);
-+ if (!gst_byte_writer_put_data (writer, flxdec->delta_data, flxdec->size))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &lines))
-+ goto error;
-
-- lines = (data[0] + (data[1] << 8));
- if (lines > flxdec->hdr.height) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. too many lines.");
- return FALSE;
- }
-- data += 2;
-
-- start_p = dest;
- start_l = lines;
-
- while (lines) {
-- dest = start_p + (flxdec->hdr.width * (start_l - lines));
-+ guint16 opcode;
-+
-+ if (!gst_byte_writer_set_pos (writer,
-+ flxdec->hdr.width * (start_l - lines)))
-+ goto error;
-
- /* process opcode(s) */
-- while ((opcode = (data[0] + (data[1] << 8))) & 0xc000) {
-- data += 2;
-+ while (TRUE) {
-+ if (!gst_byte_reader_get_uint16_le (reader, &opcode))
-+ goto error;
-+ if ((opcode & 0xc000) == 0)
-+ break;
-+
- if ((opcode & 0xc000) == 0xc000) {
- /* line skip count */
- gulong skip = (0x10000 - opcode);
-@@ -453,27 +541,44 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- return FALSE;
- }
- start_l += skip;
-- dest += flxdec->hdr.width * skip;
-+ if (!gst_byte_writer_set_pos (writer,
-+ gst_byte_writer_get_pos (writer) + flxdec->hdr.width * skip))
-+ goto error;
- } else {
- /* last pixel */
-- dest += flxdec->hdr.width;
-- *dest++ = (opcode & 0xff);
-+ if (!gst_byte_writer_set_pos (writer,
-+ gst_byte_writer_get_pos (writer) + flxdec->hdr.width))
-+ goto error;
-+ if (!gst_byte_writer_put_uint8 (writer, opcode & 0xff))
-+ goto error;
- }
- }
-- data += 2;
-
- /* last opcode is the packet count */
-+ GST_LOG_OBJECT (flxdec, "have %d packets", opcode);
- while (opcode--) {
- /* skip count */
-- guchar skip = *data++;
-- dest += skip;
-+ guint8 skip;
-+ gint8 count;
-+
-+ if (!gst_byte_reader_get_uint8 (reader, &skip))
-+ goto error;
-+ if (!gst_byte_writer_set_pos (writer,
-+ gst_byte_writer_get_pos (writer) + skip))
-+ goto error;
-
- /* RLE count */
-- count = *data++;
-+ if (!gst_byte_reader_get_int8 (reader, &count))
-+ goto error;
-+
-+ if (count < 0) {
-+ guint16 x;
-
-- if (count > 0x7f) {
- /* replicate word run */
-- count = 0x100 - count;
-+ count = ABS (count);
-+
-+ GST_LOG_OBJECT (flxdec, "have replicate run of size %d at offset %d",
-+ count, skip);
-
- if (skip + count > flxdec->hdr.width) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
-@@ -481,22 +586,31 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- return FALSE;
- }
-
-+ if (!gst_byte_reader_get_uint16_le (reader, &x))
-+ goto error;
-+
- while (count--) {
-- *dest++ = data[0];
-- *dest++ = data[1];
-+ if (!gst_byte_writer_put_uint16_le (writer, x)) {
-+ goto error;
-+ }
- }
-- data += 2;
- } else {
-+ GST_LOG_OBJECT (flxdec, "have literal run of size %d at offset %d",
-+ count, skip);
-+
- if (skip + count > flxdec->hdr.width) {
- GST_ERROR_OBJECT (flxdec, "Invalid FLC packet detected. "
- "line too long.");
- return FALSE;
- }
-
-- /* literal word run */
- while (count--) {
-- *dest++ = *data++;
-- *dest++ = *data++;
-+ guint16 x;
-+
-+ if (!gst_byte_reader_get_uint16_le (reader, &x))
-+ goto error;
-+ if (!gst_byte_writer_put_uint16_le (writer, x))
-+ goto error;
- }
- }
- }
-@@ -504,13 +618,91 @@ flx_decode_delta_flc (GstFlxDec * flxdec, guchar * data, guchar * dest)
- }
-
- return TRUE;
-+
-+error:
-+ GST_ERROR_OBJECT (flxdec, "Failed to decode FLI packet");
-+ return FALSE;
-+}
-+
-+static gboolean
-+_read_flx_header (GstFlxDec * flxdec, GstByteReader * reader, FlxHeader * flxh)
-+{
-+ memset (flxh, 0, sizeof (*flxh));
-+
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->size))
-+ goto error;
-+ if (flxh->size < FlxHeaderSize) {
-+ GST_ERROR_OBJECT (flxdec, "Invalid file size in the header");
-+ return FALSE;
-+ }
-+
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->type))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->frames))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->width))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->height))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->depth))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->flags))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->speed))
-+ goto error;
-+ if (!gst_byte_reader_skip (reader, 2)) /* reserved */
-+ goto error;
-+ /* FLC */
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->created))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->creator))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->updated))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->updater))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->aspect_dx))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->aspect_dy))
-+ goto error;
-+ /* EGI */
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->ext_flags))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->keyframes))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->totalframes))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->req_memory))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->max_regions))
-+ goto error;
-+ if (!gst_byte_reader_get_uint16_le (reader, &flxh->transp_num))
-+ goto error;
-+ if (!gst_byte_reader_skip (reader, 24)) /* reserved */
-+ goto error;
-+ /* FLC */
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->oframe1))
-+ goto error;
-+ if (!gst_byte_reader_get_uint32_le (reader, &flxh->oframe2))
-+ goto error;
-+ if (!gst_byte_reader_skip (reader, 40)) /* reserved */
-+ goto error;
-+
-+ return TRUE;
-+
-+error:
-+ GST_ERROR_OBJECT (flxdec, "Error reading file header");
-+ return FALSE;
- }
-
- static GstFlowReturn
- gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
- {
-+ GstByteReader reader;
-+ GstBuffer *input;
-+ GstMapInfo map_info;
- GstCaps *caps;
-- guint avail;
-+ guint available;
- GstFlowReturn res = GST_FLOW_OK;
-
- GstFlxDec *flxdec;
-@@ -521,31 +713,50 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
- g_return_val_if_fail (flxdec != NULL, GST_FLOW_ERROR);
-
- gst_adapter_push (flxdec->adapter, buf);
-- avail = gst_adapter_available (flxdec->adapter);
-+ available = gst_adapter_available (flxdec->adapter);
-+ input = gst_adapter_get_buffer (flxdec->adapter, available);
-+ if (!gst_buffer_map (input, &map_info, GST_MAP_READ)) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Failed to map buffer"), (NULL));
-+ goto error;
-+ }
-+ gst_byte_reader_init (&reader, map_info.data, map_info.size);
-
- if (flxdec->state == GST_FLXDEC_READ_HEADER) {
-- if (avail >= FlxHeaderSize) {
-- const guint8 *data = gst_adapter_map (flxdec->adapter, FlxHeaderSize);
-+ if (available >= FlxHeaderSize) {
-+ GstByteReader header;
- GstCaps *templ;
-
-- memcpy ((gchar *) & flxdec->hdr, data, FlxHeaderSize);
-- FLX_HDR_FIX_ENDIANNESS (&(flxdec->hdr));
-- gst_adapter_unmap (flxdec->adapter);
-+ if (!gst_byte_reader_get_sub_reader (&reader, &header, FlxHeaderSize)) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Could not read header"), (NULL));
-+ goto unmap_input_error;
-+ }
- gst_adapter_flush (flxdec->adapter, FlxHeaderSize);
-+ available -= FlxHeaderSize;
-+
-+ if (!_read_flx_header (flxdec, &header, &flxdec->hdr)) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Failed to parse header"), (NULL));
-+ goto unmap_input_error;
-+ }
-
- flxh = &flxdec->hdr;
-
- /* check header */
- if (flxh->type != FLX_MAGICHDR_FLI &&
-- flxh->type != FLX_MAGICHDR_FLC && flxh->type != FLX_MAGICHDR_FLX)
-- goto wrong_type;
-+ flxh->type != FLX_MAGICHDR_FLC && flxh->type != FLX_MAGICHDR_FLX) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, WRONG_TYPE, (NULL),
-+ ("not a flx file (type %x)", flxh->type));
-+ goto unmap_input_error;
-+ }
-
-- GST_LOG ("size : %d", flxh->size);
-- GST_LOG ("frames : %d", flxh->frames);
-- GST_LOG ("width : %d", flxh->width);
-- GST_LOG ("height : %d", flxh->height);
-- GST_LOG ("depth : %d", flxh->depth);
-- GST_LOG ("speed : %d", flxh->speed);
-+ GST_INFO_OBJECT (flxdec, "size : %d", flxh->size);
-+ GST_INFO_OBJECT (flxdec, "frames : %d", flxh->frames);
-+ GST_INFO_OBJECT (flxdec, "width : %d", flxh->width);
-+ GST_INFO_OBJECT (flxdec, "height : %d", flxh->height);
-+ GST_INFO_OBJECT (flxdec, "depth : %d", flxh->depth);
-+ GST_INFO_OBJECT (flxdec, "speed : %d", flxh->speed);
-
- flxdec->next_time = 0;
-
-@@ -573,18 +784,32 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
- gst_pad_set_caps (flxdec->srcpad, caps);
- gst_caps_unref (caps);
-
-- if (flxh->depth <= 8)
-- flxdec->converter =
-- flx_colorspace_converter_new (flxh->width, flxh->height);
-+ /* zero means 8 */
-+ if (flxh->depth == 0)
-+ flxh->depth = 8;
-+
-+ if (flxh->depth != 8) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, WRONG_TYPE,
-+ ("%s", "Don't know how to decode non 8 bit depth streams"), (NULL));
-+ goto unmap_input_error;
-+ }
-+
-+ flxdec->converter =
-+ flx_colorspace_converter_new (flxh->width, flxh->height);
-
- if (flxh->type == FLX_MAGICHDR_FLC || flxh->type == FLX_MAGICHDR_FLX) {
-- GST_LOG ("(FLC) aspect_dx : %d", flxh->aspect_dx);
-- GST_LOG ("(FLC) aspect_dy : %d", flxh->aspect_dy);
-- GST_LOG ("(FLC) oframe1 : 0x%08x", flxh->oframe1);
-- GST_LOG ("(FLC) oframe2 : 0x%08x", flxh->oframe2);
-+ GST_INFO_OBJECT (flxdec, "(FLC) aspect_dx : %d", flxh->aspect_dx);
-+ GST_INFO_OBJECT (flxdec, "(FLC) aspect_dy : %d", flxh->aspect_dy);
-+ GST_INFO_OBJECT (flxdec, "(FLC) oframe1 : 0x%08x", flxh->oframe1);
-+ GST_INFO_OBJECT (flxdec, "(FLC) oframe2 : 0x%08x", flxh->oframe2);
- }
-
- flxdec->size = ((guint) flxh->width * (guint) flxh->height);
-+ if (flxdec->size >= G_MAXSIZE / 4) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Cannot allocate required memory"), (NULL));
-+ goto unmap_input_error;
-+ }
-
- /* create delta and output frame */
- flxdec->frame_data = g_malloc (flxdec->size);
-@@ -596,55 +821,66 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
- GstBuffer *out;
-
- /* while we have enough data in the adapter */
-- while (avail >= FlxFrameChunkSize && res == GST_FLOW_OK) {
-- FlxFrameChunk flxfh;
-- guchar *chunk;
-- const guint8 *data;
-- GstMapInfo map;
--
-- chunk = NULL;
-- data = gst_adapter_map (flxdec->adapter, FlxFrameChunkSize);
-- memcpy (&flxfh, data, FlxFrameChunkSize);
-- FLX_FRAME_CHUNK_FIX_ENDIANNESS (&flxfh);
-- gst_adapter_unmap (flxdec->adapter);
--
-- switch (flxfh.id) {
-- case FLX_FRAME_TYPE:
-- /* check if we have the complete frame */
-- if (avail < flxfh.size)
-- goto need_more_data;
--
-- /* flush header */
-- gst_adapter_flush (flxdec->adapter, FlxFrameChunkSize);
--
-- chunk = gst_adapter_take (flxdec->adapter,
-- flxfh.size - FlxFrameChunkSize);
-- FLX_FRAME_TYPE_FIX_ENDIANNESS ((FlxFrameType *) chunk);
-- if (((FlxFrameType *) chunk)->chunks == 0)
-- break;
-+ while (available >= FlxFrameChunkSize && res == GST_FLOW_OK) {
-+ guint32 size;
-+ guint16 type;
-
-- /* create 32 bits output frame */
--// res = gst_pad_alloc_buffer_and_set_caps (flxdec->srcpad,
--// GST_BUFFER_OFFSET_NONE,
--// flxdec->size * 4, GST_PAD_CAPS (flxdec->srcpad), &out);
--// if (res != GST_FLOW_OK)
--// break;
-+ if (!gst_byte_reader_get_uint32_le (&reader, &size))
-+ goto parse_error;
-+ if (available < size)
-+ goto need_more_data;
-
-- out = gst_buffer_new_and_alloc (flxdec->size * 4);
-+ available -= size;
-+ gst_adapter_flush (flxdec->adapter, size);
-+
-+ if (!gst_byte_reader_get_uint16_le (&reader, &type))
-+ goto parse_error;
-+
-+ switch (type) {
-+ case FLX_FRAME_TYPE:{
-+ GstByteReader chunks;
-+ GstByteWriter writer;
-+ guint16 n_chunks;
-+ GstMapInfo map;
-+
-+ GST_LOG_OBJECT (flxdec, "Have frame type 0x%02x of size %d", type,
-+ size);
-+
-+ if (!gst_byte_reader_get_sub_reader (&reader, &chunks,
-+ size - FlxFrameChunkSize))
-+ goto parse_error;
-+
-+ if (!gst_byte_reader_get_uint16_le (&chunks, &n_chunks))
-+ goto parse_error;
-+ GST_LOG_OBJECT (flxdec, "Have %d chunks", n_chunks);
-+
-+ if (n_chunks == 0)
-+ break;
-+ if (!gst_byte_reader_skip (&chunks, 8)) /* reserved */
-+ goto parse_error;
-+
-+ gst_byte_writer_init_with_data (&writer, flxdec->frame_data,
-+ flxdec->size, TRUE);
-
- /* decode chunks */
-- if (!flx_decode_chunks (flxdec,
-- ((FlxFrameType *) chunk)->chunks,
-- chunk + FlxFrameTypeSize, flxdec->frame_data)) {
-+ if (!flx_decode_chunks (flxdec, n_chunks, &chunks, &writer)) {
- GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
- ("%s", "Could not decode chunk"), NULL);
-- return GST_FLOW_ERROR;
-+ goto unmap_input_error;
- }
-+ gst_byte_writer_reset (&writer);
-
- /* save copy of the current frame for possible delta. */
- memcpy (flxdec->delta_data, flxdec->frame_data, flxdec->size);
-
-- gst_buffer_map (out, &map, GST_MAP_WRITE);
-+ out = gst_buffer_new_and_alloc (flxdec->size * 4);
-+ if (!gst_buffer_map (out, &map, GST_MAP_WRITE)) {
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Could not map output buffer"), NULL);
-+ gst_buffer_unref (out);
-+ goto unmap_input_error;
-+ }
-+
- /* convert current frame. */
- flx_colorspace_convert (flxdec->converter, flxdec->frame_data,
- map.data);
-@@ -655,30 +891,32 @@ gst_flxdec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
-
- res = gst_pad_push (flxdec->srcpad, out);
- break;
-+ }
- default:
-- /* check if we have the complete frame */
-- if (avail < flxfh.size)
-- goto need_more_data;
--
-- gst_adapter_flush (flxdec->adapter, flxfh.size);
-+ GST_DEBUG_OBJECT (flxdec, "Unknown frame type 0x%02x, skipping %d",
-+ type, size);
-+ if (!gst_byte_reader_skip (&reader, size - FlxFrameChunkSize))
-+ goto parse_error;
- break;
- }
--
-- g_free (chunk);
--
-- avail = gst_adapter_available (flxdec->adapter);
- }
- }
-+
-+ gst_buffer_unmap (input, &map_info);
-+ gst_buffer_unref (input);
-+
- need_more_data:
- return res;
-
- /* ERRORS */
--wrong_type:
-- {
-- GST_ELEMENT_ERROR (flxdec, STREAM, WRONG_TYPE, (NULL),
-- ("not a flx file (type %x)", flxh->type));
-- return GST_FLOW_ERROR;
-- }
-+parse_error:
-+ GST_ELEMENT_ERROR (flxdec, STREAM, DECODE,
-+ ("%s", "Failed to parse stream"), (NULL));
-+unmap_input_error:
-+ gst_buffer_unmap (input, &map_info);
-+ gst_buffer_unref (input);
-+error:
-+ return GST_FLOW_ERROR;
- }
-
- static GstStateChangeReturn
-diff --git a/gst/flx/gstflxdec.h b/gst/flx/gstflxdec.h
-index 3f9a0aa..4fd8dfd 100644
---- a/gst/flx/gstflxdec.h
-+++ b/gst/flx/gstflxdec.h
-@@ -23,6 +23,8 @@
- #include <gst/gst.h>
-
- #include <gst/base/gstadapter.h>
-+#include <gst/base/gstbytereader.h>
-+#include <gst/base/gstbytewriter.h>
- #include "flx_color.h"
-
- G_BEGIN_DECLS
-@@ -45,7 +47,7 @@ struct _GstFlxDec {
-
- guint8 *delta_data, *frame_data;
- GstAdapter *adapter;
-- gulong size;
-+ gsize size;
- GstFlxDecState state;
- gint64 frame_time;
- gint64 next_time;
---
-2.10.2
-
diff --git a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash
index 2e3db3d81..98b798869 100644
--- a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash
+++ b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.8.3.tar.xz.sha256sum
-sha256 a1d6579ba203a7734927c24b90bf6590d846c5a5fcec01a48201018c8ad2827a gst-plugins-good-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.10.2.tar.xz.sha256sum
+sha256 198f325bcce982dce1ebeb36929a5f430b8bf9528e0d519e18df0b29e1d23313 gst-plugins-good-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk
index b4bc2e474..da0345497 100644
--- a/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk
+++ b/package/gstreamer1/gst1-plugins-good/gst1-plugins-good.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_PLUGINS_GOOD_VERSION = 1.8.3
+GST1_PLUGINS_GOOD_VERSION = 1.10.2
GST1_PLUGINS_GOOD_SOURCE = gst-plugins-good-$(GST1_PLUGINS_GOOD_VERSION).tar.xz
GST1_PLUGINS_GOOD_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-good
GST1_PLUGINS_GOOD_LICENSE_FILES = COPYING
diff --git a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash
index 1c6aa7d80..a86fd6492 100644
--- a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash
+++ b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.8.3.tar.xz.sha256sum
-sha256 6fa2599fdd072d31fbaf50c34af406e2be944a010b1f4eab67a5fe32a0310693 gst-plugins-ugly-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.10.2.tar.xz.sha256sum
+sha256 f303dd4c2ebc963e8b0b03c3069f70657bcf1cd62224d344ad579b3dda17ec9d gst-plugins-ugly-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk
index 4a67a73bc..b064c954c 100644
--- a/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk
+++ b/package/gstreamer1/gst1-plugins-ugly/gst1-plugins-ugly.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_PLUGINS_UGLY_VERSION = 1.8.3
+GST1_PLUGINS_UGLY_VERSION = 1.10.2
GST1_PLUGINS_UGLY_SOURCE = gst-plugins-ugly-$(GST1_PLUGINS_UGLY_VERSION).tar.xz
GST1_PLUGINS_UGLY_SITE = https://gstreamer.freedesktop.org/src/gst-plugins-ugly
GST1_PLUGINS_UGLY_LICENSE_FILES = COPYING
diff --git a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash
index a30afbc1d..30cd68466 100644
--- a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash
+++ b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.hash
@@ -1,2 +1,2 @@
-# From https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.8.3.tar.xz.sha256sum
-sha256 010f06800c1c957851d1352e5ec7a8ba3ce6a857fec1b8afc7d1a9e5f53288bf gst-rtsp-server-1.8.3.tar.xz
+# From https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.10.2.tar.xz.sha256sum
+sha256 822dd6f754fea2bbf3369a7c388372f49b74668fb57943c1888675e544b07235 gst-rtsp-server-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk
index 458e3aff3..8fcaaf472 100644
--- a/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk
+++ b/package/gstreamer1/gst1-rtsp-server/gst1-rtsp-server.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_RTSP_SERVER_VERSION = 1.8.3
+GST1_RTSP_SERVER_VERSION = 1.10.2
GST1_RTSP_SERVER_SOURCE = gst-rtsp-server-$(GST1_RTSP_SERVER_VERSION).tar.xz
GST1_RTSP_SERVER_SITE = http://gstreamer.freedesktop.org/src/gst-rtsp-server
GST1_RTSP_SERVER_LICENSE = LGPLv2+
diff --git a/package/gstreamer1/gst1-validate/Config.in b/package/gstreamer1/gst1-validate/Config.in
index a9bb2aa38..2022d38d9 100644
--- a/package/gstreamer1/gst1-validate/Config.in
+++ b/package/gstreamer1/gst1-validate/Config.in
@@ -2,6 +2,7 @@ config BR2_PACKAGE_GST1_VALIDATE
bool "gst1-validate"
depends on BR2_PACKAGE_PYTHON
select BR2_PACKAGE_GST1_PLUGINS_BASE
+ select BR2_PACKAGE_JSON_GLIB
select BR2_PACKAGE_PYTHON_PYEXPAT
# cairo is autodetected but needs PNG support
select BR2_PACKAGE_CAIRO_PNG if BR2_PACKAGE_CAIRO
diff --git a/package/gstreamer1/gst1-validate/gst1-validate.hash b/package/gstreamer1/gst1-validate/gst1-validate.hash
index 09061f402..70b868ff0 100644
--- a/package/gstreamer1/gst1-validate/gst1-validate.hash
+++ b/package/gstreamer1/gst1-validate/gst1-validate.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.8.3.tar.xz.sha256sum
-sha256 4525a4fb5b85b8a49674e00d652bee9ac62c56241c148abbff23efa50a224e34 gst-validate-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gst-validate/gst-validate-1.10.2.tar.xz.sha256sum
+sha256 be274418d78694cecb1be6c860f3f499baa4313eece60a654507ab14d6989ed7 gst-validate-1.10.2.tar.xz
diff --git a/package/gstreamer1/gst1-validate/gst1-validate.mk b/package/gstreamer1/gst1-validate/gst1-validate.mk
index 372e5d663..69a78bde3 100644
--- a/package/gstreamer1/gst1-validate/gst1-validate.mk
+++ b/package/gstreamer1/gst1-validate/gst1-validate.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GST1_VALIDATE_VERSION = 1.8.3
+GST1_VALIDATE_VERSION = 1.10.2
GST1_VALIDATE_SOURCE = gst-validate-$(GST1_VALIDATE_VERSION).tar.xz
GST1_VALIDATE_SITE = https://gstreamer.freedesktop.org/src/gst-validate
GST1_VALIDATE_LICENSE = LGPLv2.1+
@@ -15,6 +15,7 @@ GST1_VALIDATE_CONF_OPTS = --disable-sphinx-doc
GST1_VALIDATE_DEPENDENCIES = \
gstreamer1 \
gst1-plugins-base \
+ json-glib \
host-python \
python \
$(if $(BR2_PACKAGE_CAIRO),cairo)
diff --git a/package/gstreamer1/gstreamer1/gstreamer1.hash b/package/gstreamer1/gstreamer1/gstreamer1.hash
index c85518e27..3fd7c6beb 100644
--- a/package/gstreamer1/gstreamer1/gstreamer1.hash
+++ b/package/gstreamer1/gstreamer1/gstreamer1.hash
@@ -1,2 +1,2 @@
-# From http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.8.3.tar.xz.sha256sum
-sha256 66b37762d4fdcd63bce5a2bec57e055f92420e95037361609900278c0db7c53f gstreamer-1.8.3.tar.xz
+# From http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.10.2.tar.xz.sha256sum
+sha256 150e8e81febac94c161d8141cde78a38038a8f56e8ec549f353da54994278d65 gstreamer-1.10.2.tar.xz
diff --git a/package/gstreamer1/gstreamer1/gstreamer1.mk b/package/gstreamer1/gstreamer1/gstreamer1.mk
index d69c3e87c..6086e1329 100644
--- a/package/gstreamer1/gstreamer1/gstreamer1.mk
+++ b/package/gstreamer1/gstreamer1/gstreamer1.mk
@@ -4,7 +4,7 @@
#
################################################################################
-GSTREAMER1_VERSION = 1.8.3
+GSTREAMER1_VERSION = 1.10.2
GSTREAMER1_SOURCE = gstreamer-$(GSTREAMER1_VERSION).tar.xz
GSTREAMER1_SITE = https://gstreamer.freedesktop.org/src/gstreamer
GSTREAMER1_INSTALL_STAGING = YES
@@ -34,16 +34,11 @@ GSTREAMER1_CONF_OPTS = \
$(if $(BR2_PACKAGE_GSTREAMER1_PLUGIN_REGISTRY),,--disable-registry) \
$(if $(BR2_PACKAGE_GSTREAMER1_INSTALL_TOOLS),,--disable-tools)
-GSTREAMER1_DEPENDENCIES = libglib2 host-pkgconf host-bison host-flex
-
-# gstreamer-1.6 changed the location of its gstconfig.h file,
-# and unfortunately, not all (by far!) consumers have been
-# updated to look in the correct location.
-# Add a symlink to the legacy location
-define GSTREAMER1_LEGACY_CGSTCONFIG_H
- cd $(STAGING_DIR)/usr/include/gstreamer-1.0/gst && \
- ln -sf ../../../lib/gstreamer-1.0/include/gst/gstconfig.h .
-endef
-GSTREAMER1_POST_INSTALL_STAGING_HOOKS += GSTREAMER1_LEGACY_CGSTCONFIG_H
+GSTREAMER1_DEPENDENCIES = \
+ host-bison \
+ host-flex \
+ host-pkgconf \
+ libglib2 \
+ $(if $(BR2_PACKAGE_LIBUNWIND),libunwind)
$(eval $(autotools-package))
diff --git a/package/htop/htop.mk b/package/htop/htop.mk
index 7409a78e2..adc509014 100644
--- a/package/htop/htop.mk
+++ b/package/htop/htop.mk
@@ -7,10 +7,15 @@
HTOP_VERSION = 2.0.2
HTOP_SITE = http://hisham.hm/htop/releases/$(HTOP_VERSION)
HTOP_DEPENDENCIES = ncurses
-HTOP_CONF_OPTS = --disable-unicode
# Prevent htop build system from searching the host paths
HTOP_CONF_ENV = HTOP_NCURSES_CONFIG_SCRIPT=$(STAGING_DIR)/usr/bin/ncurses5-config
HTOP_LICENSE = GPLv2
HTOP_LICENSE_FILES = COPYING
+ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y)
+HTOP_CONF_OPTS += --enable-unicode
+else
+HTOP_CONF_OPTS += --disable-unicode
+endif
+
$(eval $(autotools-package))
diff --git a/package/kexec-lite/kexec-lite.hash b/package/kexec-lite/kexec-lite.hash
index e8179b702..0f212241d 100644
--- a/package/kexec-lite/kexec-lite.hash
+++ b/package/kexec-lite/kexec-lite.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 2300187bf25616c382cb2f191a2eb13033e019511854794ce234a76cf9f5ad6b kexec-lite-783fb4a811d0b0f8cc2ed68fa7872dcad56a3944.tar.gz
+sha256 5786ddc0c94ead4fd4a1fded44bb1da0c9bc91af08049fed373ea161603e1e1f kexec-lite-86e45a47e8cc1f598ccfa9b873a23067f4ecc36f.tar.gz
diff --git a/package/kexec-lite/kexec-lite.mk b/package/kexec-lite/kexec-lite.mk
index 27bc20485..2467306da 100644
--- a/package/kexec-lite/kexec-lite.mk
+++ b/package/kexec-lite/kexec-lite.mk
@@ -4,7 +4,7 @@
#
################################################################################
-KEXEC_LITE_VERSION = 783fb4a811d0b0f8cc2ed68fa7872dcad56a3944
+KEXEC_LITE_VERSION = 86e45a47e8cc1f598ccfa9b873a23067f4ecc36f
KEXEC_LITE_SITE = $(call github,antonblanchard,kexec-lite,$(KEXEC_LITE_VERSION))
KEXEC_LITE_LICENSE = GPLv2+
KEXEC_LITE_DEPENDENCIES = elfutils dtc
diff --git a/package/kodi/0012-Fix_includes_in_amcodec.patch b/package/kodi/0012-Fix_includes_in_amcodec.patch
new file mode 100644
index 000000000..4a6d44f68
--- /dev/null
+++ b/package/kodi/0012-Fix_includes_in_amcodec.patch
@@ -0,0 +1,38 @@
+commit 4bbb21aa5cee6b2f40759aa8b1bd65246a237f79
+Author: Alex Deryskyba <alex@codesnake.com>
+Date: Wed May 4 01:38:27 2016 +0200
+
+ [aml] Fix includes in amcodec/codec.h to make them relative
+
+[Taken from upstream commit
+https://github.com/xbmc/xbmc/commit/4bbb21aa5cee6b2f40759aa8b1bd65246a237f79.]
+Signed-off-by: Dagg Stompler <daggs@gmx.com>
+
+diff --git a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h
+index 187d4d5..632c24e 100644
+--- a/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h
++++ b/tools/depends/target/libamplayer/libamplayer/include/amcodec/codec.h
+@@ -12,8 +12,8 @@
+ #ifndef CODEC_CTRL_H_
+ #define CODEC_CTRL_H_
+
+-#include <codec_type.h>
+-#include <codec_error.h>
++#include "codec_type.h"
++#include "codec_error.h"
+
+
+ int codec_init(codec_para_t *);
+diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
+index a1a3447..1bf5a89 100644
+--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
++++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
+@@ -24,8 +24,6 @@ endif
+ ifeq (@USE_LIBAMCODEC@,1)
+ SRCS += AMLCodec.cpp
+ SRCS += DVDVideoCodecAmlogic.cpp
+-INCLUDES += -I$(prefix)/include/amcodec
+-INCLUDES += -I$(prefix)/include/amplayer
+ endif
+
+ ifeq (@USE_ANDROID@,1)
diff --git a/package/kodi/kodi.mk b/package/kodi/kodi.mk
index e0361dae7..de4d308f6 100644
--- a/package/kodi/kodi.mk
+++ b/package/kodi/kodi.mk
@@ -96,9 +96,10 @@ endif
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
KODI_DEPENDENCIES += rpi-userland
KODI_CONF_OPTS += --with-platform=raspberry-pi --enable-player=omxplayer
-KODI_CONF_ENV += INCLUDES="-I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \
- -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux" \
- LIBS="-lvcos -lvchostif"
+KODI_INCLUDES += \
+ -I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \
+ -I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux
+KODI_LIBS = -lvcos -lvchostif
endif
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
@@ -113,6 +114,16 @@ KODI_DEPENDENCIES += imx-vpuwrap
KODI_CONF_OPTS += --enable-codec=imxvpu
endif
+ifeq ($(BR2_PACKAGE_LIBAMCODEC),y)
+KODI_DEPENDENCIES += libamcodec
+KODI_CONF_OPTS += --enable-codec=amcodec
+KODI_INCLUDES += -I$(STAGING_DIR)/usr/include/amcodec
+endif
+
+KODI_CONF_ENV += \
+ INCLUDES="$(KODI_INCLUDES)" \
+ LIBS="$(KODI_LIBS)"
+
ifeq ($(BR2_PACKAGE_LIBCAP),y)
KODI_CONF_OPTS += --enable-libcap
KODI_DEPENDENCIES += libcap
diff --git a/package/lcms2/lcms2.hash b/package/lcms2/lcms2.hash
index 908822f8c..1cf1017c5 100644
--- a/package/lcms2/lcms2.hash
+++ b/package/lcms2/lcms2.hash
@@ -1,5 +1,4 @@
-# From http://sourceforge.net/projects/lcms/files/lcms/2.7/
-sha1 625f0d74bad4a0f6f917120fd992437d26f754d2 lcms2-2.7.tar.gz
-md5 06c1626f625424a811fb4b5eb070839d lcms2-2.7.tar.gz
+# From https://sourceforge.net/projects/lcms/files/lcms/2.8
+sha1 e9535ec4a572b8fc7a1c405c35e6f4dc97714197 lcms2-2.8.tar.gz
# Locally computed:
-sha256 4524234ae7de185e6b6da5d31d6875085b2198bc63b1211f7dde6e2d197d6a53 lcms2-2.7.tar.gz
+sha256 66d02b229d2ea9474e62c2b6cd6720fde946155cd1d0d2bffdab829790a0fb22 lcms2-2.8.tar.gz
diff --git a/package/lcms2/lcms2.mk b/package/lcms2/lcms2.mk
index 265af2909..8d0609ea1 100644
--- a/package/lcms2/lcms2.mk
+++ b/package/lcms2/lcms2.mk
@@ -4,8 +4,8 @@
#
################################################################################
-LCMS2_VERSION = 2.7
-LCMS2_SITE = http://downloads.sourceforge.net/lcms/lcms
+LCMS2_VERSION = 2.8
+LCMS2_SITE = http://downloads.sourceforge.net/project/lcms/lcms/$(LCMS2_VERSION)
LCMS2_LICENSE = MIT
LCMS2_LICENSE_FILES = COPYING
LCMS2_INSTALL_STAGING = YES
diff --git a/package/lftp/lftp.hash b/package/lftp/lftp.hash
index 57a5205af..0e0f927a5 100644
--- a/package/lftp/lftp.hash
+++ b/package/lftp/lftp.hash
@@ -1,2 +1,2 @@
-# Locally calculated
-sha256 3b22259cdc4c1a6ae349057d16bda4b4816929e04d223242ab8927bc31a48e7c lftp-4.7.3.tar.xz
+# Locally calculated after checking gpg signature
+sha256 bf67c4d128b6f769a4082947376a9679c5ee3463a24ab761a0757f75d70bd92c lftp-4.7.4.tar.xz
diff --git a/package/lftp/lftp.mk b/package/lftp/lftp.mk
index 802bbc74b..a7e1f9261 100644
--- a/package/lftp/lftp.mk
+++ b/package/lftp/lftp.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LFTP_VERSION = 4.7.3
+LFTP_VERSION = 4.7.4
LFTP_SOURCE = lftp-$(LFTP_VERSION).tar.xz
LFTP_SITE = http://lftp.yar.ru/ftp
LFTP_LICENSE = GPLv3+
diff --git a/package/libatomic_ops/Config.in b/package/libatomic_ops/Config.in
index c6fe7a03b..e9206f339 100644
--- a/package/libatomic_ops/Config.in
+++ b/package/libatomic_ops/Config.in
@@ -1,6 +1,8 @@
config BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS
bool
- default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_sparc || BR2_sparc64 || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64
+ default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_sparc || BR2_sparc64 || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+ # Unsupported for MIPS R6
+ depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
config BR2_PACKAGE_LIBATOMIC_OPS
bool "libatomic_ops"
diff --git a/package/libatomic_ops/libatomic_ops.hash b/package/libatomic_ops/libatomic_ops.hash
index d91f7059d..47a281ddf 100644
--- a/package/libatomic_ops/libatomic_ops.hash
+++ b/package/libatomic_ops/libatomic_ops.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 2616be0a2f70f7e3eb12f131a36e32723ed5a1928f17b886c3e7c62f7ed14339 libatomic_ops-libatomic_ops-7_4_2.tar.gz
+sha256 ef8335676f18a111f885d48810ab090fb6bfad94e5a5dd76cdccd2a536828662 libatomic_ops-libatomic_ops-7_4_4.tar.gz
diff --git a/package/libatomic_ops/libatomic_ops.mk b/package/libatomic_ops/libatomic_ops.mk
index fd4572675..b5e217237 100644
--- a/package/libatomic_ops/libatomic_ops.mk
+++ b/package/libatomic_ops/libatomic_ops.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBATOMIC_OPS_VERSION = libatomic_ops-7_4_2
+LIBATOMIC_OPS_VERSION = libatomic_ops-7_4_4
LIBATOMIC_OPS_SITE = $(call github,ivmai,libatomic_ops,$(LIBATOMIC_OPS_VERSION))
LIBATOMIC_OPS_AUTORECONF = YES
diff --git a/package/libdrm/libdrm.hash b/package/libdrm/libdrm.hash
index bda054eb0..313170522 100644
--- a/package/libdrm/libdrm.hash
+++ b/package/libdrm/libdrm.hash
@@ -1,2 +1,2 @@
-# From https://lists.freedesktop.org/archives/dri-devel/2016-October/119998.html
-sha256 c66287ddeee5f46ea8f8880b94b80acb3bbc33ba6321d17767eef145046df9b8 libdrm-2.4.71.tar.bz2
+# From https://lists.freedesktop.org/archives/dri-devel/2016-November/123704.html
+sha256 96bfd39242fe168017d95f22e141645a35591f5902a7d98c2fa4ca8c31df5e4d libdrm-2.4.73.tar.bz2
diff --git a/package/libdrm/libdrm.mk b/package/libdrm/libdrm.mk
index cce50236f..b4e1aada7 100644
--- a/package/libdrm/libdrm.mk
+++ b/package/libdrm/libdrm.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBDRM_VERSION = 2.4.71
+LIBDRM_VERSION = 2.4.73
LIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.bz2
LIBDRM_SITE = http://dri.freedesktop.org/libdrm
LIBDRM_LICENSE = MIT
diff --git a/package/libgtk2/libgtk2.hash b/package/libgtk2/libgtk2.hash
index 175702f75..3388c5cda 100644
--- a/package/libgtk2/libgtk2.hash
+++ b/package/libgtk2/libgtk2.hash
@@ -1,2 +1,2 @@
-# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.30.sha256sum
-sha256 0d15cec3b6d55c60eac205b1f3ba81a1ed4eadd9d0f8e7c508bc7065d0c4ca50 gtk+-2.24.30.tar.xz
+# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.sha256sum
+sha256 68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658 gtk+-2.24.31.tar.xz
diff --git a/package/libgtk2/libgtk2.mk b/package/libgtk2/libgtk2.mk
index 94fa97f20..cf8b2f4ee 100644
--- a/package/libgtk2/libgtk2.mk
+++ b/package/libgtk2/libgtk2.mk
@@ -5,7 +5,7 @@
################################################################################
LIBGTK2_VERSION_MAJOR = 2.24
-LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).30
+LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).31
LIBGTK2_SOURCE = gtk+-$(LIBGTK2_VERSION).tar.xz
LIBGTK2_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK2_VERSION_MAJOR)
LIBGTK2_INSTALL_STAGING = YES
diff --git a/package/libgtk3/libgtk3.hash b/package/libgtk3/libgtk3.hash
index b60671753..1c58efc2f 100644
--- a/package/libgtk3/libgtk3.hash
+++ b/package/libgtk3/libgtk3.hash
@@ -1,2 +1,2 @@
-# From http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.2.sha256sum
-sha256 2343dcaed2fc237ef718136ff4110fef7eb1ebfe178a9b064aa21cd74ecb6946 gtk+-3.22.2.tar.xz
+# From http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.3.sha256sum
+sha256 e190ab1a9a893861b8e8be341aa57bce8b7146d6445ebfe5a8ab64236fe82ed3 gtk+-3.22.3.tar.xz
diff --git a/package/libgtk3/libgtk3.mk b/package/libgtk3/libgtk3.mk
index b7cea7dd3..0b9a9992e 100644
--- a/package/libgtk3/libgtk3.mk
+++ b/package/libgtk3/libgtk3.mk
@@ -5,7 +5,7 @@
################################################################################
LIBGTK3_VERSION_MAJOR = 3.22
-LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).2
+LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).3
LIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz
LIBGTK3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK3_VERSION_MAJOR)
LIBGTK3_LICENSE = LGPLv2+
diff --git a/package/libnet/0001-support-musl-libc.patch b/package/libnet/0001-support-musl-libc.patch
new file mode 100644
index 000000000..0704157bb
--- /dev/null
+++ b/package/libnet/0001-support-musl-libc.patch
@@ -0,0 +1,50 @@
+From ffd7fab744a9ad2893169a8fb6244074604d5d0d Mon Sep 17 00:00:00 2001
+From: rofl0r <retnyg@gmx.net>
+Date: Tue, 12 Aug 2014 21:51:39 +0200
+Subject: [PATCH] Support musl libc, remove support for glibc < 2.1
+
+The workarounds for glibc < 2.1 (was released february 1999) break the
+build with musl libc.
+
+It is very unlikely that 2.0 or earlier is still in use, and if so,
+1) that's a big security hole
+2) code wouldnt compile anyway since noone tested build in the last decade
+3) user of it wouldn't expect anyway to get bleeding edge sw built on it,
+ so he would just use the latest version that works for him.
+
+Closes #52
+---
+ libnet/src/libnet_link_linux.c | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/libnet/src/libnet_link_linux.c b/libnet/src/libnet_link_linux.c
+index 054458d..3c6df3c 100644
+--- a/src/libnet_link_linux.c
++++ b/src/libnet_link_linux.c
+@@ -30,26 +30,15 @@
+ #include <sys/time.h>
+
+ #include <net/if.h>
+-#if (__GLIBC__)
+ #include <netinet/if_ether.h>
+ #include <net/if_arp.h>
+-#else
+-#include <linux/if_arp.h>
+-#include <linux/if_ether.h>
+-#endif
+
+ #if (HAVE_PACKET_SOCKET)
+ #ifndef SOL_PACKET
+ #define SOL_PACKET 263
+ #endif /* SOL_PACKET */
+-#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
+ #include <netpacket/packet.h>
+ #include <net/ethernet.h> /* the L2 protocols */
+-#else
+-#include <asm/types.h>
+-#include <linux/if_packet.h>
+-#include <linux/if_ether.h> /* The L2 protocols */
+-#endif
+ #endif /* HAVE_PACKET_SOCKET */
+
+ #include "../include/libnet.h"
diff --git a/package/libnet/Config.in b/package/libnet/Config.in
index 0c5c230af..7186972b7 100644
--- a/package/libnet/Config.in
+++ b/package/libnet/Config.in
@@ -1,12 +1,7 @@
config BR2_PACKAGE_LIBNET
bool "libnet"
- # Build with musl fails due to header issues
- depends on !BR2_TOOLCHAIN_USES_MUSL
help
libnet provides a portable framework for low-level network
packet construction.
http://sourceforge.net/projects/libnet-dev
-
-comment "libnet needs a glibc or uClibc toolchain"
- depends on BR2_TOOLCHAIN_USES_MUSL
diff --git a/package/libpjsip/0001-Use-mutex-types-compatible-with-musl-fixes-musl-buil.patch b/package/libpjsip/0001-Use-mutex-types-compatible-with-musl-fixes-musl-buil.patch
deleted file mode 100644
index ab3444b71..000000000
--- a/package/libpjsip/0001-Use-mutex-types-compatible-with-musl-fixes-musl-buil.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From ba1057d74aac6c2dde5477bd6a2deea79f14962c Mon Sep 17 00:00:00 2001
-From: Luca Ceresoli <luca@lucaceresoli.net>
-Date: Sat, 12 Mar 2016 15:19:34 +0100
-Subject: [PATCH 1/2] Use mutex types compatible with musl (fixes musl build)
-
-PTHREAD_MUTEX_FAST_NP and PTHREAD_MUTEX_RECURSIVE_NP are not defined
-in the musl C library. Use values that map to the same mutex type in
-GNU libc and uClibc-ng.
-
-Fixes the following build errors when building with musl:
-
- ../src/pj/os_core_unix.c: In function 'init_mutex':
- ../src/pj/os_core_unix.c:1128:40: error: 'PTHREAD_MUTEX_FAST_NP' undeclared (first use in this function)
- rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_FAST_NP);
- ^
- ../src/pj/os_core_unix.c:1128:40: note: each undeclared identifier is reported only once for each function it appears in
- ../src/pj/os_core_unix.c:1138:40: error: 'PTHREAD_MUTEX_RECURSIVE_NP' undeclared (first use in this function)
- rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
- ^
-
-Original patch:
-http://git.alpinelinux.org/cgit/aports/plain/main/pjproject/musl-fixes.patch
-
-Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
----
- pjlib/src/pj/os_core_unix.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c
-index 1c87b2f..f08ba27 100644
---- a/pjlib/src/pj/os_core_unix.c
-+++ b/pjlib/src/pj/os_core_unix.c
-@@ -1125,7 +1125,7 @@ static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name, int type)
- if (type == PJ_MUTEX_SIMPLE) {
- #if (defined(PJ_LINUX) && PJ_LINUX!=0) || \
- defined(PJ_HAS_PTHREAD_MUTEXATTR_SETTYPE)
-- rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_FAST_NP);
-+ rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
- #elif (defined(PJ_RTEMS) && PJ_RTEMS!=0) || \
- defined(PJ_PTHREAD_MUTEXATTR_T_HAS_RECURSIVE)
- /* Nothing to do, default is simple */
-@@ -1135,7 +1135,7 @@ static pj_status_t init_mutex(pj_mutex_t *mutex, const char *name, int type)
- } else {
- #if (defined(PJ_LINUX) && PJ_LINUX!=0) || \
- defined(PJ_HAS_PTHREAD_MUTEXATTR_SETTYPE)
-- rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
-+ rc = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
- #elif (defined(PJ_RTEMS) && PJ_RTEMS!=0) || \
- defined(PJ_PTHREAD_MUTEXATTR_T_HAS_RECURSIVE)
- // Phil Torre <ptorre@zetron.com>:
---
-1.9.1
-
diff --git a/package/libpjsip/0002-Replace-__sched_priority-with-sched_priority-fixes-m.patch b/package/libpjsip/0002-Replace-__sched_priority-with-sched_priority-fixes-m.patch
deleted file mode 100644
index e1cb00229..000000000
--- a/package/libpjsip/0002-Replace-__sched_priority-with-sched_priority-fixes-m.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From cca93ce25f993c97ef3d96fa32461d5717c30518 Mon Sep 17 00:00:00 2001
-From: Luca Ceresoli <luca@lucaceresoli.net>
-Date: Sat, 12 Mar 2016 15:31:47 +0100
-Subject: [PATCH 2/2] Replace __sched_priority with sched_priority(fixes musl
- build)
-
-The musl C library defines sched_priority, not __sched_priority as GNU
-libc and uClibc-ng do. Use sched_priority instead.
-
-This does not break compatibility with GNU libc and uClibc-ng because
-both define in sched.h:
-
- #define sched_priority __sched_priority
-
-Fixes the following build errors when building with musl:
-
- ../src/samples/siprtp.c: In function 'boost_priority':
- ../src/samples/siprtp.c:1137:7: error: 'struct sched_param' has no member named '__sched_priority'
- tp.__sched_priority = max_prio;
- ^
- In file included from /home/murray/devel/buildroot/test-musl-eabi/build/libpjsip-2.4.5/pjlib/include/pj/except.h:30:0,
- from /home/murray/devel/buildroot/test-musl-eabi/build/libpjsip-2.4.5/pjlib/include/pjlib.h:35,
- from ../src/samples/siprtp.c:76:
- ../src/samples/siprtp.c:1146:18: error: 'struct sched_param' has no member named '__sched_priority'
- policy, tp.__sched_priority));
- ^
-
-Original patch:
-http://git.alpinelinux.org/cgit/aports/plain/main/pjproject/musl-fixes.patch
-
-Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net>
----
- pjsip-apps/src/samples/siprtp.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/pjsip-apps/src/samples/siprtp.c b/pjsip-apps/src/samples/siprtp.c
-index 796464f..6e32a8f 100644
---- a/pjsip-apps/src/samples/siprtp.c
-+++ b/pjsip-apps/src/samples/siprtp.c
-@@ -1134,7 +1134,7 @@ static void boost_priority(void)
- PJ_RETURN_OS_ERROR(rc));
- return;
- }
-- tp.__sched_priority = max_prio;
-+ tp.sched_priority = max_prio;
-
- rc = sched_setscheduler(0, POLICY, &tp);
- if (rc != 0) {
-@@ -1143,7 +1143,7 @@ static void boost_priority(void)
- }
-
- PJ_LOG(4, (THIS_FILE, "New process policy=%d, priority=%d",
-- policy, tp.__sched_priority));
-+ policy, tp.sched_priority));
-
- /*
- * Adjust thread scheduling algorithm and priority
-@@ -1156,10 +1156,10 @@ static void boost_priority(void)
- }
-
- PJ_LOG(4, (THIS_FILE, "Old thread policy=%d, priority=%d",
-- policy, tp.__sched_priority));
-+ policy, tp.sched_priority));
-
- policy = POLICY;
-- tp.__sched_priority = max_prio;
-+ tp.sched_priority = max_prio;
-
- rc = pthread_setschedparam(pthread_self(), policy, &tp);
- if (rc != 0) {
-@@ -1169,7 +1169,7 @@ static void boost_priority(void)
- }
-
- PJ_LOG(4, (THIS_FILE, "New thread policy=%d, priority=%d",
-- policy, tp.__sched_priority));
-+ policy, tp.sched_priority));
- }
-
- #else
---
-1.9.1
-
diff --git a/package/libpjsip/libpjsip.hash b/package/libpjsip/libpjsip.hash
index e0d3d1432..99760652c 100644
--- a/package/libpjsip/libpjsip.hash
+++ b/package/libpjsip/libpjsip.hash
@@ -1,5 +1,5 @@
-# From http://www.pjsip.org/release/2.4.5/MD5SUM.TXT
-md5 f58b3485977b3a700256203a554b3869 pjproject-2.4.5.tar.bz2
+# From http://www.pjsip.org/release/2.5.5/MD5SUM.TXT
+md5 183f7144b9aa238884243c0fc52ece36 pjproject-2.5.5.tar.bz2
# Locally computed
-sha256 086f5e70dcaee312b66ddc24dac6ef85e6f1fec4eed00ff2915cebe0ee3cdd8d pjproject-2.4.5.tar.bz2
+sha256 ab39207b761d3485199cd881410afeb2d171dff7c2bf75e8caae91c6dca508f3 pjproject-2.5.5.tar.bz2
diff --git a/package/libpjsip/libpjsip.mk b/package/libpjsip/libpjsip.mk
index 2b5e18f22..cb0d866e2 100644
--- a/package/libpjsip/libpjsip.mk
+++ b/package/libpjsip/libpjsip.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBPJSIP_VERSION = 2.4.5
+LIBPJSIP_VERSION = 2.5.5
LIBPJSIP_SOURCE = pjproject-$(LIBPJSIP_VERSION).tar.bz2
LIBPJSIP_SITE = http://www.pjsip.org/release/$(LIBPJSIP_VERSION)
LIBPJSIP_DEPENDENCIES = libsrtp
@@ -34,6 +34,8 @@ LIBPJSIP_CONF_OPTS = \
--disable-opencore-amr \
--disable-g7221-codec \
--disable-ilbc-codec \
+ --disable-webrtc \
+ --disable-opus \
--with-external-srtp=$(STAGING_DIR)/usr
ifeq ($(BR2_PACKAGE_OPENSSL),y)
diff --git a/package/libva-intel-driver/libva-intel-driver.hash b/package/libva-intel-driver/libva-intel-driver.hash
index 24c217045..10664d051 100644
--- a/package/libva-intel-driver/libva-intel-driver.hash
+++ b/package/libva-intel-driver/libva-intel-driver.hash
@@ -1,2 +1,2 @@
-# From https://lists.freedesktop.org/archives/libva/2016-September/004380.html
-sha1 9373afadd6ec0d6d983cf5bb2001d91c22b39719 libva-intel-driver-1.7.2.tar.bz2
+# From https://lists.freedesktop.org/archives/libva/2016-November/004731.html
+sha1 5100f187afc4e39fce5664b96fe11a38faa9afaa libva-intel-driver-1.7.3.tar.bz2
diff --git a/package/libva-intel-driver/libva-intel-driver.mk b/package/libva-intel-driver/libva-intel-driver.mk
index c388de158..86f6eaa60 100644
--- a/package/libva-intel-driver/libva-intel-driver.mk
+++ b/package/libva-intel-driver/libva-intel-driver.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBVA_INTEL_DRIVER_VERSION = 1.7.2
+LIBVA_INTEL_DRIVER_VERSION = 1.7.3
LIBVA_INTEL_DRIVER_SOURCE = libva-intel-driver-$(LIBVA_INTEL_DRIVER_VERSION).tar.bz2
LIBVA_INTEL_DRIVER_SITE = http://www.freedesktop.org/software/vaapi/releases/libva-intel-driver
LIBVA_INTEL_DRIVER_LICENSE = MIT
diff --git a/package/libva/libva.hash b/package/libva/libva.hash
index c2e5ea464..e63f4dbd8 100644
--- a/package/libva/libva.hash
+++ b/package/libva/libva.hash
@@ -1,2 +1,2 @@
-# From https://lists.freedesktop.org/archives/libva/2016-September/004379.html
-sha1 a89680d34236fdc63adeec25cf431c005644b8c6 libva-1.7.2.tar.bz2
+# From https://lists.freedesktop.org/archives/libva/2016-November/004730.html
+sha1 18e46f3d5a0e971eb0ec9fe14bc021e69eb13fb8 libva-1.7.3.tar.bz2
diff --git a/package/libva/libva.mk b/package/libva/libva.mk
index df1758efc..cf42b70e8 100644
--- a/package/libva/libva.mk
+++ b/package/libva/libva.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBVA_VERSION = 1.7.2
+LIBVA_VERSION = 1.7.3
LIBVA_SOURCE = libva-$(LIBVA_VERSION).tar.bz2
LIBVA_SITE = http://www.freedesktop.org/software/vaapi/releases/libva
LIBVA_LICENSE = MIT
diff --git a/package/libxmlrpc/0001-fix-gennmtab-build.patch b/package/libxmlrpc/0001-fix-gennmtab-build.patch
index 8cdd9329f..e98e5cbf5 100644
--- a/package/libxmlrpc/0001-fix-gennmtab-build.patch
+++ b/package/libxmlrpc/0001-fix-gennmtab-build.patch
@@ -19,7 +19,7 @@ Index: b/lib/expat/gennmtab/Makefile
+ $(CC_FOR_BUILD) -c $< -o $@ $(CFLAGS_FOR_BUILD) $(INCLUDES)
gennmtab:%:%.o
-- $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS) $^
+- $(BUILDTOOL_CCLD) -o $@ $(LDFLAGS_ALL) $^
+ $(CC_FOR_BUILD) -o $@ $(LDFLAGS_FOR_BUILD) $^
include depend.mk
diff --git a/package/libxmlrpc/0004-use-correct-curl-config.patch b/package/libxmlrpc/0004-use-correct-curl-config.patch
index b5816432d..f2f1c557b 100644
--- a/package/libxmlrpc/0004-use-correct-curl-config.patch
+++ b/package/libxmlrpc/0004-use-correct-curl-config.patch
@@ -12,15 +12,15 @@ Index: b/src/Makefile
===================================================================
--- a/src/Makefile
+++ b/src/Makefile
-@@ -56,7 +56,7 @@
- TRANSPORT_MODS += blddir/lib/curl_transport/curltransaction
- TRANSPORT_MODS += blddir/lib/curl_transport/curlmulti
- TRANSPORT_MODS += blddir/lib/curl_transport/lock_pthread
+@@ -57,7 +57,7 @@
+ TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/xmlrpc_curl_transport
+ TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curltransaction
+ TRANSPORT_MODS += $(BLDDIR)/lib/curl_transport/curlmulti
- TRANSPORT_LIBDEP += $(shell curl-config --libs)
+ TRANSPORT_LIBDEP += $(shell $CURL_CONFIG --libs)
+ TRANSPORT_INCLUDES += -Isrcdir/lib/curl_transport
endif
ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
- TRANSPORT_MODS += blddir/lib/libwww_transport/xmlrpc_libwww_transport
Index: b/config.mk.in
===================================================================
--- a/config.mk.in
@@ -68,29 +68,3 @@ Index: b/lib/curl_transport/Makefile
# We expect that curl-config --cflags just gives us -I options, because
# we need just the -I options for 'make dep'. Plus, it's scary to think
# of what any other compiler flag would do to our compile.
-Index: b/src/cpp/test/Makefile
-===================================================================
---- a/src/cpp/test/Makefile
-+++ b/src/cpp/test/Makefile
-@@ -20,7 +20,7 @@
- LIBS := $(shell $(XMLRPC_C_CONFIG) client --ldadd)
-
- ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
-- LIBS += $(shell curl-config --libs)
-+ LIBS += $(shell $(CURL_CONFIG) --libs)
- endif
- ifeq ($(MUST_BUILD_LIBWWW_CLIENT),yes)
- LIBS += $(shell libwww-config --libs)
-Index: b/tools/common.mk
-===================================================================
---- a/tools/common.mk
-+++ b/tools/common.mk
-@@ -15,7 +15,7 @@
- CLIENT_LDLIBS += $(shell libwww-config --libs)
- endif
- ifeq ($(MUST_BUILD_CURL_CLIENT),yes)
-- CLIENT_LDLIBS += $(shell curl-config --libs)
-+ CLIENT_LDLIBS += $(shell $(CURL_CONFIG) --libs)
- endif
- ifeq ($(MUST_BUILD_WININET_CLIENT),yes)
- CLIENT_LDLIBS += $(shell wininet-config --libs)
diff --git a/package/libxmlrpc/0006-fix-ar-ranlib-handling.patch b/package/libxmlrpc/0006-fix-ar-ranlib-handling.patch
new file mode 100644
index 000000000..1e58d2478
--- /dev/null
+++ b/package/libxmlrpc/0006-fix-ar-ranlib-handling.patch
@@ -0,0 +1,28 @@
+Fix detection of AR and RANLIB
+
+The configure.in script assumes that ranlib and ar are necessarily
+prefixed by ${ac_tool_prefix}, which is the value of --host. However,
+it's not necessarily the case.
+
+So instead, use AC_CHECK_TOOL to check for AR, and AC_PROG_RANLIB to
+check for RANLIB.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/configure.in
+===================================================================
+--- a/configure.in
++++ b/configure.in
+@@ -621,10 +621,8 @@
+ BUILDDIR=$(pwd)
+ AC_SUBST(BUILDDIR)
+
+-AR=${ac_tool_prefix}ar
+-AC_SUBST([AR])
+-RANLIB=${ac_tool_prefix}ranlib
+-AC_SUBST([RANLIB])
++AC_CHECK_TOOL([AR], [ar])
++AC_PROG_RANLIB
+
+ dnl =======================================================================
+ dnl Output our results.
diff --git a/package/libxmlrpc/0006-narrowing.patch b/package/libxmlrpc/0006-narrowing.patch
deleted file mode 100644
index 43a5ca5f4..000000000
--- a/package/libxmlrpc/0006-narrowing.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Fix build with gcc6
-
-Downloaded from
-https://build.opensuse.org/package/view_file/devel:libraries:c_c++/xmlrpc-c/narrowing.patch
-
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
-
-Index: xmlrpc-c-1.33.18/src/cpp/base64.cpp
-===================================================================
---- xmlrpc-c-1.33.18.orig/src/cpp/base64.cpp
-+++ xmlrpc-c-1.33.18/src/cpp/base64.cpp
-@@ -14,7 +14,7 @@ using namespace xmlrpc_c;
-
- namespace {
-
--char const table_a2b_base64[] = {
-+signed char const table_a2b_base64[] = {
- -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,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
diff --git a/package/libxmlrpc/libxmlrpc.hash b/package/libxmlrpc/libxmlrpc.hash
index d37fcfc95..8ec1e14ea 100644
--- a/package/libxmlrpc/libxmlrpc.hash
+++ b/package/libxmlrpc/libxmlrpc.hash
@@ -1,2 +1,2 @@
# Locally computed
-sha256 8ae6ed4ec57d50ed132b1150fc5258346eef3e291501a564f14fa97586902f98 xmlrpc-c-1.25.30.tgz
+sha256 2e56cdcdd5c5fa564bcdc7a56bca108a88f5b78b34ccc85558366efabdc8b8e8 xmlrpc-c-1.39.11.tgz
diff --git a/package/libxmlrpc/libxmlrpc.mk b/package/libxmlrpc/libxmlrpc.mk
index 03a709597..53a587780 100644
--- a/package/libxmlrpc/libxmlrpc.mk
+++ b/package/libxmlrpc/libxmlrpc.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBXMLRPC_VERSION = 1.25.30
+LIBXMLRPC_VERSION = 1.39.11
LIBXMLRPC_SOURCE = xmlrpc-c-$(LIBXMLRPC_VERSION).tgz
LIBXMLRPC_SITE = http://downloads.sourceforge.net/project/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(LIBXMLRPC_VERSION)
LIBXMLRPC_LICENSE = BSD-3c (xml-rpc main code and abyss web server), BSD like (lib/expat), Python 1.5.2 license (parts of xmlrpc_base64.c)
diff --git a/package/linux-pam/Config.in b/package/linux-pam/Config.in
index 5d3fd61fa..3d9835e8c 100644
--- a/package/linux-pam/Config.in
+++ b/package/linux-pam/Config.in
@@ -4,7 +4,7 @@ config BR2_PACKAGE_LINUX_PAM
select BR2_PACKAGE_FLEX
depends on (BR2_ENABLE_LOCALE && BR2_USE_WCHAR)
depends on !BR2_STATIC_LIBS
- depends on !BR2_TOOLCHAIN_USES_MUSL # linux-pam
+ depends on !BR2_TOOLCHAIN_USES_MUSL
depends on BR2_USE_MMU # fork()
help
A Security Framework that Provides Authentication for Applications
diff --git a/package/lvm2/lvm2.hash b/package/lvm2/lvm2.hash
index a269eb6d3..edc936030 100644
--- a/package/lvm2/lvm2.hash
+++ b/package/lvm2/lvm2.hash
@@ -1,2 +1,2 @@
# From ftp://sources.redhat.com/pub/lvm2/releases/sha512.sum
-sha512 8bebe9b474f791b5edf5366b0bd24861fbbaf8a83afa2a9e2a8e3917e05e4ecbf6877f018be03ffb4e9b4c8832208264165b85182bf79a07661adf35128b4a21 LVM2.2.02.166.tgz
+sha512 492b2f5ca462dbbb8e182befdb6ca60c7a31b16a39f59a38cabdcd0996d9e2c49ae56a2289def80b89da738176ac55cf13cbefd401feb7a1e3a6ef9a4c267f2b LVM2.2.02.167.tgz
diff --git a/package/lvm2/lvm2.mk b/package/lvm2/lvm2.mk
index d76cdd2ca..dd574218f 100644
--- a/package/lvm2/lvm2.mk
+++ b/package/lvm2/lvm2.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LVM2_VERSION = 2.02.166
+LVM2_VERSION = 2.02.167
LVM2_SOURCE = LVM2.$(LVM2_VERSION).tgz
LVM2_SITE = ftp://sources.redhat.com/pub/lvm2/releases
LVM2_INSTALL_STAGING = YES
diff --git a/package/makedevs/Config.in b/package/makedevs/Config.in
deleted file mode 100644
index 923150dd6..000000000
--- a/package/makedevs/Config.in
+++ /dev/null
@@ -1,5 +0,0 @@
-config BR2_PACKAGE_MAKEDEVS
- bool "makedevs"
- help
- The makedevs utility allows to create a set of device files
- according to a configuration file.
diff --git a/package/makedevs/makedevs.mk b/package/makedevs/makedevs.mk
index 95933c4f4..9bd684f03 100644
--- a/package/makedevs/makedevs.mk
+++ b/package/makedevs/makedevs.mk
@@ -15,15 +15,6 @@ HOST_MAKEDEVS_CFLAGS += -DEXTENDED_ATTRIBUTES
HOST_MAKEDEVS_LDFLAGS += -lcap
endif
-define MAKEDEVS_BUILD_CMDS
- $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) \
- package/makedevs/makedevs.c -o $(@D)/makedevs
-endef
-
-define MAKEDEVS_INSTALL_TARGET_CMDS
- $(INSTALL) -D -m 755 $(@D)/makedevs $(TARGET_DIR)/usr/sbin/makedevs
-endef
-
define HOST_MAKEDEVS_BUILD_CMDS
$(HOSTCC) $(HOST_MAKEDEVS_CFLAGS) package/makedevs/makedevs.c \
-o $(@D)/makedevs $(HOST_MAKEDEVS_LDFLAGS)
@@ -33,5 +24,4 @@ define HOST_MAKEDEVS_INSTALL_CMDS
$(INSTALL) -D -m 755 $(@D)/makedevs $(HOST_DIR)/usr/bin/makedevs
endef
-$(eval $(generic-package))
$(eval $(host-generic-package))
diff --git a/package/mesa3d-headers/mesa3d-headers.mk b/package/mesa3d-headers/mesa3d-headers.mk
index b3b80ebc8..3cb0d2739 100644
--- a/package/mesa3d-headers/mesa3d-headers.mk
+++ b/package/mesa3d-headers/mesa3d-headers.mk
@@ -12,7 +12,7 @@ endif
# Not possible to directly refer to mesa3d variables, because of
# first/second expansion trickery...
-MESA3D_HEADERS_VERSION = 13.0.0
+MESA3D_HEADERS_VERSION = 13.0.2
MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz
MESA3D_HEADERS_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_HEADERS_VERSION)
MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos
diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash
index 7dbe1ac8f..dfab5e2a7 100644
--- a/package/mesa3d/mesa3d.hash
+++ b/package/mesa3d/mesa3d.hash
@@ -1,2 +1,2 @@
-# From https://lists.freedesktop.org/archives/mesa-announce/2016-November/000264.html
-sha256 94edb4ebff82066a68be79d9c2627f15995e1fe10f67ab3fc63deb842027d727 mesa-13.0.0.tar.xz
+# From https://lists.freedesktop.org/archives/mesa-announce/2016-November/000274.html
+sha256 a6ed622645f4ed61da418bf65adde5bcc4bb79023c36ba7d6b45b389da4416d5 mesa-13.0.2.tar.xz
diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk
index 96ebb95b3..ed50371fe 100644
--- a/package/mesa3d/mesa3d.mk
+++ b/package/mesa3d/mesa3d.mk
@@ -5,7 +5,7 @@
################################################################################
# When updating the version, please also update mesa3d-headers
-MESA3D_VERSION = 13.0.0
+MESA3D_VERSION = 13.0.2
MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz
MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_VERSION)
MESA3D_LICENSE = MIT, SGI, Khronos
diff --git a/package/moarvm/Config.in b/package/moarvm/Config.in
index 69d9a3e42..c6e1efa39 100644
--- a/package/moarvm/Config.in
+++ b/package/moarvm/Config.in
@@ -9,6 +9,9 @@ config BR2_PACKAGE_MOARVM
select BR2_PACKAGE_LIBUV
select BR2_PACKAGE_LIBTOMMATH
select BR2_PACKAGE_LIBATOMIC_OPS
+ # dyncall does not work on MIPS; libffi needs to be used.
+ # See: https://github.com/MoarVM/MoarVM/issues/222
+ select BR2_PACKAGE_LIBFFI if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
help
Short for "Metamodel On A Runtime", MoarVM is a virtual machine
built especially for Rakudo Perl 6 and the NQP Compiler Toolchain.
diff --git a/package/moarvm/moarvm.hash b/package/moarvm/moarvm.hash
index 514a1bfe8..2e49811d1 100644
--- a/package/moarvm/moarvm.hash
+++ b/package/moarvm/moarvm.hash
@@ -1,2 +1,2 @@
# Locally computed
-sha256 d8cb9fe74267dd933c3e405b098dea99cb9c0561aedb06e8efd8ddaef43396d0 MoarVM-2016.10.tar.gz
+sha256 5eaa8ff47b1c25e023a900947f88222fffe0884ce74652659ecd2265ae2d1387 MoarVM-2016.11.tar.gz
diff --git a/package/moarvm/moarvm.mk b/package/moarvm/moarvm.mk
index d2421fd78..d09117471 100644
--- a/package/moarvm/moarvm.mk
+++ b/package/moarvm/moarvm.mk
@@ -4,13 +4,13 @@
#
################################################################################
-MOARVM_VERSION = 2016.10
+MOARVM_VERSION = 2016.11
MOARVM_SITE = http://moarvm.com/releases
MOARVM_SOURCE = MoarVM-$(MOARVM_VERSION).tar.gz
MOARVM_LICENSE = Artistic-2.0
MOARVM_LICENSE_FILES = Artistic2.txt
MOARVM_INSTALL_STAGING = YES
-MOARVM_DEPENDENCIES = host-luajit libuv libtommath libatomic_ops
+MOARVM_DEPENDENCIES = host-luajit host-pkgconf libuv libtommath libatomic_ops
MOARVM_CONF_OPTS = \
--build=$(GNU_HOST_NAME) \
@@ -19,11 +19,17 @@ MOARVM_CONF_OPTS = \
--cc="$(TARGET_CC)" \
--ld="$(TARGET_CC)" \
--prefix="/usr" \
+ --pkgconfig=$(PKG_CONFIG_HOST_BINARY) \
--lua=$(HOST_DIR)/usr/bin/luajit \
--has-libuv \
--has-libtommath \
--has-libatomic
+ifeq ($(BR2_PACKAGE_LIBFFI),y)
+MOARVM_CONF_OPTS += --has-libffi
+MOARVM_DEPENDENCIES += libffi
+endif
+
ifeq ($(BR2_ENDIAN),"BIG")
MOARVM_CONF_OPTS += --big-endian
endif
diff --git a/package/netsniff-ng/Config.in b/package/netsniff-ng/Config.in
index e52bb25f0..00617e371 100644
--- a/package/netsniff-ng/Config.in
+++ b/package/netsniff-ng/Config.in
@@ -7,8 +7,7 @@ config BR2_PACKAGE_NETSNIFF_NG
select BR2_PACKAGE_LIBURCU
select BR2_PACKAGE_LIBNET
# Build with uClibc fails due to missing ceill()
- # Build with musl fails due to various header issues
- depends on BR2_TOOLCHAIN_USES_GLIBC
+ depends on !BR2_TOOLCHAIN_USES_UCLIBC
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
@@ -17,7 +16,7 @@ config BR2_PACKAGE_NETSNIFF_NG
networking toolkit. If you will, the Swiss army knife for
network packets.
-comment "netsniff-ng needs a glibc toolchain w/ threads, headers >= 3.0"
+comment "netsniff-ng needs a glibc or musl toolchain w/ threads, headers >= 3.0"
depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
- depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC \
+ depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC \
|| !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
diff --git a/package/netsniff-ng/netsniff-ng.hash b/package/netsniff-ng/netsniff-ng.hash
index 52124977e..67b3331a9 100644
--- a/package/netsniff-ng/netsniff-ng.hash
+++ b/package/netsniff-ng/netsniff-ng.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 902661bcdbc129c6a6c1f69a72f921fffc9e765d005568dc153f09ca0097c180 netsniff-ng-v0.6.1.tar.gz
+sha256 62e8aa970a4f46cdaddf54daf8ea26e7ae9f9f358efaf0651799c8c4e937c286 netsniff-ng-v0.6.2.tar.gz
diff --git a/package/netsniff-ng/netsniff-ng.mk b/package/netsniff-ng/netsniff-ng.mk
index ad97a887e..4ec7e743f 100644
--- a/package/netsniff-ng/netsniff-ng.mk
+++ b/package/netsniff-ng/netsniff-ng.mk
@@ -4,7 +4,7 @@
#
################################################################################
-NETSNIFF_NG_VERSION = v0.6.1
+NETSNIFF_NG_VERSION = v0.6.2
NETSNIFF_NG_SITE = $(call github,netsniff-ng,netsniff-ng,$(NETSNIFF_NG_VERSION))
NETSNIFF_NG_LICENSE = GPLv2
NETSNIFF_NG_LICENSE_FILES = README COPYING
diff --git a/package/nodejs/6.7.0/0001-gyp-force-link-command-to-use-CXX.patch b/package/nodejs/6.9.1/0001-gyp-force-link-command-to-use-CXX.patch
index 5746582c1..5746582c1 100644
--- a/package/nodejs/6.7.0/0001-gyp-force-link-command-to-use-CXX.patch
+++ b/package/nodejs/6.9.1/0001-gyp-force-link-command-to-use-CXX.patch
diff --git a/package/nodejs/6.7.0/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch b/package/nodejs/6.9.1/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch
index c07cbf8c6..c07cbf8c6 100644
--- a/package/nodejs/6.7.0/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch
+++ b/package/nodejs/6.9.1/0002-inspector-don-t-build-when-ssl-support-is-disabled.patch
diff --git a/package/nodejs/Config.in b/package/nodejs/Config.in
index 976be50e4..a47ba37a4 100644
--- a/package/nodejs/Config.in
+++ b/package/nodejs/Config.in
@@ -43,7 +43,7 @@ config BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
config BR2_PACKAGE_NODEJS_VERSION_STRING
string
- default "6.7.0" if BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
+ default "6.9.1" if BR2_PACKAGE_NODEJS_V8_ARCH_SUPPORTS
default "0.10.47"
config BR2_PACKAGE_NODEJS_NPM
diff --git a/package/nodejs/nodejs.hash b/package/nodejs/nodejs.hash
index f334a47e9..5df79afee 100644
--- a/package/nodejs/nodejs.hash
+++ b/package/nodejs/nodejs.hash
@@ -1,5 +1,5 @@
# From upstream URL: http://nodejs.org/dist/v0.10.47/SHASUMS256.txt
sha256 335bdf4db702885a8acaf2c9f241c70cabd62497361da81aca65c8e8a8e7ff09 node-v0.10.47.tar.xz
-# From upstream URL: http://nodejs.org/dist/v6.7.0/SHASUMS256.txt
-sha256 ceb028324aab1ee8c7ea6a62026f036f3ea71f5ef5212593d0f833f999dd3be5 node-v6.7.0.tar.xz
+# From upstream URL: http://nodejs.org/dist/v6.9.1/SHASUMS256.txt
+sha256 0bdd8d1305777cc8cd206129ea494d6c6ce56001868dd80147aff531d6df0729 node-v6.9.1.tar.xz
diff --git a/package/norm/0003-remove-kernel-headers-include-musl-fix.patch b/package/norm/0003-remove-kernel-headers-include-musl-fix.patch
deleted file mode 100644
index 7581c10b7..000000000
--- a/package/norm/0003-remove-kernel-headers-include-musl-fix.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Remove kernel header includes causing issues with musl
-
-Include the kernel headers from netfilter causes a conflict with the
-<netinet/in.h> way of defining the IPPROTO_* constants, resulting in
-the following build failure:
-
-In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/netdb.h:9:0,
- from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoAddress.h:13,
- from /home/peko/autobuild/instance-0/output/build/norm-1.5r6/protolib/include/protoDetour.h:5,
- from ../protolib/src/linux/linuxDetour.cpp:3:
-/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected identifier before numeric constant
- IPPROTO_IP = 0, /* Dummy protocol for TCP */
- ^
-/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected '}' before numeric constant
-/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:28:3: error: expected unqualified-id before numeric constant
-In file included from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter.h:7:0,
- from /home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/netfilter_ipv4.h:8,
- from ../protolib/src/linux/linuxDetour.cpp:10:
-/home/peko/autobuild/instance-0/output/host/usr/arm-buildroot-linux-musleabihf/sysroot/usr/include/linux/in.h:79:1: error: expected declaration before '}' token
- };
- ^
-
-Since from musl's developers perspective including kernel headers is
-seen as being unsafe, we simply duplicate the necessary netfilter
-definitions (there are just a few) instead of including some kernel
-headers.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-
-Index: b/protolib/src/linux/linuxDetour.cpp
-===================================================================
---- a/protolib/src/linux/linuxDetour.cpp
-+++ b/protolib/src/linux/linuxDetour.cpp
-@@ -7,15 +7,18 @@
- #include <stdlib.h> // for atoi(), getenv()
- #include <stdio.h>
- #include <unistd.h> // for close()
--#include <linux/netfilter_ipv4.h> // for NF_IP_LOCAL_OUT, etc
--#include <linux/netfilter_ipv6.h> // for NF_IP6_LOCAL_OUT, etc
--#include <linux/netfilter.h> // for NF_ACCEPT, etc
- #include <libnetfilter_queue/libnetfilter_queue.h>
-
- #include <fcntl.h> // for fcntl(), etc
- #include <linux/if_ether.h> // for ETH_P_IP
- #include <net/if_arp.h> // for ARPHRD_ETHER
-
-+/* From netfilter kernel headers */
-+#define NF_IP_LOCAL_OUT 3
-+
-+#define NF_DROP 0
-+#define NF_ACCEPT 1
-+
- /** NOTES:
- *
- * 1) This newer implementation of LinuxDetour uses netfilter_queue
diff --git a/package/odroid-scripts/S50odroidc2_fb b/package/odroid-scripts/S02odroidc2_fb
index 2aae59db9..2aae59db9 100644
--- a/package/odroid-scripts/S50odroidc2_fb
+++ b/package/odroid-scripts/S02odroidc2_fb
diff --git a/package/odroid-scripts/odroid-scripts.hash b/package/odroid-scripts/odroid-scripts.hash
index 8fd4b2c64..e5a262d20 100644
--- a/package/odroid-scripts/odroid-scripts.hash
+++ b/package/odroid-scripts/odroid-scripts.hash
@@ -1,2 +1,2 @@
# Locally computed hash
-sha256 779e8beccf8c66d51e495a4cc0e6eccf72c295499a1ecdc0740aa4459de786a0 odroid-scripts-a252de04562dcf8d8a4918a544b45a9e3d46d2fb.tar.gz
+sha256 9d61472ee6aed2d1a7b5afdcb91b823003c8524a242572f24f89d4e57323daf3 odroid-scripts-cfd289b1d69136b8bfd725d90cd648da4654f2bd.tar.gz
diff --git a/package/odroid-scripts/odroid-scripts.mk b/package/odroid-scripts/odroid-scripts.mk
index 858ec37fe..fc1940dce 100644
--- a/package/odroid-scripts/odroid-scripts.mk
+++ b/package/odroid-scripts/odroid-scripts.mk
@@ -4,7 +4,7 @@
#
################################################################################
-ODROID_SCRIPTS_VERSION = a252de04562dcf8d8a4918a544b45a9e3d46d2fb
+ODROID_SCRIPTS_VERSION = cfd289b1d69136b8bfd725d90cd648da4654f2bd
ODROID_SCRIPTS_SITE = $(call github,mdrjr,c2_bootini,$(ODROID_SCRIPTS_VERSION))
ODROID_SCRIPTS_LICENSE = unclear
@@ -29,8 +29,8 @@ define ODROID_SCRIPTS_INSTALL_INIT_SYSTEMD
endef
define ODROID_SCRIPTS_INSTALL_INIT_SYSV
- $(INSTALL) -D -m 0755 package/odroid-scripts/S50odroidc2_fb \
- $(TARGET_DIR)/etc/init.d/S50odroidc2_fb
+ $(INSTALL) -D -m 0755 package/odroid-scripts/S02odroidc2_fb \
+ $(TARGET_DIR)/etc/init.d/S02odroidc2_fb
endef
$(eval $(generic-package))
diff --git a/package/openvpn/openvpn.hash b/package/openvpn/openvpn.hash
index ce005d3d5..0c5cb09e9 100644
--- a/package/openvpn/openvpn.hash
+++ b/package/openvpn/openvpn.hash
@@ -1,2 +1,2 @@
-# Locally calculated after checking pgp signature
-sha256 13b963414e2430215981868c77b9795d93653ee535a2d73576f7bb2c28200abc openvpn-2.3.12.tar.xz
+# Locally calculated
+sha256 9cde0c8000fd32d5275adb55f8bb1d8ba429ff3de35f60a36e81f3859b7537e0 openvpn-2.3.13.tar.xz
diff --git a/package/openvpn/openvpn.mk b/package/openvpn/openvpn.mk
index 0e59fdc98..cd0a2d13e 100644
--- a/package/openvpn/openvpn.mk
+++ b/package/openvpn/openvpn.mk
@@ -4,7 +4,7 @@
#
################################################################################
-OPENVPN_VERSION = 2.3.12
+OPENVPN_VERSION = 2.3.13
OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz
OPENVPN_SITE = http://swupdate.openvpn.net/community/releases
OPENVPN_DEPENDENCIES = host-pkgconf openssl
diff --git a/package/patchelf/patchelf.hash b/package/patchelf/patchelf.hash
index 0da413e6c..653eb466b 100644
--- a/package/patchelf/patchelf.hash
+++ b/package/patchelf/patchelf.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 14af06a2da688d577d64ff8dac065bb8903bbffbe01d30c62df7af9bf4ce72fe patchelf-0.8.tar.gz
+sha256 a0f65c1ba148890e9f2f7823f4bedf7ecad5417772f64f994004f59a39014f83 patchelf-0.9.tar.bz2
diff --git a/package/patchelf/patchelf.mk b/package/patchelf/patchelf.mk
index 043224dab..cf2e43a73 100644
--- a/package/patchelf/patchelf.mk
+++ b/package/patchelf/patchelf.mk
@@ -4,8 +4,9 @@
#
################################################################################
-PATCHELF_VERSION = 0.8
-PATCHELF_SITE = http://releases.nixos.org/patchelf/patchelf-0.8
+PATCHELF_VERSION = 0.9
+PATCHELF_SITE = http://releases.nixos.org/patchelf/patchelf-$(PATCHELF_VERSION)
+PATCHELF_SOURCE = patchelf-$(PATCHELF_VERSION).tar.bz2
PATCHELF_LICENSE = GPLv3+
PATCHELF_LICENSE_FILES = COPYING
diff --git a/package/php-amqp/Config.in b/package/php-amqp/Config.in
index 253bfa7b7..0aa2021f5 100644
--- a/package/php-amqp/Config.in
+++ b/package/php-amqp/Config.in
@@ -2,7 +2,6 @@ config BR2_PACKAGE_PHP_AMQP
bool "php-amqp"
depends on BR2_PACKAGE_PHP
depends on BR2_TOOLCHAIN_HAS_THREADS # rabbitmq-c
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX # rabbitmq-c
select BR2_PACKAGE_RABBITMQ_C
help
Communicate with any AMQP compliant server.
@@ -11,4 +10,3 @@ config BR2_PACKAGE_PHP_AMQP
comment "php-amqp needs a toolchain w/ threads"
depends on !BR2_TOOLCHAIN_HAS_THREADS
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
diff --git a/package/php/php.hash b/package/php/php.hash
index dde6a64dc..f1cd34654 100644
--- a/package/php/php.hash
+++ b/package/php/php.hash
@@ -1,2 +1,2 @@
# From http://php.net/downloads.php
-sha256 f3d6c49e1c242e5995dec15e503fde996c327eb86cd7ec45c690e93c971b83ff php-7.0.12.tar.xz
+sha256 357ba7f93975d7d836abed0852dc3ed96a988af539e87750613294cbee82f1bf php-7.0.13.tar.xz
diff --git a/package/php/php.mk b/package/php/php.mk
index f85cb371c..c8abe660a 100644
--- a/package/php/php.mk
+++ b/package/php/php.mk
@@ -4,7 +4,7 @@
#
################################################################################
-PHP_VERSION = 7.0.12
+PHP_VERSION = 7.0.13
PHP_SITE = http://www.php.net/distributions
PHP_SOURCE = php-$(PHP_VERSION).tar.xz
PHP_INSTALL_STAGING = YES
diff --git a/package/python-pillow/python-pillow.hash b/package/python-pillow/python-pillow.hash
index ed195f618..1dd816cb9 100644
--- a/package/python-pillow/python-pillow.hash
+++ b/package/python-pillow/python-pillow.hash
@@ -1,3 +1,3 @@
# md5 from https://pypi.python.org/pypi/pillow/json, sha256 locally computed
-md5 1ea45914e8cc375fb385da2555b37267 Pillow-3.4.0.tar.gz
-sha256 51027d511f4ab991f628f6f7b9b0fbf18f584ee8a67160410afe3b19685b9d50 Pillow-3.4.0.tar.gz
+md5 09ebb92ec5cbba13ff1acf139caf6b66 Pillow-3.4.2.tar.gz
+sha256 0ee9975c05602e755ff5000232e0335ba30d507f6261922a658ee11b1cec36d1 Pillow-3.4.2.tar.gz
diff --git a/package/python-pillow/python-pillow.mk b/package/python-pillow/python-pillow.mk
index f06ce8d19..59cde75b7 100644
--- a/package/python-pillow/python-pillow.mk
+++ b/package/python-pillow/python-pillow.mk
@@ -4,9 +4,9 @@
#
################################################################################
-PYTHON_PILLOW_VERSION = 3.4.0
+PYTHON_PILLOW_VERSION = 3.4.2
PYTHON_PILLOW_SOURCE = Pillow-$(PYTHON_PILLOW_VERSION).tar.gz
-PYTHON_PILLOW_SITE = https://pypi.python.org/packages/51/1d/6456623ea7e155249c0e82cf92715c42ba1902759d1eeff6ac5c3107e747
+PYTHON_PILLOW_SITE = https://pypi.python.org/packages/46/4f/94f6165052774839b4a4af0c72071aa528d5dc8cb8bc6bb43e24a55c10cc
PYTHON_PILLOW_LICENSE = PIL Software License
PYTHON_PILLOW_LICENSE_FILES = LICENSE
PYTHON_PILLOW_SETUP_TYPE = setuptools
diff --git a/package/qemu/Config.in b/package/qemu/Config.in
index 8bae5f40e..f4a75fc26 100644
--- a/package/qemu/Config.in
+++ b/package/qemu/Config.in
@@ -2,7 +2,8 @@ config BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
bool
# Only tested on these architectures
default y if BR2_aarch64 || BR2_i386 || BR2_mips || BR2_mipsel \
- || BR2_x86_64 || BR2_arm
+ || BR2_x86_64 || BR2_arm \
+ || BR2_powerpc64 || BR2_powerpc64le
comment "QEMU requires a toolchain with wchar, threads"
depends on BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET
@@ -111,4 +112,9 @@ comment "FDT support needs a toolchain w/ dynamic library"
endif # BR2_PACKAGE_QEMU_HAS_EMULS
+config BR2_PACKAGE_QEMU_TOOLS
+ bool "Enable tools"
+ help
+ Say 'y' here to include tools packaged with QEMU (e.g. qemu-img).
+
endif # BR2_PACKAGE_QEMU
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 45fc0fad0..bc707cf7e 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -204,6 +204,12 @@ else
QEMU_OPTS += --disable-fdt
endif
+ifeq ($(BR2_PACKAGE_QEMU_TOOLS),y)
+QEMU_OPTS += --enable-tools
+else
+QEMU_OPTS += --disable-tools
+endif
+
# Override CPP, as it expects to be able to call it like it'd
# call the compiler.
define QEMU_CONFIGURE_CMDS
@@ -242,7 +248,6 @@ define QEMU_CONFIGURE_CMDS
--disable-strip \
--disable-seccomp \
--disable-sparse \
- --disable-tools \
$(QEMU_OPTS) \
)
endef
diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
index d25f66366..e937e234b 100644
--- a/package/qt5/qt5.mk
+++ b/package/qt5/qt5.mk
@@ -1,6 +1,7 @@
QT5_VERSION_MAJOR = 5.6
QT5_VERSION = $(QT5_VERSION_MAJOR).2
QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
+QT5_SNAPSHOTS_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/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
index 96b8bdd69..309f776b3 100644
--- a/package/qt5/qt5webkit/qt5webkit.hash
+++ b/package/qt5/qt5webkit/qt5webkit.hash
@@ -1,2 +1,2 @@
-# locally computed
-sha256 bdd659573e7e75cd4ad57b7160a7353d98d21a6fef06e4fb9e114a5b1f1e9dab qt5webkit-b35917bcb44d7f200af0f4ac68a126fa0aa8d93d.tar.gz
+# Hash from: http://download.qt.io/snapshots/qt/5.6/5.6.2/latest_src/submodules/qtwebkit-opensource-src-5.6.2.tar.xz.mirrorlist
+sha256 528a6b8b1c5095367b26e8ce4f3a46bb739e2e9913ff4dfc6ef58a04fcd73966 qtwebkit-opensource-src-5.6.2.tar.xz
diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
index 378cdf785..980d2aff0 100644
--- a/package/qt5/qt5webkit/qt5webkit.mk
+++ b/package/qt5/qt5webkit/qt5webkit.mk
@@ -4,10 +4,9 @@
#
################################################################################
-QT5WEBKIT_VERSION = b35917bcb44d7f200af0f4ac68a126fa0aa8d93d
-# 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_VERSION = $(QT5_VERSION)
+QT5WEBKIT_SITE = $(QT5_SNAPSHOTS_SITE)
+QT5WEBKIT_SOURCE = qtwebkit-opensource-src-$(QT5WEBKIT_VERSION).tar.xz
QT5WEBKIT_DEPENDENCIES = \
host-bison host-flex host-gperf host-python host-ruby \
qt5base sqlite
@@ -43,14 +42,7 @@ define QT5WEBKIT_PYTHON2_SYMLINK
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
-# option which is set in qt_build_paths.prf).
-# So, to make sure that qmake detects that header files must be generated,
-# 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)
endef
diff --git a/package/rabbitmq-c/Config.in b/package/rabbitmq-c/Config.in
index 0d08233a7..b330c9047 100644
--- a/package/rabbitmq-c/Config.in
+++ b/package/rabbitmq-c/Config.in
@@ -1,9 +1,6 @@
config BR2_PACKAGE_RABBITMQ_C
bool "rabbitmq-c"
depends on BR2_TOOLCHAIN_HAS_THREADS
- # too old uClibc, not providing posix_spawn functions
- # http://autobuild.buildroot.net/results/a6c3e79c61c5a535970d03bf37b068349f766a7f/
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
help
This is a C-language AMQP client library for use with v2.0+
of the RabbitMQ broker.
@@ -12,4 +9,3 @@ config BR2_PACKAGE_RABBITMQ_C
comment "rabbitmq-c needs a toolchain w/ threads"
depends on !BR2_TOOLCHAIN_HAS_THREADS
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
diff --git a/package/readline/0001-patchlevel-1.patch b/package/readline/0001-patchlevel-1.patch
deleted file mode 100644
index 8593073b9..000000000
--- a/package/readline/0001-patchlevel-1.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-001
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-001
-
-Bug-Reported-by: Daan van Rossum <daan@flash.uchicago.edu>
-Bug-Reference-ID: <20140307072523.GA14250@flash.uchicago.edu>
-Bug-Reference-URL:
-
-Bug-Description:
-
-The `.' command in vi mode cannot undo multi-key commands beginning with
-`c', `d', and `y' (command plus motion specifier).
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400
---- b/readline.c 2014-03-07 15:20:33.000000000 -0500
-***************
-*** 965,969 ****
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
- key != ANYOTHERKEY &&
-! rl_key_sequence_length == 1 && /* XXX */
- _rl_vi_textmod_command (key))
- _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
---- 965,969 ----
- if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
- key != ANYOTHERKEY &&
-! _rl_dispatching_keymap == vi_movement_keymap &&
- _rl_vi_textmod_command (key))
- _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 5
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 1
diff --git a/package/readline/0002-patchlevel-2.patch b/package/readline/0002-patchlevel-2.patch
deleted file mode 100644
index a8a94e081..000000000
--- a/package/readline/0002-patchlevel-2.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-002
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-002
-
-Bug-Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com>
-Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html
-
-Bug-Description:
-
-When in callback mode, some readline commands can cause readline to seg
-fault by passing invalid contexts to callback functions.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400
---- b/readline.c 2014-03-10 14:15:02.000000000 -0400
-***************
-*** 745,749 ****
-
- RL_CHECK_SIGNALS ();
-! if (r == 0) /* success! */
- {
- _rl_keyseq_chain_dispose ();
---- 745,750 ----
-
- RL_CHECK_SIGNALS ();
-! /* We only treat values < 0 specially to simulate recursion. */
-! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */
- {
- _rl_keyseq_chain_dispose ();
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 1
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 2
diff --git a/package/readline/0003-patchlevel-3.patch b/package/readline/0003-patchlevel-3.patch
deleted file mode 100644
index 195ed554e..000000000
--- a/package/readline/0003-patchlevel-3.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-003
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-003
-
-Bug-Reported-by:
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-There are debugging functions in the readline release that are theoretically
-exploitable as security problems. They are not public functions, but have
-global linkage.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3/util.c 2013-09-02 13:36:12.000000000 -0400
---- b/util.c 2014-03-20 10:25:53.000000000 -0400
-***************
-*** 477,480 ****
---- 479,483 ----
- }
-
-+ #if defined (DEBUG)
- #if defined (USE_VARARGS)
- static FILE *_rl_tracefp;
-***************
-*** 539,542 ****
---- 542,546 ----
- }
- #endif
-+ #endif /* DEBUG */
-
-
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 2
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 3
diff --git a/package/readline/0004-patchlevel-4.patch b/package/readline/0004-patchlevel-4.patch
deleted file mode 100644
index 86ab3d507..000000000
--- a/package/readline/0004-patchlevel-4.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-004
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-004
-
-Bug-Reported-by: Egmont Koblinger <egmont@gmail.com>
-Bug-Reference-ID: <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html
-
-Bug-Description:
-
-The signal handling changes to bash and readline (to avoid running any code
-in a signal handler context) cause the cursor to be placed on the wrong
-line of a multi-line command after a ^C interrupts editing.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3-patched/display.c 2013-12-27 13:10:56.000000000 -0500
---- b/display.c 2014-03-27 11:52:45.000000000 -0400
-***************
-*** 2678,2682 ****
- if (_rl_echoing_p)
- {
-! _rl_move_vert (_rl_vis_botlin);
- _rl_vis_botlin = 0;
- fflush (rl_outstream);
---- 2678,2683 ----
- if (_rl_echoing_p)
- {
-! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */
-! _rl_move_vert (_rl_vis_botlin);
- _rl_vis_botlin = 0;
- fflush (rl_outstream);
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 3
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 4
diff --git a/package/readline/0005-patchlevel-5.patch b/package/readline/0005-patchlevel-5.patch
deleted file mode 100644
index 6e73c7f26..000000000
--- a/package/readline/0005-patchlevel-5.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-005
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-005
-
-Bug-Reported-by: Juergen Daubert <jue@jue.li>
-Bug-Reference-ID: <20140303180430.GA7346@jue.netz>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00002.html
-
-Bug-Description:
-
-There are still applications using the deprecated Function/VFunction/etc.
-typedefs in rltypedefs.h. This patch restores the typedefs, but attempts
-to mark them as deprecated using gcc/clang attributes. Thanks to Max Horn
-for the suggestion.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3-patched/rltypedefs.h 2011-03-26 14:53:31.000000000 -0400
---- b/rltypedefs.h 2014-04-10 11:30:45.000000000 -0400
-***************
-*** 27,30 ****
---- 27,49 ----
- #endif
-
-+ /* Old-style, attempt to mark as deprecated in some way people will notice. */
-+
-+ #if !defined (_FUNCTION_DEF)
-+ # define _FUNCTION_DEF
-+
-+ #if defined(__GNUC__) || defined(__clang__)
-+ typedef int Function () __attribute__ ((deprecated));
-+ typedef void VFunction () __attribute__ ((deprecated));
-+ typedef char *CPFunction () __attribute__ ((deprecated));
-+ typedef char **CPPFunction () __attribute__ ((deprecated));
-+ #else
-+ typedef int Function ();
-+ typedef void VFunction ();
-+ typedef char *CPFunction ();
-+ typedef char **CPPFunction ();
-+ #endif
-+
-+ #endif /* _FUNCTION_DEF */
-+
- /* New style. */
-
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 4
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 5
diff --git a/package/readline/0006-patchlevel-6.patch b/package/readline/0006-patchlevel-6.patch
deleted file mode 100644
index b28b53c7a..000000000
--- a/package/readline/0006-patchlevel-6.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-006
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-006
-
-Bug-Reported-by: <Trond.Endrestol@ximalas.info>
-Bug-Reference-ID: <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html
-
-Bug-Description:
-
-Using reverse-i-search when horizontal scrolling is enabled does not redisplay
-the entire line containing the successful search results.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3-patched/display.c 2014-04-08 18:19:36.000000000 -0400
---- b/display.c 2014-04-20 18:32:52.000000000 -0400
-***************
-*** 1638,1642 ****
- the spot of first difference is before the end of the invisible chars,
- lendiff needs to be adjusted. */
-! if (current_line == 0 && !_rl_horizontal_scroll_mode &&
- current_invis_chars != visible_wrap_offset)
- {
---- 1638,1642 ----
- the spot of first difference is before the end of the invisible chars,
- lendiff needs to be adjusted. */
-! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
- current_invis_chars != visible_wrap_offset)
- {
-***************
-*** 1826,1831 ****
- _rl_last_c_pos += bytes_to_insert;
-
- if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
-! goto clear_rest_of_line;
- }
- }
---- 1826,1836 ----
- _rl_last_c_pos += bytes_to_insert;
-
-+ /* XXX - we only want to do this if we are at the end of the line
-+ so we move there with _rl_move_cursor_relative */
- if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
-! {
-! _rl_move_cursor_relative (ne-new, new);
-! goto clear_rest_of_line;
-! }
- }
- }
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 5
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 6
diff --git a/package/readline/0007-patchlevel-7.patch b/package/readline/0007-patchlevel-7.patch
deleted file mode 100644
index 4c6f59cd2..000000000
--- a/package/readline/0007-patchlevel-7.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-007
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-007
-
-Bug-Reported-by: John Lenton
-Bug-Reference-ID:
-Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476
-
-Bug-Description:
-
-Readline should allow SIGALRM and SIGVTALRM (if available) to `interrupt'
-rl_getc and cause the handler to run when not in a signal handling context.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3-patched/input.c 2014-01-10 15:07:08.000000000 -0500
---- b/input.c 2014-05-30 16:20:56.000000000 -0400
-***************
-*** 535,540 ****
---- 538,551 ----
- else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM)
- return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF);
-+ /* keyboard-generated signals of interest */
- else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT)
- RL_CHECK_SIGNALS ();
-+ /* non-keyboard-generated signals of interest */
-+ else if (_rl_caught_signal == SIGALRM
-+ #if defined (SIGVTALRM)
-+ || _rl_caught_signal == SIGVTALRM
-+ #endif
-+ )
-+ RL_CHECK_SIGNALS ();
-
- if (rl_signal_event_hook)
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 6
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 7
diff --git a/package/readline/0008-patchlevel-8.patch b/package/readline/0008-patchlevel-8.patch
deleted file mode 100644
index 412ba352d..000000000
--- a/package/readline/0008-patchlevel-8.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From http://ftp.gnu.org/pub/gnu/readline/readline-6.3-patches/readline63-008
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
-
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 6.3
-Patch-ID: readline63-008
-
-Bug-Reported-by: Jared Yanovich <slovichon@gmail.com>
-Bug-Reference-ID: <20140625225019.GJ17044@nightderanger.psc.edu>
-Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html
-
-Bug-Description:
-
-When the readline `revert-all-at-newline' option is set, pressing newline
-when the current line is one retrieved from history results in a double free
-and a segmentation fault.
-
-Patch (apply with `patch -p0'):
-
-*** a/readline-6.3-patched/misc.c 2012-09-01 18:03:11.000000000 -0400
---- b/misc.c 2014-06-30 13:41:19.000000000 -0400
-***************
-*** 462,465 ****
---- 462,466 ----
- /* Set up rl_line_buffer and other variables from history entry */
- rl_replace_from_history (entry, 0); /* entry->line is now current */
-+ entry->data = 0; /* entry->data is now current undo list */
- /* Undo all changes to this history entry */
- while (rl_undo_list)
-***************
-*** 469,473 ****
- FREE (entry->line);
- entry->line = savestring (rl_line_buffer);
-- entry->data = 0;
- }
- entry = previous_history ();
---- 470,473 ----
-*** a/readline-6.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- b/patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 7
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 8
diff --git a/package/readline/readline.hash b/package/readline/readline.hash
index d8833e919..43f8c64bb 100644
--- a/package/readline/readline.hash
+++ b/package/readline/readline.hash
@@ -1,2 +1,2 @@
# Locally calculated after checking pgp signature
-sha256 56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43 readline-6.3.tar.gz
+sha256 750d437185286f40a369e1e4f4764eda932b9459b5ec9a731628393dd3d32334 readline-7.0.tar.gz
diff --git a/package/readline/readline.mk b/package/readline/readline.mk
index 763197085..ed4e1442e 100644
--- a/package/readline/readline.mk
+++ b/package/readline/readline.mk
@@ -4,7 +4,7 @@
#
################################################################################
-READLINE_VERSION = 6.3
+READLINE_VERSION = 7.0
READLINE_SITE = $(BR2_GNU_MIRROR)/readline
READLINE_INSTALL_STAGING = YES
READLINE_DEPENDENCIES = ncurses
diff --git a/package/ruby/ruby.hash b/package/ruby/ruby.hash
index 7e627441a..8182e2c15 100644
--- a/package/ruby/ruby.hash
+++ b/package/ruby/ruby.hash
@@ -1,2 +1,2 @@
-# From https://www.ruby-lang.org/en/news/2016/04/26/ruby-2-3-1-released/
-sha256 6725b5534d5a3a21ec4f14d6d7b9921a0d00d08acb88fd04cd50b47b70496338 ruby-2.3.1.tar.xz
+# From https://www.ruby-lang.org/en/news/2016/11/21/ruby-2-3-3-released/
+sha256 1a4fa8c2885734ba37b97ffdb4a19b8fba0e8982606db02d936e65bac07419dc ruby-2.3.3.tar.xz
diff --git a/package/ruby/ruby.mk b/package/ruby/ruby.mk
index f3f80475b..b8e03ac07 100644
--- a/package/ruby/ruby.mk
+++ b/package/ruby/ruby.mk
@@ -5,7 +5,7 @@
################################################################################
RUBY_VERSION_MAJOR = 2.3
-RUBY_VERSION = $(RUBY_VERSION_MAJOR).1
+RUBY_VERSION = $(RUBY_VERSION_MAJOR).3
RUBY_VERSION_EXT = 2.3.0
RUBY_SITE = http://cache.ruby-lang.org/pub/ruby/$(RUBY_VERSION_MAJOR)
RUBY_SOURCE = ruby-$(RUBY_VERSION).tar.xz
diff --git a/package/screen/screen.mk b/package/screen/screen.mk
index 84c3d75d1..16a97cc75 100644
--- a/package/screen/screen.mk
+++ b/package/screen/screen.mk
@@ -11,6 +11,7 @@ SCREEN_LICENSE_FILES = COPYING
SCREEN_DEPENDENCIES = ncurses
SCREEN_AUTORECONF = YES
SCREEN_CONF_ENV = CFLAGS="$(TARGET_CFLAGS)"
+SCREEN_CONF_OPTS = --enable-colors256
SCREEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SCREEN=screen install_bin
define SCREEN_INSTALL_SCREENRC
diff --git a/package/ser2net/ser2net.hash b/package/ser2net/ser2net.hash
index f3b5692bf..1b9364329 100644
--- a/package/ser2net/ser2net.hash
+++ b/package/ser2net/ser2net.hash
@@ -1,2 +1,2 @@
# Locally computed:
-sha256 ad0db28e2a4b79a6d4e4b38ec1e50a22cc80fbbb4d7cad0a42f651457b00475e ser2net-3.1.tar.gz
+sha256 e91cf85ab2c1769e17be7726b133f8f3ad197e9d4b445bb0b0d2f3f97f88a083 ser2net-3.2.tar.gz
diff --git a/package/ser2net/ser2net.mk b/package/ser2net/ser2net.mk
index 9a4a8d561..b33512edc 100644
--- a/package/ser2net/ser2net.mk
+++ b/package/ser2net/ser2net.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SER2NET_VERSION = 3.1
+SER2NET_VERSION = 3.2
SER2NET_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net
SER2NET_LICENSE = GPLv2+
SER2NET_LICENSE_FILES = COPYING
diff --git a/package/snowball-hdmiservice/Config.in b/package/snowball-hdmiservice/Config.in
deleted file mode 100644
index 21a4f3c3c..000000000
--- a/package/snowball-hdmiservice/Config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-config BR2_PACKAGE_SNOWBALL_HDMISERVICE
- bool "snowball-hdmiservice"
- depends on BR2_TOOLCHAIN_HAS_THREADS
- depends on !BR2_STATIC_LIBS
- help
- HDMI userspace control daemon
-
- This package contains the HDMI userspace control daemon for the
- snowball board
-
- http://www.igloocommunity.org
-
-comment "snowball-hdmiservice needs a toolchain w/ threads, dynamic library"
- depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
diff --git a/package/snowball-hdmiservice/snowball-hdmiservice.hash b/package/snowball-hdmiservice/snowball-hdmiservice.hash
deleted file mode 100644
index e9fffd757..000000000
--- a/package/snowball-hdmiservice/snowball-hdmiservice.hash
+++ /dev/null
@@ -1,2 +0,0 @@
-# locally computed
-sha256 dd2d8362a66178be082affa7cc238aebf3d671be184356bc23d13789db638b9d snowball-hdmiservice-f75c99d1c52707240a78b4ba78e41d20d3aa3b08.tar.gz
diff --git a/package/snowball-hdmiservice/snowball-hdmiservice.mk b/package/snowball-hdmiservice/snowball-hdmiservice.mk
deleted file mode 100644
index 4aa1a2749..000000000
--- a/package/snowball-hdmiservice/snowball-hdmiservice.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-################################################################################
-#
-# snowball-hdmiservice
-#
-################################################################################
-
-SNOWBALL_HDMISERVICE_VERSION = f75c99d1c52707240a78b4ba78e41d20d3aa3b08
-SNOWBALL_HDMISERVICE_SITE = $(call github,igloocommunity,hdmiservice,$(SNOWBALL_HDMISERVICE_VERSION))
-SNOWBALL_HDMISERVICE_LICENSE = MIT
-SNOWBALL_HDMISERVICE_LICENSE_FILES = debian/copyright
-SNOWBALL_HDMISERVICE_INSTALL_STAGING = YES
-
-define SNOWBALL_HDMISERVICE_BUILD_CMDS
- $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)"
-endef
-
-define SNOWBALL_HDMISERVICE_INSTALL_STAGING_CMDS
- $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)" DESTDIR=$(STAGING_DIR) install
-endef
-
-define SNOWBALL_HDMISERVICE_INSTALL_TARGET_CMDS
- $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) CC="$(TARGET_CC) $(TARGET_CFLAGS)" DESTDIR=$(TARGET_DIR) install
-endef
-
-$(eval $(generic-package))
diff --git a/package/snowball-init/Config.in b/package/snowball-init/Config.in
deleted file mode 100644
index 6c9473120..000000000
--- a/package/snowball-init/Config.in
+++ /dev/null
@@ -1,17 +0,0 @@
-config BR2_PACKAGE_SNOWBALL_INIT
- bool "snowball-init"
- # Runtime dependency, needed by snowball startup script
- select BR2_PACKAGE_BLUEZ_UTILS
- depends on !BR2_STATIC_LIBS # bluez_utils
- depends on BR2_USE_WCHAR # libglib2
- depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
- depends on BR2_USE_MMU # dbus
- select BR2_PACKAGE_UX500_FIRMWARE
- help
- Snowball init scripts
-
- http://www.igloocommunity.org
-
-comment "snowball-init 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/snowball-init/snowball-init.hash b/package/snowball-init/snowball-init.hash
deleted file mode 100644
index f048ab732..000000000
--- a/package/snowball-init/snowball-init.hash
+++ /dev/null
@@ -1,2 +0,0 @@
-# Locally calculated
-sha256 7adafa3e91cae286e18c062acc1b1d0676ac7352e7dedef9dc6106f905433106 snowball-init-b064be21de25729039e5e54037bbdd2e25cfd5b7.tar.gz
diff --git a/package/snowball-init/snowball-init.mk b/package/snowball-init/snowball-init.mk
deleted file mode 100644
index f06b03277..000000000
--- a/package/snowball-init/snowball-init.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-################################################################################
-#
-# snowball-init
-#
-################################################################################
-
-SNOWBALL_INIT_VERSION = b064be21de25729039e5e54037bbdd2e25cfd5b7
-SNOWBALL_INIT_SITE = $(call github,igloocommunity,snowball-init,$(SNOWBALL_INIT_VERSION))
-SNOWBALL_INIT_LICENSE = BSD-4c
-SNOWBALL_INIT_LICENSE_FILES = debian/copyright
-
-define SNOWBALL_INIT_INSTALL_INIT_SYSV
- $(INSTALL) -D -m 0755 $(@D)/snowball $(TARGET_DIR)/etc/init.d/S50snowball
-endef
-
-$(eval $(generic-package))
diff --git a/package/sqlite/sqlite.hash b/package/sqlite/sqlite.hash
index b0418af0f..7839dc903 100644
--- a/package/sqlite/sqlite.hash
+++ b/package/sqlite/sqlite.hash
@@ -1,4 +1,4 @@
# From http://www.sqlite.org/download.html
-sha1 b34cb4ee9710368598c62df0222f5c24dfc9c860 sqlite-autoconf-3150000.tar.gz
+sha1 31f52169bcfeef9efb61480d0950e928ad059552 sqlite-autoconf-3150200.tar.gz
# Calculated based on the hash above
-sha256 77162da9b4a0336d7e77d5252b690662850f62b47c12d9125f74ab9de78ded27 sqlite-autoconf-3150000.tar.gz
+sha256 07b35063b9386865b78226cdaca9a299d938a87aaa8fdc4d73edb0cef30f3149 sqlite-autoconf-3150200.tar.gz
diff --git a/package/sqlite/sqlite.mk b/package/sqlite/sqlite.mk
index 0a5c1bb8f..cb032498d 100644
--- a/package/sqlite/sqlite.mk
+++ b/package/sqlite/sqlite.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SQLITE_VERSION = 3150000
+SQLITE_VERSION = 3150200
SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_VERSION).tar.gz
SQLITE_SITE = http://www.sqlite.org/2016
SQLITE_LICENSE = Public domain
diff --git a/package/sudo/sudo.hash b/package/sudo/sudo.hash
index 4c2431f13..c6f5be3ab 100644
--- a/package/sudo/sudo.hash
+++ b/package/sudo/sudo.hash
@@ -1,2 +1,2 @@
# From: http://www.sudo.ws/download.html
-sha256 4316381708324da8b6cb151f655c1a11855207c7c02244d8ffdea5104d7cc308 sudo-1.8.15.tar.gz
+sha256 e5a0471c721281a693025bbde33ebd9d3db43245d83ab8516bbfc23980379434 sudo-1.8.18p1.tar.gz
diff --git a/package/sudo/sudo.mk b/package/sudo/sudo.mk
index f28312ace..3643d55db 100644
--- a/package/sudo/sudo.mk
+++ b/package/sudo/sudo.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SUDO_VERSION = 1.8.15
+SUDO_VERSION = 1.8.18p1
SUDO_SITE = http://www.sudo.ws/sudo/dist
SUDO_LICENSE = ISC BSD-3c
SUDO_LICENSE_FILES = doc/LICENSE
@@ -30,6 +30,13 @@ else
SUDO_CONF_OPTS += --without-pam
endif
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+SUDO_CONF_OPTS += --enable-zlib
+SUDO_DEPENDENCIES += zlib
+else
+SUDO_CONF_OPTS += --disable-zlib
+endif
+
# mksigname/mksiglist needs to run on build host to generate source files
define SUDO_BUILD_MKSIGNAME_MKSIGLIST_HOST
$(MAKE) $(HOST_CONFIGURE_OPTS) \
diff --git a/package/sunxi-tools/sunxi-tools.hash b/package/sunxi-tools/sunxi-tools.hash
index 90991a36b..efb2b54d9 100644
--- a/package/sunxi-tools/sunxi-tools.hash
+++ b/package/sunxi-tools/sunxi-tools.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 8b5defeaabec99b6c759ed1d99d91e4d23188431868d17cf6ed144f37e42bee5 sunxi-tools-89dac0f7eaaedd0d8afa9d5a3c713c7c1ccb9cf6.tar.gz
+sha256 da5d762608517b4b2e9bd392bd9a63afae3973d9c8264cbcfb757ddac8120d1b sunxi-tools-v1.4.1.tar.gz
diff --git a/package/sunxi-tools/sunxi-tools.mk b/package/sunxi-tools/sunxi-tools.mk
index 23e313533..1a58aff1b 100644
--- a/package/sunxi-tools/sunxi-tools.mk
+++ b/package/sunxi-tools/sunxi-tools.mk
@@ -4,10 +4,10 @@
#
################################################################################
-SUNXI_TOOLS_VERSION = 89dac0f7eaaedd0d8afa9d5a3c713c7c1ccb9cf6
+SUNXI_TOOLS_VERSION = v1.4.1
SUNXI_TOOLS_SITE = $(call github,linux-sunxi,sunxi-tools,$(SUNXI_TOOLS_VERSION))
SUNXI_TOOLS_LICENSE = GPLv2+
-SUNXI_TOOLS_LICENSE_FILES = COPYING
+SUNXI_TOOLS_LICENSE_FILES = LICENSE.md
HOST_SUNXI_TOOLS_DEPENDENCIES = host-libusb host-pkgconf
FEX2BIN = $(HOST_DIR)/usr/bin/fex2bin
diff --git a/package/swupdate/swupdate.hash b/package/swupdate/swupdate.hash
index 918ca2fe8..1ba10f645 100644
--- a/package/swupdate/swupdate.hash
+++ b/package/swupdate/swupdate.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 c21d2fd52eb7ed9c304a7a996d230a8f1b47b9879a8c9fa50c80b41e117d1e60 swupdate-2016.07.tar.gz
+sha256 840d6287a41f7a42e08a74045ee40b7c2f82c1ecfedf8c915e3935d4f0084376 swupdate-2016.10.tar.gz
diff --git a/package/swupdate/swupdate.mk b/package/swupdate/swupdate.mk
index d442810b2..c905c1d74 100644
--- a/package/swupdate/swupdate.mk
+++ b/package/swupdate/swupdate.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SWUPDATE_VERSION = 2016.07
+SWUPDATE_VERSION = 2016.10
SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION))
SWUPDATE_LICENSE = GPLv2+, MIT, Public Domain
SWUPDATE_LICENSE_FILES = COPYING
diff --git a/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch b/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch
index 18dc98790..2c1d929eb 100644
--- a/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch
+++ b/package/systemd/0002-build-sys-revert-use-of-ln-relative-option.patch
@@ -11,25 +11,21 @@ for example).
Signed-off-by: Eric Le Bihan <eric.le.bihan.dev@free.fr>
[Maxime: refresh the patch]
+[Vincent:
+ refresh the patch, move-to-rootlibdir removed by:
+ https://github.com/systemd/systemd/commit/082210c7a837063fd8b520b18c221b42059d7eff
+]
Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
+Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
- Makefile.am | 15 +++------------
+ Makefile.am | 11 ++---------
configure.ac | 2 --
- 2 files changed, 3 insertions(+), 14 deletions(-)
+ 2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 0c27f81..4de1595 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -255,7 +255,7 @@ define move-to-rootlibdir
- $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \
- so_img_name=$$(readlink $(DESTDIR)$(libdir)/$$libname) && \
- rm -f $(DESTDIR)$(libdir)/$$libname && \
-- $(LN_S) --relative -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \
-+ $(LN_S) -f $(DESTDIR)$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \
- mv $(DESTDIR)$(libdir)/$$libname.* $(DESTDIR)$(rootlibdir); \
- fi
- endef
@@ -312,9 +312,9 @@ install-aliases-hook:
set -- $(SYSTEM_UNIT_ALIASES) && \
dir=$(systemunitdir) && $(install-aliases)
diff --git a/package/systemd/0004-importd-export-raw-needs-missing.h-for-O_TMPFILE.patch b/package/systemd/0004-importd-export-raw-needs-missing.h-for-O_TMPFILE.patch
deleted file mode 100644
index bded6bc5d..000000000
--- a/package/systemd/0004-importd-export-raw-needs-missing.h-for-O_TMPFILE.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4a6d35237f96d07f3a783c874933f87bf14f93e0 Mon Sep 17 00:00:00 2001
-From: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Date: Sun, 28 Aug 2016 16:26:04 +0200
-Subject: [PATCH] importd/export-raw: needs missing.h for O_TMPFILE
-
-O_TMPFILE may be missing from the system headers, so use our fallback
-definition.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
----
-Backported from upstream:
- https://github.com/systemd/systemd/commit/4a6d35237f96d07f3a783c874933f87bf14f93e0
----
- src/import/export-raw.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/import/export-raw.c b/src/import/export-raw.c
-index db06e11..6136b67 100644
---- a/src/import/export-raw.c
-+++ b/src/import/export-raw.c
-@@ -34,6 +34,7 @@
- #include "fd-util.h"
- #include "fileio.h"
- #include "import-common.h"
-+#include "missing.h"
- #include "ratelimit.h"
- #include "string-util.h"
- #include "util.h"
---
-2.7.4
-
diff --git a/package/systemd/0005-missing.h-add-missing-definitions-for-__O_TMPFILE.patch b/package/systemd/0005-missing.h-add-missing-definitions-for-__O_TMPFILE.patch
deleted file mode 100644
index 1c5ca05c9..000000000
--- a/package/systemd/0005-missing.h-add-missing-definitions-for-__O_TMPFILE.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From daad709a7c13c0fac73e407528f96cc876c09629 Mon Sep 17 00:00:00 2001
-From: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Date: Sun, 28 Aug 2016 17:26:42 +0200
-Subject: [PATCH] missing.h: add missing definitions for __O_TMPFILE
-
-Currently, a missing __O_TMPFILE was only defined for i386 and x86_64,
-leaving any other architectures with an "old" toolchain fail miserably
-at build time:
- src/import/export-raw.c: In function 'reflink_snapshot':
- src/import/export-raw.c:271:26: error: 'O_TMPFILE' undeclared (first use in this function)
- new_fd = open(d, O_TMPFILE|O_CLOEXEC|O_NOCTTY|O_RDWR, 0600);
- ^
-
-__O_TMPFILE (and O_TMPFILE) are available since glibc 2.19. However, a
-lot of existing toolchains are still using glibc-2.18, and some even
-before that, and it is not really possible to update those toolchains.
-
-Instead of defining it only for i386 and x86_64, define __O_TMPFILE
-with the specific values for those archs where it is different from the
-generic value. Use the values as found in the Linux kernel (v4.8-rc3,
-current as of time of commit).
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
----
-Backported from upstream:
- https://github.com/systemd/systemd/commit/daad709a7c13c0fac73e407528f96cc876c09629
----
- src/basic/missing.h | 17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
-diff --git a/src/basic/missing.h b/src/basic/missing.h
-index f8e0966..13ff51c 100644
---- a/src/basic/missing.h
-+++ b/src/basic/missing.h
-@@ -537,12 +537,21 @@ struct btrfs_ioctl_quota_ctl_args {
- # define DRM_IOCTL_DROP_MASTER _IO('d', 0x1f)
- #endif
-
--#if defined(__i386__) || defined(__x86_64__)
--
--/* The precise definition of __O_TMPFILE is arch specific, so let's
-- * just define this on x86 where we know the value. */
-+/* The precise definition of __O_TMPFILE is arch specific; use the
-+ * values defined by the kernel (note: some are hexa, some are octal,
-+ * duplicated as-is from the kernel definitions):
-+ * - alpha, parisc, sparc: each has a specific value;
-+ * - others: they use the "generic" value.
-+ */
-
- #ifndef __O_TMPFILE
-+#if defined(__alpha__)
-+#define __O_TMPFILE 0100000000
-+#elif defined(__parisc__) || defined(__hppa__)
-+#define __O_TMPFILE 0400000000
-+#elif defined(__sparc__) || defined(__sparc64__)
-+#define __O_TMPFILE 0x2000000
-+#else
- #define __O_TMPFILE 020000000
- #endif
-
---
-2.7.4
-
diff --git a/package/systemd/0006-basic-fileio-we-always-have-O_TMPFILE-now.patch b/package/systemd/0006-basic-fileio-we-always-have-O_TMPFILE-now.patch
deleted file mode 100644
index e0e7209e6..000000000
--- a/package/systemd/0006-basic-fileio-we-always-have-O_TMPFILE-now.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 1d9ed171788821c21ca900a921833a8e41bf22f3 Mon Sep 17 00:00:00 2001
-From: "Yann E. MORIN" <yann.morin.1998@free.fr>
-Date: Mon, 29 Aug 2016 12:34:50 +0200
-Subject: [PATCH] basic/fileio: we always have O_TMPFILE now
-
-fileio makes use of O_TMPFILE when it is available.
-
-We now always have O_TMPFILE, defined in missing.h if missing
-from the toolchain headers.
-
-Have fileio include missing.h and drop the guards around the
-use of O_TMPFILE.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
----
-Backported from upstream:
- https://github.com/systemd/systemd/commit/1d9ed171788821c21ca900a921833a8e41bf22f3
----
- src/basic/fileio.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/src/basic/fileio.c b/src/basic/fileio.c
-index d642f3d..a5920e7 100644
---- a/src/basic/fileio.c
-+++ b/src/basic/fileio.c
-@@ -37,6 +37,7 @@
- #include "hexdecoct.h"
- #include "log.h"
- #include "macro.h"
-+#include "missing.h"
- #include "parse-util.h"
- #include "path-util.h"
- #include "random-util.h"
-@@ -1280,12 +1281,10 @@ int open_tmpfile_unlinkable(const char *directory, int flags) {
-
- /* Returns an unlinked temporary file that cannot be linked into the file system anymore */
-
--#ifdef O_TMPFILE
- /* Try O_TMPFILE first, if it is supported */
- fd = open(directory, flags|O_TMPFILE|O_EXCL, S_IRUSR|S_IWUSR);
- if (fd >= 0)
- return fd;
--#endif
-
- /* Fall back to unguessable name + unlinking */
- p = strjoina(directory, "/systemd-tmp-XXXXXX");
-@@ -1313,7 +1312,6 @@ int open_tmpfile_linkable(const char *target, int flags, char **ret_path) {
- * which case "ret_path" will be returned as NULL. If not possible a the tempoary path name used is returned in
- * "ret_path". Use link_tmpfile() below to rename the result after writing the file in full. */
-
--#ifdef O_TMPFILE
- {
- _cleanup_free_ char *dn = NULL;
-
-@@ -1329,7 +1327,6 @@ int open_tmpfile_linkable(const char *target, int flags, char **ret_path) {
-
- log_debug_errno(errno, "Failed to use O_TMPFILE on %s: %m", dn);
- }
--#endif
-
- r = tempfn_random(target, NULL, &tmp);
- if (r < 0)
---
-2.7.4
-
diff --git a/package/systemd/systemd.hash b/package/systemd/systemd.hash
index 30e9ef652..0acaa3cdc 100644
--- a/package/systemd/systemd.hash
+++ b/package/systemd/systemd.hash
@@ -1,2 +1,2 @@
# sha256 locally computed
-sha256 899733ad6c157cedbb89aec4efe3bc824dcfd65a1d6f6bebc7b043f7924e39b4 systemd-231.tar.gz
+sha256 1172c7c7d5d72fbded53186e7599d5272231f04cc8b72f9a0fb2c5c20dfc4880 systemd-232.tar.gz
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index fb0781959..fa07bd057 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SYSTEMD_VERSION = 231
+SYSTEMD_VERSION = 232
SYSTEMD_SITE = $(call github,systemd,systemd,v$(SYSTEMD_VERSION))
SYSTEMD_LICENSE = LGPLv2.1+, GPLv2+ (udev), Public Domain (few source files, see README)
SYSTEMD_LICENSE_FILES = LICENSE.GPL2 LICENSE.LGPL2.1 README
diff --git a/package/tinycbor/Config.in b/package/tinycbor/Config.in
index cf176e46f..41f0b5fac 100644
--- a/package/tinycbor/Config.in
+++ b/package/tinycbor/Config.in
@@ -1,7 +1,5 @@
config BR2_PACKAGE_TINYCBOR
bool "tinycbor"
- # package uses fopencookie(), not available with this toolchain
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
help
Concise Binary Object Representation (CBOR) Library
diff --git a/package/tinycbor/tinycbor.hash b/package/tinycbor/tinycbor.hash
index f07fc17d9..88300e8e3 100644
--- a/package/tinycbor/tinycbor.hash
+++ b/package/tinycbor/tinycbor.hash
@@ -1,4 +1,2 @@
# Locally computed:
-sha256 f70de1e6b7e3750abb4ceacf0059e47b47c769f113434de10293b33867ce54c2 tinycbor-v0.3.2.tar.gz
-sha256 7d3aa839ae246e9e14fc73e67869d88c684802c1578fb75503f3fdde1482dcf6 ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch
-sha256 42054074478d074d0320e0c64e8d44f60081b6f0d8dc0e3607e0fb7f4dad96a4 ad09b6af11fc8b6391041973783785cfe1559d63.patch
+sha256 302ac9de66f1048725040ccc9a99e03c20529ac2b150ccf35cfd1e2dafa81c4b tinycbor-v0.4.tar.gz
diff --git a/package/tinycbor/tinycbor.mk b/package/tinycbor/tinycbor.mk
index 8ce9a7682..2691e5b8d 100644
--- a/package/tinycbor/tinycbor.mk
+++ b/package/tinycbor/tinycbor.mk
@@ -4,22 +4,11 @@
#
################################################################################
-TINYCBOR_VERSION = v0.3.2
+TINYCBOR_VERSION = v0.4
TINYCBOR_SITE = $(call github,01org,tinycbor,$(TINYCBOR_VERSION))
TINYCBOR_LICENSE = MIT
TINYCBOR_LICENSE_FILES = LICENSE
-# This patch fixes the issue on unnamed union which are not supported by some
-# targets like blackfin
-# This patch is currently in dev branch and will be a part of v0.4
-TINYCBOR_PATCH = \
- https://github.com/01org/tinycbor/commit/ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch
-
-# This patch fixes the issue on cjson detection
-# This patch is currently in dev branch and will be a part of v0.4
-TINYCBOR_PATCH += \
- https://github.com/01org/tinycbor/commit/ad09b6af11fc8b6391041973783785cfe1559d63.patch
-
TINYCBOR_DEPENDENCIES = host-pkgconf
TINYCBOR_INSTALL_STAGING = YES
diff --git a/package/tslib/0001-enable_raw_module.patch b/package/tslib/0001-enable_raw_module.patch
deleted file mode 100644
index cb89338cf..000000000
--- a/package/tslib/0001-enable_raw_module.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Enable raw module by default
-
-Signed-off-by: Daniel Nyström <daniel.nystrom@timeterminal.se>
-
-diff -Naur tslib-e000d35a.orig/etc/ts.conf tslib-e000d35a/etc/ts.conf
---- tslib-e000d35a.orig/etc/ts.conf 2010-12-21 18:54:45.000000000 +0100
-+++ tslib-e000d35a/etc/ts.conf 2010-12-21 18:55:03.000000000 +0100
-@@ -1,5 +1,5 @@
- # Uncomment if you wish to use the linux input layer event interface
--# module_raw input
-+module_raw input
-
- # Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
- # module_raw collie
diff --git a/package/tslib/0002-add_finddef_and_inputattach_utils.patch b/package/tslib/0002-add_finddef_and_inputattach_utils.patch
deleted file mode 100644
index dcc6ec75a..000000000
--- a/package/tslib/0002-add_finddef_and_inputattach_utils.patch
+++ /dev/null
@@ -1,718 +0,0 @@
-diff -Naur tslib-org/tests/Makefile.am tslib-1.0/tests/Makefile.am
---- tslib-org/tests/Makefile.am 2006-08-25 00:02:55.000000000 +0300
-+++ tslib-1.0/tests/Makefile.am 2007-05-07 17:39:54.000000000 +0300
-@@ -12,7 +12,7 @@
- AM_CFLAGS = $(DEBUGFLAGS)
- INCLUDES = -I$(top_srcdir)/src
-
--bin_PROGRAMS = ts_test ts_calibrate ts_print ts_print_raw ts_harvest
-+bin_PROGRAMS = ts_test ts_calibrate ts_print ts_print_raw ts_harvest ts_finddev inputattach
-
- ts_test_SOURCES = ts_test.c fbutils.c fbutils.h font_8x8.c font_8x16.c font.h
- ts_test_LDADD = $(top_builddir)/src/libts.la
-@@ -27,4 +27,10 @@
- ts_calibrate_LDADD = $(top_builddir)/src/libts.la
-
- ts_harvest_SOURCES = ts_harvest.c fbutils.c fbutils.h testutils.c testutils.h font_8x8.c font_8x16.c font.h
--ts_harvest_LDADD = $(top_builddir)/src/libts.la
-+ts_harvest_LDADD = $(top_builddir)/src/libts.la
-+
-+ts_finddev_SOURCES = ts_finddev.c
-+ts_finddev_LDADD = $(top_builddir)/src/libts.la
-+
-+inputattach_SOURCES = inputattach.c
-+inputattach_LDADD =
-diff -Naur tslib-org/tests/inputattach.c tslib-1.0/tests/inputattach.c
---- tslib-org/tests/inputattach.c 1970-01-01 02:00:00.000000000 +0200
-+++ tslib-1.0/tests/inputattach.c 2007-05-07 17:36:37.000000000 +0300
-@@ -0,0 +1,611 @@
-+/*
-+ * $Id: inputattach.c,v 1.24 2006/02/08 12:19:31 vojtech Exp $
-+ *
-+ * Copyright (c) 1999-2000 Vojtech Pavlik
-+ *
-+ * Sponsored by SuSE
-+ *
-+ * Twiddler support Copyright (c) 2001 Arndt Schoenewald
-+ * Sponsored by Quelltext AG (http://www.quelltext-ag.de), Dortmund, Germany
-+ */
-+
-+/*
-+ * Input line discipline attach program
-+ */
-+
-+/*
-+ * This program 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 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program 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 this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * Should you need to contact me, the author, you can do so either by
-+ * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
-+ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
-+ */
-+
-+/* softa note:
-+cvs version is here:
-+http://cvs.sourceforge.net/viewcvs.py/ *checkout* /linuxconsole/ruby/utils/inputattach.c
-+*/
-+
-+#include <linux/serio.h>
-+
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <sys/ioctl.h>
-+#include <sys/time.h>
-+
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <unistd.h>
-+#include <fcntl.h>
-+#include <termios.h>
-+#include <string.h>
-+#include <assert.h>
-+#include <ctype.h>
-+
-+// softa patch!
-+/*
-+ * Serio types
-+ */
-+#ifndef SERIO_UNKNOWN
-+ #define SERIO_UNKNOWN 0x00
-+#endif
-+#ifndef SERIO_MSC
-+ #define SERIO_MSC 0x01
-+#endif
-+#ifndef SERIO_SUN
-+ #define SERIO_SUN 0x02
-+#endif
-+#ifndef SERIO_MS
-+ #define SERIO_MS 0x03
-+#endif
-+#ifndef SERIO_MP
-+ #define SERIO_MP 0x04
-+#endif
-+#ifndef SERIO_MZ
-+ #define SERIO_MZ 0x05
-+#endif
-+#ifndef SERIO_MZP
-+ #define SERIO_MZP 0x06
-+#endif
-+#ifndef SERIO_MZPP
-+ #define SERIO_MZPP 0x07
-+#endif
-+#ifndef SERIO_VSXXXAA
-+ #define SERIO_VSXXXAA 0x08
-+#endif
-+#ifndef SERIO_SUNKBD
-+ #define SERIO_SUNKBD 0x10
-+#endif
-+#ifndef SERIO_WARRIOR
-+ #define SERIO_WARRIOR 0x18
-+#endif
-+#ifndef SERIO_SPACEORB
-+ #define SERIO_SPACEORB 0x19
-+#endif
-+#ifndef SERIO_MAGELLAN
-+ #define SERIO_MAGELLAN 0x1a
-+#endif
-+#ifndef SERIO_SPACEBALL
-+ #define SERIO_SPACEBALL 0x1b
-+#endif
-+#ifndef SERIO_GUNZE
-+ #define SERIO_GUNZE 0x1c
-+#endif
-+#ifndef SERIO_IFORCE
-+ #define SERIO_IFORCE 0x1d
-+#endif
-+#ifndef SERIO_STINGER
-+ #define SERIO_STINGER 0x1e
-+#endif
-+#ifndef SERIO_NEWTON
-+ #define SERIO_NEWTON 0x1f
-+#endif
-+#ifndef SERIO_STOWAWAY
-+ #define SERIO_STOWAWAY 0x20
-+#endif
-+#ifndef SERIO_H3600
-+ #define SERIO_H3600 0x21
-+#endif
-+#ifndef SERIO_PS2SER
-+ #define SERIO_PS2SER 0x22
-+#endif
-+#ifndef SERIO_TWIDKBD
-+ #define SERIO_TWIDKBD 0x23
-+#endif
-+#ifndef SERIO_TWIDJOY
-+ #define SERIO_TWIDJOY 0x24
-+#endif
-+#ifndef SERIO_HIL
-+ #define SERIO_HIL 0x25
-+#endif
-+#ifndef SERIO_SNES232
-+ #define SERIO_SNES232 0x26
-+#endif
-+#ifndef SERIO_SEMTECH
-+ #define SERIO_SEMTECH 0x27
-+#endif
-+#ifndef SERIO_LKKBD
-+ #define SERIO_LKKBD 0x28
-+#endif
-+#ifndef SERIO_ELO
-+ #define SERIO_ELO 0x29
-+#endif
-+#ifndef SERIO_MICROTOUCH
-+ #define SERIO_MICROTOUCH 0x30
-+#endif
-+#ifndef SERIO_PENMOUNT
-+ #define SERIO_PENMOUNT 0x31
-+#endif
-+#ifndef SERIO_TOUCHRIGHT
-+ #define SERIO_TOUCHRIGHT 0x32
-+#endif
-+#ifndef SERIO_TOUCHWIN
-+ #define SERIO_TOUCHWIN 0x33
-+#endif
-+// end softa patch!
-+
-+int readchar(int fd, unsigned char *c, int timeout)
-+{
-+ struct timeval tv;
-+ fd_set set;
-+
-+ tv.tv_sec = 0;
-+ tv.tv_usec = timeout * 1000;
-+
-+ FD_ZERO(&set);
-+ FD_SET(fd, &set);
-+
-+ if (!select(fd+1, &set, NULL, NULL, &tv)) return -1;
-+ if (read(fd, c, 1) != 1) return -1;
-+
-+ return 0;
-+}
-+
-+
-+
-+void setline(int fd, int flags, int speed)
-+{
-+ struct termios t;
-+
-+ tcgetattr(fd, &t);
-+
-+ t.c_cflag = flags | CREAD | HUPCL | CLOCAL;
-+ t.c_iflag = IGNBRK | IGNPAR;
-+ t.c_oflag = 0;
-+ t.c_lflag = 0;
-+ t.c_cc[VMIN ] = 1;
-+ t.c_cc[VTIME] = 0;
-+
-+ cfsetispeed(&t, speed);
-+ cfsetospeed(&t, speed);
-+
-+ tcsetattr(fd, TCSANOW, &t);
-+}
-+
-+int logitech_command(int fd, char *c)
-+{
-+ int i;
-+ unsigned char d;
-+ for (i = 0; c[i]; i++) {
-+ write(fd, c + i, 1);
-+ if (readchar(fd, &d, 1000))
-+ return -1;
-+ if (c[i] != d)
-+ return -1;
-+ }
-+ return 0;
-+}
-+
-+int magellan_init(int fd, long *id, long *extra)
-+{
-+ write(fd, "m3\rpBB\rz\r", 9);
-+ return 0;
-+}
-+
-+int warrior_init(int fd, long *id, long *extra)
-+{
-+ if (logitech_command(fd, "*S")) return -1;
-+ setline(fd, CS8, B4800);
-+ return 0;
-+}
-+
-+int spaceball_waitchar(int fd, unsigned char c, unsigned char *d, int timeout)
-+{
-+ unsigned char b = 0;
-+
-+ while (!readchar(fd, &b, timeout)) {
-+ if (b == 0x0a) continue;
-+ *d++ = b;
-+ if (b == c) break;
-+ }
-+
-+ *d = 0;
-+
-+ return -(b != c);
-+}
-+
-+int spaceball_waitcmd(int fd, char c, char *d)
-+{
-+ int i;
-+
-+ for (i = 0; i < 8; i++) {
-+ if (spaceball_waitchar(fd, 0x0d, d, 1000))
-+ return -1;
-+ if (d[0] == c)
-+ return 0;
-+ }
-+
-+ return -1;
-+}
-+
-+int spaceball_cmd(int fd, char *c, char *d)
-+{
-+ int i;
-+
-+ for (i = 0; c[i]; i++)
-+ write(fd, c + i, 1);
-+ write(fd, "\r", 1);
-+
-+ i = spaceball_waitcmd(fd, toupper(c[0]), d);
-+
-+ return i;
-+}
-+
-+#define SPACEBALL_1003 1
-+#define SPACEBALL_2003B 3
-+#define SPACEBALL_2003C 4
-+#define SPACEBALL_3003C 7
-+#define SPACEBALL_4000FLX 8
-+#define SPACEBALL_4000FLX_L 9
-+
-+int spaceball_init(int fd, long *id, long *extra)
-+{
-+ char r[64];
-+
-+ if (spaceball_waitchar(fd, 0x11, r, 4000) ||
-+ spaceball_waitchar(fd, 0x0d, r, 1000))
-+ return -1;
-+
-+ if (spaceball_waitcmd(fd, '@', r))
-+ return -1;
-+
-+ if (strncmp("@1 Spaceball alive", r, 18))
-+ return -1;
-+
-+ if (spaceball_waitcmd(fd, '@', r))
-+ return -1;
-+
-+ if (spaceball_cmd(fd, "hm", r))
-+ return -1;
-+
-+ if (!strncmp("Hm2003B", r, 7))
-+ *id = SPACEBALL_2003B;
-+ if (!strncmp("Hm2003C", r, 7))
-+ *id = SPACEBALL_2003C;
-+ if (!strncmp("Hm3003C", r, 7))
-+ *id = SPACEBALL_3003C;
-+
-+ if (!strncmp("HvFirmware", r, 10)) {
-+
-+ if (spaceball_cmd(fd, "\"", r))
-+ return -1;
-+
-+ if (strncmp("\"1 Spaceball 4000 FLX", r, 21))
-+ return -1;
-+
-+ if (spaceball_waitcmd(fd, '"', r))
-+ return -1;
-+
-+ if (strstr(r, " L "))
-+ *id = SPACEBALL_4000FLX_L;
-+ else
-+ *id = SPACEBALL_4000FLX;
-+
-+ if (spaceball_waitcmd(fd, '"', r))
-+ return -1;
-+
-+ if (spaceball_cmd(fd, "YS", r))
-+ return -1;
-+
-+ if (spaceball_cmd(fd, "M", r))
-+ return -1;
-+
-+ return 0;
-+ }
-+
-+ if (spaceball_cmd(fd, "P@A@A", r) ||
-+ spaceball_cmd(fd, "FT@", r) ||
-+ spaceball_cmd(fd, "MSS", r))
-+ return -1;
-+
-+ return 0;
-+}
-+
-+int stinger_init(int fd, long *id, long *extra)
-+{
-+ int i;
-+ unsigned char c;
-+ unsigned char *response = "\r\n0600520058C272";
-+
-+ if (write(fd, " E5E5", 5) != 5) /* Enable command */
-+ return -1;
-+
-+ for (i = 0; i < 16; i++) /* Check for Stinger */
-+ if (readchar(fd, &c, 200) || (c != response[i]))
-+ return -1;
-+
-+ return 0;
-+}
-+
-+int mzp_init(int fd, long *id, long *extra)
-+{
-+ if (logitech_command(fd, "*X*q")) return -1;
-+ setline(fd, CS8, B9600);
-+ return 0;
-+}
-+
-+int newton_init(int fd, long *id, long *extra)
-+{
-+ int i;
-+ unsigned char c;
-+ unsigned char response[35] =
-+ { 0x16, 0x10, 0x02, 0x64, 0x5f, 0x69, 0x64, 0x00,
-+ 0x00, 0x00, 0x0c, 0x6b, 0x79, 0x62, 0x64, 0x61,
-+ 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x6e,
-+ 0x6f, 0x66, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10,
-+ 0x03, 0xdd, 0xe7 };
-+
-+ for (i = 0; i < 35; i++)
-+ if (readchar(fd, &c, 400) || (c != response[i]))
-+ return -1;
-+
-+ return 0;
-+}
-+
-+int twiddler_init(int fd, long *id, long *extra)
-+{
-+ unsigned char c[10];
-+ int count, line;
-+
-+ /* Turn DTR off, otherwise the Twiddler won't send any data. */
-+ if (ioctl(fd, TIOCMGET, &line)) return -1;
-+ line &= ~TIOCM_DTR;
-+ if (ioctl(fd, TIOCMSET, &line)) return -1;
-+
-+ /* Check whether the device on the serial line is the Twiddler.
-+ *
-+ * The Twiddler sends data packets of 5 bytes which have the following
-+ * properties: the MSB is 0 on the first and 1 on all other bytes, and
-+ * the high order nibble of the last byte is always 0x8.
-+ *
-+ * We read and check two of those 5 byte packets to be sure that we
-+ * are indeed talking to a Twiddler. */
-+
-+ /* Read at most 5 bytes until we find one with the MSB set to 0 */
-+ for (count = 0; count < 5; count++) {
-+ if (readchar(fd, c+0, 500)) return -1;
-+ if ((c[0] & 0x80) == 0) break;
-+ }
-+
-+ if (count == 5) {
-+ /* Could not find header byte in data stream */
-+ return -1;
-+ }
-+
-+ /* Read remaining 4 bytes plus the full next data packet */
-+ for (count = 1; count < 10; count++) {
-+ if (readchar(fd, c+count, 500)) return -1;
-+ }
-+
-+ /* Check whether the bytes of both data packets obey the rules */
-+ for (count = 1; count < 10; count++) {
-+ if ((count % 5 == 0 && (c[count] & 0x80) != 0)
-+ || (count % 5 == 4 && (c[count] & 0xF0) != 0x80)
-+ || (count % 5 != 0 && (c[count] & 0x80) != 0x80)) {
-+ /* Invalid byte in data packet */
-+ return -1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+int penmount_init(int fd, long *id, long *extra)
-+{
-+ unsigned char init_cmd[5] = { 0xF2, 0x00, 0x00, 0x00, 0x00 };
-+ unsigned char start_cmd[5] = { 0xF1, 0x00, 0x00, 0x00, 0x00 };
-+ unsigned char c[10];
-+ int count;
-+
-+ /* try to initialize device */
-+ if (write( fd, init_cmd, 5 ) != 5)
-+ return -1;
-+
-+ /* read the responce */
-+ for (count = 0; count < 5; count ++) {
-+ if (readchar(fd, c+0, 500)) return -1;
-+ if (c[0] == 0xf2) break;
-+ }
-+
-+ if (readchar(fd, c+1, 500)) return -1;
-+ if (c[1] != 0xd9) return -1;
-+
-+ if (readchar(fd, c+2, 500)) return -1;
-+ if (c[2] != 0x0a) return -1;
-+
-+ /* the device is present! start it! */
-+ if (write( fd, start_cmd, 5 ) != 5)
-+ return -1;
-+
-+ return 0;
-+}
-+
-+int dump_init(int fd, long *id, long *extra)
-+{
-+ unsigned char c, o = 0;
-+
-+ c = 0x80;
-+
-+ if (write(fd, &c, 1) != 1) /* Enable command */
-+ return -1;
-+
-+ while (1)
-+ if (!readchar(fd, &c, 1)) {
-+ printf("%02x (%c) ", c, ((c > 32) && (c < 127)) ? c : 'x');
-+ o = 1;
-+ } else {
-+ if (o) {
-+ printf("\n");
-+ o = 0;
-+ }
-+ }
-+}
-+
-+struct input_types {
-+ char name[16];
-+ char name2[16];
-+ int speed;
-+ int flags;
-+ unsigned long type;
-+ unsigned long id;
-+ unsigned long extra;
-+ int flush;
-+ int (*init)(int fd, long *id, long *extra);
-+};
-+
-+struct input_types input_types[] = {
-+
-+{ "--sunkbd", "-skb", B1200, CS8, SERIO_SUNKBD, 0, 0, 1, NULL },
-+{ "--lkkbd", "-lk", B4800, CS8|CSTOPB, SERIO_LKKBD, 0, 0, 1, NULL },
-+{ "--vsxxx-aa", "-vs", B4800, CS8|CSTOPB|PARENB|PARODD,SERIO_VSXXXAA, 0, 0, 1, NULL },
-+{ "--spaceorb", "-orb", B9600, CS8, SERIO_SPACEORB, 0, 0, 1, NULL },
-+{ "--spaceball", "-sbl", B9600, CS8, SERIO_SPACEBALL,0, 0, 0, spaceball_init },
-+{ "--magellan", "-mag", B9600, CS8 | CSTOPB | CRTSCTS, SERIO_MAGELLAN, 0, 0, 1, magellan_init },
-+{ "--warrior", "-war", B1200, CS7 | CSTOPB, SERIO_WARRIOR, 0, 0, 1, warrior_init },
-+{ "--stinger", "-sting", B1200, CS8, SERIO_STINGER, 0, 0, 1, stinger_init },
-+{ "--mousesystems", "-msc", B1200, CS8, SERIO_MSC, 0, 0x01, 1, NULL },
-+{ "--sunmouse", "-sun", B1200, CS8, SERIO_SUN, 0, 0x01, 1, NULL },
-+{ "--microsoft", "-bare", B1200, CS7, SERIO_MS, 0, 0, 1, NULL },
-+{ "--mshack", "-ms", B1200, CS7, SERIO_MS, 0, 0x01, 1, NULL },
-+{ "--mouseman", "-mman", B1200, CS7, SERIO_MP, 0, 0x01, 1, NULL },
-+{ "--intellimouse", "-ms3", B1200, CS7, SERIO_MZ, 0, 0x11, 1, NULL },
-+{ "--mmwheel", "-mmw", B1200, CS7 | CSTOPB, SERIO_MZP, 0, 0x13, 1, mzp_init },
-+{ "--iforce", "-ifor", B38400, CS8, SERIO_IFORCE, 0, 0, 0, NULL },
-+{ "--newtonkbd", "-newt", B9600, CS8, SERIO_NEWTON, 0, 0, 0, newton_init },
-+{ "--h3600ts", "-ipaq", B115200, CS8, SERIO_H3600, 0, 0, 0, NULL },
-+{ "--stowawaykbd", "-ipaqkbd", B115200, CS8, SERIO_STOWAWAY, 0, 0, 0, NULL },
-+{ "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0, 0, 1, NULL },
-+{ "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0, 0, 0, twiddler_init },
-+{ "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0, 0, 0, twiddler_init },
-+{ "--elotouch", "-elo", B9600, CS8 | CRTSCTS, SERIO_ELO, 0, 0, 0, NULL },
-+{ "--elo4002", "-elo6b", B9600, CS8 | CRTSCTS, SERIO_ELO, 1, 0, 0, NULL },
-+{ "--elo271-140", "-elo4b", B9600, CS8 | CRTSCTS, SERIO_ELO, 2, 0, 0, NULL },
-+{ "--elo261-280", "-elo3b", B9600, CS8 | CRTSCTS, SERIO_ELO, 3, 0, 0, NULL },
-+{ "--dump", "-dump", B2400, CS8, 0, 0, 0, 0, dump_init },
-+{ "--dmc9000", "-dmc", B19200, CS8, SERIO_PENMOUNT, 0, 0, 0, penmount_init },
-+{ "", "", 0, 0 }
-+
-+};
-+
-+int main(int argc, char **argv)
-+{
-+ unsigned long devt;
-+ int ldisc;
-+ int type;
-+ long id, extra;
-+ int fd;
-+ char c;
-+
-+ if (argc < 2 || argc > 3 || !strcmp("--help", argv[1])) {
-+ puts("");
-+ puts("Usage: inputttach <mode> <device>");
-+ puts("");
-+ puts("Modes:");
-+ puts(" --sunkbd -skb Sun Type 4 and Type 5 keyboards");
-+ puts(" --lkkbd -lk DEC LK201 / LK401 keyboards");
-+ puts(" --vsxxx-aa -vs DEC VSXXX-AA / VSXXX-GA mouse and VSXXX-AB tablet");
-+ puts(" --spaceorb -orb SpaceOrb 360 / SpaceBall Avenger");
-+ puts(" --spaceball -sbl SpaceBall 2003 / 3003 / 4000 FLX");
-+ puts(" --magellan -mag Magellan / SpaceMouse");
-+ puts(" --warrior -war WingMan Warrior");
-+ puts(" --stinger -stng Gravis Stinger");
-+ puts(" --mousesystems -msc 3-button Mouse Systems mice");
-+ puts(" --sunmouse -sun 3-button Sun mice");
-+ puts(" --microsoft -bare 2-button Microsoft mice");
-+ puts(" --mshack -ms 3-button mice in Microsoft mode");
-+ puts(" --mouseman -mman 3-button Logitech and Genius mice");
-+ puts(" --intellimouse -ms3 Microsoft IntelliMouse");
-+ puts(" --mmwheel -mmw Logitech mice with 4-5 buttons or wheel");
-+ puts(" --iforce -ifor I-Force joysticks and wheels");
-+ puts(" --h3600ts -ipaq Ipaq h3600 touchscreen");
-+ puts(" --stowawaykbd -ipaqkbd Stowaway keyboard");
-+ puts(" --ps2serkbd -ps2ser PS/2 via serial keyboard");
-+ puts(" --twiddler -twid Handykey Twiddler chording keyboard");
-+ puts(" --twiddler-joy -twidjoy Handykey Twiddler used as a joystick");
-+ puts(" --dmc9000 -dmc DMC9000/Penpount touchscreen");
-+ puts("");
-+ return 1;
-+ }
-+
-+ for (type = 0; input_types[type].speed; type++) {
-+ if (!strncasecmp(argv[1], input_types[type].name, 16) ||
-+ !strncasecmp(argv[1], input_types[type].name2, 16))
-+ break;
-+ }
-+
-+ if (!input_types[type].speed) {
-+ fprintf(stderr, "inputattach: invalid mode\n");
-+ return 1;
-+ }
-+
-+ if ((fd = open(argv[2], O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) {
-+ perror("inputattach");
-+ return 1;
-+ }
-+
-+ setline(fd, input_types[type].flags, input_types[type].speed);
-+
-+ if (input_types[type].flush)
-+ while (!readchar(fd, &c, 100));
-+
-+ id = input_types[type].id;
-+ extra = input_types[type].extra;
-+
-+ if (input_types[type].init && input_types[type].init(fd, &id, &extra)) {
-+ fprintf(stderr, "inputattach: device initialization failed\n");
-+ return 1;
-+ }
-+
-+ ldisc = N_MOUSE;
-+ if(ioctl(fd, TIOCSETD, &ldisc)) {
-+ fprintf(stderr, "inputattach: can't set line discipline\n");
-+ return 1;
-+ }
-+
-+ devt = input_types[type].type | (id << 8) | (extra << 16);
-+
-+ if(ioctl(fd, SPIOCSTYPE, &devt)) {
-+ fprintf(stderr, "inputattach: can't set device type\n");
-+ return 1;
-+ }
-+
-+ read(fd, NULL, 0);
-+
-+ ldisc = 0;
-+ ioctl(fd, TIOCSETD, &ldisc);
-+ close(fd);
-+
-+ return 0;
-+}
-diff -Naur tslib-org/tests/ts_finddev.c tslib-1.0/tests/ts_finddev.c
---- tslib-org/tests/ts_finddev.c 1970-01-01 02:00:00.000000000 +0200
-+++ tslib-1.0/tests/ts_finddev.c 2007-05-07 17:36:37.000000000 +0300
-@@ -0,0 +1,75 @@
-+/*
-+ * tslib/src/ts_print.c
-+ *
-+ * Derived from tslib/src/ts_test.c by Douglas Lowder
-+ * Just prints touchscreen events -- does not paint them on framebuffer
-+ *
-+ * This file is placed under the GPL. Please see the file
-+ * COPYING for more details.
-+ *
-+ * Basic test program for touchscreen library.
-+ */
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <signal.h>
-+#include <sys/fcntl.h>
-+#include <sys/ioctl.h>
-+#include <sys/mman.h>
-+#include <sys/time.h>
-+#include <sys/types.h>
-+#include <unistd.h>
-+
-+#include "tslib.h"
-+
-+void usage( int argc, char** argv ) {
-+ printf( "Usage: %s device_name wait_for_sec\n", argv[0] );
-+ printf( "\tdevice_name - tdevice to probe, example /dev/input/event0\n" );
-+ printf( "\twait_for_sec - wait seconds for touch event, if 0 - dont wait!\n" );
-+ printf( "\tReturn codes:\n" );
-+ printf( "\t 0 - timeout expired without receiving event.\n" );
-+ printf( "\t But this maybe is TouchScreen.\n" );
-+ printf( "\t -1 - this is NOT TouchScreen device!\n" );
-+ printf( "\t 1 - this is TouchScreen for shure!\n" );
-+ exit(-1);
-+}
-+
-+void alarm_handler( int sig ) {
-+ // time is expired!
-+ exit(0);
-+}
-+
-+int main( int argc, char** argv )
-+{
-+ struct tsdev *ts;
-+ struct ts_sample samp;
-+ char *tsdevice=NULL;
-+ int waitsec;
-+ int ret;
-+
-+ if (argc != 3)
-+ usage( argc, argv );
-+
-+ tsdevice = argv[1];
-+ waitsec = atoi( argv[2] );
-+ if (waitsec < 0)
-+ usage( argc, argv );
-+
-+ ts = ts_open( tsdevice, 0 );
-+ if (!ts)
-+ return -1;
-+ if (ts_config(ts))
-+ return -1;
-+
-+ if (!waitsec) {
-+ return 0;
-+ }
-+
-+ printf( "Probe device %s, Please Touch Screen Anywhere in %i seconds! ... \n", tsdevice, waitsec );
-+ signal( SIGALRM, alarm_handler );
-+ alarm( waitsec );
-+ ret = ts_read_raw(ts, &samp, 1 );
-+ if (ret)
-+ return 1;
-+
-+ return -1;
-+}
diff --git a/package/tslib/tslib.hash b/package/tslib/tslib.hash
index e3ddce54f..fc493e78d 100644
--- a/package/tslib/tslib.hash
+++ b/package/tslib/tslib.hash
@@ -1,2 +1,2 @@
# Locally generated
-sha256 121750e9ae0f05ce840ab8dbefdae1297258f0a69dd1967f55c40ac6e87d5ee9 tslib-1.1.tar.gz
+sha256 b6450f4d1bc8f4fbbb796a2d1210aee3ccf9ecf302a368dddf279c63eb634833 tslib-1.2.tar.gz
diff --git a/package/tslib/tslib.mk b/package/tslib/tslib.mk
index 110024790..6437f60c3 100644
--- a/package/tslib/tslib.mk
+++ b/package/tslib/tslib.mk
@@ -4,7 +4,7 @@
#
################################################################################
-TSLIB_VERSION = 1.1
+TSLIB_VERSION = 1.2
TSLIB_SITE = https://github.com/kergoth/tslib/releases/download/$(TSLIB_VERSION)
TSLIB_LICENSE = GPL, LGPL
TSLIB_LICENSE_FILES = COPYING
diff --git a/package/uboot-tools/uboot-tools.hash b/package/uboot-tools/uboot-tools.hash
index db60dabf9..5b2c3bf49 100644
--- a/package/uboot-tools/uboot-tools.hash
+++ b/package/uboot-tools/uboot-tools.hash
@@ -1,2 +1,2 @@
# Locally computed:
-sha256 95728e89dd476d17428f94080752ab48884be477b6a678941582aeef618b70bb u-boot-2016.09.01.tar.bz2
+sha256 45813e6565dcc0436abe6752624324cdbf5f3ac106570d76d32b46ec529bcdc8 u-boot-2016.11.tar.bz2
diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
index a3335a5e8..bb0cba878 100644
--- a/package/uboot-tools/uboot-tools.mk
+++ b/package/uboot-tools/uboot-tools.mk
@@ -4,7 +4,7 @@
#
################################################################################
-UBOOT_TOOLS_VERSION = 2016.09.01
+UBOOT_TOOLS_VERSION = 2016.11
UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2
UBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot
UBOOT_TOOLS_LICENSE = GPLv2+
diff --git a/package/uclibc-ng-test/Config.in b/package/uclibc-ng-test/Config.in
new file mode 100644
index 000000000..0f093d1d5
--- /dev/null
+++ b/package/uclibc-ng-test/Config.in
@@ -0,0 +1,22 @@
+config BR2_PACKAGE_UCLIBC_NG_TEST
+ bool "uclibc-ng-test"
+ help
+ Enabling this option will compile and install the uClibc-ng
+ test suite. This is useful if you want to check if the
+ uClibc-ng library is working for your architecture and/or
+ help developing uClibc-ng.
+
+ The test suite will be installed into
+ /usr/lib/uclibc-ng-test directory. To run the test suite
+ enter the /usr/lib/uclibc-ng-test/test directory and type
+ "sh uclibcng-testrunner.sh".
+
+ See the /usr/lib/uclibc-ng-test/test/README for additional
+ information.
+
+ This is not needed at all for normal builds, so you can
+ safely say no if you do not plan to dig into your C library.
+
+ The tests can also be used for GNU libc or musl.
+
+ http://www.uclibc-ng.org
diff --git a/package/uclibc-ng-test/uclibc-ng-test.mk b/package/uclibc-ng-test/uclibc-ng-test.mk
new file mode 100644
index 000000000..f6700a91e
--- /dev/null
+++ b/package/uclibc-ng-test/uclibc-ng-test.mk
@@ -0,0 +1,45 @@
+################################################################################
+#
+# uclibc-ng-test
+#
+################################################################################
+
+UCLIBC_NG_TEST_VERSION = 4ad1c23ae2eb30888cda520c739cc26150512487
+UCLIBC_NG_TEST_SITE = git://uclibc-ng.org/git/uclibc-ng-test
+UCLIBC_NG_TEST_LICENSE = LGPLv2.1+
+UCLIBC_NG_TEST_LICENSE_FILES = COPYING.LIB
+
+ifeq ($(BR2_USE_WCHAR),)
+UCLIBC_NG_TEST_MAKE_ENV += NO_WCHAR=1
+endif
+ifeq ($(BR2_ENABLE_LOCALE),)
+UCLIBC_NG_TEST_MAKE_ENV += NO_LOCALE=1
+endif
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),)
+UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_THREADS=1
+endif
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),)
+UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1
+endif
+# most NPTL/TLS tests use dlopen
+ifeq ($(BR2_STATIC_LIBS),y)
+UCLIBC_NG_TEST_MAKE_ENV += NO_TLS=1 NO_NPTL=1 NO_DL=1
+endif
+
+# to execute tests in a deterministic order, call test_gen separately
+define UCLIBC_NG_TEST_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE) -C $(@D) \
+ CC="$(TARGET_CC)" \
+ UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
+ test_compile
+ $(TARGET_MAKE_ENV) $(UCLIBC_NG_TEST_MAKE_ENV) $(MAKE1) -C $(@D) \
+ CC="$(TARGET_CC)" \
+ UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
+ test_gen
+endef
+
+define UCLIBC_NG_TEST_INSTALL_TARGET_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install
+endef
+
+$(eval $(generic-package))
diff --git a/package/uhttpd/Config.in b/package/uhttpd/Config.in
new file mode 100644
index 000000000..e463b9305
--- /dev/null
+++ b/package/uhttpd/Config.in
@@ -0,0 +1,18 @@
+config BR2_PACKAGE_UHTTPD
+ bool "uhttpd"
+ depends on !BR2_STATIC_LIBS # dlopen()
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c
+ depends on BR2_USE_MMU # fork()
+ select BR2_PACKAGE_LIBUBOX
+ select BR2_PACKAGE_JSON_C
+ help
+ uHTTPd is a tiny single threaded HTTP server with TLS, CGI and Lua
+ support. It is intended as a drop-in replacement for the Busybox
+ HTTP daemon.
+
+ https://wiki.openwrt.org/doc/howto/http.uhttpd
+
+comment "uhttpd needs a toolchain w/ dynamic library"
+ depends on BR2_TOOLCHAIN_HAS_SYNC_4
+ depends on BR2_USE_MMU
+ depends on BR2_STATIC_LIBS
diff --git a/package/uhttpd/uhttpd.hash b/package/uhttpd/uhttpd.hash
new file mode 100644
index 000000000..59e54ad49
--- /dev/null
+++ b/package/uhttpd/uhttpd.hash
@@ -0,0 +1,2 @@
+# No hash for this git snapshot
+none xxx uhttpd-59e0c739634f46a164d939e54416287b91ff8a9b.tar.gz
diff --git a/package/uhttpd/uhttpd.mk b/package/uhttpd/uhttpd.mk
new file mode 100644
index 000000000..be0d7d63c
--- /dev/null
+++ b/package/uhttpd/uhttpd.mk
@@ -0,0 +1,35 @@
+################################################################################
+#
+# uhttpd
+#
+################################################################################
+
+UHTTPD_VERSION = 59e0c739634f46a164d939e54416287b91ff8a9b
+UHTTPD_SITE = http://git.openwrt.org/project/uhttpd.git
+UHTTPD_SITE_METHOD = git
+UHTTPD_LICENSE = ISC
+UHTTPD_LICENSE_FILES = uhttpd.h
+UHTTPD_DEPENDENCIES = libubox json-c
+
+ifeq ($(BR2_PACKAGE_LUA_5_1),y)
+UHTTPD_DEPENDENCIES += lua
+UHTTPD_CONF_OPTS += -DLUA_SUPPORT=ON
+else
+UHTTPD_CONF_OPTS += -DLUA_SUPPORT=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_USTREAM_SSL),y)
+UHTTPD_DEPENDENCIES += ustream-ssl
+UHTTPD_CONF_OPTS += -DTLS_SUPPORT=ON
+else
+UHTTPD_CONF_OPTS += -DTLS_SUPPORT=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_UBUS),y)
+UHTTPD_DEPENDENCIES += ubus
+UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=ON
+else
+UHTTPD_CONF_OPTS += -DUBUS_SUPPORT=OFF
+endif
+
+$(eval $(cmake-package))
diff --git a/package/ustream-ssl/Config.in b/package/ustream-ssl/Config.in
new file mode 100644
index 000000000..540e43689
--- /dev/null
+++ b/package/ustream-ssl/Config.in
@@ -0,0 +1,12 @@
+config BR2_PACKAGE_USTREAM_SSL
+ bool "ustream-ssl"
+ depends on !BR2_STATIC_LIBS #libubox
+ select BR2_PACKAGE_LIBUBOX
+ select BR2_PACKAGE_OPENSSL if !BR2_PACKAGE_MBEDTLS
+ help
+ ustream SSL wrapper
+
+ https://git.openwrt.org/?p=project/ustream-ssl.git;a=summary
+
+comment "ustream-ssl needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
diff --git a/package/ustream-ssl/ustream-ssl.mk b/package/ustream-ssl/ustream-ssl.mk
new file mode 100644
index 000000000..b83d129a2
--- /dev/null
+++ b/package/ustream-ssl/ustream-ssl.mk
@@ -0,0 +1,21 @@
+################################################################################
+#
+# ustream-ssl
+#
+################################################################################
+
+USTREAM_SSL_VERSION = ec80adaa1b47f28d426fa19c692011ce60b992d6
+USTREAM_SSL_SITE = git://git.openwrt.org/project/ustream-ssl.git
+USTREAM_SSL_LICENSE = ISC
+USTREAM_SSL_LICENSE_FILES = ustream-ssl.h
+USTREAM_SSL_INSTALL_STAGING = YES
+USTREAM_SSL_DEPENDENCIES = libubox
+
+ifeq ($(BR2_PACKAGE_MBEDTLS),y)
+USTREAM_SSL_DEPENDENCIES += mbedtls
+USTREAM_SSL_CONF_OPTS += -DMBEDTLS=ON
+else
+USTREAM_SSL_DEPENDENCIES += openssl
+endif
+
+$(eval $(cmake-package))
diff --git a/package/vala/vala.hash b/package/vala/vala.hash
index 95566d131..b5abcc3b0 100644
--- a/package/vala/vala.hash
+++ b/package/vala/vala.hash
@@ -1,2 +1,2 @@
-# From https://download.gnome.org/sources/vala/0.34/vala-0.34.2.sha256sum
-sha256 765e9c2b429a66db93247940f8588319b43f35c173d057bcae5717a97d765c41 vala-0.34.2.tar.xz
+# From https://download.gnome.org/sources/vala/0.34/vala-0.34.3.sha256sum
+sha256 f0fad71aca03cdeadf749ca47f56296a4ddd1a25f4e2f09f0ff9e1e3afbcac3f vala-0.34.3.tar.xz
diff --git a/package/vala/vala.mk b/package/vala/vala.mk
index a208bdc8c..6eaa7c40f 100644
--- a/package/vala/vala.mk
+++ b/package/vala/vala.mk
@@ -5,7 +5,7 @@
################################################################################
VALA_VERSION_MAJOR = 0.34
-VALA_VERSION = $(VALA_VERSION_MAJOR).2
+VALA_VERSION = $(VALA_VERSION_MAJOR).3
VALA_SITE = http://download.gnome.org/sources/vala/$(VALA_VERSION_MAJOR)
VALA_SOURCE = vala-$(VALA_VERSION).tar.xz
VALA_LICENSE = LGPLv2.1+
diff --git a/package/webrtc-audio-processing/Config.in b/package/webrtc-audio-processing/Config.in
index 79a06d8b3..02715b080 100644
--- a/package/webrtc-audio-processing/Config.in
+++ b/package/webrtc-audio-processing/Config.in
@@ -1,6 +1,10 @@
+config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
+ bool
+ default y if BR2_arm || BR2_i386 || BR2_x86_64
+
config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING
bool "webrtc-audio-processing"
- depends on BR2_arm || BR2_i386 || BR2_x86_64
+ depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
# pthread_condattr_setclock
@@ -12,6 +16,6 @@ config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING
http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/
comment "webrtc-audio-processing needs a toolchain w/ C++, NPTL, gcc >= 4.8"
- depends on BR2_arm || BR2_i386 || BR2_x86_64
+ depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
diff --git a/package/wine/wine.mk b/package/wine/wine.mk
index d9a0ecf85..47ba90a21 100644
--- a/package/wine/wine.mk
+++ b/package/wine/wine.mk
@@ -34,7 +34,7 @@ WINE_CONF_OPTS = \
# wrapper believes what the real gcc is named, and force the tuple of
# the external toolchain, not the one we compute in GNU_TARGET_NAME.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
-WINE_CONF_OPTS += TARGETFLAGS="-b $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))"
+WINE_CONF_OPTS += TARGETFLAGS="-b $(TOOLCHAIN_EXTERNAL_PREFIX)"
endif
ifeq ($(BR2_PACKAGE_ALSA_LIB)$(BR2_PACKAGE_ALSA_LIB_SEQ)$(BR2_PACKAGE_ALSA_LIB_RAWMIDI),yyy)
diff --git a/package/wpa_supplicant/Config.in b/package/wpa_supplicant/Config.in
index 454541fdc..9250a3b20 100644
--- a/package/wpa_supplicant/Config.in
+++ b/package/wpa_supplicant/Config.in
@@ -45,6 +45,13 @@ config BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY
help
Enable support for Wi-Fi Display
+config BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING
+ bool "Enable mesh networking"
+ depends on BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT
+ help
+ Enable support for open and secured mesh networking
+ (IEEE 802.11s)
+
config BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN
bool "Enable autoscan"
help
diff --git a/package/wpa_supplicant/wpa_supplicant.mk b/package/wpa_supplicant/wpa_supplicant.mk
index 3c3317b12..9c8414b56 100644
--- a/package/wpa_supplicant/wpa_supplicant.mk
+++ b/package/wpa_supplicant/wpa_supplicant.mk
@@ -73,6 +73,11 @@ ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY),y)
WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_WIFI_DISPLAY
endif
+ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING),y)
+WPA_SUPPLICANT_CONFIG_SET += CONFIG_MESH
+WPA_SUPPLICANT_CONFIG_ENABLE += CONFIG_IEEE80211W
+endif
+
ifeq ($(BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN),y)
WPA_SUPPLICANT_CONFIG_ENABLE += \
CONFIG_AUTOSCAN_EXPONENTIAL \
diff --git a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash
index 5fac77e68..feec2d377 100644
--- a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash
+++ b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.hash
@@ -1,2 +1,2 @@
-# From http://lists.x.org/archives/xorg-announce/2013-January/002136.html
-sha1 61658b8d829fdaed6064c7c26232c3884d359187 xf86-input-joystick-1.6.2.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002742.html
+sha256 9e7669ecf0f23b8e5dc39d5397cf28296f692aa4c0e4255f5e02816612c18eab xf86-input-joystick-1.6.3.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk
index 76f257727..5bc2a5caf 100644
--- a/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk
+++ b/package/x11r7/xdriver_xf86-input-joystick/xdriver_xf86-input-joystick.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.2
+XDRIVER_XF86_INPUT_JOYSTICK_VERSION = 1.6.3
XDRIVER_XF86_INPUT_JOYSTICK_SOURCE = xf86-input-joystick-$(XDRIVER_XF86_INPUT_JOYSTICK_VERSION).tar.bz2
XDRIVER_XF86_INPUT_JOYSTICK_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_INPUT_JOYSTICK_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash b/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash
index 11fcc601d..eccfa74dc 100644
--- a/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash
+++ b/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.hash
@@ -1,2 +1,2 @@
-# From http://lists.x.org/archives/xorg-announce/2015-April/002559.html
-sha256 1ac8ff39bf9da7d2fc7fd6c24515726e8138340c0518ab8c606e008cf93ca211 xf86-input-keyboard-1.8.1.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002739.html
+sha256 f7c900f21752683402992b288d5a2826de7a6c0c0abac2aadd7e8a409e170388 xf86-input-keyboard-1.9.0.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk b/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk
index eb2d58287..01a6859cd 100644
--- a/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk
+++ b/package/x11r7/xdriver_xf86-input-keyboard/xdriver_xf86-input-keyboard.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.8.1
+XDRIVER_XF86_INPUT_KEYBOARD_VERSION = 1.9.0
XDRIVER_XF86_INPUT_KEYBOARD_SOURCE = xf86-input-keyboard-$(XDRIVER_XF86_INPUT_KEYBOARD_VERSION).tar.bz2
XDRIVER_XF86_INPUT_KEYBOARD_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_INPUT_KEYBOARD_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash
index 5a62d1317..caba427b2 100644
--- a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash
+++ b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.hash
@@ -1,2 +1,2 @@
-# From http://lists.x.org/archives/xorg-announce/2014-August/002471.html
-sha256 3485d375779c08406f0789feedde15933dc703158a086ddac638598f479fc5ce xf86-input-mouse-1.9.1.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002740.html
+sha256 f425d5b05c6ab412a27e0a1106bb83f9e2662b307210abbe48270892387f4b2f xf86-input-mouse-1.9.2.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk
index e1bd81a55..5bcbeb70f 100644
--- a/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk
+++ b/package/x11r7/xdriver_xf86-input-mouse/xdriver_xf86-input-mouse.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.1
+XDRIVER_XF86_INPUT_MOUSE_VERSION = 1.9.2
XDRIVER_XF86_INPUT_MOUSE_SOURCE = xf86-input-mouse-$(XDRIVER_XF86_INPUT_MOUSE_VERSION).tar.bz2
XDRIVER_XF86_INPUT_MOUSE_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_INPUT_MOUSE_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash
index 3cb075808..2c31600b0 100644
--- a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash
+++ b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.hash
@@ -1,2 +1,2 @@
-# From http://lists.x.org/archives/xorg-announce/2015-November/002652.html
-sha256 d39f100c74f3673778b53f17bab7690161925e25dd998a15dd8cc69b52e83f01 xf86-input-synaptics-1.8.3.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002744.html
+sha256 afba3289d7a40217a19d90db98ce181772f9ca6d77e1898727b0afcf02073b5a xf86-input-synaptics-1.9.0.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk
index d6164d0da..6bd9cc49c 100644
--- a/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk
+++ b/package/x11r7/xdriver_xf86-input-synaptics/xdriver_xf86-input-synaptics.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.8.3
+XDRIVER_XF86_INPUT_SYNAPTICS_VERSION = 1.9.0
XDRIVER_XF86_INPUT_SYNAPTICS_SOURCE = xf86-input-synaptics-$(XDRIVER_XF86_INPUT_SYNAPTICS_VERSION).tar.bz2
XDRIVER_XF86_INPUT_SYNAPTICS_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_INPUT_SYNAPTICS_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash
index 816f0754b..32ff1646d 100644
--- a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash
+++ b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash
@@ -1,2 +1,2 @@
-# From https://lists.x.org/archives/xorg-announce/2016-September/002708.html
-sha256 6ee87fed6d70d12353ca7ac02f8321a30d770626bf56f62f0e27970a33690779 xf86-video-amdgpu-1.1.2.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002741.html
+sha256 275b1aac5f127f55ba3d7480a1df89eace1d02650e24e46908067fc875e76c8f xf86-video-amdgpu-1.2.0.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk
index 4e12e1206..d858e1409 100644
--- a/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk
+++ b/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.1.2
+XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.2.0
XDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.bz2
XDRIVER_XF86_VIDEO_AMDGPU_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash
index 469e0572b..fe5ae0ea7 100644
--- a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash
+++ b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash
@@ -1,2 +1,2 @@
-# From https://lists.x.org/archives/xorg-announce/2016-September/002707.html
-sha256 00a58588db62ee309095c5c5920bbd248d965e8627f88affe68a73b18865078d xf86-video-ati-7.7.1.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002738.html
+sha256 401f5de772928f3dc4ce43a885adb0a47a2f61aa4a9e45d2ab3d184136a9d6fa xf86-video-ati-7.8.0.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk
index 02a457b06..ea701672c 100644
--- a/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk
+++ b/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_VIDEO_ATI_VERSION = 7.7.1
+XDRIVER_XF86_VIDEO_ATI_VERSION = 7.8.0
XDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.bz2
XDRIVER_XF86_VIDEO_ATI_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_VIDEO_ATI_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-video-glint/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-glint/0002-abi23.patch
new file mode 100644
index 000000000..1d8f7f22c
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-glint/0002-abi23.patch
@@ -0,0 +1,33 @@
+From 2eb4d03d2280deec4d6f1b06aaa16477a641af9a Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from:
+https://cgit.freedesktop.org/xorg/driver/xf86-video-glint/commit/?id=2eb4d03d2280deec4d6f1b06aaa16477a641af9a
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-mga/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-mga/0002-abi23.patch
new file mode 100644
index 000000000..b2b691789
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-mga/0002-abi23.patch
@@ -0,0 +1,33 @@
+From df094bfffe4ef097bfd9a569f2d2e35649c1a3c7 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-mga/commit/?id=df094bfffe4ef097bfd9a569f2d2e35649c1a3c7
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-nv/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-nv/0002-abi23.patch
new file mode 100644
index 000000000..7b7bb34cd
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-nv/0002-abi23.patch
@@ -0,0 +1,39 @@
+From 42e260a7ab630fdfa4664f467dad25e7178ff809 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-nv/commit/?id=42e260a7ab630fdfa4664f467dad25e7178ff809
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 0a87cf5..62d9481 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -78,11 +78,19 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++
++#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result
++#define WAKEUPHANDLER_ARGS arg, result
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+ #define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
+ #define WAKEUPHANDLER_ARGS arg, result, read_mask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash
index b3aef580b..2d29fae3a 100644
--- a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash
+++ b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.hash
@@ -1,2 +1,2 @@
-# Locally computed
-sha256 73e7966d01d0d644d3b9204e8bfc106cb99069c58e981626e7352f2693e3e927 xf86-video-openchrome-0.4.0.tar.bz2
+# From https://lists.freedesktop.org/archives/openchrome-devel/2016-July/002890.html
+sha1 9c7ad349de6dd350252ccda8da56fa1e2a6afa32 xf86-video-openchrome-0.5.0.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk
index 83c12b205..9ab032b6b 100644
--- a/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk
+++ b/package/x11r7/xdriver_xf86-video-openchrome/xdriver_xf86-video-openchrome.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.4.0
+XDRIVER_XF86_VIDEO_OPENCHROME_VERSION = 0.5.0
XDRIVER_XF86_VIDEO_OPENCHROME_SOURCE = xf86-video-openchrome-$(XDRIVER_XF86_VIDEO_OPENCHROME_VERSION).tar.bz2
XDRIVER_XF86_VIDEO_OPENCHROME_SITE = http://xorg.freedesktop.org/archive/individual/driver
XDRIVER_XF86_VIDEO_OPENCHROME_LICENSE = MIT
diff --git a/package/x11r7/xdriver_xf86-video-qxl/0001-systemincludes.patch b/package/x11r7/xdriver_xf86-video-qxl/0001-systemincludes.patch
new file mode 100644
index 000000000..0c681f289
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-qxl/0001-systemincludes.patch
@@ -0,0 +1,39 @@
+From 83e00bb5f9b74c0d7059c189d747ec3c24c7798a Mon Sep 17 00:00:00 2001
+From: Christophe Fergeau <cfergeau@redhat.com>
+Date: Tue, 4 Aug 2015 17:36:12 +0200
+Subject: Use <> for system-includes
+
+These headers come from /usr/include/xorg/ so it's clearer if they are
+included using <>. While at it, I've reordered them alphabetically.
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/commit/?id=83e00bb5f9b74c0d7059c189d747ec3c24c7798a
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/uxa/uxa-damage.c b/src/uxa/uxa-damage.c
+index 3e4c075..6201712 100644
+--- a/src/uxa/uxa-damage.c
++++ b/src/uxa/uxa-damage.c
+@@ -27,12 +27,13 @@
+ #include <stdlib.h>
+ #include "uxa-priv.h"
+
++#include <dixfontstr.h>
++#include <gcstruct.h>
++#include <picturestr.h>
++#include <scrnintstr.h>
++#include <windowstr.h>
+ #include <X11/X.h>
+-#include "scrnintstr.h"
+-#include "windowstr.h"
+-#include "dixfontstr.h"
+-#include "gcstruct.h"
+-#include "picturestr.h"
++
+ #include "uxa-damage.h"
+
+ typedef struct _damageGCPriv {
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-qxl/0002-xserverfix.patch b/package/x11r7/xdriver_xf86-video-qxl/0002-xserverfix.patch
new file mode 100644
index 000000000..c38d42e95
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-qxl/0002-xserverfix.patch
@@ -0,0 +1,51 @@
+From a184774ad161031cceed264d62d48ebd019ac800 Mon Sep 17 00:00:00 2001
+From: Christophe Fergeau <cfergeau@redhat.com>
+Date: Mon, 3 Aug 2015 20:12:05 +0200
+Subject: Fix compilation with newer Xorg versions
+
+Xorg 1.18 stopped exporting some xfont related symbols in its
+headers/shared libraries, which causes QXL to fail to build:
+
+uxa-damage.c:947:5: error: implicit declaration of function 'QueryGlyphExtents' [-Werror=implicit-function-declaration]
+ QueryGlyphExtents(font, charinfo, n, &extents);
+
+The missing definition can be found in xfont, so this commit addes the
+needed configure.ac checks and includes.
+Note that dixfontstr.h must be included before the xfont headers or this
+will cause compile-time warnings on older Xorg versions (eg 1.17)
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-qxl/commit/?id=a184774ad161031cceed264d62d48ebd019ac800
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/configure.ac b/configure.ac
+index 6555a8d..7e95b01 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -61,7 +61,7 @@ XORG_DRIVER_CHECK_EXT(XV, videoproto)
+ XORG_DRIVER_CHECK_EXT(XFreeXDGA, xf86dgaproto)
+
+ # Obtain compiler/linker options for the driver dependencies
+-PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901] xproto fontsproto $REQUIRED_MODULES)
++PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901] xproto fontsproto xfont $REQUIRED_MODULES)
+
+
+ save_CFLAGS="$CFLAGS"
+diff --git a/src/uxa/uxa-damage.c b/src/uxa/uxa-damage.c
+index 6201712..a6d1ee3 100644
+--- a/src/uxa/uxa-damage.c
++++ b/src/uxa/uxa-damage.c
+@@ -33,6 +33,9 @@
+ #include <scrnintstr.h>
+ #include <windowstr.h>
+ #include <X11/X.h>
++#include <X11/fonts/font.h>
++#include <X11/fonts/fontstruct.h>
++#include <X11/fonts/fontutil.h>
+
+ #include "uxa-damage.h"
+
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-qxl/Config.in b/package/x11r7/xdriver_xf86-video-qxl/Config.in
index 5f05f6876..04bde0f82 100644
--- a/package/x11r7/xdriver_xf86-video-qxl/Config.in
+++ b/package/x11r7/xdriver_xf86-video-qxl/Config.in
@@ -4,6 +4,7 @@ config BR2_PACKAGE_XDRIVER_XF86_VIDEO_QXL
select BR2_PACKAGE_LIBDRM if BR2_PACKAGE_HAS_UDEV # for KMS
select BR2_PACKAGE_LIBPCIACCESS
select BR2_PACKAGE_SPICE_PROTOCOL
+ select BR2_PACKAGE_XLIB_LIBXFONT
select BR2_PACKAGE_XPROTO_FONTSPROTO
select BR2_PACKAGE_XPROTO_XPROTO
help
diff --git a/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk
index ddc4191a4..30cd7a20c 100644
--- a/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk
+++ b/package/x11r7/xdriver_xf86-video-qxl/xdriver_xf86-video-qxl.mk
@@ -7,6 +7,8 @@
XDRIVER_XF86_VIDEO_QXL_VERSION = 0.1.4
XDRIVER_XF86_VIDEO_QXL_SOURCE = xf86-video-qxl-$(XDRIVER_XF86_VIDEO_QXL_VERSION).tar.bz2
XDRIVER_XF86_VIDEO_QXL_SITE = http://xorg.freedesktop.org/releases/individual/driver
+# 0002-xserverfix.patch
+XDRIVER_XF86_VIDEO_QXL_AUTORECONF = YES
XDRIVER_XF86_VIDEO_QXL_LICENSE = MIT
XDRIVER_XF86_VIDEO_QXL_LICENSE_FILES = COPYING
@@ -16,6 +18,7 @@ XDRIVER_XF86_VIDEO_QXL_CONF_OPTS = \
XDRIVER_XF86_VIDEO_QXL_DEPENDENCIES = \
libpciaccess \
spice-protocol \
+ xlib_libXfont \
xproto_fontsproto \
xproto_xproto \
xserver_xorg-server
diff --git a/package/x11r7/xdriver_xf86-video-r128/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-r128/0002-abi23.patch
new file mode 100644
index 000000000..e79ffdfb6
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-r128/0002-abi23.patch
@@ -0,0 +1,33 @@
+From 5ab23b3a8ef18ab9ff96ac8be174380d36e185e5 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-r128/commit/?id=5ab23b3a8ef18ab9ff96ac8be174380d36e185e5
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-savage/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-savage/0002-abi23.patch
new file mode 100644
index 000000000..248758545
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-savage/0002-abi23.patch
@@ -0,0 +1,39 @@
+From de3e1803314820968502156703d5bfe3fab24972 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-savage/commit/?id=de3e1803314820968502156703d5bfe3fab24972
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 98ba435..44daea4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -78,11 +78,19 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++
++#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result
++#define WAKEUPHANDLER_ARGS arg, result
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+ #define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
+ #define WAKEUPHANDLER_ARGS arg, result, read_mask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-siliconmotion/0001-abi23.patch b/package/x11r7/xdriver_xf86-video-siliconmotion/0001-abi23.patch
new file mode 100644
index 000000000..2cd6e637b
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-siliconmotion/0001-abi23.patch
@@ -0,0 +1,33 @@
+From e67f3949648c20e16ac756ae28ea4a2b4a1d0f4c Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-siliconmotion/patch/?id=e67f3949648c20e16ac756ae28ea4a2b4a1d0f4c
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-sis/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-sis/0002-abi23.patch
new file mode 100644
index 000000000..109f74537
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-sis/0002-abi23.patch
@@ -0,0 +1,33 @@
+From 96fee560cd8bf7bf27048ce5fe67b7af6838c8d0 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-sis/commit/?id=96fee560cd8bf7bf27048ce5fe67b7af6838c8d0
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-sis/0007-xi.patch b/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch
index 790524816..790524816 100644
--- a/package/x11r7/xdriver_xf86-video-sis/0007-xi.patch
+++ b/package/x11r7/xdriver_xf86-video-sis/0003-xi.patch
diff --git a/package/x11r7/xdriver_xf86-video-tdfx/0002-abi23.patch b/package/x11r7/xdriver_xf86-video-tdfx/0002-abi23.patch
new file mode 100644
index 000000000..7e5d650f9
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-tdfx/0002-abi23.patch
@@ -0,0 +1,39 @@
+From b99390efcb55d7d4a68e8c595119c1af4426fc0b Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-tdfx/patch/?id=b99390efcb55d7d4a68e8c595119c1af4426fc0b
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 98ba435..44daea4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -78,11 +78,19 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++
++#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result
++#define WAKEUPHANDLER_ARGS arg, result
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+
+ #define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
+ #define WAKEUPHANDLER_ARGS arg, result, read_mask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-trident/0001-abi23.patch b/package/x11r7/xdriver_xf86-video-trident/0001-abi23.patch
new file mode 100644
index 000000000..d9aecd535
--- /dev/null
+++ b/package/x11r7/xdriver_xf86-video-trident/0001-abi23.patch
@@ -0,0 +1,33 @@
+From b5f4d35327863a14224d2a63885cd8b3b83a1815 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Tue, 19 Jul 2016 10:03:56 -0400
+Subject: Adapt Block/WakeupHandler signature for ABI 23
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+Downloaded from
+https://cgit.freedesktop.org/xorg/driver/xf86-video-trident/patch/?id=b5f4d35327863a14224d2a63885cd8b3b83a1815
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..89976e4 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -75,8 +75,13 @@
+
+ #define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+
++#if ABI_VIDEODRV_VERSION >= SET_ABI_VERSION(23, 0)
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout
++#define BLOCKHANDLER_ARGS arg, pTimeout
++#else
+ #define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+ #define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++#endif
+
+ #define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+ #define CLOSE_SCREEN_ARGS pScreen
+--
+cgit v0.10.2
+
diff --git a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash
index 10d31d02f..8d948a7d4 100644
--- a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash
+++ b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.hash
@@ -1,2 +1,2 @@
-# From http://lists.x.org/archives/xorg-announce/2015-January/002521.html
-sha256 3c1d244e4b1b77e92126957965cdc9fb82de4c215c0706a3a8aaff6939e4a0cc xf86-video-vmware-13.1.0.tar.bz2
+# From https://lists.x.org/archives/xorg-announce/2016-November/002743.html
+sha256 e2f7f7101fba7f53b268e7a25908babbf155b3984fb5268b3d244eb6c11bf62b xf86-video-vmware-13.2.1.tar.bz2
diff --git a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk
index ea4dd4821..ef262f894 100644
--- a/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk
+++ b/package/x11r7/xdriver_xf86-video-vmware/xdriver_xf86-video-vmware.mk
@@ -4,7 +4,7 @@
#
################################################################################
-XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.1.0
+XDRIVER_XF86_VIDEO_VMWARE_VERSION = 13.2.1
XDRIVER_XF86_VIDEO_VMWARE_SOURCE = xf86-video-vmware-$(XDRIVER_XF86_VIDEO_VMWARE_VERSION).tar.bz2
XDRIVER_XF86_VIDEO_VMWARE_SITE = http://xorg.freedesktop.org/releases/individual/driver
XDRIVER_XF86_VIDEO_VMWARE_LICENSE = MIT
diff --git a/package/x264/Config.in b/package/x264/Config.in
index 7bf2319f2..be3ab3f3e 100644
--- a/package/x264/Config.in
+++ b/package/x264/Config.in
@@ -1,6 +1,5 @@
config BR2_PACKAGE_X264
bool "x264"
- depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX # madvise()
help
x264 is a free software library and application for
encoding video streams into the H.264/MPEG-4 AVC
diff --git a/package/xmlstarlet/xmlstarlet.mk b/package/xmlstarlet/xmlstarlet.mk
index 2a0d3df37..61d38f29f 100644
--- a/package/xmlstarlet/xmlstarlet.mk
+++ b/package/xmlstarlet/xmlstarlet.mk
@@ -13,9 +13,9 @@ XMLSTARLET_DEPENDENCIES += libxml2 libxslt \
$(if $(BR2_PACKAGE_LIBICONV),libiconv)
XMLSTARLET_CONF_OPTS += \
- --with-libxml-prefix=${STAGING_DIR}/usr \
- --with-libxslt-prefix=${STAGING_DIR}/usr \
- --with-libiconv-prefix=${STAGING_DIR}/usr
+ --with-libxml-prefix=$(STAGING_DIR)/usr \
+ --with-libxslt-prefix=$(STAGING_DIR)/usr \
+ --with-libiconv-prefix=$(STAGING_DIR)/usr
ifeq ($(BR2_STATIC_LIBS),y)
XMLSTARLET_CONF_OPTS += --enable-static-libs
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index 3991bc1cf..72e729235 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -145,8 +145,7 @@ check_kernel_headers_version = \
check_gcc_version = \
expected_version="$(strip $2)" ; \
if [ -z "$${expected_version}" ]; then \
- printf "Internal error, gcc version unknown (no GCC_AT_LEAST_X_Y selected)\n"; \
- exit 1 ; \
+ exit 0 ; \
fi; \
real_version=`$(1) --version | sed -r -e '1!d; s/^[^)]+\) ([^[:space:]]+).*/\1/;'` ; \
if [[ ! "$${real_version}" =~ ^$${expected_version}\. ]] ; then \
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 476b37b58..c007e623f 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -8,574 +8,45 @@ choice
comment "glibc toolchains only available with shared lib support"
depends on BR2_STATIC_LIBS
-comment "Linaro toolchains available for Cortex-A + EABIhf"
- depends on BR2_arm || BR2_armeb
- depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
- depends on !BR2_STATIC_LIBS
+# Kept toolchains sorted by architecture in order to use some toolchain
+# as default choice
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
- bool "Linaro ARM 2016.05"
- depends on BR2_arm
- depends on BR2_ARM_CPU_ARMV7A
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_ARM_EABIHF
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Linaro toolchain for the ARM architecture. It uses Linaro
- GCC 2016.05 (based on gcc 5.3.1), Linaro GDB 2016.05 (based on
- GDB 7.11.1), glibc 2.21, Binutils 2016.05 (based on 2.25). It
- generates code that runs on all Cortex-A profile devices,
- but tuned for the Cortex-A9. The code generated is Thumb 2,
- with the hard floating point calling convention, and uses
- the VFPv3-D16 FPU instructions.
-
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
- bool "Linaro armeb 2016.05"
- depends on BR2_armeb
- depends on BR2_ARM_CPU_ARMV7A
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_ARM_EABIHF
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- help
- Linaro toolchain for the ARM big endian architecture. It
- uses Linaro GCC 2016.05 (based on gcc 5.3.1), Linaro GDB
- 2016.05 (based on GDB 7.11.1), glibc 2.21, Binutils 2016.05
- (based on 2.25). It generates code that runs on all Cortex-A
- profile devices, but tuned for the Cortex-A9. The code
- generated is Thumb 2, with the hard floating point calling
- convention, and uses the VFPv3-D16 FPU instructions.
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
- bool "Sourcery CodeBench ARM 2014.05"
- depends on BR2_arm
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_ARM_EABI
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
- help
- Sourcery CodeBench toolchain for the ARM architecture, from
- Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
- 2.18 and gdb 7.7.50, kernel headers 3.13. It has support
- for the following variants:
- - ARMv5TE, little endian, soft-float, glibc
- Select ARM926T, ARM10T, XScale or another ARMv5 core
- Select BR2_SOFT_FLOAT
- - ARMv4T, little endian, soft-float, glibc
- Select ARM720T, ARM920T, ARM922T or another ARMv4 core
- Select BR2_SOFT_FLOAT
- - ARMv7-A, Thumb 2, little endian, soft-float, glibc
- Select Cortex-A8, Cortex-A9 or another ARMv7-A core
- Select BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mthumb
-
-comment "Sourcery CodeBench toolchains available for the EABI ABI"
- depends on BR2_arm
- depends on !BR2_ARM_EABI
- depends on !BR2_STATIC_LIBS
-
-config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
- bool "Arago ARMv7 2011.09"
- depends on BR2_arm
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_ARM_CPU_ARMV7A
- depends on BR2_ARM_EABI
- depends on BR2_ARM_CPU_HAS_VFPV3
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
- # kernel headers: 2.6.31
- help
- Texas Instruments Arago 2011.09 toolchain, with gcc 4.5.3,
- binutils 2.20.1, glibc 2.12, gdb 7.2.
-
- This toolchain uses -mfloat-abi=softfp (i.e can use FPU
- instructions, but passes floating point function arguments
- in integer registers), and requires a VFPv3 floating point
- unit to work properly. This unit is available on most
- Cortex-A ARM processors, but not all.
-
-config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
- bool "Arago ARMv5 2011.09"
- depends on BR2_arm
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_ARM_CPU_ARMV4
- depends on BR2_ARM_EABI
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
- # kernel headers: 2.6.31
- help
- Texas Instruments Arago ARMv5 2011.09 toolchain, with gcc
- 4.5.3, binutils 2.20.1, glibc 2.12, gdb 7.2.
-
- This toolchain uses software-floating point.
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
- bool "Sourcery CodeBench MIPS 2016.05"
- depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
- depends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2
- # Unsupported MIPS cores
- depends on !BR2_mips_interaptiv
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_MIPS_NABI32
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- help
- Sourcery CodeBench toolchain for the MIPS architecture, from
- Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc
- 2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It
- has support for the following variants:
- - MIPS32r2 - Big-Endian, 2008 NaN, O32
- Select MIPS (big endian) core
- Disable BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mnan=2008
- - MIPS32r2 - Big-Endian, O32
- Select MIPS (big endian) core
- Disable BR2_SOFT_FLOAT
- - MIPS32r2 - Big-Endian, O32, MIPS16
- Select MIPS (big endian) core
- Disable BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mips16
- - MIPS32r2 - Big-Endian, Soft-Float, O32
- Select MIPS (big endian) core
- Select BR2_SOFT_FLOAT
- - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16
- Select MIPS (big endian) core
- Select BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mips16
- - MIPS32r2 - Little-Endian, 2008 NaN, O32
- Select MIPS (little endian) core
- Disable BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mnan=2008
- - MIPS32r2 - Little-Endian, O32
- Select MIPS (little endian) core
- Disable BR2_SOFT_FLOAT
- - MIPS32r2 - Little-Endian, O32, MIPS16
- Select MIPS (little endian) core
- Disable BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mips16
- - MIPS32r2 - Little-Endian, Soft-Float, O32
- Select MIPS (little endian) core
- Select BR2_SOFT_FLOAT
- - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16
- Select MIPS (little endian) core
- Select BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mips16
- - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS
- Select MIPS (little endian) core
- Select BR2_SOFT_FLOAT
- Set BR2_TARGET_OPTIMIZATION to -mmicromips
- - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32
- Not usable in Buildroot yet.
- - MIPS32r2 - uClibc, Big-Endian, O32
- Not usable in Buildroot yet.
- - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32
- Not usable in Buildroot yet.
- - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32
- Not usable in Buildroot yet.
- - MIPS32r2 - uClibc, Little-Endian, O32
- Not usable in Buildroot yet.
- - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32
- Not usable in Buildroot yet.
- - MIPS64r2 - Big-Endian, N64
- Select MIPS64 (big endian) core
- Select the n64 ABI
- Disable BR2_SOFT_FLOAT
- - MIPS64r2 - Big-Endian, Soft-Float, N64
- Select MIPS64 (big endian) core
- Select the n64 ABI
- Select BR2_SOFT_FLOAT
- - MIPS64r2 - Little-Endian, N64
- Select MIPS64 (little endian) core
- Select the n64 ABI
- Disable BR2_SOFT_FLOAT
- - MIPS64r2 - Little-Endian, Soft-Float, N64
- Select MIPS64 (little endian) core
- Select the n64 ABI
- Select BR2_SOFT_FLOAT
-
-comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64"
- depends on BR2_MIPS_NABI32
- depends on !BR2_STATIC_LIBS
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
- bool "Codescape IMG GNU Linux Toolchain 2016.05"
- depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT)
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Codescape IMG GNU Linux Toolchain 2015.10 for the MIPS
- architecture, from Imagination Technologies. It uses gcc
- 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel
- headers 4.0. It has support for the following variants:
- - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
- Select 'MIPS (big endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Disable 'Use soft-float'
- - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI
- Select 'MIPS (big endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Enable 'Use soft-float'
- - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Disable 'Use soft-float'
- - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Enable 'Use soft-float'
- - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Disable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI, microMIPS
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r6' Target Architecture Variant
- Enable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI
- Select 'MIPS64 (big endian)' Target Architecture
- Select 'mips 64r6' Target Architecture Variant
- Select 'n32' Target ABI
- Disable 'Use soft-float'
- - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI
- Select 'MIPS64 (little endian)' Target Architecture
- Select 'mips 64r6' Target Architecture Variant
- Select 'n32' Target ABI
- Disable 'Use soft-float'
- - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI
- Select 'MIPS64 (big endian)' Target Architecture
- Select 'mips 64r6' Target Architecture Variant
- Select 'n64' Target ABI
- Disable 'Use soft-float'
- - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI
- Select 'MIPS64 (little endian)' Target Architecture
- Select 'mips 64r6' Target Architecture Variant
- Select 'n64' Target ABI
- Disable 'Use soft-float'
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
- bool "Codescape MTI GNU Linux Toolchain 2016.05"
- depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \
- BR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT)
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Codescape MTI GNU Linux Toolchain 2015.10 for the MIPS
- architecture, from Imagination Technologies. It uses gcc
- 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel
- headers 4.0. It has support for the following variants:
- - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI
- Select 'MIPS (big endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Disable 'Use soft-float'
- - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
- Select 'MIPS (big endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Disable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
- - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI
- Select 'MIPS (big endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Enable 'Use soft-float'
- - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Disable 'Use soft-float'
- - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Disable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
- - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Enable 'Use soft-float'
- - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Enable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI, microMIPS
- Select 'MIPS (little endian)' Target Architecture
- Select 'mips 32r2' Target Architecture Variant
- Disable 'Use soft-float'
- Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
- - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI
- Select 'MIPS64 (big endian)' Target Architecture
- Select 'mips 64r2' Target Architecture Variant
- Select 'n32' Target ABI
- Disable 'Use soft-float'
- - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI
- Select 'MIPS64 (little endian)' Target Architecture
- Select 'mips 64r2' Target Architecture Variant
- Select 'n32' Target ABI
- Disable 'Use soft-float'
- - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI
- Select 'MIPS64 (big endian)' Target Architecture
- Select 'mips 64r2' Target Architecture Variant
- Select 'n64' Target ABI
- Disable 'Use soft-float'
- - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI
- Select 'MIPS64 (little endian)' Target Architecture
- Select 'mips 64r2' Target Architecture Variant
- Select 'n64' Target ABI
- Disable 'Use soft-float'
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
- bool "Sourcery CodeBench Nios-II 2016.05"
- depends on BR2_nios2
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 # based-on binutils-2.25.1
- help
- Sourcery CodeBench toolchain for the Nios-II architecture,
- from Mentor Graphics. It uses gcc 5.3, binutils 2.25.51,
- glibc 2.23, gdb 7.10.50 and kernel headers 4.4.
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
- bool "Sourcery CodeBench SH 2012.09"
- depends on BR2_sh4a || BR2_sh4aeb
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
- help
- Sourcery CodeBench toolchain for the SuperH architecture,
- from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
- glibc 2.16, uClibc 0.9.30, gdb 7.4.50 and kernel headers
- 3.5.4. It has support for the following variants:
- - SH4A, glibc, little endian
- Default.
- - SH4A, glibc, big endian
- Add -mb to BR2_TARGET_OPTIMIZATION
- - SH4A, uClibc, little endian
- Not usable in Buildroot yet.
- - SH4A, uClibc, big endian
- Not usable in Buildroot yet.
-
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
- bool "Sourcery CodeBench AMD64 2015.11"
- depends on BR2_x86_64
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- depends on BR2_x86_jaguar || BR2_x86_steamroller
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- help
- Sourcery CodeBench toolchain for the amd64 (x86_64)
- architectures, from Mentor Graphics. It uses gcc 5.2,
- binutils 2.25.51, glibc 2.22, gdb 7.10.50 and kernel headers
- 4.2. It has support for the following variants:
- - AMD Puma/Jaguar (family 16h), glibc
- Default for x86_64, nothing special to do.
- - AMD Steamroller (family 15h), glibc
- Select a steamroller core.
- No other architecture variants are supported since glibc
- is optimized for one of these two baselines.
+# Aarch64 (use Linaro toolchain by default)
+source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
- bool "Sourcery CodeBench x86/x86_64 2012.09"
- depends on BR2_i386 || BR2_x86_64
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- depends on !BR2_x86_jaguar
- depends on !BR2_x86_steamroller
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
- help
- Sourcery CodeBench toolchain for the x86/x86_64
- architectures, from Mentor Graphics. It uses gcc 4.7.2,
- binutils 2.23.51, glibc 2.16, gdb 7.4.50 and kernel headers
- 3.5.4. It has support for the following variants:
- - Intel Pentium 4, glibc, 32 bits
- Default for x86, nothing special to do.
- - Intel Atom, glibc, 32 bits
- Select an Atom core
- - Intel Xeon, glibc, 64 bits
- Default for x86_64, nothing special to do.
- - Intel Core 2, glibc, 64 bits
- Select a Core 2 core
- Other architecture variants (beyond Pentium-4/Xeon) are
- supported as well, but glibc is not optimised for it.
+# ARC
+source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX
- bool "Blackfin.uclinux.org 2014R1"
- depends on BR2_bfin
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_USE_WCHAR
- select BR2_TOOLCHAIN_HAS_THREADS
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Toolchain for the Blackfin architecture, from
- http://blackfin.uclinux.org.
+# ARM (use Linaro toolchain by default)
+source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
- bool "Linaro AArch64 2016.05"
- depends on BR2_aarch64
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_INSTALL_LIBSTDCPP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Toolchain for the AArch64 architecture, from
- http://www.linaro.org/engineering/armv8/
+# ARM big-endian
+source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
- bool "CodeSourcery AArch64 2014.11"
- depends on BR2_aarch64
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
- help
- Sourcery CodeBench toolchain for the AArch64 architecture,
- from Mentor Graphics. It uses gcc 4.9.1, binutils
- 2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers
- 3.16.2.
+# MIPS (use codesourcery toolchain by default)
+source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in"
+source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in"
+source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
- bool "Musl 1.1.12 toolchain"
- depends on (BR2_arm && BR2_ARM_EABI && BR2_USE_MMU) || \
- (BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4 && BR2_USE_MMU) || \
- (BR2_armeb && BR2_ARM_EABI && !BR2_ARM_CPU_ARMV7A && BR2_USE_MMU) || \
- BR2_i386 || (BR2_mips && !BR2_SOFT_FLOAT) || \
- BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \
- BR2_sh4 || BR2_sh4eb || \
- BR2_x86_64
- depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
- # Unsupported MIPS cores
- depends on !BR2_mips_interaptiv && !BR2_mips_m5150
- # Unsupported for MIPS R6
- depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
- select BR2_TOOLCHAIN_EXTERNAL_MUSL
- select BR2_TOOLCHAIN_HAS_SSP
- select BR2_INSTALL_LIBSTDCPP
- select BR2_HOSTARCH_NEEDS_IA32_LIBS
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
- help
- Toolchain based on the Musl C library, provided by the
- musl-cross project. It uses gcc 5.3, binutils 2.25.1 and
- musl 1.1.12. It does not have a cross debugger included.
+# NIOSII
+source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in"
- The ARM soft-float toolchain is built for ARMv4t, while the
- ARM hard-float toolchain is built for ARMv5t.
- The x86 toolchain is built for i486.
+# SH4a
+source "toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in"
- http://musl.codu.org/
+# x86/x86_64 (use amd64 toolchain by default for AMD64)
+source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
- bool "Synopsys ARC 2014.12 toolchain"
- depends on BR2_arc
- depends on BR2_HOSTARCH = "x86_64"
- # does not provide IPv6, and lacks many uClibc features
- # expected by Buildroot. The next Synopsys toolchain version
- # should fix those problems.
- depends on BROKEN
- select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
- select BR2_INSTALL_LIBSTDCPP
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_ENABLE_LOCALE
- select BR2_USE_WCHAR
- select BR2_TOOLCHAIN_HAS_THREADS
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
- help
- Toolchain for the ARC cores, from
- https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
+# Musl based toolchains (after all the others)
+source "toolchain/toolchain-external/toolchain-external-musl-cross/Config.in"
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
- bool "Custom toolchain"
- help
- Use this option to use a custom toolchain pre-installed on
- your system.
+# Kept last, so it remains the non-default choice, unless there isn't
+# any available toolchain profile for the currently selected
+# architecture.
+source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
endchoice
@@ -608,51 +79,6 @@ config BR2_TOOLCHAIN_EXTERNAL_PATH
help
Path to where the external toolchain is installed.
-config BR2_TOOLCHAIN_EXTERNAL_URL
- string "Toolchain URL"
- depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM && BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
- help
- URL of the custom toolchain tarball to download and install.
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
- string "Toolchain prefix"
- depends on BR2_TOOLCHAIN_EXTERNAL_CUSTOM
- default "$(ARCH)-linux"
-
-config BR2_TOOLCHAIN_EXTERNAL_PREFIX
- string
- default "arc-linux" if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arcle
- default "arceb-linux" if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC && BR2_arceb
- default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
- default "armeb-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
- default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
- default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A
- default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE
- default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
- default "aarch64-amd-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
- default "mips-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
- default "nios2-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
- default "sh-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
- default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
- default "x86_64-amd-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
- default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX && BR2_BINFMT_FLAT
- default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX && BR2_BINFMT_FDPIC
- default "arm-linux-musleabi" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_arm && BR2_ARM_EABI
- default "arm-linux-musleabihf" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_arm && BR2_ARM_EABIHF
- default "mips-img-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
- default "mips-mti-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
- default "armeb-linux-musleabi" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_armeb
- default "i486-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_i386
- default "mips-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mips && !BR2_SOFT_FLOAT)
- default "mipsel-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mipsel && !BR2_SOFT_FLOAT)
- default "mipsel-sf-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && (BR2_mipsel && BR2_SOFT_FLOAT)
- default "powerpc-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_powerpc
- default "sh4-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_sh4
- default "sh4eb-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_sh4eb
- default "x86_64-linux-musl" if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS && BR2_x86_64
- default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX \
- if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
-
config BR2_TOOLCHAIN_EXTERNAL_GLIBC
bool
select BR2_TOOLCHAIN_USES_GLIBC
@@ -667,331 +93,55 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL
# Compatibility headers: cdefs.h, queue.h
select BR2_PACKAGE_MUSL_COMPAT_HEADERS
-if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
-
-choice
- bool "External toolchain gcc version"
- default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
- help
- Set to the gcc version that is used by your external
- toolchain.
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_6
- bool "6.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_6
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_5
- bool "5.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_5
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
- bool "4.9.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
- bool "4.8.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
- bool "4.7.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
- bool "4.6.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
- bool "4.5.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
- bool "4.4.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
-
-config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
- bool "4.3.x"
- select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
-
-endchoice
-
-choice
- bool "External toolchain kernel headers series"
- default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
- help
- Set to the kernel headers version that were used to build
- this external toolchain.
-
- This is used to hide/show some packages that have strict
- requirements on the version of kernel headers.
-
- If unsure what version your toolchain is using, you can look
- at the value of LINUX_VERSION_CODE in linux/version.h in your
- toolchain. The Linux version is M.m.p, with:
- M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
- m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF
- p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
- bool "4.8.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
- bool "4.7.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
- bool "4.6.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
- bool "4.5.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
- bool "4.4.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
- bool "4.3.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
- bool "4.2.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
- bool "4.1.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
- bool "4.0.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
- bool "3.19.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
- bool "3.18.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
- bool "3.17.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
- bool "3.16.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
- bool "3.15.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
- bool "3.14.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
- bool "3.13.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
- bool "3.12.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
- bool "3.11.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
- bool "3.10.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
- bool "3.9.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
- bool "3.8.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
- bool "3.7.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
- bool "3.6.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
- bool "3.5.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
- bool "3.4.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
- bool "3.3.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
- bool "3.2.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
- bool "3.1.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
- bool "3.0.x"
- select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
-
-config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
- bool "2.6.x"
-
-endchoice
-
-choice
- prompt "External toolchain C library"
- default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
- bool "uClibc/uClibc-ng"
- select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
- # For the time being, we assume that all custom external
- # toolchains have shadow password support.
- select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
- help
- Select this option if your external toolchain uses the
- uClibc (available from http://www.uclibc.org/)
- or uClibc-ng (available from http://www.uclibc-ng.org)
- C library.
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
- bool "glibc/eglibc"
- depends on !BR2_STATIC_LIBS
- select BR2_TOOLCHAIN_EXTERNAL_GLIBC
- help
- Select this option if your external toolchain uses the GNU C
- library (available from https://www.gnu.org/software/libc/)
- or its variant the eglibc library (http://www.eglibc.org/).
-
- Note: eglibc is a variant of glibc that (among other things)
- can be configured to exclude some of its features. Using a
- toolchain with eglibc configured to exclude key features may
- cause build failures to some packages.
-
-comment "glibc only available with shared lib support"
- depends on BR2_STATIC_LIBS
-
-config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
- bool "musl"
- select BR2_TOOLCHAIN_EXTERNAL_MUSL
- help
- Select this option if your external toolchain uses the
- 'musl' C library, available from http://www.musl-libc.org/.
-
-endchoice
-
-if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
-
-config BR2_TOOLCHAIN_EXTERNAL_WCHAR
- bool "Toolchain has WCHAR support?"
- select BR2_USE_WCHAR
- help
- Select this option if your external toolchain supports
- WCHAR. If you don't know, leave the default value, Buildroot
- will tell you if it's correct or not.
+# Make sure the virtual-package infra checks the provider
+config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL
+ bool
+ default y
-config BR2_TOOLCHAIN_EXTERNAL_LOCALE
- bool "Toolchain has locale support?"
- select BR2_TOOLCHAIN_EXTERNAL_WCHAR
- select BR2_ENABLE_LOCALE
- help
- Select this option if your external toolchain has locale
- support. If you don't know, leave the default value,
- Buildroot will tell you if it's correct or not.
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ string
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
- bool "Toolchain has threads support?"
- select BR2_TOOLCHAIN_HAS_THREADS
- default y
- help
- Select this option if your external toolchain has thread
- support. If you don't know, leave the default value,
- Buildroot will tell you if it's correct or not.
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ string
-if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+# Kept toolchains sorted as in the choice above
+# The toolchain Config.in.options must define
+# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
- bool "Toolchain has threads debugging support?"
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
- default y
- help
- Select this option if your external toolchain has thread
- debugging support. If you don't know, leave the default
- value, Buildroot will tell you if it's correct or not.
+# Aarch64
+source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options"
-config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
- bool "Toolchain has NPTL threads support?"
- select BR2_TOOLCHAIN_HAS_THREADS_NPTL
- default y
- help
- Select this option if your external toolchain uses the NPTL
- (Native Posix Thread Library) implementation of Posix
- threads. If you don't know, leave the default value,
- Buildroot will tell you if it's correct or not.
+# ARC
+source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options"
-endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+# ARM
+source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options"
-endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+# ARM big-endian
+source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options"
-config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
- bool "Toolchain has SSP support?"
- select BR2_TOOLCHAIN_HAS_SSP
- default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
- default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
- help
- Selection this option if your external toolchain has Stack
- Smashing Protection support enabled. If you don't know,
- leave the default value, Buildroot will tell you if it's
- correct or not.
+# MIPS
+source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options"
+source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options"
+source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options"
-config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
- bool "Toolchain has RPC support?"
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
- default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
- help
- Select this option if your external toolchain supports
- RPC. If you don't know, leave the default value, Buildroot
- will tell you if it's correct or not.
+# NIOSII
+source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options"
-config BR2_TOOLCHAIN_EXTERNAL_CXX
- bool "Toolchain has C++ support?"
- select BR2_INSTALL_LIBSTDCPP
- help
- Select this option if your external toolchain has C++
- support. If you don't know, leave the default value,
- Buildroot will tell you if it's correct or not.
+# SH4a
+source "toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options"
-config BR2_TOOLCHAIN_EXTERNAL_FORTRAN
- bool "Toolchain has Fortran support?"
- select BR2_TOOLCHAIN_HAS_FORTRAN
- help
- Select this option if your external toolchain has Fortran
- support. If you don't know, leave the default value,
- Buildroot will tell you if it's correct or not.
+# x86/x86_64
+source "toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options"
+source "toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options"
-config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
- string "Extra toolchain libraries to be copied to target"
- help
- If your external toolchain provides extra libraries that
- need to be copied to the target filesystem, enter them
- here, separated by spaces.
+# Musl based toolchains
+source "toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options"
-endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+# Custom toolchains
+source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options"
config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
bool "Copy gdb server to the Target"
@@ -1000,31 +150,4 @@ config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
Copy the gdbserver provided by the external toolchain to the
target.
-# When the FDPIC shared binary format is used, the corresponding libraries are
-# always installed. When a different binary format is used, we offer the option
-# of installing the FDPIC shared libraries.
-config BR2_BFIN_INSTALL_FDPIC_SHARED
- bool "Install FDPIC shared libraries"
- depends on BR2_bfin && !BR2_BINFMT_FDPIC
- help
- The Linux kernel supports running both FDPIC and FLAT applications
- concurrently if the binary format specific libraries are installed
- properly. This option allows developer to install FDPIC libraries
- into a buildroot rootfs image built with binary format that is not
- FDPIC.
-
-# When the FLAT shared binary format is used, we force the installation
-# of the corresponding libraries. When a different binary format is
-# used, we offer the option of installing the FLAT shared libraries.
-config BR2_BFIN_INSTALL_FLAT_SHARED
- bool "Install FLAT shared libraries" if !BR2_BINFMT_FLAT_SHARED
- depends on BR2_bfin
- default y if BR2_BINFMT_FLAT_SHARED
- help
- The Linux kernel supports running both FDPIC and FLAT applications
- concurrently if the binary format specific libraries are installed
- properly. This option allows developer to install FLAT libraries
- into a buildroot rootfs image built with binary format that is not
- shared FLAT.
-
endif # BR2_TOOLCHAIN_EXTERNAL
diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
new file mode 100644
index 000000000..e0a8b410c
--- /dev/null
+++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
@@ -0,0 +1,615 @@
+################################################################################
+# External toolchain package infrastructure
+#
+# This package infrastructure implements the support for external
+# toolchains, i.e toolchains that are available pre-built, ready to
+# use. Such toolchain may either be readily available on the Web
+# (Linaro, Sourcery CodeBench, from processor vendors) or may be built
+# with tools like Crosstool-NG or Buildroot itself. So far, we have
+# tested this with:
+#
+# * Toolchains generated by Crosstool-NG
+# * Toolchains generated by Buildroot
+# * Toolchains provided by Linaro for the ARM and AArch64
+# architectures
+# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM,
+# MIPS, PowerPC, x86, x86_64 and NIOS 2 architectures. For the MIPS
+# toolchain, the -muclibc variant isn't supported yet, only the
+# default glibc-based variant is.
+# * Xilinx toolchains for the Microblaze architecture
+# * Synopsys DesignWare toolchains for ARC cores
+#
+# The basic principle is the following
+#
+# 1. If the toolchain is not pre-installed, download and extract it
+# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise,
+# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has
+# already been installed by the user.
+#
+# 2. For all external toolchains, perform some checks on the
+# conformity between the toolchain configuration described in the
+# Buildroot menuconfig system, and the real configuration of the
+# external toolchain. This is for example important to make sure that
+# the Buildroot configuration system knows whether the toolchain
+# supports RPC, IPv6, locales, large files, etc. Unfortunately, these
+# things cannot be detected automatically, since the value of these
+# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at
+# configuration time because these options are used as dependencies
+# for other options. And at configuration time, we are not able to
+# retrieve the external toolchain configuration.
+#
+# 3. Copy the libraries needed at runtime to the target directory,
+# $(TARGET_DIR). Obviously, things such as the C library, the dynamic
+# loader and a few other utility libraries are needed if dynamic
+# applications are to be executed on the target system.
+#
+# 4. Copy the libraries and headers to the staging directory. This
+# will allow all further calls to gcc to be made using --sysroot
+# $(STAGING_DIR), which greatly simplifies the compilation of the
+# packages when using external toolchains. So in the end, only the
+# cross-compiler binaries remains external, all libraries and headers
+# are imported into the Buildroot tree.
+#
+# 5. Build a toolchain wrapper which executes the external toolchain
+# with a number of arguments (sysroot/march/mtune/..) hardcoded,
+# so we're sure the correct configuration is always used and the
+# toolchain behaves similar to an internal toolchain.
+# This toolchain wrapper and symlinks are installed into
+# $(HOST_DIR)/usr/bin like for the internal toolchains, and the rest
+# of Buildroot is handled identical for the 2 toolchain types.
+################################################################################
+
+#
+# Definitions of where the toolchain can be found
+#
+
+TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
+TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
+TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
+else
+TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
+endif
+
+ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)
+ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
+# if no path set, figure it out from path
+TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
+endif
+else
+TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin
+endif
+
+# If this is a buildroot toolchain, it already has a wrapper which we want to
+# bypass. Since this is only evaluated after it has been extracted, we can use
+# $(wildcard ...) here.
+TOOLCHAIN_EXTERNAL_SUFFIX = \
+ $(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real)
+
+TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)-
+TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX)
+TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX)
+TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX)
+TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX)
+
+# Normal handling of downloaded toolchain tarball extraction.
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
+# As a regular package, the toolchain gets extracted in $(@D), but
+# since it's actually a fairly special package, we need it to be moved
+# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR.
+define TOOLCHAIN_EXTERNAL_MOVE
+ rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
+ mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
+ mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/
+endef
+endif
+
+#
+# Definitions of the list of libraries that should be copied to the target.
+#
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
+TOOLCHAIN_EXTERNAL_LIBS += libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_ARM_EABIHF),yy)
+TOOLCHAIN_EXTERNAL_LIBS += ld-linux-armhf.so.*
+else
+TOOLCHAIN_EXTERNAL_LIBS += ld*.so.*
+endif
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.*
+ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
+TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.*
+endif # gdbserver
+endif # ! no threads
+endif
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
+TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.*
+endif
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
+TOOLCHAIN_EXTERNAL_LIBS += libc.so libgcc_s.so.*
+endif
+
+ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
+TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.*
+endif
+
+ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)
+TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.*
+# fortran needs quadmath on x86 and x86_64
+ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y)
+TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so*
+endif
+endif
+
+TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
+
+
+#
+# Definition of the CFLAGS to use with the external toolchain, as well as the
+# common toolchain wrapper build arguments
+#
+ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),)
+CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU))
+else
+CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION))
+endif
+CC_TARGET_ARCH_ := $(call qstrip,$(BR2_GCC_TARGET_ARCH))
+CC_TARGET_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_ABI))
+CC_TARGET_FPU_ := $(call qstrip,$(BR2_GCC_TARGET_FPU))
+CC_TARGET_FLOAT_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI))
+CC_TARGET_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_MODE))
+
+# march/mtune/floating point mode needs to be passed to the external toolchain
+# to select the right multilib variant
+ifeq ($(BR2_x86_64),y)
+TOOLCHAIN_EXTERNAL_CFLAGS += -m64
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64
+endif
+ifneq ($(CC_TARGET_ARCH_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"'
+endif
+ifneq ($(CC_TARGET_CPU_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(CC_TARGET_CPU_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(CC_TARGET_CPU_)"'
+endif
+ifneq ($(CC_TARGET_ABI_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"'
+endif
+ifneq ($(CC_TARGET_FPU_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(CC_TARGET_FPU_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(CC_TARGET_FPU_)"'
+endif
+ifneq ($(CC_TARGET_FLOAT_ABI_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(CC_TARGET_FLOAT_ABI_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(CC_TARGET_FLOAT_ABI_)"'
+endif
+ifneq ($(CC_TARGET_MODE_),)
+TOOLCHAIN_EXTERNAL_CFLAGS += -m$(CC_TARGET_MODE_)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(CC_TARGET_MODE_)"'
+endif
+ifeq ($(BR2_BINFMT_FLAT),y)
+TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT
+endif
+ifeq ($(BR2_mipsel)$(BR2_mips64el),y)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN
+TOOLCHAIN_EXTERNAL_CFLAGS += -EL
+endif
+ifeq ($(BR2_mips)$(BR2_mips64),y)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN
+TOOLCHAIN_EXTERNAL_CFLAGS += -EB
+endif
+ifeq ($(BR2_arceb),y)
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN
+TOOLCHAIN_EXTERNAL_CFLAGS += -EB
+endif
+
+TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
+
+ifeq ($(BR2_SOFT_FLOAT),y)
+TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
+endif
+
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
+ -DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"'
+
+ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),)
+# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
+ -DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"'
+else
+# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path
+TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
+ -DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"'
+endif
+
+
+#
+# The following functions creates the symbolic links needed to get the
+# cross-compilation tools visible in $(HOST_DIR)/usr/bin. Some of
+# links are done directly to the corresponding tool in the external
+# toolchain installation directory, while some other links are done to
+# the toolchain wrapper (preprocessor, C, C++ and Fortran compiler)
+#
+# We skip gdb symlink when we are building our own gdb to prevent two
+# gdb's in $(HOST_DIR)/usr/bin.
+#
+# The LTO support in gcc creates wrappers for ar, ranlib and nm which load
+# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and
+# *-gcc-nm and should be used instead of the real programs when -flto is
+# used. However, we should not add the toolchain wrapper for them, and they
+# match the *cc-* pattern. Therefore, an additional case is added for *-ar,
+# *-ranlib and *-nm.
+define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
+ $(Q)cd $(HOST_DIR)/usr/bin; \
+ for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \
+ base=$${i##*/}; \
+ case "$$base" in \
+ *-ar|*-ranlib|*-nm) \
+ ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+ ;; \
+ *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \
+ ln -sf toolchain-wrapper $$base; \
+ ;; \
+ *gdb|*gdbtui) \
+ if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \
+ ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+ fi \
+ ;; \
+ *) \
+ ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
+ ;; \
+ esac; \
+ done
+endef
+
+
+# Various utility functions used by the external toolchain package
+# infrastructure. Those functions are mainly responsible for:
+#
+# - installation the toolchain libraries to $(TARGET_DIR)
+# - copying the toolchain sysroot to $(STAGING_DIR)
+# - installing a gdbinit file
+#
+# Details about sysroot directory selection.
+#
+# To find the sysroot directory, we use the trick of looking for the
+# 'libc.a' file with the -print-file-name gcc option, and then
+# mangling the path to find the base directory of the sysroot.
+#
+# Note that we do not use the -print-sysroot option, because it is
+# only available since gcc 4.4.x, and we only recently dropped support
+# for 4.2.x and 4.3.x.
+#
+# When doing this, we don't pass any option to gcc that could select a
+# multilib variant (such as -march) as we want the "main" sysroot,
+# which contains all variants of the C library in the case of multilib
+# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the
+# path of the cross-compiler, without the --sysroot=$(STAGING_DIR),
+# since what we want to find is the location of the original toolchain
+# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR.
+#
+# Then, multilib toolchains are a little bit more complicated, since
+# they in fact have multiple sysroots, one for each variant supported
+# by the toolchain. So we need to find the particular sysroot we're
+# interested in.
+#
+# To do so, we ask the compiler where its sysroot is by passing all
+# flags (including -march and al.), except the --sysroot flag since we
+# want to the compiler to tell us where its original sysroot
+# is. ARCH_SUBDIR will contain the subdirectory, in the main
+# SYSROOT_DIR, that corresponds to the selected architecture
+# variant. ARCH_SYSROOT_DIR will contain the full path to this
+# location.
+#
+# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The
+# fact is that in multilib toolchains, the header files are often only
+# present in the main sysroot, and only the libraries are available in
+# each variant-specific sysroot directory.
+
+
+# toolchain_find_sysroot returns the sysroot location for the given
+# compiler + flags. We need to handle cases where libc.a is in:
+#
+# - lib/
+# - usr/lib/
+# - lib32/
+# - lib64/
+# - lib32-fp/ (Cavium toolchain)
+# - lib64-fp/ (Cavium toolchain)
+# - usr/lib/<tuple>/ (Linaro toolchain)
+#
+# And variations on these.
+define toolchain_find_sysroot
+$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::')
+endef
+
+# Returns the lib subdirectory for the given compiler + flags (i.e
+# typically lib32 or lib64 for some toolchains)
+define toolchain_find_libdir
+$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?)/([^/]*/)?libc.a:\2:')
+endef
+
+# Returns the location of the libc.a file for the given compiler + flags
+define toolchain_find_libc_a
+$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a))
+endef
+
+# Integration of the toolchain into Buildroot: find the main sysroot
+# and the variant-specific sysroot, then copy the needed libraries to
+# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers)
+# to $(STAGING_DIR).
+#
+# Variables are defined as follows:
+#
+# LIBC_A_LOCATION: location of the libc.a file in the default
+# multilib variant (allows to find the main
+# sysroot directory)
+# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/usr/lib/libc.a
+#
+# SYSROOT_DIR: the main sysroot directory, deduced from
+# LIBC_A_LOCATION by removing the
+# usr/lib[32|64]/libc.a part of the path.
+# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/
+#
+# ARCH_LIBC_A_LOCATION: location of the libc.a file in the selected
+# multilib variant (taking into account the
+# CFLAGS). Allows to find the sysroot of the
+# selected multilib variant.
+# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/libc.a
+#
+# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant,
+# deduced from ARCH_LIBC_A_LOCATION by removing
+# usr/lib[32|64]/libc.a at the end of the path.
+# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/
+#
+# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries
+# are stored. Deduced from ARCH_LIBC_A_LOCATION by
+# looking at usr/lib??/libc.a.
+# Ex: lib
+#
+# ARCH_SUBDIR: the relative location of the sysroot of the selected
+# multilib variant compared to the main sysroot.
+# Ex: mips16/soft-float/el
+#
+# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains,
+# store GCC support libraries (libstdc++,
+# libgcc_s, etc.) outside of the sysroot. In
+# this case, SUPPORT_LIB_DIR is set to a
+# non-empty value, and points to the directory
+# where these support libraries are
+# available. Those libraries will be copied to
+# our sysroot, and the directory will also be
+# considered when searching libraries for copy
+# to the target filesystem.
+#
+# Please be very careful to check the major toolchain sources:
+# Buildroot, Crosstool-NG, CodeSourcery and Linaro
+# before doing any modification on the below logic.
+
+ifeq ($(BR2_STATIC_LIBS),)
+define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS
+ $(Q)$(call MESSAGE,"Copying external toolchain libraries to target...")
+ $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \
+ $(call copy_toolchain_lib_root,$$libs); \
+ done
+endef
+endif
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y)
+define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER
+ $(Q)$(call MESSAGE,"Copying gdbserver")
+ $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
+ ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
+ gdbserver_found=0 ; \
+ for d in $${ARCH_SYSROOT_DIR}/usr \
+ $${ARCH_SYSROOT_DIR}/../debug-root/usr \
+ $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \
+ $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \
+ if test -f $${d}/bin/gdbserver ; then \
+ install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \
+ gdbserver_found=1 ; \
+ break ; \
+ fi ; \
+ done ; \
+ if [ $${gdbserver_found} -eq 0 ] ; then \
+ echo "Could not find gdbserver in external toolchain" ; \
+ exit 1 ; \
+ fi
+endef
+endif
+
+define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS
+ $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \
+ ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
+ ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
+ SUPPORT_LIB_DIR="" ; \
+ if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \
+ LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \
+ if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \
+ SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \
+ fi ; \
+ fi ; \
+ if [ "$${SYSROOT_DIR}" == "$${ARCH_SYSROOT_DIR}" ] ; then \
+ ARCH_SUBDIR="" ; \
+ elif [ "`dirname $${ARCH_SYSROOT_DIR}`" = "`dirname $${SYSROOT_DIR}`" ] ; then \
+ SYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \
+ ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\1:"` ; \
+ else \
+ ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \
+ fi ; \
+ $(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \
+ $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR})
+endef
+
+# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib.
+# Note: the skeleton package additionally creates lib32->lib or lib64->lib
+# (as appropriate)
+#
+# $1: destination directory (TARGET_DIR / STAGING_DIR)
+create_lib_symlinks = \
+ $(Q)DESTDIR="$(strip $1)" ; \
+ ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
+ if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \
+ ln -snf lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \
+ ln -snf lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \
+ fi
+
+define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK
+ $(call create_lib_symlinks,$(STAGING_DIR))
+endef
+
+define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK
+ $(call create_lib_symlinks,$(TARGET_DIR))
+endef
+
+#
+# Generate gdbinit file for use with Buildroot
+#
+define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT
+ $(Q)if test -f $(TARGET_CROSS)gdb ; then \
+ $(call MESSAGE,"Installing gdbinit"); \
+ $(gen_gdbinit_file); \
+ fi
+endef
+
+# Various utility functions used by the external toolchain based on musl.
+
+# With the musl C library, the libc.so library directly plays the role
+# of the dynamic library loader. We just need to create a symbolic
+# link to libc.so with the appropriate name.
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
+ifeq ($(BR2_i386),y)
+MUSL_ARCH = i386
+else ifeq ($(BR2_ARM_EABIHF),y)
+MUSL_ARCH = armhf
+else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y)
+MUSL_ARCH = mipsel-sf
+else ifeq ($(BR2_sh),y)
+MUSL_ARCH = sh
+else
+MUSL_ARCH = $(ARCH)
+endif
+define TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
+ ln -sf libc.so $(TARGET_DIR)/lib/ld-musl-$(MUSL_ARCH).so.1
+endef
+endif
+
+# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not
+# patched specifically for uClibc-ng, so it continues to generate
+# binaries that expect the dynamic loader to be named ld-uClibc.so.0,
+# like with the original uClibc. Therefore, we create an additional
+# symbolic link to make uClibc-ng systems work properly.
+define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO
+ $(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \
+ ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \
+ fi
+ $(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \
+ ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \
+ fi
+endef
+
+
+################################################################################
+# inner-toolchain-external-package -- defines the generic installation rules
+# for external toolchain packages
+#
+# argument 1 is the lowercase package name
+# argument 2 is the uppercase package name, including a HOST_ prefix
+# for host packages
+# argument 3 is the uppercase package name, without the HOST_ prefix
+# for host packages
+# argument 4 is the type (target or host)
+################################################################################
+define inner-toolchain-external-package
+
+$(2)_INSTALL_STAGING = YES
+$(2)_ADD_TOOLCHAIN_DEPENDENCY = NO
+
+# In fact, we don't need to download the toolchain, since it is already
+# available on the system, so force the site and source to be empty so
+# that nothing will be downloaded/extracted.
+ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y)
+$(2)_SITE =
+$(2)_SOURCE =
+endif
+
+ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
+$(2)_EXCLUDES = usr/lib/locale/*
+
+$(2)_POST_EXTRACT_HOOKS += \
+ TOOLCHAIN_EXTERNAL_MOVE
+endif
+
+# Checks for an already installed toolchain: check the toolchain
+# location, check that it is usable, and then verify that it
+# matches the configuration provided in Buildroot: ABI, C++ support,
+# kernel headers version, type of C library and all C library features.
+define $(2)_CONFIGURE_CMDS
+ $$(Q)$$(call check_cross_compiler_exists,$$(TOOLCHAIN_EXTERNAL_CC))
+ $$(Q)$$(call check_unusable_toolchain,$$(TOOLCHAIN_EXTERNAL_CC))
+ $$(Q)SYSROOT_DIR="$$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC))" ; \
+ $$(call check_kernel_headers_version,\
+ $$(call toolchain_find_sysroot,$$(TOOLCHAIN_EXTERNAL_CC)),\
+ $$(call qstrip,$$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \
+ $$(call check_gcc_version,$$(TOOLCHAIN_EXTERNAL_CC),\
+ $$(call qstrip,$$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
+ if test "$$(BR2_arm)" = "y" ; then \
+ $$(call check_arm_abi,\
+ "$$(TOOLCHAIN_EXTERNAL_CC) $$(TOOLCHAIN_EXTERNAL_CFLAGS)",\
+ $$(TOOLCHAIN_EXTERNAL_READELF)) ; \
+ fi ; \
+ if test "$$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \
+ $$(call check_cplusplus,$$(TOOLCHAIN_EXTERNAL_CXX)) ; \
+ fi ; \
+ if test "$$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \
+ $$(call check_fortran,$$(TOOLCHAIN_EXTERNAL_FC)) ; \
+ fi ; \
+ if test "$$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \
+ $$(call check_uclibc,$$$${SYSROOT_DIR}) ; \
+ elif test "$$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \
+ $$(call check_musl,$$$${SYSROOT_DIR}) ; \
+ else \
+ $$(call check_glibc,$$$${SYSROOT_DIR}) ; \
+ fi
+ $$(Q)$$(call check_toolchain_ssp,$$(TOOLCHAIN_EXTERNAL_CC))
+endef
+
+$(2)_TOOLCHAIN_WRAPPER_ARGS += $$(TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS)
+
+$(2)_BUILD_CMDS = $$(TOOLCHAIN_WRAPPER_BUILD)
+
+define $(2)_INSTALL_STAGING_CMDS
+ $$(TOOLCHAIN_WRAPPER_INSTALL)
+ $$(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK)
+ $$(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS)
+ $$(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)
+ $$(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT)
+endef
+
+ifeq ($$(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
+$(2)_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
+endif
+
+# Even though we're installing things in both the staging, the host
+# and the target directory, we do everything within the
+# install-staging step, arbitrarily.
+define $(2)_INSTALL_TARGET_CMDS
+ $$(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK)
+ $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS)
+ $$(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER)
+ $$(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO)
+endef
+
+# Call the generic package infrastructure to generate the necessary
+# make targets
+$(call inner-generic-package,$(1),$(2),$(3),$(4))
+
+endef
+
+toolchain-external-package = $(call inner-toolchain-external-package,$(pkgname),$(call UPPERCASE,$(pkgname)),$(call UPPERCASE,$(pkgname)),target)
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in
new file mode 100644
index 000000000..1f0d4d11b
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in
@@ -0,0 +1,62 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
+ bool "Codescape IMG GNU Linux Toolchain 2016.05"
+ depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on BR2_MIPS_CPU_MIPS32R6 || (BR2_MIPS_CPU_MIPS64R6 && !BR2_MIPS_SOFT_FLOAT)
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+ select BR2_TOOLCHAIN_HAS_FORTRAN
+ help
+ Codescape IMG GNU Linux Toolchain 2015.10 for the MIPS
+ architecture, from Imagination Technologies. It uses gcc
+ 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel
+ headers 4.0. It has support for the following variants:
+ - MIPS32r6 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (big endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Disable 'Use soft-float'
+ - MIPS32r6 - Big-Endian, Soft-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (big endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Enable 'Use soft-float'
+ - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Disable 'Use soft-float'
+ - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Enable 'Use soft-float'
+ - MIPS32r6 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Disable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
+ - MIPS32r6 - Little-Endian, Soft-Float, 2008 NaN, o32 ABI, microMIPS
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r6' Target Architecture Variant
+ Enable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
+ - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n32 ABI
+ Select 'MIPS64 (big endian)' Target Architecture
+ Select 'mips 64r6' Target Architecture Variant
+ Select 'n32' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n32 ABI
+ Select 'MIPS64 (little endian)' Target Architecture
+ Select 'mips 64r6' Target Architecture Variant
+ Select 'n32' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r6 - Big-Endian, Hard-Float, 2008 NaN, n64 ABI
+ Select 'MIPS64 (big endian)' Target Architecture
+ Select 'mips 64r6' Target Architecture Variant
+ Select 'n64' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r6 - Little-Endian, Hard-Float, 2008 NaN, n64 ABI
+ Select 'MIPS64 (little endian)' Target Architecture
+ Select 'mips 64r6' Target Architecture Variant
+ Select 'n64' Target ABI
+ Disable 'Use soft-float'
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options
new file mode 100644
index 000000000..3eaa2a952
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "mips-img-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codescape-img-mips"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash
new file mode 100644
index 000000000..e4ae9e1e1
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.hash
@@ -0,0 +1,3 @@
+# Codescape toolchains from Imagination Technologies
+# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03/downloads.html
+sha256 e3c1f292ac6a9f12480af431c85a7ed9dfa011a52fd62a50be3363ec6b9bc872 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk
new file mode 100644
index 000000000..b4decfbff
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-img-mips/toolchain-external-codescape-img-mips.mk
@@ -0,0 +1,47 @@
+################################################################################
+#
+# toolchain-external-codescape-img-mips
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION = 2016.05-03
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION)
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STRIP_COMPONENTS = 2
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_VERSION).for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz
+
+# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and
+# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin
+# -> sbin-<abi> so that the rest of Buildroot can find the toolchain
+# tools in the appropriate location.
+ifeq ($(BR2_MIPS_OABI32),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = o32
+else ifeq ($(BR2_MIPS_NABI32),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n32
+else ifeq ($(BR2_MIPS_NABI64),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX = n64
+endif
+
+define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS
+ rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin
+ ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin
+ ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin
+endef
+
+# The Codescape toolchain uses a sysroot layout that places them
+# side-by-side instead of nested like multilibs. A symlink is needed
+# much like for the nested sysroots which are handled in
+# copy_toolchain_sysroot but there is not enough information in there
+# to determine whether the sysroot layout was nested or side-by-side.
+# Add the symlink here for now.
+define TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK
+ $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \
+ ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \
+ ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}
+endef
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_POST_INSTALL_STAGING_HOOKS += \
+ TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_STAGING_FIXUPS \
+ TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS_SYMLINK
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in
new file mode 100644
index 000000000..f899467e3
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in
@@ -0,0 +1,73 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
+ bool "Codescape MTI GNU Linux Toolchain 2016.05"
+ depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on BR2_MIPS_CPU_MIPS32R2 || (BR2_MIPS_CPU_MIPS64R2 && !BR2_MIPS_SOFT_FLOAT) || \
+ BR2_MIPS_CPU_MIPS32R5 || (BR2_MIPS_CPU_MIPS64R5 && !BR2_MIPS_SOFT_FLOAT)
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+ select BR2_TOOLCHAIN_HAS_FORTRAN
+ help
+ Codescape MTI GNU Linux Toolchain 2015.10 for the MIPS
+ architecture, from Imagination Technologies. It uses gcc
+ 4.9.2, binutils 2.24.90, glibc 2.20, gdb 7.9.1 and kernel
+ headers 4.0. It has support for the following variants:
+ - MIPS32r2 - Big-Endian, Hard-Float, Legacy NaN, o32 ABI
+ Select 'MIPS (big endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Disable 'Use soft-float'
+ - MIPS32r2 - Big-Endian, Hard-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (big endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Disable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
+ - MIPS32r2 - Big-Endian, Soft-Float, Legacy NaN, o32 ABI
+ Select 'MIPS (big endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Enable 'Use soft-float'
+ - MIPS32r2 - Little-Endian, Hard-Float, Legacy NaN, o32 ABI
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Disable 'Use soft-float'
+ - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Disable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mnan=2008'
+ - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Enable 'Use soft-float'
+ - MIPS32r2 - Little-Endian, Hard-Float, 2008 NaN, o32 ABI, microMIPS
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Enable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
+ - MIPS32r2 - Little-Endian, Soft-Float, Legacy NaN, o32 ABI, microMIPS
+ Select 'MIPS (little endian)' Target Architecture
+ Select 'mips 32r2' Target Architecture Variant
+ Disable 'Use soft-float'
+ Set BR2_TARGET_OPTIMIZATION to '-mmicromips'
+ - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n32 ABI
+ Select 'MIPS64 (big endian)' Target Architecture
+ Select 'mips 64r2' Target Architecture Variant
+ Select 'n32' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n32 ABI
+ Select 'MIPS64 (little endian)' Target Architecture
+ Select 'mips 64r2' Target Architecture Variant
+ Select 'n32' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r2 - Big-Endian, Hard-Float, Legacy NaN, n64 ABI
+ Select 'MIPS64 (big endian)' Target Architecture
+ Select 'mips 64r2' Target Architecture Variant
+ Select 'n64' Target ABI
+ Disable 'Use soft-float'
+ - MIPS64r2 - Little-Endian, Hard-Float, Legacy NaN, n64 ABI
+ Select 'MIPS64 (little endian)' Target Architecture
+ Select 'mips 64r2' Target Architecture Variant
+ Select 'n64' Target ABI
+ Disable 'Use soft-float'
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options
new file mode 100644
index 000000000..464c9b844
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "mips-mti-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codescape-mti-mips"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash
new file mode 100644
index 000000000..0d785f2af
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.hash
@@ -0,0 +1,3 @@
+# Codescape toolchains from Imagination Technologies
+# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03/downloads.html
+sha256 10b8ab6d7c492abc19ecabafedc6bc5f12ff88107a3cb76dc452b3a9522d9c56 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz
diff --git a/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk
new file mode 100644
index 000000000..e5733ca08
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codescape-mti-mips/toolchain-external-codescape-mti-mips.mk
@@ -0,0 +1,47 @@
+################################################################################
+#
+# toolchain-external-codescape-mti-mips
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION = 2016.05-03
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION)
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STRIP_COMPONENTS = 2
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SOURCE = Codescape.GNU.Tools.Package.$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_VERSION).for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz
+
+# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and
+# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin
+# -> sbin-<abi> so that the rest of Buildroot can find the toolchain
+# tools in the appropriate location.
+ifeq ($(BR2_MIPS_OABI32),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = o32
+else ifeq ($(BR2_MIPS_NABI32),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n32
+else ifeq ($(BR2_MIPS_NABI64),y)
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX = n64
+endif
+
+define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS
+ rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin
+ ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin
+ ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin
+endef
+
+# The Codescape toolchain uses a sysroot layout that places them
+# side-by-side instead of nested like multilibs. A symlink is needed
+# much like for the nested sysroots which are handled in
+# copy_toolchain_sysroot but there is not enough information in there
+# to determine whether the sysroot layout was nested or side-by-side.
+# Add the symlink here for now.
+define TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK
+ $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \
+ ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \
+ ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}
+endef
+
+TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_POST_INSTALL_STAGING_HOOKS += \
+ TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_STAGING_FIXUPS \
+ TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS_SYMLINK
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in
new file mode 100644
index 000000000..2fbb218ec
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in
@@ -0,0 +1,17 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
+ bool "CodeSourcery AArch64 2014.11"
+ depends on BR2_aarch64
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+ help
+ Sourcery CodeBench toolchain for the AArch64 architecture,
+ from Mentor Graphics. It uses gcc 4.9.1, binutils
+ 2.24.51.20140217, glibc 2.20, gdb 7.7.50 and kernel headers
+ 3.16.2.
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options
new file mode 100644
index 000000000..1eab83921
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "aarch64-amd-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-aarch64"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash
new file mode 100644
index 000000000..f7d3f29fd
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
+sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk
new file mode 100644
index 000000000..bc58c44c7
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/toolchain-external-codesourcery-aarch64.mk
@@ -0,0 +1,22 @@
+################################################################################
+#
+# toolchain-external-codesourcery-aarch64
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION = 2014.11-95
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_SOURCE = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_ACTUAL_SOURCE_TARBALL = aarch64-amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP
+ ln -sf ld-2.20.so $(STAGING_DIR)/lib/ld-linux-aarch64.so.1
+endef
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP
+
+define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP
+ ln -sf ld-2.20.so $(TARGET_DIR)/lib/ld-linux-aarch64.so.1
+endef
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in
new file mode 100644
index 000000000..86486c818
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in
@@ -0,0 +1,24 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
+ bool "Sourcery CodeBench AMD64 2015.11"
+ depends on BR2_x86_64
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ depends on BR2_x86_jaguar || BR2_x86_steamroller
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ help
+ Sourcery CodeBench toolchain for the amd64 (x86_64)
+ architectures, from Mentor Graphics. It uses gcc 5.2,
+ binutils 2.25.51, glibc 2.22, gdb 7.10.50 and kernel headers
+ 4.2. It has support for the following variants:
+ - AMD Puma/Jaguar (family 16h), glibc
+ Default for x86_64, nothing special to do.
+ - AMD Steamroller (family 15h), glibc
+ Select a steamroller core.
+ No other architecture variants are supported since glibc
+ is optimized for one of these two baselines.
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options
new file mode 100644
index 000000000..2ab23026e
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "x86_64-amd-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-amd64"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash
new file mode 100644
index 000000000..ea5f300d7
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 3c31206c8b9277f409ee00e4777ba82dfa6da2a4ca0926501cd5fb6bbd1b407e amd-2015.11-139-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
+sha256 0b673f5035f97d5d03c31272cddab0f117d39ad76a5ad2a3bc98c156571527de amd-2015.11-139-x86_64-amd-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk
new file mode 100644
index 000000000..4b8e31c07
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-amd64/toolchain-external-codesourcery-amd64.mk
@@ -0,0 +1,12 @@
+################################################################################
+#
+# toolchain-external-codesourcery-amd64
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION = 2015.11-139
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_SOURCE = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_ACTUAL_SOURCE_TARBALL = amd-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in
new file mode 100644
index 000000000..3cdfc860a
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in
@@ -0,0 +1,35 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
+ bool "Sourcery CodeBench ARM 2014.05"
+ depends on BR2_arm
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on BR2_ARM_EABI
+ # Unsupported ARM cores
+ depends on !BR2_cortex_a12 && !BR2_cortex_a17
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ help
+ Sourcery CodeBench toolchain for the ARM architecture, from
+ Mentor Graphics. It uses gcc 4.8.3, binutils 2.24.51, glibc
+ 2.18 and gdb 7.7.50, kernel headers 3.13. It has support
+ for the following variants:
+ - ARMv5TE, little endian, soft-float, glibc
+ Select ARM926T, ARM10T, XScale or another ARMv5 core
+ Select BR2_SOFT_FLOAT
+ - ARMv4T, little endian, soft-float, glibc
+ Select ARM720T, ARM920T, ARM922T or another ARMv4 core
+ Select BR2_SOFT_FLOAT
+ - ARMv7-A, Thumb 2, little endian, soft-float, glibc
+ Select Cortex-A8, Cortex-A9 or another ARMv7-A core
+ Select BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mthumb
+
+comment "Sourcery CodeBench toolchains available for the EABI ABI"
+ depends on BR2_arm
+ depends on !BR2_ARM_EABI
+ depends on !BR2_STATIC_LIBS
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options
new file mode 100644
index 000000000..7f3654dc7
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "arm-none-linux-gnueabi"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-arm"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash
new file mode 100644
index 000000000..535f4aaf9
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
+sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk
new file mode 100644
index 000000000..f96a0e0b6
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-arm/toolchain-external-codesourcery-arm.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# toolchain-external-codesourcery-arm
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION = 2014.05-29
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_SOURCE = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_ACTUAL_SOURCE_TARBALL = arm-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in
new file mode 100644
index 000000000..6a13ae6cd
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in
@@ -0,0 +1,93 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
+ bool "Sourcery CodeBench MIPS 2016.05"
+ depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+ depends on BR2_MIPS_CPU_MIPS32R2 || BR2_MIPS_CPU_MIPS64R2
+ # Unsupported MIPS cores
+ depends on !BR2_mips_interaptiv
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_MIPS_NABI32
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ help
+ Sourcery CodeBench toolchain for the MIPS architecture, from
+ Mentor Graphics. It uses gcc 5.3, binutils 2.25.51, glibc
+ 2.23, uClibc 0.9.30 and gdb 7.10.50, kernel headers 4.4.1. It
+ has support for the following variants:
+ - MIPS32r2 - Big-Endian, 2008 NaN, O32
+ Select MIPS (big endian) core
+ Disable BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mnan=2008
+ - MIPS32r2 - Big-Endian, O32
+ Select MIPS (big endian) core
+ Disable BR2_SOFT_FLOAT
+ - MIPS32r2 - Big-Endian, O32, MIPS16
+ Select MIPS (big endian) core
+ Disable BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mips16
+ - MIPS32r2 - Big-Endian, Soft-Float, O32
+ Select MIPS (big endian) core
+ Select BR2_SOFT_FLOAT
+ - MIPS32r2 - Big-Endian, Soft-Float, O32, MIPS16
+ Select MIPS (big endian) core
+ Select BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mips16
+ - MIPS32r2 - Little-Endian, 2008 NaN, O32
+ Select MIPS (little endian) core
+ Disable BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mnan=2008
+ - MIPS32r2 - Little-Endian, O32
+ Select MIPS (little endian) core
+ Disable BR2_SOFT_FLOAT
+ - MIPS32r2 - Little-Endian, O32, MIPS16
+ Select MIPS (little endian) core
+ Disable BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mips16
+ - MIPS32r2 - Little-Endian, Soft-Float, O32
+ Select MIPS (little endian) core
+ Select BR2_SOFT_FLOAT
+ - MIPS32r2 - Little-Endian, Soft-Float, O32, MIPS16
+ Select MIPS (little endian) core
+ Select BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mips16
+ - MIPS32r2 - Little-Endian, Soft-Float, O32, microMIPS
+ Select MIPS (little endian) core
+ Select BR2_SOFT_FLOAT
+ Set BR2_TARGET_OPTIMIZATION to -mmicromips
+ - MIPS32r2 - uClibc, Big-Endian, 2008 NaN, O32
+ Not usable in Buildroot yet.
+ - MIPS32r2 - uClibc, Big-Endian, O32
+ Not usable in Buildroot yet.
+ - MIPS32r2 - uClibc, Big-Endian, Soft-Float, O32
+ Not usable in Buildroot yet.
+ - MIPS32r2 - uClibc, Little-Endian, 2008 NaN, O32
+ Not usable in Buildroot yet.
+ - MIPS32r2 - uClibc, Little-Endian, O32
+ Not usable in Buildroot yet.
+ - MIPS32r2 - uClibc, Little-Endian, Soft-Float, O32
+ Not usable in Buildroot yet.
+ - MIPS64r2 - Big-Endian, N64
+ Select MIPS64 (big endian) core
+ Select the n64 ABI
+ Disable BR2_SOFT_FLOAT
+ - MIPS64r2 - Big-Endian, Soft-Float, N64
+ Select MIPS64 (big endian) core
+ Select the n64 ABI
+ Select BR2_SOFT_FLOAT
+ - MIPS64r2 - Little-Endian, N64
+ Select MIPS64 (little endian) core
+ Select the n64 ABI
+ Disable BR2_SOFT_FLOAT
+ - MIPS64r2 - Little-Endian, Soft-Float, N64
+ Select MIPS64 (little endian) core
+ Select the n64 ABI
+ Select BR2_SOFT_FLOAT
+
+comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64"
+ depends on BR2_MIPS_NABI32
+ depends on !BR2_STATIC_LIBS
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options
new file mode 100644
index 000000000..677cc67d6
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "mips-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-mips"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash
new file mode 100644
index 000000000..2d80338e7
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.hash
@@ -0,0 +1,3 @@
+# Locally computed
+sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
+sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk
new file mode 100644
index 000000000..5117d475c
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-mips/toolchain-external-codesourcery-mips.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# toolchain-external-codesourcery-mips
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION = 2016.05-8
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_SOURCE = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_ACTUAL_SOURCE_TARBALL = mips-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in
new file mode 100644
index 000000000..54eed8c79
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in
@@ -0,0 +1,17 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
+ bool "Sourcery CodeBench Nios-II 2016.05"
+ depends on BR2_nios2
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ select BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405 # based-on binutils-2.25.1
+ help
+ Sourcery CodeBench toolchain for the Nios-II architecture,
+ from Mentor Graphics. It uses gcc 5.3, binutils 2.25.51,
+ glibc 2.23, gdb 7.10.50 and kernel headers 4.4.
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options
new file mode 100644
index 000000000..07cc5ede9
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "nios2-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-niosII"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash
new file mode 100644
index 000000000..a60c49f83
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 750639290744adda931c81fa2cd2ffc2bde972488047824dcfaa53c42562191d sourceryg++-2016.05-10-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
+sha256 3dc1c2685c0472059547dd7becb5dc991541b8176af39fa7aa5f601d38b9879a sourceryg++-2016.05-10-nios2-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk
new file mode 100644
index 000000000..3eb667967
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-niosII/toolchain-external-codesourcery-niosII.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# toolchain-external-codesourcery-niosII
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION = 2016.05-10
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SITE = http://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_SOURCE = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_ACTUAL_SOURCE_TARBALL = sourceryg++-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in
new file mode 100644
index 000000000..a47dab761
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in
@@ -0,0 +1,25 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
+ bool "Sourcery CodeBench SH 2012.09"
+ depends on BR2_sh4a || BR2_sh4aeb
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+ help
+ Sourcery CodeBench toolchain for the SuperH architecture,
+ from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
+ glibc 2.16, uClibc 0.9.30, gdb 7.4.50 and kernel headers
+ 3.5.4. It has support for the following variants:
+ - SH4A, glibc, little endian
+ Default.
+ - SH4A, glibc, big endian
+ Add -mb to BR2_TARGET_OPTIMIZATION
+ - SH4A, uClibc, little endian
+ Not usable in Buildroot yet.
+ - SH4A, uClibc, big endian
+ Not usable in Buildroot yet.
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options
new file mode 100644
index 000000000..90061cef4
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "sh-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-sh"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash
new file mode 100644
index 000000000..ff2ba5f47
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 59d6766fde244931aa52db01433d5acd051998762a931121c5fc109536a1a802 renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2
+sha256 e2e58c10e52395d5d35157e35f85233f713c6f9223a652dfc56194cfd2eed004 renesas-2012.09-61-sh-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk
new file mode 100644
index 000000000..5370bb22a
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-sh/toolchain-external-codesourcery-sh.mk
@@ -0,0 +1,13 @@
+################################################################################
+#
+# toolchain-external-sourcery-sh
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION = 2012.09-61
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_SOURCE = renesas-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i686-pc-linux-gnu.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_ACTUAL_SOURCE_TARBALL = renesas-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_SH_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in
new file mode 100644
index 000000000..bcbdd2693
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in
@@ -0,0 +1,29 @@
+config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
+ bool "Sourcery CodeBench x86/x86_64 2012.09"
+ depends on BR2_i386 || BR2_x86_64
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ depends on !BR2_x86_jaguar
+ depends on !BR2_x86_steamroller
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+ help
+ Sourcery CodeBench toolchain for the x86/x86_64
+ architectures, from Mentor Graphics. It uses gcc 4.7.2,
+ binutils 2.23.51, glibc 2.16, gdb 7.4.50 and kernel headers
+ 3.5.4. It has support for the following variants:
+ - Intel Pentium 4, glibc, 32 bits
+ Default for x86, nothing special to do.
+ - Intel Atom, glibc, 32 bits
+ Select an Atom core
+ - Intel Xeon, glibc, 64 bits
+ Default for x86_64, nothing special to do.
+ - Intel Core 2, glibc, 64 bits
+ Select a Core 2 core
+ Other architecture variants (beyond Pentium-4/Xeon) are
+ supported as well, but glibc is not optimised for it.
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options
new file mode 100644
index 000000000..65b62f323
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "i686-pc-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-codesourcery-x86"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash
new file mode 100644
index 000000000..a003f7ab3
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 ea804cf02014369da52abc4f64e91e96bde2dd2230aca96109459013d4545458 ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2
+sha256 1a9519e415a1e6892c760bf21f7e98f3a633a9d1c5bb8781a96d338e4dd62717 ia32-2012.09-62-i686-pc-linux-gnu.src.tar.bz2
diff --git a/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk
new file mode 100644
index 000000000..5ee6991c0
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-codesourcery-x86/toolchain-external-codesourcery-x86.mk
@@ -0,0 +1,12 @@
+################################################################################
+#
+# toolchain-external-codesourcery-x86
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_SITE = https://sourcery.mentor.com/public/gnu_toolchain/$(TOOLCHAIN_EXTERNAL_PREFIX)
+TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION = 2012.09-62
+TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_SOURCE = ia32-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX)-i386-linux.tar.bz2
+TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_ACTUAL_SOURCE_TARBALL = ia32-$(TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_VERSION)-$(TOOLCHAIN_EXTERNAL_PREFIX).src.tar.bz2
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in b/toolchain/toolchain-external/toolchain-external-custom/Config.in
new file mode 100644
index 000000000..a913feb34
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in
@@ -0,0 +1,5 @@
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+ bool "Custom toolchain"
+ help
+ Use this option to use a custom toolchain pre-installed on
+ your system.
diff --git a/toolchain/toolchain-external/toolchain-external-custom/Config.in.options b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
new file mode 100644
index 000000000..5ff2491e1
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/Config.in.options
@@ -0,0 +1,345 @@
+if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-custom"
+
+config BR2_TOOLCHAIN_EXTERNAL_URL
+ string "Toolchain URL"
+ depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
+ help
+ URL of the custom toolchain tarball to download and install.
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
+ string "Toolchain prefix"
+ default "$(ARCH)-linux"
+
+choice
+ bool "External toolchain gcc version"
+ default BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
+ help
+ Set to the gcc version that is used by your external
+ toolchain.
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_6
+ bool "6.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_6
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_5
+ bool "5.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
+ bool "4.9.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
+ bool "4.8.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
+ bool "4.7.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
+ bool "4.6.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
+ bool "4.5.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
+ bool "4.4.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
+ bool "4.3.x"
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
+
+config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
+ bool "older"
+ help
+ Use this option if your GCC version is older than any of the
+ above.
+
+ Note that the Buildroot community doesn't do any testing with
+ such old toolchains. Some packages may fail to build in
+ surprising ways, or the generated root filesystem may not
+ work at all. Use such old toolchains at your own risk.
+
+endchoice
+
+choice
+ bool "External toolchain kernel headers series"
+ default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
+ help
+ Set to the kernel headers version that were used to build
+ this external toolchain.
+
+ This is used to hide/show some packages that have strict
+ requirements on the version of kernel headers.
+
+ If unsure what version your toolchain is using, you can look
+ at the value of LINUX_VERSION_CODE in linux/version.h in your
+ toolchain. The Linux version is M.m.p, with:
+ M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
+ m = ( LINUX_VERSION_CODE >> 8 ) & 0xFF
+ p = ( LINUX_VERSION_CODE >> 0 ) & 0xFF
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
+ bool "4.8.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
+ bool "4.7.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
+ bool "4.6.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
+ bool "4.5.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
+ bool "4.4.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
+ bool "4.3.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
+ bool "4.2.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
+ bool "4.1.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
+ bool "4.0.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
+ bool "3.19.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
+ bool "3.18.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
+ bool "3.17.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
+ bool "3.16.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
+ bool "3.15.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
+ bool "3.14.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
+ bool "3.13.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
+ bool "3.12.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
+ bool "3.11.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
+ bool "3.10.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
+ bool "3.9.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
+ bool "3.8.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
+ bool "3.7.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
+ bool "3.6.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
+ bool "3.5.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
+ bool "3.4.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
+ bool "3.3.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
+ bool "3.2.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
+ bool "3.1.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
+ bool "3.0.x"
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
+
+config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
+ bool "2.6.x"
+
+endchoice
+
+choice
+ prompt "External toolchain C library"
+ default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+ bool "uClibc/uClibc-ng"
+ select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+ # For the time being, we assume that all custom external
+ # toolchains have shadow password support.
+ select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
+ help
+ Select this option if your external toolchain uses the
+ uClibc (available from http://www.uclibc.org/)
+ or uClibc-ng (available from http://www.uclibc-ng.org)
+ C library.
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
+ bool "glibc/eglibc"
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ help
+ Select this option if your external toolchain uses the GNU C
+ library (available from https://www.gnu.org/software/libc/)
+ or its variant the eglibc library (http://www.eglibc.org/).
+
+ Note: eglibc is a variant of glibc that (among other things)
+ can be configured to exclude some of its features. Using a
+ toolchain with eglibc configured to exclude key features may
+ cause build failures to some packages.
+
+comment "(e)glibc only available with shared lib support"
+ depends on BR2_STATIC_LIBS
+
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
+ bool "musl (experimental)"
+ select BR2_TOOLCHAIN_EXTERNAL_MUSL
+ help
+ Select this option if your external toolchain uses the
+ 'musl' C library, available from http://www.musl-libc.org/.
+
+endchoice
+
+if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_WCHAR
+ bool "Toolchain has WCHAR support?"
+ select BR2_USE_WCHAR
+ help
+ Select this option if your external toolchain supports
+ WCHAR. If you don't know, leave the default value, Buildroot
+ will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_LOCALE
+ bool "Toolchain has locale support?"
+ select BR2_TOOLCHAIN_EXTERNAL_WCHAR
+ select BR2_ENABLE_LOCALE
+ help
+ Select this option if your external toolchain has locale
+ support. If you don't know, leave the default value,
+ Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+ bool "Toolchain has threads support?"
+ select BR2_TOOLCHAIN_HAS_THREADS
+ default y
+ help
+ Select this option if your external toolchain has thread
+ support. If you don't know, leave the default value,
+ Buildroot will tell you if it's correct or not.
+
+if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
+ bool "Toolchain has threads debugging support?"
+ select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+ default y
+ help
+ Select this option if your external toolchain has thread
+ debugging support. If you don't know, leave the default
+ value, Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
+ bool "Toolchain has NPTL threads support?"
+ select BR2_TOOLCHAIN_HAS_THREADS_NPTL
+ default y
+ help
+ Select this option if your external toolchain uses the NPTL
+ (Native Posix Thread Library) implementation of Posix
+ threads. If you don't know, leave the default value,
+ Buildroot will tell you if it's correct or not.
+
+endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
+
+endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
+
+config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
+ bool "Toolchain has SSP support?"
+ select BR2_TOOLCHAIN_HAS_SSP
+ default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
+ help
+ Selection this option if your external toolchain has Stack
+ Smashing Protection support enabled. If you don't know,
+ leave the default value, Buildroot will tell you if it's
+ correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
+ bool "Toolchain has RPC support?"
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
+ default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ help
+ Select this option if your external toolchain supports
+ RPC. If you don't know, leave the default value, Buildroot
+ will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTERNAL_CXX
+ bool "Toolchain has C++ support?"
+ select BR2_INSTALL_LIBSTDCPP
+ help
+ Select this option if your external toolchain has C++
+ support. If you don't know, leave the default value,
+ Buildroot will tell you if it's correct or not.
+
+config BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS
+ string "Extra toolchain libraries to be copied to target"
+ help
+ If your external toolchain provides extra libraries that
+ need to be copied to the target filesystem, enter them
+ here, separated by spaces. They will be copied to the
+ target's /lib directory.
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk
new file mode 100644
index 000000000..c4ae6125e
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-custom/toolchain-external-custom.mk
@@ -0,0 +1,15 @@
+################################################################################
+#
+# toolchain-external-custom
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CUSTOM_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))
+TOOLCHAIN_EXTERNAL_CUSTOM_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CUSTOM),y)
+# We can't check hashes for custom downloaded toolchains
+BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)
+endif
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in
new file mode 100644
index 000000000..662f7d744
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in
@@ -0,0 +1,15 @@
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
+ bool "Linaro AArch64 2016.05"
+ depends on BR2_aarch64
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ select BR2_TOOLCHAIN_HAS_FORTRAN
+ help
+ Toolchain for the AArch64 architecture, from
+ http://www.linaro.org/engineering/armv8/
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options
new file mode 100644
index 000000000..099c6c0d0
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "aarch64-linux-gnu"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-linaro-aarch64"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash
new file mode 100644
index 000000000..7a2c03818
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 d43227248f282a652da42322fcf4abfd3021f2a2f62e0cf6e242d82f55966ba9 gcc-linaro-5.3.1-2016.05-i686_aarch64-linux-gnu.tar.xz
+sha256 1941dcf6229d6706bcb89b7976d5d43d170efdd17c27d5fe1738e7ecf22adc37 gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk
new file mode 100644
index 000000000..a0543a75e
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-aarch64/toolchain-external-linaro-aarch64.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# toolchain-external-linaro-aarch64
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION = 2016.05
+TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)/aarch64-linux-gnu
+
+ifeq ($(HOSTARCH),x86)
+TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-i686_aarch64-linux-gnu.tar.xz
+else
+TOOLCHAIN_EXTERNAL_LINARO_AARCH64_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_AARCH64_VERSION)-x86_64_aarch64-linux-gnu.tar.xz
+endif
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in
new file mode 100644
index 000000000..bf8649acf
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in
@@ -0,0 +1,27 @@
+comment "Linaro toolchains available for Cortex-A + EABIhf"
+ depends on BR2_arm
+ depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
+ depends on !BR2_STATIC_LIBS
+
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
+ bool "Linaro ARM 2016.05"
+ depends on BR2_arm
+ depends on BR2_ARM_CPU_ARMV7A
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on BR2_ARM_EABIHF
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ select BR2_TOOLCHAIN_HAS_FORTRAN
+ help
+ Linaro toolchain for the ARM architecture. It uses Linaro
+ GCC 2016.05 (based on gcc 5.3.1), Linaro GDB 2016.05 (based on
+ GDB 7.11.1), glibc 2.21, Binutils 2016.05 (based on 2.25). It
+ generates code that runs on all Cortex-A profile devices,
+ but tuned for the Cortex-A9. The code generated is Thumb 2,
+ with the hard floating point calling convention, and uses
+ the VFPv3-D16 FPU instructions.
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options
new file mode 100644
index 000000000..dcbc6599d
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "arm-linux-gnueabihf"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-linaro-arm"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash
new file mode 100644
index 000000000..810642621
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 f1421c580ce977226f4fefc9c409b3b423260cc65a6e9dc6da88bb3478a521a0 gcc-linaro-5.3.1-2016.05-i686_arm-linux-gnueabihf.tar.xz
+sha256 987941c9fffdf56ffcbe90e8984673c16648c477b537fcf43add22fa62f161cd gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk
new file mode 100644
index 000000000..64918cac0
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-arm/toolchain-external-linaro-arm.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# toolchain-external-linaro-arm
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION = 2016.05
+TOOLCHAIN_EXTERNAL_LINARO_ARM_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)/arm-linux-gnueabihf
+
+ifeq ($(HOSTARCH),x86)
+TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-i686_arm-linux-gnueabihf.tar.xz
+else
+TOOLCHAIN_EXTERNAL_LINARO_ARM_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARM_VERSION)-x86_64_arm-linux-gnueabihf.tar.xz
+endif
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in
new file mode 100644
index 000000000..ed84c4755
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in
@@ -0,0 +1,26 @@
+comment "Linaro toolchains available for Cortex-A + EABIhf"
+ depends on BR2_armeb
+ depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
+ depends on !BR2_STATIC_LIBS
+
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
+ bool "Linaro armeb 2016.05"
+ depends on BR2_armeb
+ depends on BR2_ARM_CPU_ARMV7A
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ depends on BR2_ARM_EABIHF
+ depends on !BR2_STATIC_LIBS
+ select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ help
+ Linaro toolchain for the ARM big endian architecture. It
+ uses Linaro GCC 2016.05 (based on gcc 5.3.1), Linaro GDB
+ 2016.05 (based on GDB 7.11.1), glibc 2.21, Binutils 2016.05
+ (based on 2.25). It generates code that runs on all Cortex-A
+ profile devices, but tuned for the Cortex-A9. The code
+ generated is Thumb 2, with the hard floating point calling
+ convention, and uses the VFPv3-D16 FPU instructions.
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options
new file mode 100644
index 000000000..225e90f00
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "armeb-linux-gnueabihf"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-linaro-armeb"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash
new file mode 100644
index 000000000..7952b5087
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 f6e9c0d3320760fe8f89e9ec3acdd7b4da7eff889c094b4a2acc286fd46f334f gcc-linaro-5.3.1-2016.05-i686_armeb-linux-gnueabihf.tar.xz
+sha256 6cf41c8944be56279cc14992aa075174b7a4c5938502536266eaaeef048f9440 gcc-linaro-5.3.1-2016.05-x86_64_armeb-linux-gnueabihf.tar.xz
diff --git a/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk
new file mode 100644
index 000000000..cf2f3ad2c
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-linaro-armeb/toolchain-external-linaro-armeb.mk
@@ -0,0 +1,16 @@
+################################################################################
+#
+# toolchain-external-linaro-armeb
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION = 2016.05
+TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)/armeb-linux-gnueabihf
+
+ifeq ($(HOSTARCH),x86)
+TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-i686_armeb-linux-gnueabihf.tar.xz
+else
+TOOLCHAIN_EXTERNAL_LINARO_ARMEB_SOURCE = gcc-linaro-5.3.1-$(TOOLCHAIN_EXTERNAL_LINARO_ARMEB_VERSION)-x86_64_armeb-linux-gnueabihf.tar.xz
+endif
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in b/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in
new file mode 100644
index 000000000..c72f9d73c
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in
@@ -0,0 +1,30 @@
+config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
+ bool "Musl 1.1.12 toolchain"
+ depends on (BR2_arm && BR2_ARM_EABI && BR2_USE_MMU) || \
+ (BR2_arm && BR2_ARM_EABIHF && !BR2_ARM_CPU_ARMV4 && BR2_USE_MMU) || \
+ (BR2_armeb && BR2_ARM_EABI && !BR2_ARM_CPU_ARMV7A && BR2_USE_MMU) || \
+ BR2_i386 || (BR2_mips && !BR2_SOFT_FLOAT) || \
+ BR2_mipsel || (BR2_powerpc && BR2_powerpc_CLASSIC) || \
+ BR2_sh4 || BR2_sh4eb || \
+ BR2_x86_64
+ depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
+ # Unsupported MIPS cores
+ depends on !BR2_mips_interaptiv && !BR2_mips_m5150
+ # Unsupported for MIPS R6
+ depends on !BR2_MIPS_CPU_MIPS32R6 && !BR2_MIPS_CPU_MIPS64R6
+ select BR2_TOOLCHAIN_EXTERNAL_MUSL
+ select BR2_TOOLCHAIN_HAS_SSP
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_HOSTARCH_NEEDS_IA32_LIBS
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_5
+ help
+ Toolchain based on the Musl C library, provided by the
+ musl-cross project. It uses gcc 5.3, binutils 2.25.1 and
+ musl 1.1.12. It does not have a cross debugger included.
+
+ The ARM soft-float toolchain is built for ARMv4t, while the
+ ARM hard-float toolchain is built for ARMv5t.
+ The x86 toolchain is built for i486.
+
+ http://musl.codu.org/
diff --git a/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options b/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options
new file mode 100644
index 000000000..cd12355e3
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-musl-cross/Config.in.options
@@ -0,0 +1,19 @@
+if BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "arm-linux-musleabi" if BR2_arm && BR2_ARM_EABI
+ default "arm-linux-musleabihf" if BR2_arm && BR2_ARM_EABIHF
+ default "armeb-linux-musleabi" if BR2_armeb
+ default "i486-linux-musl" if BR2_i386
+ default "mips-linux-musl" if (BR2_mips && !BR2_SOFT_FLOAT)
+ default "mipsel-linux-musl" if (BR2_mipsel && !BR2_SOFT_FLOAT)
+ default "mipsel-sf-linux-musl" if (BR2_mipsel && BR2_SOFT_FLOAT)
+ default "powerpc-linux-musl" if BR2_powerpc
+ default "sh4-linux-musl" if BR2_sh4
+ default "sh4eb-linux-musl" if BR2_sh4eb
+ default "x86_64-linux-musl" if BR2_x86_64
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-musl-cross"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.hash b/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.hash
new file mode 100644
index 000000000..beef8fdc7
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.hash
@@ -0,0 +1,12 @@
+# Locally calculated
+sha256 e32c23d0b83639fc10ad06666ec086b66453b9be44415fe1a818c3c3b526dfb1 crossx86-armeb-linux-musleabi-1.1.12.tar.xz
+sha256 eb81bd5d6ada454c6e854b18bfa8dc801333782152166f6cab9fb7cd11692987 crossx86-arm-linux-musleabi-1.1.12.tar.xz
+sha256 a050da284ff22d291ae71dfc249ebdedb18334b8d626804760ce7d5963e392e6 crossx86-arm-linux-musleabihf-1.1.12.tar.xz
+sha256 18d07f5c8f4cfe373461cf21cf7b1bfefa820a37e96a69b68e0f315d528b4286 crossx86-i486-linux-musl-1.1.12.tar.xz
+sha256 1c1480c2618097e402fe804c1431fbd49b0d43520af81d4c1a695a2fa13a3922 crossx86-mipsel-linux-musl-1.1.12.tar.xz
+sha256 f0a8b3eb0566138ab3cc77bc09648be15bc325da974ec98b9e67f2fb82be3295 crossx86-mipsel-sf-linux-musl-1.1.12.tar.xz
+sha256 6a99989c3dff56776981f6760b2c54dcb9e4032be1d649968bb06c04f2e64177 crossx86-mips-linux-musl-1.1.12.tar.xz
+sha256 c082adc3e8b0750bb22ca82628524fd525fd77f534517ac5a66e7ac5a297ee6e crossx86-powerpc-linux-musl-1.1.12.tar.xz
+sha256 8c6c9ebb54040e47947b4d3af6823d01fef2bb6ee81b18903c801030c066092b crossx86-sh4eb-linux-musl-1.1.12.tar.xz
+sha256 ae9a0a5a60226aa086a56628cfd5c1d283c9dffdca37891d7e6adc2bd21ac2e0 crossx86-sh4-linux-musl-1.1.12.tar.xz
+sha256 27e0ea1043a58aebeadf1dacd67e47fd0b5c19fc36f42c9374e5fa3308df09c6 crossx86-x86_64-linux-musl-1.1.12.tar.xz
diff --git a/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.mk b/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.mk
new file mode 100644
index 000000000..966505b77
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-musl-cross/toolchain-external-musl-cross.mk
@@ -0,0 +1,12 @@
+################################################################################
+#
+# toolchain-external-musl-cross
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_MUSL_CROSS_VERSION = 1.1.12
+TOOLCHAIN_EXTERNAL_MUSL_CROSS_SITE = https://googledrive.com/host/0BwnS5DMB0YQ6bDhPZkpOYVFhbk0/musl-$(TOOLCHAIN_EXTERNAL_MUSL_CROSS_VERSION)
+
+TOOLCHAIN_EXTERNAL_MUSL_CROSS_SOURCE = crossx86-$(TOOLCHAIN_EXTERNAL_PREFIX)-$(TOOLCHAIN_EXTERNAL_MUSL_CROSS_VERSION).tar.xz
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in
new file mode 100644
index 000000000..641eca848
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in
@@ -0,0 +1,20 @@
+config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
+ bool "Synopsys ARC 2014.12 toolchain"
+ depends on BR2_arc
+ depends on BR2_HOSTARCH = "x86_64"
+ # does not provide IPv6, and lacks many uClibc features
+ # expected by Buildroot. The next Synopsys toolchain version
+ # should fix those problems.
+ depends on BROKEN
+ select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
+ select BR2_INSTALL_LIBSTDCPP
+ select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ select BR2_ENABLE_LOCALE
+ select BR2_USE_WCHAR
+ select BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+ select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
+ select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ help
+ Toolchain for the ARC cores, from
+ https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options
new file mode 100644
index 000000000..ceb7dd008
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options
@@ -0,0 +1,10 @@
+if BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+ default "arc-linux" if BR2_arcle
+ default "arceb-linux" if BR2_arceb
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+ default "toolchain-external-synopsys-arc"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash
new file mode 100644
index 000000000..b684cced9
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.hash
@@ -0,0 +1,5 @@
+# Locally calculated
+sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz
+sha256 1080f07fcae2bfc176a3ea8d30b9ed8eaecab70fb786639d6ec70cae8322df10 arc_gnu_2014.12_prebuilt_uclibc_be_arc700_linux_install.tar.gz
+sha256 aaaf6facd1f60a3cd2a537154ea39cd7d70501c175e30e01a97e8df6cb8226c7 arc_gnu_2014.12_prebuilt_uclibc_le_archs_linux_install.tar.gz
+sha256 30711c5f15762764d4cd5ec1e6ced5b1fddd03aac41c424b0c4ec8a45d5d79cd arc_gnu_2014.12_prebuilt_uclibc_be_archs_linux_install.tar.gz
diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk
new file mode 100644
index 000000000..14ea5e350
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/toolchain-external-synopsys-arc.mk
@@ -0,0 +1,24 @@
+################################################################################
+#
+# toolchain-external-synopsys-arc
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION = 2014.12
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)
+
+ifeq ($(BR2_arc750d)$(BR2_arc770d),y)
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = arc700
+else
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_CORE = archs
+endif
+
+ifeq ($(BR2_arcle),y)
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = le
+else
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_ENDIANESS = be
+endif
+
+TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_SOURCE = arc_gnu_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC_VERSION)_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE)_linux_install.tar.gz
+
+$(eval $(toolchain-external-package))
diff --git a/toolchain/toolchain-external/toolchain-external.hash b/toolchain/toolchain-external/toolchain-external.hash
deleted file mode 100644
index 41c2ab3ac..000000000
--- a/toolchain/toolchain-external/toolchain-external.hash
+++ /dev/null
@@ -1,67 +0,0 @@
-######################################
-# Next hashes are all locally computed
-
-# Blackfin toolchains from Analog Devices
-sha256 e424e90d8481d942a40266d78d1488726561fed3ec38403094f98055e61889d0 blackfin-toolchain-2014R1-RC2.i386.tar.bz2
-sha256 c65b1b4b918d5185349d62a3b7bf43b4b21e1175c52598ec047ca56b3f11d857 blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2
-
-# Mentor's Sourcery CodeBench Lite toolchains
-# ARM
-sha256 39ee0e789034334ecc89af94e838e3a4815400ac5ff980f808f466b04778532e arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
-sha256 e16a5b1e41d7ff1e74161f9405182001bc8d1360d89564e73911032e6966cc0d arm-2014.05-29-arm-none-linux-gnueabi.src.tar.bz2
-# NiosII
-sha256 750639290744adda931c81fa2cd2ffc2bde972488047824dcfaa53c42562191d sourceryg++-2016.05-10-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
-sha256 3dc1c2685c0472059547dd7becb5dc991541b8176af39fa7aa5f601d38b9879a sourceryg++-2016.05-10-nios2-linux-gnu.src.tar.bz2
-# SuperH
-sha256 59d6766fde244931aa52db01433d5acd051998762a931121c5fc109536a1a802 renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2
-sha256 e2e58c10e52395d5d35157e35f85233f713c6f9223a652dfc56194cfd2eed004 renesas-2012.09-61-sh-linux-gnu.src.tar.bz2
-# x86
-sha256 ea804cf02014369da52abc4f64e91e96bde2dd2230aca96109459013d4545458 ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2
-sha256 1a9519e415a1e6892c760bf21f7e98f3a633a9d1c5bb8781a96d338e4dd62717 ia32-2012.09-62-i686-pc-linux-gnu.src.tar.bz2
-# AMD64
-sha256 3c31206c8b9277f409ee00e4777ba82dfa6da2a4ca0926501cd5fb6bbd1b407e amd-2015.11-139-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
-sha256 0b673f5035f97d5d03c31272cddab0f117d39ad76a5ad2a3bc98c156571527de amd-2015.11-139-x86_64-amd-linux-gnu.src.tar.bz2
-# Aarch64
-sha256 405aada821146755c5f2df566375c2a682456d6b8451ee47b88cf1a52b093676 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
-sha256 3f50dd6ee433eb5b6992a1071b988e50379a738f54f58722bc60081613764716 aarch64-amd-2014.11-95-aarch64-amd-linux-gnu.src.tar.bz2
-# MIPS
-sha256 d354447c4c5160439dafd5464fa3a0266dd41e79f973477238e4f0215a6b5397 mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
-sha256 2658e55d5b71bba25d6f77e868e18b200ea5f75c8add7ed3a9266e716d9adfff mips-2016.05-8-mips-linux-gnu.src.tar.bz2
-
-# ARM toolchains from Texas Instrument's Arago project
-# There is one source file that covers both binary distributions.
-sha256 f2febf3b3c565536461ad4405f1bcb835d75a6afb2a8bec958a1248cb4b81fc7 arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
-sha256 254af7d02eb3bcc8345c78e131700bc995d65b68232caaed21150a5fd1456070 arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2
-sha256 25fbf0513ad7322b15cbaae964cafadcbb4c939f2708f57f40b8f9f2d601122b arago-toolchain-2011.09-sources.tar.bz2
-
-# ARM and Aarch64 toolchains from Linaro
-sha256 f1421c580ce977226f4fefc9c409b3b423260cc65a6e9dc6da88bb3478a521a0 gcc-linaro-5.3.1-2016.05-i686_arm-linux-gnueabihf.tar.xz
-sha256 987941c9fffdf56ffcbe90e8984673c16648c477b537fcf43add22fa62f161cd gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz
-sha256 f6e9c0d3320760fe8f89e9ec3acdd7b4da7eff889c094b4a2acc286fd46f334f gcc-linaro-5.3.1-2016.05-i686_armeb-linux-gnueabihf.tar.xz
-sha256 6cf41c8944be56279cc14992aa075174b7a4c5938502536266eaaeef048f9440 gcc-linaro-5.3.1-2016.05-x86_64_armeb-linux-gnueabihf.tar.xz
-sha256 d43227248f282a652da42322fcf4abfd3021f2a2f62e0cf6e242d82f55966ba9 gcc-linaro-5.3.1-2016.05-i686_aarch64-linux-gnu.tar.xz
-sha256 1941dcf6229d6706bcb89b7976d5d43d170efdd17c27d5fe1738e7ecf22adc37 gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz
-
-# Codescape toolchains from Imagination Technologies
-# From: http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03/downloads.html
-sha256 e3c1f292ac6a9f12480af431c85a7ed9dfa011a52fd62a50be3363ec6b9bc872 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz
-sha256 10b8ab6d7c492abc19ecabafedc6bc5f12ff88107a3cb76dc452b3a9522d9c56 Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz
-
-# Synopsys DesignWare ARC toolchains
-sha256 1fa4ea2c8616623205f1c7beca02ea31b019099528a7433e5b020b0876b93bf3 arc_gnu_2014.12_prebuilt_uclibc_le_arc700_linux_install.tar.gz
-sha256 1080f07fcae2bfc176a3ea8d30b9ed8eaecab70fb786639d6ec70cae8322df10 arc_gnu_2014.12_prebuilt_uclibc_be_arc700_linux_install.tar.gz
-sha256 aaaf6facd1f60a3cd2a537154ea39cd7d70501c175e30e01a97e8df6cb8226c7 arc_gnu_2014.12_prebuilt_uclibc_le_archs_linux_install.tar.gz
-sha256 30711c5f15762764d4cd5ec1e6ced5b1fddd03aac41c424b0c4ec8a45d5d79cd arc_gnu_2014.12_prebuilt_uclibc_be_archs_linux_install.tar.gz
-
-# Prebuilt musl toolchains from musl-cross
-sha256 e32c23d0b83639fc10ad06666ec086b66453b9be44415fe1a818c3c3b526dfb1 crossx86-armeb-linux-musleabi-1.1.12.tar.xz
-sha256 eb81bd5d6ada454c6e854b18bfa8dc801333782152166f6cab9fb7cd11692987 crossx86-arm-linux-musleabi-1.1.12.tar.xz
-sha256 a050da284ff22d291ae71dfc249ebdedb18334b8d626804760ce7d5963e392e6 crossx86-arm-linux-musleabihf-1.1.12.tar.xz
-sha256 18d07f5c8f4cfe373461cf21cf7b1bfefa820a37e96a69b68e0f315d528b4286 crossx86-i486-linux-musl-1.1.12.tar.xz
-sha256 1c1480c2618097e402fe804c1431fbd49b0d43520af81d4c1a695a2fa13a3922 crossx86-mipsel-linux-musl-1.1.12.tar.xz
-sha256 f0a8b3eb0566138ab3cc77bc09648be15bc325da974ec98b9e67f2fb82be3295 crossx86-mipsel-sf-linux-musl-1.1.12.tar.xz
-sha256 6a99989c3dff56776981f6760b2c54dcb9e4032be1d649968bb06c04f2e64177 crossx86-mips-linux-musl-1.1.12.tar.xz
-sha256 c082adc3e8b0750bb22ca82628524fd525fd77f534517ac5a66e7ac5a297ee6e crossx86-powerpc-linux-musl-1.1.12.tar.xz
-sha256 8c6c9ebb54040e47947b4d3af6823d01fef2bb6ee81b18903c801030c066092b crossx86-sh4eb-linux-musl-1.1.12.tar.xz
-sha256 ae9a0a5a60226aa086a56628cfd5c1d283c9dffdca37891d7e6adc2bd21ac2e0 crossx86-sh4-linux-musl-1.1.12.tar.xz
-sha256 27e0ea1043a58aebeadf1dacd67e47fd0b5c19fc36f42c9374e5fa3308df09c6 crossx86-x86_64-linux-musl-1.1.12.tar.xz
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index b7a36bea1..48de1e71f 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -4,249 +4,7 @@
#
################################################################################
-#
-# This package implements the support for external toolchains, i.e
-# toolchains that are available pre-built, ready to use. Such toolchain
-# may either be readily available on the Web (Linaro, Sourcery
-# CodeBench, from processor vendors) or may be built with tools like
-# Crosstool-NG or Buildroot itself. So far, we have tested this
-# with:
-#
-# * Toolchains generated by Crosstool-NG
-# * Toolchains generated by Buildroot
-# * Toolchains provided by Linaro for the ARM and AArch64
-# architectures
-# * Sourcery CodeBench toolchains (from Mentor Graphics) for the ARM,
-# MIPS, PowerPC, x86, x86_64 and NIOS 2 architectures. For the MIPS
-# toolchain, the -muclibc variant isn't supported yet, only the
-# default glibc-based variant is.
-# * Analog Devices toolchains for the Blackfin architecture
-# * Xilinx toolchains for the Microblaze architecture
-# * Synopsys DesignWare toolchains for ARC cores
-#
-# The basic principle is the following
-#
-# 1. If the toolchain is not pre-installed, download and extract it
-# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR). Otherwise,
-# $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) points to were the toolchain has
-# already been installed by the user.
-#
-# 2. For all external toolchains, perform some checks on the
-# conformity between the toolchain configuration described in the
-# Buildroot menuconfig system, and the real configuration of the
-# external toolchain. This is for example important to make sure that
-# the Buildroot configuration system knows whether the toolchain
-# supports RPC, IPv6, locales, large files, etc. Unfortunately, these
-# things cannot be detected automatically, since the value of these
-# options (such as BR2_TOOLCHAIN_HAS_NATIVE_RPC) are needed at
-# configuration time because these options are used as dependencies
-# for other options. And at configuration time, we are not able to
-# retrieve the external toolchain configuration.
-#
-# 3. Copy the libraries needed at runtime to the target directory,
-# $(TARGET_DIR). Obviously, things such as the C library, the dynamic
-# loader and a few other utility libraries are needed if dynamic
-# applications are to be executed on the target system.
-#
-# 4. Copy the libraries and headers to the staging directory. This
-# will allow all further calls to gcc to be made using --sysroot
-# $(STAGING_DIR), which greatly simplifies the compilation of the
-# packages when using external toolchains. So in the end, only the
-# cross-compiler binaries remains external, all libraries and headers
-# are imported into the Buildroot tree.
-#
-# 5. Build a toolchain wrapper which executes the external toolchain
-# with a number of arguments (sysroot/march/mtune/..) hardcoded,
-# so we're sure the correct configuration is always used and the
-# toolchain behaves similar to an internal toolchain.
-# This toolchain wrapper and symlinks are installed into
-# $(HOST_DIR)/usr/bin like for the internal toolchains, and the rest
-# of Buildroot is handled identical for the 2 toolchain types.
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
-TOOLCHAIN_EXTERNAL_LIBS += libatomic.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_ARM_EABIHF),yy)
-TOOLCHAIN_EXTERNAL_LIBS += ld-linux-armhf.so.*
-else
-TOOLCHAIN_EXTERNAL_LIBS += ld*.so.*
-endif
-ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-TOOLCHAIN_EXTERNAL_LIBS += libpthread.so.*
-ifneq ($(BR2_PACKAGE_GDB)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
-TOOLCHAIN_EXTERNAL_LIBS += libthread_db.so.*
-endif # gdbserver
-endif # ! no threads
-endif
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
-TOOLCHAIN_EXTERNAL_LIBS += libnss_files.so.* libnss_dns.so.* libmvec.so.*
-endif
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
-TOOLCHAIN_EXTERNAL_LIBS += libc.so libgcc_s.so.*
-endif
-
-ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
-TOOLCHAIN_EXTERNAL_LIBS += libstdc++.so.*
-endif
-
-ifeq ($(BR2_TOOLCHAIN_HAS_FORTRAN),y)
-TOOLCHAIN_EXTERNAL_LIBS += libgfortran.so.*
-# fortran needs quadmath on x86 and x86_64
-ifeq ($(BR2_TOOLCHAIN_HAS_LIBQUADMATH),y)
-TOOLCHAIN_EXTERNAL_LIBS += libquadmath.so*
-endif
-endif
-
-TOOLCHAIN_EXTERNAL_LIBS += $(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
-
-# Details about sysroot directory selection.
-#
-# To find the sysroot directory, we use the trick of looking for the
-# 'libc.a' file with the -print-file-name gcc option, and then
-# mangling the path to find the base directory of the sysroot.
-#
-# Note that we do not use the -print-sysroot option, because it is
-# only available since gcc 4.4.x, and we only recently dropped support
-# for 4.2.x and 4.3.x.
-#
-# When doing this, we don't pass any option to gcc that could select a
-# multilib variant (such as -march) as we want the "main" sysroot,
-# which contains all variants of the C library in the case of multilib
-# toolchains. We use the TARGET_CC_NO_SYSROOT variable, which is the
-# path of the cross-compiler, without the --sysroot=$(STAGING_DIR),
-# since what we want to find is the location of the original toolchain
-# sysroot. This "main" sysroot directory is stored in SYSROOT_DIR.
-#
-# Then, multilib toolchains are a little bit more complicated, since
-# they in fact have multiple sysroots, one for each variant supported
-# by the toolchain. So we need to find the particular sysroot we're
-# interested in.
-#
-# To do so, we ask the compiler where its sysroot is by passing all
-# flags (including -march and al.), except the --sysroot flag since we
-# want to the compiler to tell us where its original sysroot
-# is. ARCH_SUBDIR will contain the subdirectory, in the main
-# SYSROOT_DIR, that corresponds to the selected architecture
-# variant. ARCH_SYSROOT_DIR will contain the full path to this
-# location.
-#
-# One might wonder why we don't just bother with ARCH_SYSROOT_DIR. The
-# fact is that in multilib toolchains, the header files are often only
-# present in the main sysroot, and only the libraries are available in
-# each variant-specific sysroot directory.
-
-
-TOOLCHAIN_EXTERNAL_PREFIX = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
-TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR = $(HOST_DIR)/opt/ext-toolchain
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
-TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
-else
-TOOLCHAIN_EXTERNAL_INSTALL_DIR = $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
-endif
-
-ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)
-ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
-# if no path set, figure it out from path
-TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
-endif
-else
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX),y)
-TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_PREFIX)/bin
-else
-TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin
-endif
-endif
-
-# If this is a buildroot toolchain, it already has a wrapper which we want to
-# bypass. Since this is only evaluated after it has been extracted, we can use
-# $(wildcard ...) here.
-TOOLCHAIN_EXTERNAL_SUFFIX = \
- $(if $(wildcard $(TOOLCHAIN_EXTERNAL_BIN)/*.br_real),.br_real)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
- -DBR_CROSS_PATH_SUFFIX='"$(TOOLCHAIN_EXTERNAL_SUFFIX)"'
-
-TOOLCHAIN_EXTERNAL_CROSS = $(TOOLCHAIN_EXTERNAL_BIN)/$(TOOLCHAIN_EXTERNAL_PREFIX)-
-TOOLCHAIN_EXTERNAL_CC = $(TOOLCHAIN_EXTERNAL_CROSS)gcc$(TOOLCHAIN_EXTERNAL_SUFFIX)
-TOOLCHAIN_EXTERNAL_CXX = $(TOOLCHAIN_EXTERNAL_CROSS)g++$(TOOLCHAIN_EXTERNAL_SUFFIX)
-TOOLCHAIN_EXTERNAL_FC = $(TOOLCHAIN_EXTERNAL_CROSS)gfortran$(TOOLCHAIN_EXTERNAL_SUFFIX)
-TOOLCHAIN_EXTERNAL_READELF = $(TOOLCHAIN_EXTERNAL_CROSS)readelf$(TOOLCHAIN_EXTERNAL_SUFFIX)
-
-ifeq ($(filter $(HOST_DIR)/%,$(TOOLCHAIN_EXTERNAL_BIN)),)
-# TOOLCHAIN_EXTERNAL_BIN points outside HOST_DIR => absolute path
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
- -DBR_CROSS_PATH_ABS='"$(TOOLCHAIN_EXTERNAL_BIN)"'
-else
-# TOOLCHAIN_EXTERNAL_BIN points inside HOST_DIR => relative path
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += \
- -DBR_CROSS_PATH_REL='"$(TOOLCHAIN_EXTERNAL_BIN:$(HOST_DIR)/%=%)"'
-endif
-
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),)
-CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU))
-else
-CC_TARGET_CPU_ := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION))
-endif
-CC_TARGET_ARCH_ := $(call qstrip,$(BR2_GCC_TARGET_ARCH))
-CC_TARGET_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_ABI))
-CC_TARGET_FPU_ := $(call qstrip,$(BR2_GCC_TARGET_FPU))
-CC_TARGET_FLOAT_ABI_ := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI))
-CC_TARGET_MODE_ := $(call qstrip,$(BR2_GCC_TARGET_MODE))
-
-# march/mtune/floating point mode needs to be passed to the external toolchain
-# to select the right multilib variant
-ifeq ($(BR2_x86_64),y)
-TOOLCHAIN_EXTERNAL_CFLAGS += -m64
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_64
-endif
-ifneq ($(CC_TARGET_ARCH_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -march=$(CC_TARGET_ARCH_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(CC_TARGET_ARCH_)"'
-endif
-ifneq ($(CC_TARGET_CPU_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -mcpu=$(CC_TARGET_CPU_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(CC_TARGET_CPU_)"'
-endif
-ifneq ($(CC_TARGET_ABI_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"'
-endif
-ifneq ($(CC_TARGET_FPU_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -mfpu=$(CC_TARGET_FPU_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(CC_TARGET_FPU_)"'
-endif
-ifneq ($(CC_TARGET_FLOAT_ABI_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -mfloat-abi=$(CC_TARGET_FLOAT_ABI_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(CC_TARGET_FLOAT_ABI_)"'
-endif
-ifneq ($(CC_TARGET_MODE_),)
-TOOLCHAIN_EXTERNAL_CFLAGS += -m$(CC_TARGET_MODE_)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(CC_TARGET_MODE_)"'
-endif
-ifeq ($(BR2_BINFMT_FLAT),y)
-TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_BINFMT_FLAT
-endif
-ifeq ($(BR2_mipsel)$(BR2_mips64el),y)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_LITTLE_ENDIAN
-TOOLCHAIN_EXTERNAL_CFLAGS += -EL
-endif
-ifeq ($(BR2_mips)$(BR2_mips64),y)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_MIPS_TARGET_BIG_ENDIAN
-TOOLCHAIN_EXTERNAL_CFLAGS += -EB
-endif
-ifeq ($(BR2_arceb),y)
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARC_TARGET_BIG_ENDIAN
-TOOLCHAIN_EXTERNAL_CFLAGS += -EB
-endif
-
-TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION))
-
-ifeq ($(BR2_SOFT_FLOAT),y)
-TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
-TOOLCHAIN_EXTERNAL_TOOLCHAIN_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
-endif
+TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO
# musl does not provide an implementation for sys/queue.h or sys/cdefs.h.
# So, add the musl-compat-headers package that will install those files,
@@ -257,548 +15,14 @@ ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
TOOLCHAIN_EXTERNAL_DEPENDENCIES += musl-compat-headers
endif
-# The Codescape toolchain uses a sysroot layout that places them
-# side-by-side instead of nested like multilibs. A symlink is needed
-# much like for the nested sysroots which are handled in
-# copy_toolchain_sysroot but there is not enough information in there
-# to determine whether the sysroot layout was nested or side-by-side.
-# Add the symlink here for now.
-define TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK
- $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))"; \
- ARCH_SUBDIR=`basename $${ARCH_SYSROOT_DIR}`; \
- ln -snf . $(STAGING_DIR)/$${ARCH_SUBDIR}
-endef
+$(eval $(virtual-package))
-# Special fixup for Codescape MIPS toolchains, that have bin-<abi> and
-# sbin-<abi> directories. We create symlinks bin -> bin-<abi> and sbin
-# -> sbin-<abi> so that the rest of Buildroot can find the toolchain
-# tools in the appropriate location.
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS)$(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS),y)
-ifeq ($(BR2_MIPS_OABI32),y)
-TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = o32
-else ifeq ($(BR2_MIPS_NABI32),y)
-TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = n32
-else ifeq ($(BR2_MIPS_NABI64),y)
-TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX = n64
+# Ensure the external-toolchain package has a prefix defined.
+# This comes after the virtual-package definition, which checks the provider.
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
+ifeq ($(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX)),)
+$(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL). Configuration error)
endif
-
-define TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS
- rmdir $(STAGING_DIR)/usr/bin $(STAGING_DIR)/usr/sbin
- ln -sf bin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/bin
- ln -sf sbin-$(TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_BIN_DIR_SUFFIX) $(STAGING_DIR)/usr/sbin
-endef
endif
-# Special handling for Blackfin toolchain, because of the split in two
-# tarballs, and the organization of tarball contents. The tarballs
-# contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories,
-# which themselves contain the toolchain. This is why we strip more
-# components than usual.
-define TOOLCHAIN_EXTERNAL_BLACKFIN_UCLIBC_EXTRA_EXTRACT
- $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \
- $(TAR) --strip-components=3 --hard-dereference -C $(@D) $(TAR_OPTIONS) -
-endef
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM),y)
-TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi
-TOOLCHAIN_EXTERNAL_SOURCE = arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A),y)
-TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports
-TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
-TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = arago-toolchain-2011.09-sources.tar.bz2
-define TOOLCHAIN_EXTERNAL_FIXUP_CMDS
- mv $(@D)/arago-2011.09/armv7a/* $(@D)/
- rm -rf $(@D)/arago-2011.09/
-endef
-TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_FIXUP_CMDS
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE),y)
-TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports
-TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2
-TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL = arago-toolchain-2011.09-sources.tar.bz2
-define TOOLCHAIN_EXTERNAL_FIXUP_CMDS
- mv $(@D)/arago-2011.09/armv5te/* $(@D)/
- rm -rf $(@D)/arago-2011.09/
-endef
-TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_FIXUP_CMDS
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM),y)
-TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-linux-gnueabihf
-ifeq ($(HOSTARCH),x86)
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-i686_arm-linux-gnueabihf.tar.xz
-else
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabihf.tar.xz
-endif
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_ARMEB),y)
-TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/armeb-linux-gnueabihf
-ifeq ($(HOSTARCH),x86)
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-i686_armeb-linux-gnueabihf.tar.xz
-else
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-x86_64_armeb-linux-gnueabihf.tar.xz
-endif
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS),y)
-TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = mips-2016.05-8-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII),y)
-TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = sourceryg++-2016.05-10-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH),y)
-TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = renesas-2012.09-61-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86),y)
-TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/i686-pc-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64),y)
-TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/x86_64-amd-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = amd-2015.11-139-x86_64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS),y)
-TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03
-TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.IMG.Linux.CentOS-5.x86.tar.gz
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS
-TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_MTI_MIPS),y)
-TOOLCHAIN_EXTERNAL_SITE = http://codescape-mips-sdk.imgtec.com/components/toolchain/2016.05-03
-TOOLCHAIN_EXTERNAL_SOURCE = Codescape.GNU.Tools.Package.2016.05-03.for.MIPS.MTI.Linux.CentOS-5.x86.tar.gz
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_SYMLINK
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESCAPE_MIPS_STAGING_FIXUPS
-TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 2
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX),y)
-TOOLCHAIN_EXTERNAL_SITE = http://downloads.sourceforge.net/project/adi-toolchain/2014R1/2014R1-RC2/i386
-TOOLCHAIN_EXTERNAL_SOURCE = blackfin-toolchain-2014R1-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-2014R1-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_STRIP_COMPONENTS = 3
-TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += TOOLCHAIN_EXTERNAL_BLACKFIN_UCLIBC_EXTRA_EXTRACT
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64),y)
-TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/aarch64-linux-gnu
-ifeq ($(HOSTARCH),x86)
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-i686_aarch64-linux-gnu.tar.xz
-else
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.xz
-endif
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64),y)
-TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/aarch64-amd-linux-gnu
-TOOLCHAIN_EXTERNAL_SOURCE = aarch64-amd-2014.11-95-aarch64-amd-linux-gnu-i686-pc-linux-gnu.tar.bz2
-define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP
- ln -sf ld-2.20.so $(STAGING_DIR)/lib/ld-linux-aarch64.so.1
-endef
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_STAGING_FIXUP
-define TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP
- ln -sf ld-2.20.so $(TARGET_DIR)/lib/ld-linux-aarch64.so.1
-endef
-TOOLCHAIN_EXTERNAL_POST_INSTALL_TARGET_HOOKS += TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64_TARGET_FIXUP
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS),y)
-TOOLCHAIN_EXTERNAL_VERSION = 1.1.12
-TOOLCHAIN_EXTERNAL_SITE = https://googledrive.com/host/0BwnS5DMB0YQ6bDhPZkpOYVFhbk0/musl-$(TOOLCHAIN_EXTERNAL_VERSION)
-ifeq ($(BR2_arm)$(BR2_ARM_EABI),yy)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-arm-linux-musleabi-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_arm)$(BR2_ARM_EABIHF),yy)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-arm-linux-musleabihf-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_armeb),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-armeb-linux-musleabi-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_i386),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-i486-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_mips),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mips-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mipsel-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-mipsel-sf-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_powerpc),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-powerpc-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_sh4),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-sh4-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_sh4eb),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-sh4eb-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-else ifeq ($(BR2_x86_64),y)
-TOOLCHAIN_EXTERNAL_SOURCE = crossx86-x86_64-linux-musl-$(TOOLCHAIN_EXTERNAL_VERSION).tar.xz
-endif
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC),y)
-TOOLCHAIN_EXTERNAL_SITE = https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-2014.12
-ifeq ($(BR2_arc750d)$(BR2_arc770d),y)
-TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE = arc700
-else
-TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE = archs
-endif
-ifeq ($(BR2_arcle),y)
-TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS = le
-else
-TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS = be
-endif
-TOOLCHAIN_EXTERNAL_SOURCE = arc_gnu_2014.12_prebuilt_uclibc_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_ENDIANESS)_$(TOOLCHAIN_EXTERNAL_SYNOPSYS_CORE)_linux_install.tar.gz
-else
-# Custom toolchain
-TOOLCHAIN_EXTERNAL_SITE = $(patsubst %/,%,$(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL))))
-TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
-# We can't check hashes for custom downloaded toolchains
-BR_NO_CHECK_HASH_FOR += $(TOOLCHAIN_EXTERNAL_SOURCE)
-endif
-
-# Some toolchain vendors have a regular file naming pattern.
-# For them, mass-define _ACTUAL_SOURCE_TARBALL based _SITE.
-ifneq ($(findstring sourcery.mentor.com/public/gnu_toolchain,$(TOOLCHAIN_EXTERNAL_SITE)),)
-TOOLCHAIN_EXTERNAL_ACTUAL_SOURCE_TARBALL ?= \
- $(subst -i686-pc-linux-gnu.tar.bz2,.src.tar.bz2,$(subst -i686-pc-linux-gnu-i386-linux.tar.bz2,-i686-pc-linux-gnu.src.tar.bz2,$(TOOLCHAIN_EXTERNAL_SOURCE)))
-endif
-
-# In fact, we don't need to download the toolchain, since it is already
-# available on the system, so force the site and source to be empty so
-# that nothing will be downloaded/extracted.
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED),y)
-TOOLCHAIN_EXTERNAL_SITE =
-TOOLCHAIN_EXTERNAL_SOURCE =
-endif
-
-TOOLCHAIN_EXTERNAL_ADD_TOOLCHAIN_DEPENDENCY = NO
-
-TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
-
-# Normal handling of downloaded toolchain tarball extraction.
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
-TOOLCHAIN_EXTERNAL_EXCLUDES = usr/lib/locale/*
-
-# As a regular package, the toolchain gets extracted in $(@D), but
-# since it's actually a fairly special package, we need it to be moved
-# into TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR.
-define TOOLCHAIN_EXTERNAL_MOVE
- rm -rf $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
- mkdir -p $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)
- mv $(@D)/* $(TOOLCHAIN_EXTERNAL_DOWNLOAD_INSTALL_DIR)/
-endef
-TOOLCHAIN_EXTERNAL_POST_EXTRACT_HOOKS += \
- TOOLCHAIN_EXTERNAL_MOVE
-endif
-
-# Returns the location of the libc.a file for the given compiler + flags
-define toolchain_find_libc_a
-$$(readlink -f $$(LANG=C $(1) -print-file-name=libc.a))
-endef
-
-# Returns the sysroot location for the given compiler + flags. We need
-# to handle cases where libc.a is in:
-#
-# - lib/
-# - usr/lib/
-# - lib32/
-# - lib64/
-# - lib32-fp/ (Cavium toolchain)
-# - lib64-fp/ (Cavium toolchain)
-# - usr/lib/<tuple>/ (Linaro toolchain)
-#
-# And variations on these.
-define toolchain_find_sysroot
-$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:(usr/)?lib(32|64)?([^/]*)?/([^/]*/)?libc\.a::')
-endef
-
-# Returns the lib subdirectory for the given compiler + flags (i.e
-# typically lib32 or lib64 for some toolchains)
-define toolchain_find_libdir
-$$(printf $(call toolchain_find_libc_a,$(1)) | sed -r -e 's:.*/(usr/)?(lib(32|64)?([^/]*)?)/([^/]*/)?libc.a:\2:')
-endef
-
-# Checks for an already installed toolchain: check the toolchain
-# location, check that it is usable, and then verify that it
-# matches the configuration provided in Buildroot: ABI, C++ support,
-# kernel headers version, type of C library and all C library features.
-define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
- $(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC))
- $(Q)$(call check_unusable_toolchain,$(TOOLCHAIN_EXTERNAL_CC))
- $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \
- $(call check_kernel_headers_version,\
- $(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC)),\
- $(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \
- $(call check_gcc_version,$(TOOLCHAIN_EXTERNAL_CC),\
- $(call qstrip,$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
- if test "$(BR2_arm)" = "y" ; then \
- $(call check_arm_abi,\
- "$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS)",\
- $(TOOLCHAIN_EXTERNAL_READELF)) ; \
- fi ; \
- if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \
- $(call check_cplusplus,$(TOOLCHAIN_EXTERNAL_CXX)) ; \
- fi ; \
- if test "$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \
- $(call check_fortran,$(TOOLCHAIN_EXTERNAL_FC)) ; \
- fi ; \
- if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \
- $(call check_uclibc,$${SYSROOT_DIR}) ; \
- elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \
- $(call check_musl,$${SYSROOT_DIR}) ; \
- else \
- $(call check_glibc,$${SYSROOT_DIR}) ; \
- fi
- $(Q)$(call check_toolchain_ssp,$(TOOLCHAIN_EXTERNAL_CC))
-endef
-
-# With the musl C library, the libc.so library directly plays the role
-# of the dynamic library loader. We just need to create a symbolic
-# link to libc.so with the appropriate name.
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
-ifeq ($(BR2_i386),y)
-MUSL_ARCH = i386
-else ifeq ($(BR2_ARM_EABIHF),y)
-MUSL_ARCH = armhf
-else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y)
-MUSL_ARCH = mipsel-sf
-else ifeq ($(BR2_sh),y)
-MUSL_ARCH = sh
-else
-MUSL_ARCH = $(ARCH)
-endif
-define TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
- ln -sf libc.so $(TARGET_DIR)/lib/ld-musl-$(MUSL_ARCH).so.1
-endef
-TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
-endif
-
-# Create a symlink from (usr/)$(ARCH_LIB_DIR) to lib.
-# Note: the skeleton package additionally creates lib32->lib or lib64->lib
-# (as appropriate)
-#
-# $1: destination directory (TARGET_DIR / STAGING_DIR)
-create_lib_symlinks = \
- $(Q)DESTDIR="$(strip $1)" ; \
- ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- if [ ! -e "$${DESTDIR}/$${ARCH_LIB_DIR}" -a ! -e "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ]; then \
- ln -snf lib "$${DESTDIR}/$${ARCH_LIB_DIR}" ; \
- ln -snf lib "$${DESTDIR}/usr/$${ARCH_LIB_DIR}" ; \
- fi
-
-define TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK
- $(call create_lib_symlinks,$(STAGING_DIR))
-endef
-
-define TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK
- $(call create_lib_symlinks,$(TARGET_DIR))
-endef
-
-# Integration of the toolchain into Buildroot: find the main sysroot
-# and the variant-specific sysroot, then copy the needed libraries to
-# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers)
-# to $(STAGING_DIR).
-#
-# Variables are defined as follows:
-#
-# LIBC_A_LOCATION: location of the libc.a file in the default
-# multilib variant (allows to find the main
-# sysroot directory)
-# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/usr/lib/libc.a
-#
-# SYSROOT_DIR: the main sysroot directory, deduced from
-# LIBC_A_LOCATION by removing the
-# usr/lib[32|64]/libc.a part of the path.
-# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/
-#
-# ARCH_LIBC_A_LOCATION: location of the libc.a file in the selected
-# multilib variant (taking into account the
-# CFLAGS). Allows to find the sysroot of the
-# selected multilib variant.
-# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/usr/lib/libc.a
-#
-# ARCH_SYSROOT_DIR: the sysroot of the selected multilib variant,
-# deduced from ARCH_LIBC_A_LOCATION by removing
-# usr/lib[32|64]/libc.a at the end of the path.
-# Ex: /x-tools/mips-2011.03/mips-linux-gnu/libc/mips16/soft-float/el/
-#
-# ARCH_LIB_DIR: 'lib', 'lib32' or 'lib64' depending on where libraries
-# are stored. Deduced from ARCH_LIBC_A_LOCATION by
-# looking at usr/lib??/libc.a.
-# Ex: lib
-#
-# ARCH_SUBDIR: the relative location of the sysroot of the selected
-# multilib variant compared to the main sysroot.
-# Ex: mips16/soft-float/el
-#
-# SUPPORT_LIB_DIR: some toolchains, such as recent Linaro toolchains,
-# store GCC support libraries (libstdc++,
-# libgcc_s, etc.) outside of the sysroot. In
-# this case, SUPPORT_LIB_DIR is set to a
-# non-empty value, and points to the directory
-# where these support libraries are
-# available. Those libraries will be copied to
-# our sysroot, and the directory will also be
-# considered when searching libraries for copy
-# to the target filesystem.
-#
-# Please be very careful to check the major toolchain sources:
-# Buildroot, Crosstool-NG, CodeSourcery and Linaro
-# before doing any modification on the below logic.
-
-ifeq ($(BR2_STATIC_LIBS),)
-define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS
- $(Q)$(call MESSAGE,"Copying external toolchain libraries to target...")
- $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \
- $(call copy_toolchain_lib_root,$$libs); \
- done
-endef
-endif
-
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),y)
-define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER
- $(Q)$(call MESSAGE,"Copying gdbserver")
- $(Q)ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- gdbserver_found=0 ; \
- for d in $${ARCH_SYSROOT_DIR}/usr \
- $${ARCH_SYSROOT_DIR}/../debug-root/usr \
- $${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \
- $(TOOLCHAIN_EXTERNAL_INSTALL_DIR); do \
- if test -f $${d}/bin/gdbserver ; then \
- install -m 0755 -D $${d}/bin/gdbserver $(TARGET_DIR)/usr/bin/gdbserver ; \
- gdbserver_found=1 ; \
- break ; \
- fi ; \
- done ; \
- if [ $${gdbserver_found} -eq 0 ] ; then \
- echo "Could not find gdbserver in external toolchain" ; \
- exit 1 ; \
- fi
-endef
-endif
-
-define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS
- $(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC))" ; \
- ARCH_SYSROOT_DIR="$(call toolchain_find_sysroot,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- ARCH_LIB_DIR="$(call toolchain_find_libdir,$(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- SUPPORT_LIB_DIR="" ; \
- if test `find $${ARCH_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \
- LIBSTDCPP_A_LOCATION=$$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \
- if [ -e "$${LIBSTDCPP_A_LOCATION}" ]; then \
- SUPPORT_LIB_DIR=`readlink -f $${LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \
- fi ; \
- fi ; \
- if [ "$${SYSROOT_DIR}" == "$${ARCH_SYSROOT_DIR}" ] ; then \
- ARCH_SUBDIR="" ; \
- elif [ "`dirname $${ARCH_SYSROOT_DIR}`" = "`dirname $${SYSROOT_DIR}`" ] ; then \
- SYSROOT_DIR_DIRNAME=`dirname $${SYSROOT_DIR}`/ ; \
- ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR_DIRNAME}(.*)/$$:\1:"` ; \
- else \
- ARCH_SUBDIR=`echo $${ARCH_SYSROOT_DIR} | sed -r -e "s:^$${SYSROOT_DIR}(.*)/$$:\1:"` ; \
- fi ; \
- $(call MESSAGE,"Copying external toolchain sysroot to staging...") ; \
- $(call copy_toolchain_sysroot,$${SYSROOT_DIR},$${ARCH_SYSROOT_DIR},$${ARCH_SUBDIR},$${ARCH_LIB_DIR},$${SUPPORT_LIB_DIR})
-endef
-
-# Special installation target used on the Blackfin architecture when
-# FDPIC is not the primary binary format being used, but the user has
-# nonetheless requested the installation of the FDPIC libraries to the
-# target filesystem.
-ifeq ($(BR2_BFIN_INSTALL_FDPIC_SHARED),y)
-define TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS_BFIN_FDPIC
- $(Q)$(call MESSAGE,"Install external toolchain FDPIC libraries to staging...")
- $(Q)FDPIC_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))/../../bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc ; \
- FDPIC_SYSROOT_DIR="$(call toolchain_find_sysroot,$${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- FDPIC_LIB_DIR="$(call toolchain_find_libdir,$${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS))" ; \
- FDPIC_SUPPORT_LIB_DIR="" ; \
- if test `find $${FDPIC_SYSROOT_DIR} -name 'libstdc++.a' | wc -l` -eq 0 ; then \
- FDPIC_LIBSTDCPP_A_LOCATION=$$(LANG=C $${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libstdc++.a) ; \
- if [ -e "$${FDPIC_LIBSTDCPP_A_LOCATION}" ]; then \
- FDPIC_SUPPORT_LIB_DIR=`readlink -f $${FDPIC_LIBSTDCPP_A_LOCATION} | sed -r -e 's:libstdc\+\+\.a::'` ; \
- fi ; \
- fi ; \
- $(call copy_toolchain_sysroot,$${FDPIC_SYSROOT_DIR},$${FDPIC_SYSROOT_DIR},,$${FDPIC_LIB_DIR},$${FDPIC_SUPPORT_LIB_DIR})
-endef
-define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FDPIC
- $(Q)$(call MESSAGE,"Install external toolchain FDPIC libraries to target...")
- $(Q)for libs in $(TOOLCHAIN_EXTERNAL_LIBS); do \
- $(call copy_toolchain_lib_root,$$libs); \
- done
-endef
-endif
-
-# Special installation target used on the Blackfin architecture when
-# shared FLAT is not the primary format being used, but the user has
-# nonetheless requested the installation of the shared FLAT libraries
-# to the target filesystem. The flat libraries are found and linked
-# according to the index in name "libN.so". Index 1 is reserved for
-# the standard C library. Customer libraries can use 4 and above.
-ifeq ($(BR2_BFIN_INSTALL_FLAT_SHARED),y)
-define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FLAT
- $(Q)$(call MESSAGE,"Install external toolchain FLAT libraries to target...")
- $(Q)FLAT_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))../../bfin-uclinux/bin/bfin-uclinux-gcc ; \
- FLAT_LIBC_A_LOCATION=`$${FLAT_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -mid-shared-library -print-file-name=libc`; \
- if [ -f $${FLAT_LIBC_A_LOCATION} -a ! -h $${FLAT_LIBC_A_LOCATION} ] ; then \
- $(INSTALL) -D $${FLAT_LIBC_A_LOCATION} $(TARGET_DIR)/lib/lib1.so; \
- fi
-endef
-endif
-
-# Build toolchain wrapper for preprocessor, C, C++ and Fortran compilers
-# and setup symlinks for everything else. Skip gdb symlink when we are
-# building our own gdb to prevent two gdb's in output/host/usr/bin.
-# The LTO support in gcc creates wrappers for ar, ranlib and nm which load
-# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and
-# *-gcc-nm and should be used instead of the real programs when -flto is
-# used. However, we should not add the toolchain wrapper for them, and they
-# match the *cc-* pattern. Therefore, an additional case is added for *-ar,
-# *-ranlib and *-nm.
-define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
- $(Q)cd $(HOST_DIR)/usr/bin; \
- for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \
- base=$${i##*/}; \
- case "$$base" in \
- *-ar|*-ranlib|*-nm) \
- ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
- ;; \
- *cc|*cc-*|*++|*++-*|*cpp|*-gfortran) \
- ln -sf toolchain-wrapper $$base; \
- ;; \
- *gdb|*gdbtui) \
- if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \
- ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
- fi \
- ;; \
- *) \
- ln -sf $$(echo $$i | sed 's%^$(HOST_DIR)%../..%') .; \
- ;; \
- esac; \
- done
-endef
-
-#
-# Generate gdbinit file for use with Buildroot
-#
-define TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT
- $(Q)if test -f $(TARGET_CROSS)gdb ; then \
- $(call MESSAGE,"Installing gdbinit"); \
- $(gen_gdbinit_file); \
- fi
-endef
-
-# uClibc-ng dynamic loader is called ld-uClibc.so.1, but gcc is not
-# patched specifically for uClibc-ng, so it continues to generate
-# binaries that expect the dynamic loader to be named ld-uClibc.so.0,
-# like with the original uClibc. Therefore, we create an additional
-# symbolic link to make uClibc-ng systems work properly.
-define TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO
- $(Q)if test -e $(TARGET_DIR)/lib/ld-uClibc.so.1; then \
- ln -sf ld-uClibc.so.1 $(TARGET_DIR)/lib/ld-uClibc.so.0 ; \
- fi
- $(Q)if test -e $(TARGET_DIR)/lib/ld64-uClibc.so.1; then \
- ln -sf ld64-uClibc.so.1 $(TARGET_DIR)/lib/ld64-uClibc.so.0 ; \
- fi
-endef
-
-TOOLCHAIN_EXTERNAL_BUILD_CMDS = $(TOOLCHAIN_WRAPPER_BUILD)
-
-define TOOLCHAIN_EXTERNAL_INSTALL_STAGING_CMDS
- $(TOOLCHAIN_WRAPPER_INSTALL)
- $(TOOLCHAIN_EXTERNAL_CREATE_STAGING_LIB_SYMLINK)
- $(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS)
- $(TOOLCHAIN_EXTERNAL_INSTALL_SYSROOT_LIBS_BFIN_FDPIC)
- $(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)
- $(TOOLCHAIN_EXTERNAL_INSTALL_GDBINIT)
-endef
-
-# Even though we're installing things in both the staging, the host
-# and the target directory, we do everything within the
-# install-staging step, arbitrarily.
-define TOOLCHAIN_EXTERNAL_INSTALL_TARGET_CMDS
- $(TOOLCHAIN_EXTERNAL_CREATE_TARGET_LIB_SYMLINK)
- $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_LIBS)
- $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_GDBSERVER)
- $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FDPIC)
- $(TOOLCHAIN_EXTERNAL_INSTALL_TARGET_BFIN_FLAT)
- $(TOOLCHAIN_EXTERNAL_FIXUP_UCLIBCNG_LDSO)
-endef
-
-$(eval $(generic-package))
-
+include toolchain/toolchain-external/*/*.mk
diff --git a/toolchain/toolchain/toolchain.mk b/toolchain/toolchain/toolchain.mk
index c22713bfe..d317e917d 100644
--- a/toolchain/toolchain/toolchain.mk
+++ b/toolchain/toolchain/toolchain.mk
@@ -12,6 +12,20 @@ endif
TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO
+# Apply a hack that Rick Felker suggested[1] to avoid conflicts between libc
+# headers and kernel headers. This is a temporary measure until musl finds a
+# better solution.
+#
+# [1] http://www.openwall.com/lists/musl/2015/10/08/2
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+define TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK
+ $(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \
+ $(STAGING_DIR)/usr/include/linux/libc-compat.h
+endef
+TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK
+TOOLCHAIN_INSTALL_STAGING = YES
+endif
+
$(eval $(virtual-package))
toolchain: $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake