summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--CHANGES59
-rw-r--r--DEVELOPERS32
-rw-r--r--Makefile4
-rw-r--r--docs/website/download.html57
-rw-r--r--docs/website/news.html63
-rw-r--r--linux/Config.in4
-rw-r--r--package/Config.in2
-rw-r--r--package/acpica/acpica.mk12
-rw-r--r--package/agentpp/Config.in6
-rw-r--r--package/aiccu/Config.in6
-rw-r--r--package/armadillo/armadillo.mk4
-rw-r--r--package/audiofile/0008-CVE-2015-7747.patch161
-rw-r--r--package/audiofile/0009-Fix-static-linking-with-libsndfile.patch193
-rw-r--r--package/bash/bash.mk4
-rw-r--r--package/binutils/Config.in.host2
-rw-r--r--package/binutils/arc-2017.03/0300-PATCH-ld-makefile.patch (renamed from package/binutils/arc-2017.03-rc1/0300-PATCH-ld-makefile.patch)0
-rw-r--r--package/binutils/arc-2017.03/0301-PATCH-check-ldrunpath-length.patch (renamed from package/binutils/arc-2017.03-rc1/0301-PATCH-check-ldrunpath-length.patch)0
-rw-r--r--package/binutils/arc-2017.03/0500-add-sysroot-fix-from-bug-3049.patch (renamed from package/binutils/arc-2017.03-rc1/0500-add-sysroot-fix-from-bug-3049.patch)0
-rw-r--r--package/binutils/arc-2017.03/0600-poison-system-directories.patch (renamed from package/binutils/arc-2017.03-rc1/0600-poison-system-directories.patch)0
-rw-r--r--package/binutils/binutils.hash2
-rw-r--r--package/binutils/binutils.mk2
-rw-r--r--package/bluez_utils/0004-test-add-missing-header.patch34
-rw-r--r--package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch107
-rw-r--r--package/bluez_utils/Config.in1
-rw-r--r--package/bluez_utils/bluez_utils.mk2
-rw-r--r--package/boost/Config.in13
-rw-r--r--package/c-icap/c-icap.mk8
-rw-r--r--package/clamav/0002-backtrace-uClibc.patch (renamed from package/clamav/0003-backtrace-uClibc.patch)0
-rw-r--r--package/connman/Config.in4
-rw-r--r--package/cppcms/cppcms.mk4
-rw-r--r--package/daemon/daemon.mk1
-rw-r--r--package/dhcp/dhcp.mk1
-rw-r--r--package/docker-engine/docker-engine.mk5
-rw-r--r--package/dropbear/dropbear.hash2
-rw-r--r--package/dropbear/dropbear.mk2
-rw-r--r--package/efibootmgr/efibootmgr.hash1
-rw-r--r--package/efibootmgr/efibootmgr.mk3
-rw-r--r--package/efl/Config.in16
-rw-r--r--package/elfutils/0002-disable-progs.patch52
-rw-r--r--package/elfutils/0003-fts.patch91
-rw-r--r--package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch22
-rw-r--r--package/elfutils/elfutils.hash4
-rw-r--r--package/elfutils/elfutils.mk4
-rw-r--r--package/erlang/Config.in30
-rw-r--r--package/espeak/Config.in3
-rw-r--r--package/exim/Config.in5
-rw-r--r--package/expedite/0001-fix-build-failure-with-gcc-5.patch289
-rw-r--r--package/expedite/expedite.hash2
-rw-r--r--package/expedite/expedite.mk2
-rw-r--r--package/faketime/0001-Disable-the-non-null-compare-warning-error.patch32
-rw-r--r--package/fbgrab/fbgrab.mk2
-rw-r--r--package/ffmpeg/Config.in8
-rw-r--r--package/ffmpeg/ffmpeg.hash2
-rw-r--r--package/ffmpeg/ffmpeg.mk2
-rw-r--r--package/firejail/Config.in21
-rw-r--r--package/firejail/firejail.hash3
-rw-r--r--package/firejail/firejail.mk28
-rw-r--r--package/flashrom/0002-sys-io.h.patch27
-rw-r--r--package/flashrom/flashrom.hash2
-rw-r--r--package/flashrom/flashrom.mk2
-rw-r--r--package/ftop/Config.in2
-rw-r--r--package/ftop/ftop.hash7
-rw-r--r--package/ftop/ftop.mk3
-rw-r--r--package/fxload/Config.in4
-rw-r--r--package/gcc/Config.in.host2
-rw-r--r--package/gcc/arc-2016.09-release/895-arc-define-_REENTRANT-when-pthread-is-passed.patch34
-rw-r--r--package/gcc/arc-2017.03/0001-ARC-Fix-tst_movb-pattern.patch55
-rw-r--r--package/gcc/arc-2017.03/301-missing-execinfo_h.patch (renamed from package/gcc/arc-2017.03-rc1/301-missing-execinfo_h.patch)0
-rw-r--r--package/gcc/arc-2017.03/860-cilk-wchar.patch (renamed from package/gcc/arc-2017.03-rc1/860-cilk-wchar.patch)0
-rw-r--r--package/gcc/arc-2017.03/940-uclinux-enable-threads.patch (renamed from package/gcc/arc-2017.03-rc1/940-uclinux-enable-threads.patch)0
-rw-r--r--package/gcc/gcc.hash2
-rw-r--r--package/gdb/Config.in.host2
-rw-r--r--package/gdb/gdb.hash2
-rw-r--r--package/gnutls/Config.in6
-rw-r--r--package/gnutls/gnutls.hash2
-rw-r--r--package/gnutls/gnutls.mk2
-rw-r--r--package/google-breakpad/google-breakpad.mk4
-rw-r--r--package/gpsd/0001-do-not-interact-with-systemctl-when-cross-compiling.patch41
-rw-r--r--package/hans/hans.mk2
-rw-r--r--package/keepalived/Config.in5
-rw-r--r--package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk2
-rw-r--r--package/kodi-texturepacker/kodi-texturepacker.mk2
-rw-r--r--package/kodi/kodi.hash2
-rw-r--r--package/kodi/kodi.mk2
-rw-r--r--package/kvm-unit-tests/0001-x86-hyperv_clock-be-explicit-about-mul-instruction-d.patch35
-rw-r--r--package/libepoxy/0002-Make-EGL-support-optional.patch200
-rw-r--r--package/libepoxy/libepoxy.mk2
-rw-r--r--package/libev/libev.mk2
-rw-r--r--package/libmicrohttpd/Config.in5
-rw-r--r--package/libmicrohttpd/libmicrohttpd.hash2
-rw-r--r--package/libmicrohttpd/libmicrohttpd.mk2
-rw-r--r--package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch59
-rw-r--r--package/libqmi/0001-musl-compat-canonicalize_file_name.patch37
-rw-r--r--package/libsoup/Config.in4
-rw-r--r--package/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch28
-rw-r--r--package/libtasn1/libtasn1.hash2
-rw-r--r--package/libtasn1/libtasn1.mk4
-rw-r--r--package/libv4l/0003-utils-qv4l2-Makefile.am-link-with-librt.patch29
-rw-r--r--package/libv4l/libv4l.mk8
-rw-r--r--package/linux-headers/Config.in.host12
-rw-r--r--package/ltp-testsuite/Config.in20
-rw-r--r--package/ltp-testsuite/ltp-testsuite.mk8
-rw-r--r--package/lua/lua.mk1
-rw-r--r--package/madplay/0002-buildroot-libtool-v1.5.patch.patch109
-rw-r--r--package/mariadb/mariadb.hash4
-rw-r--r--package/mariadb/mariadb.mk6
-rwxr-xr-xpackage/mke2img/mke2img3
-rw-r--r--package/mono/mono.mk1
-rw-r--r--package/mosh/Config.in14
-rw-r--r--package/mosquitto/0001-Remove-lanl-when-WITH_ADNS-is-unset.patch32
-rw-r--r--package/mosquitto/mosquitto.hash2
-rw-r--r--package/mosquitto/mosquitto.mk2
-rw-r--r--package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch40
-rw-r--r--package/mpir/mpir.mk16
-rw-r--r--package/mpv/Config.in6
-rw-r--r--package/mpv/mpv.mk33
-rw-r--r--package/mxml/mxml.mk2
-rw-r--r--package/network-manager/Config.in5
-rw-r--r--package/ntp/0003-ntpq-fpic.patch23
-rw-r--r--package/ntp/ntp.mk1
-rw-r--r--package/odroid-scripts/Config.in2
-rw-r--r--package/ola/0001-Remove-fvisibiliy-inlines-hidden.patch26
-rw-r--r--package/ola/0002-Remove-replacing-I-with-isystem.patch106
-rw-r--r--package/ola/Config.in138
-rw-r--r--package/ola/ola.hash2
-rw-r--r--package/ola/ola.mk180
-rw-r--r--package/openblas/Config.in3
-rw-r--r--package/opencv/opencv.mk3
-rw-r--r--package/opencv3/0001-cmake-support-multiple-CPU-targets.patch2564
-rw-r--r--package/opencv3/opencv3.mk17
-rw-r--r--package/openpowerlink/0004-FIX-use-contrib-getopt-only-on-Windows.patch102
-rw-r--r--package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch166
-rw-r--r--package/openpowerlink/openpowerlink.mk6
-rw-r--r--package/openvpn/openvpn.hash2
-rw-r--r--package/openvpn/openvpn.mk2
-rw-r--r--package/oracle-mysql/0008-fix-type-conversion.patch22
-rw-r--r--package/php/php.hash2
-rw-r--r--package/php/php.mk2
-rw-r--r--package/pkg-generic.mk1
-rw-r--r--package/popt/popt.mk1
-rw-r--r--package/postgresql/postgresql.hash4
-rw-r--r--package/postgresql/postgresql.mk2
-rw-r--r--package/protobuf/protobuf.mk4
-rw-r--r--package/pulseview/0003-CMakeLists.txt-Avoid-fext-numeric-literals-not-suppo.patch28
-rw-r--r--package/python-enum34/python-enum34.mk2
-rw-r--r--package/qpid-proton/Config.in8
-rw-r--r--package/qt5/qt5declarative/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch58
-rw-r--r--package/qwt/qwt.mk6
-rw-r--r--package/rabbitmq-c/rabbitmq-c.mk10
-rw-r--r--package/radvd/radvd.mk6
-rw-r--r--package/redis/redis.mk11
-rw-r--r--package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch231
-rw-r--r--package/rtl8188eu/Config.in12
-rw-r--r--package/rtmpdump/rtmpdump.mk2
-rw-r--r--package/samba4/Config.in2
-rw-r--r--package/samba4/samba4.hash2
-rw-r--r--package/samba4/samba4.mk2
-rw-r--r--package/snmppp/Config.in5
-rw-r--r--package/stella/Config.in2
-rw-r--r--package/stella/stella.mk2
-rw-r--r--package/stm32flash/Config.in4
-rw-r--r--package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch55
-rw-r--r--package/strongswan/strongswan.hash3
-rw-r--r--package/strongswan/strongswan.mk3
-rw-r--r--package/sudo/0001-fix-CVE-2017-1000367.patch264
-rw-r--r--package/sudo/sudo.mk7
-rw-r--r--package/taskd/Config.in6
-rw-r--r--package/uclibc-ng-test/0001-disable-for-glibc.patch40
-rw-r--r--package/vpnc/Config.in5
-rw-r--r--package/webkitgtk/Config.in4
-rw-r--r--package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch27
-rw-r--r--package/xen/0007-tools-include-sys-sysmacros.h-on-Linux.patch52
-rw-r--r--package/xen/xen.mk2
-rw-r--r--package/xfsprogs/Config.in2
-rw-r--r--support/misc/Vagrantfile2
-rw-r--r--support/testing/infra/__init__.py31
-rw-r--r--support/testing/infra/basetest.py7
-rw-r--r--support/testing/infra/builder.py12
-rw-r--r--support/testing/infra/emulator.py15
-rwxr-xr-xsupport/testing/run-tests12
-rw-r--r--support/testing/tests/fs/test_ext.py9
-rw-r--r--support/testing/tests/toolchain/test_external.py6
-rw-r--r--toolchain/Config.in2
-rw-r--r--toolchain/toolchain-external/pkg-toolchain-external.mk2
-rw-r--r--toolchain/toolchain/toolchain.mk4
186 files changed, 5446 insertions, 1270 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a60cf91557..5fb64549dc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -179,8 +179,8 @@ sheevaplug_defconfig: *defconfig
snps_aarch64_vdk_defconfig: *defconfig
snps_arc700_axs101_defconfig: *defconfig
snps_archs38_axs103_defconfig: *defconfig
+snps_archs38_haps_defconfig: *defconfig
snps_archs38_vdk_defconfig: *defconfig
-snps_archs38_zebu_defconfig: *defconfig
stm32f429_disco_defconfig: *defconfig
stm32f469_disco_defconfig: *defconfig
telit_evk_pro3_defconfig: *defconfig
diff --git a/CHANGES b/CHANGES
index 8496b29247..1b764a24f4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,62 @@
+2017.05, Released May 31st, 2017
+
+ Minor fixes.
+
+ External toolchain: musl dynamic linker symlink for mips-sf
+ corrected.
+
+ Updated/fixed packages: agentpp, bash, exim, hans, madplay,
+ qpid-proton, rtl8188eu, snmppp, stm32flash, strongswan, sudo,
+ xen
+
+ Issues resolved (http://bugs.buildroot.org):
+
+ #9906: genimage: Disk full
+
+2017.05-rc3, Released May 30th, 2017
+
+ Fixes all over the tree.
+
+ ARC toolchain bumped to 2017.03
+
+ Runtime testing improvements and cleanups.
+
+ Updated/fixed packages: acpica, armadillo, audiofile, c-icap,
+ cppcms, dhcp, docker-engine, dropbear, elfutils, erlang,
+ fbgrab, ffmpeg, flashrom, ftop, gnutls, google-breakpad,
+ keepalived, kodi, libcdio, libepoxy, libev, libminiupnpc,
+ libqmi, libtasn1, libv4l, mariadb, mono, mosh, mosquitto,
+ mxml, ntp, opencv, openpowerlink, oracle-mysql, popt,
+ pulseview, python-enum34, rabbitmq-c, redis, samba4, stella,
+ xen
+
+ Removed packages: firejail, ola
+
+ Issues resolved (http://bugs.buildroot.org):
+
+ #9871: fbgrab 1.3 won't build with BR2_REPRODUCIBLE set
+ #9876: aarch64 support with gcc 4.8 toolchain
+ #9896: host-gcc-initial error downloading because incorrect URL
+
+2017.05-rc2, Released May 17th, 2017
+
+ Fixes all over the tree.
+
+ ARC toolchain bumped to 2017.03-rc2
+
+ Updated/fixed packages: bluez_utils, boost, clamav, daemon,
+ efibootmgr, efl, espeak, expedite, faketime, ffmpeg, fxload,
+ git, gpsd, kvm-unit-tests, libcdio, libv4l, lua, mke2img,
+ mpir, mpv, odroid-scripts, openblas, opencv3, openvpn, php,
+ postgresql, protobuf, qt5declarative, qwt, radvd, rpcbind,
+ rtmpdump, strongswan, sudo, ltp-testsuite, uclibc-ng-test,
+ vlc, x11vnc, xfsprogs
+
+ Issues resolved (http://bugs.buildroot.org):
+
+ #9796: source-check broken for Git downloads
+ #9866: BASE_DIR usage
+
2017.05-rc1, Released May 8th, 2017
Fixes all over the tree and new features.
diff --git a/DEVELOPERS b/DEVELOPERS
index fa00dc878b..303743c2a4 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -30,9 +30,17 @@ N: Abhilash Tuse <abhilash.tuse@imgtec.com>
F: package/gstreamer1/gst1-rtsp-server/
N: Adam Duskett <aduskett@gmail.com>
+F: package/audit/
+F: package/checkpolicy/
F: package/gstreamer1/gst1-vaapi/
+F: package/libselinux/
+F: package/libsemanage/
+F: package/libsepol/
F: package/nginx-naxsi/
+F: package/policycoreutils/
F: package/python-mutagen/
+F: package/sepolgen/
+F: package/setools/
F: package/sngrep/
N: Alex Suykov <alex.suykov@gmail.com>
@@ -75,9 +83,6 @@ N: Andrey Smirnov <andrew.smirnov@gmail.com
F: package/python-decorator/
F: package/python-simplegeneric/
-N: Andrew Ruder <andrew.ruder@elecsyscorp.com>
-F: package/expect/
-
N: Andy Kennedy <andy.kennedy@adtran.com>
F: package/libunwind/
@@ -160,6 +165,8 @@ F: boot/syslinux/
F: package/dc3dd/
N: Bernd Kuhls <bernd.kuhls@t-online.de>
+F: package/alsa-lib/
+F: package/alsa-utils/
F: package/apache/
F: package/apr/
F: package/apr-util/
@@ -315,9 +322,6 @@ F: package/libdvbsi/
F: package/libsvg/
F: package/libsvg-cairo/
-N: Chris Frederick <chrisf@cdf123.net>
-F: package/firejail/
-
N: Chris Packham <judge.packham@gmail.com>
F: package/eventlog/
F: package/micropython/
@@ -400,9 +404,6 @@ F: package/lua-cjson/
F: package/luaexpat/
F: package/xinetd/
-N: Dave Skok <blanco.ether@gmail.com>
-F: package/ola/
-
N: David Bachelart <david.bachelart@bbright.com>
F: package/ccrypt/
F: package/dos2unix/
@@ -1079,22 +1080,32 @@ F: package/ts4900-fpga/
N: Matt Weber <matthew.weber@rockwellcollins.com>
F: package/bc/
+F: package/checkpolicy/
+F: package/cgroupfs-mount/
F: package/eigen/
F: package/fmc/
F: package/fmlib/
F: package/igmpproxy/
F: package/iputils/
F: package/libcsv/
+F: package/libselinux/
+F: package/libsemanage/
+F: package/libsepol/
+F: package/libqmi/
+F: package/nginx-upload/
F: package/omniorb/
+F: package/policycoreutils/
F: package/python-ipy/
F: package/python-posix-ipc/
F: package/python-pypcap/
F: package/python-pyrex/
F: package/raptor/
+F: package/sepolgen/
F: package/setools/
F: package/simicsfs/
F: package/smcroute/
F: package/tclap/
+F: package/valijson/
N: Mauro Condarelli <mc5686@mclink.it>
F: package/mc/
@@ -1192,9 +1203,6 @@ F: package/nvidia-tegra23/nvidia-tegra23-codecs/
N: Nimai Mahajan <nimaim@gmail.com>
F: package/libucl/
-N: Niranjan Reddy <niranjan.reddy@rockwellcollins.com>
-F: package/cgroupfs-mount/
-
N: Noé Rubinstein <noe.rubinstein@gmail.com>
F: package/tpm-tools/
F: package/trousers/
diff --git a/Makefile b/Makefile
index 95ecf3c653..499a39fe20 100644
--- a/Makefile
+++ b/Makefile
@@ -86,9 +86,9 @@ else # umask / $(CURDIR) / $(O)
all:
# Set and export the version string
-export BR2_VERSION := 2017.05-rc1
+export BR2_VERSION := 2017.08-git
# Actual time the release is cut (for reproducible builds)
-BR2_VERSION_EPOCH = 1494230000
+BR2_VERSION_EPOCH = 1496267000
# Save running make version since it's clobbered by the make package
RUNNING_MAKE_VERSION := $(MAKE_VERSION)
diff --git a/docs/website/download.html b/docs/website/download.html
index 51859f00f9..c9a0a353cd 100644
--- a/docs/website/download.html
+++ b/docs/website/download.html
@@ -8,7 +8,7 @@
<div class="panel-heading">Download</div>
<div class="panel-body">
- <h3 style="text-align: center;">Latest stable release: <b>2017.02.2</b></h3>
+ <h3 style="text-align: center;">Latest long term support release: <b>2017.02.2</b></h3>
<div class="row mt centered">
<div class="col-sm-6">
@@ -42,40 +42,75 @@
</div>
</div>
- <h3 style="text-align: center;">Latest release candidate: <b>2017.05-rc1</b></h3>
+ <h3 style="text-align: center;">Latest stable release: <b>2017.05</b></h3>
+
<div class="row mt centered">
<div class="col-sm-6">
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
<div class="flipper">
<div class="front">
- <a href="/downloads/buildroot-2017.05-rc1.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
+ <a href="/downloads/buildroot-2017.05.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
</div>
<div class="back">
- <a href="/downloads/buildroot-2017.05-rc1.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
+ <a href="/downloads/buildroot-2017.05.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
</div>
</div>
</div>
-
- <h3><a href="/downloads/buildroot-2017.05-rc1.tar.gz">buildroot-2017.05-rc1.tar.gz</a></h3>
- <p><a href="/downloads/buildroot-2017.05-rc1.tar.gz.sign">PGP signature</a></p>
+ <h3><a href="/downloads/buildroot-2017.05.tar.gz">buildroot-2017.05.tar.gz</a></h3>
+ <p><a href="/downloads/buildroot-2017.05.tar.gz.sign">PGP signature</a></p>
</div>
<div class="col-sm-6">
<div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
<div class="flipper">
<div class="front">
- <a href="/downloads/buildroot-2017.05-rc1.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
+ <a href="/downloads/buildroot-2017.05.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
</div>
<div class="back">
- <a href="/downloads/buildroot-2017.05-rc1.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
+ <a href="/downloads/buildroot-2017.05.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
</div>
</div>
</div>
- <h3><a href="/downloads/buildroot-2017.05-rc1.tar.bz2">buildroot-2017.05-rc1.tar.bz2</a></h3>
- <p><a href="/downloads/buildroot-2017.05-rc1.tar.bz2.sign">PGP signature</a></p>
+ <h3><a href="/downloads/buildroot-2017.05.tar.bz2">buildroot-2017.05.tar.bz2</a></h3>
+ <p><a href="/downloads/buildroot-2017.05.tar.bz2.sign">PGP signature</a></p>
</div>
</div>
+<!--
+ <h3 style="text-align: center;">Latest release candidate: <b>2017.05-rc3</b></h3>
+ <div class="row mt centered">
+ <div class="col-sm-6">
+ <div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
+ <div class="flipper">
+ <div class="front">
+ <a href="/downloads/buildroot-2017.05-rc3.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
+ </div>
+ <div class="back">
+ <a href="/downloads/buildroot-2017.05-rc3.tar.gz"><img src="images/zip.png" width="180" alt=""></a>
+ </div>
+ </div>
+ </div>
+
+ <h3><a href="/downloads/buildroot-2017.05-rc3.tar.gz">buildroot-2017.05-rc3.tar.gz</a></h3>
+ <p><a href="/downloads/buildroot-2017.05-rc3.tar.gz.sign">PGP signature</a></p>
+ </div>
+ <div class="col-sm-6">
+ <div class="flip-container center-block" ontouchstart="this.classList.toggle('hover');">
+ <div class="flipper">
+ <div class="front">
+ <a href="/downloads/buildroot-2017.05-rc3.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
+ </div>
+ <div class="back">
+ <a href="/downloads/buildroot-2017.05-rc3.tar.bz2"><img src="images/package.png" width="180" alt=""></a>
+ </div>
+ </div>
+ </div>
+
+ <h3><a href="/downloads/buildroot-2017.05-rc3.tar.bz2">buildroot-2017.05-rc3.tar.bz2</a></h3>
+ <p><a href="/downloads/buildroot-2017.05-rc3.tar.bz2.sign">PGP signature</a></p>
+ </div>
+ </div>
+-->
This and earlier releases (and their PGP signatures) can always be downloaded from
<a href="/downloads/">http://buildroot.net/downloads/</a>.
</div>
diff --git a/docs/website/news.html b/docs/website/news.html
index 04ca6413b1..55c5f8107b 100644
--- a/docs/website/news.html
+++ b/docs/website/news.html
@@ -9,6 +9,69 @@
<h2>News</h2>
<ul class="timeline">
+ <li class="timeline-inverted">
+ <div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
+ <div class="timeline-panel">
+ <div class="timeline-heading">
+ <h4 class="timeline-title">2017.05 released</h4>
+ <p><small class="text-muted"><i class="glyphicon glyphicon-time"></i>31 May 2017</small></p>
+ </div>
+ <div class="timeline-body">
+ <p>The stable 2017.05 release is out - Thanks to everyone
+ contributing and testing the release candidates. See the
+ <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05">CHANGES</a>
+ file for more details, read the
+ <a href="http://lists.busybox.net/pipermail/buildroot/2017-June/193164.html">announcement</a>
+ and go to the <a href="/downloads/">downloads page</a> to pick up the
+ <a href="/downloads/buildroot-2017.05.tar.bz2">2017.05 release</a>.</p>
+ </div>
+ </div>
+ </li>
+
+ <li>
+ <div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
+ <div class="timeline-panel">
+ <div class="timeline-heading">
+ <h4 class="timeline-title">2017.05-rc3 released</h4>
+ <p><small class="text-muted"><i class="glyphicon glyphicon-time"></i>30 May 2017</small></p>
+ </div>
+ <div class="timeline-body">
+ <p>Release candidate 3 is out with more cleanups and security
+ / build fixes. See
+ the <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05-rc3">CHANGES</a>
+ file for details.</p>
+ <p>Head to the <a href="/downloads/">downloads page</a> to
+ pick up
+ the <a href="/downloads/buildroot-2017.05-rc3.tar.bz2">2017.05-rc3
+ release candidate</a>, and report any problems found to
+ the <a href="support.html">mailing list</a>
+ or <a href="https://bugs.uclibc.org">bug tracker</a>.</p>
+ </div>
+ </div>
+ </li>
+
+ <li class="timeline-inverted">
+ <div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
+ <div class="timeline-panel">
+ <div class="timeline-heading">
+ <h4 class="timeline-title">2017.05-rc2 released</h4>
+ <p><small class="text-muted"><i class="glyphicon glyphicon-time"></i>17 May 2017</small></p>
+ </div>
+ <div class="timeline-body">
+ <p>Another week, another release candidate with more cleanups
+ and build fixes. See the
+ <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2017.05-rc2">CHANGES</a>
+ file for details.</p>
+
+ <p>Head to the <a href="/downloads/">downloads page</a> to pick up the
+ <a href="/downloads/buildroot-2017.05-rc2.tar.bz2">2017.05-rc2
+ release candidate</a>, and report any problems found to the
+ <a href="support.html">mailing list</a> or
+ <a href="https://bugs.buildroot.org">bug tracker</a>.</p>
+ </div>
+ </div>
+ </li>
+
<li>
<div class="timeline-badge"><i class="glyphicon glyphicon-thumbs-up"></i></div>
<div class="timeline-panel">
diff --git a/linux/Config.in b/linux/Config.in
index ace007cc9b..305929de05 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -26,7 +26,7 @@ choice
prompt "Kernel version"
config BR2_LINUX_KERNEL_LATEST_VERSION
- bool "Latest version (4.11)"
+ bool "Latest version (4.11.3)"
config BR2_LINUX_KERNEL_LATEST_CIP_VERSION
bool "Latest CIP SLTS version (v4.4.55-cip3)"
@@ -116,7 +116,7 @@ endif
config BR2_LINUX_KERNEL_VERSION
string
- default "4.11" if BR2_LINUX_KERNEL_LATEST_VERSION
+ default "4.11.3" if BR2_LINUX_KERNEL_LATEST_VERSION
default "v4.4.55-cip3" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION
default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \
if BR2_LINUX_KERNEL_CUSTOM_VERSION
diff --git a/package/Config.in b/package/Config.in
index e1007ccd40..497cac8b74 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -442,7 +442,6 @@ endmenu
source "package/odroid-mali/Config.in"
source "package/odroid-scripts/Config.in"
source "package/ofono/Config.in"
- source "package/ola/Config.in"
source "package/on2-8170-modules/Config.in"
source "package/open2300/Config.in"
source "package/openipmi/Config.in"
@@ -1820,7 +1819,6 @@ menu "System tools"
source "package/efibootmgr/Config.in"
source "package/efivar/Config.in"
source "package/emlog/Config.in"
- source "package/firejail/Config.in"
source "package/ftop/Config.in"
source "package/getent/Config.in"
source "package/htop/Config.in"
diff --git a/package/acpica/acpica.mk b/package/acpica/acpica.mk
index 37e4941a6b..c80989a1ea 100644
--- a/package/acpica/acpica.mk
+++ b/package/acpica/acpica.mk
@@ -17,10 +17,22 @@ define ACPICA_BUILD_CMDS
all
endef
+define HOST_ACPICA_BUILD_CMDS
+ $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+ all
+endef
+
define ACPICA_INSTALL_TARGET_CMDS
$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
HARDWARE_NAME=$(BR2_ARCH) DESTDIR="$(TARGET_DIR)" \
INSTALLFLAGS=-m755 install
endef
+define HOST_ACPICA_INSTALL_CMDS
+ $(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
+ PREFIX="$(HOST_DIR)/usr" \
+ INSTALLFLAGS=-m755 install
+endef
+
$(eval $(generic-package))
+$(eval $(host-generic-package))
diff --git a/package/agentpp/Config.in b/package/agentpp/Config.in
index 9e6eeedc17..8c6b11d644 100644
--- a/package/agentpp/Config.in
+++ b/package/agentpp/Config.in
@@ -6,9 +6,9 @@ config BR2_PACKAGE_AGENTPP
select BR2_PACKAGE_SNMPPP
help
AGENT++ is a set of C++ classes which provides a complete
- protocol engine and dispatch table for the development of SNMP
- agents. AGENT++ is a multilingual API which supports SNMPv1,
- SNMPv2c, and SNMPv3. It provides various C++ classes
+ protocol engine and dispatch table for the development of
+ SNMP agents. AGENT++ is a multilingual API which supports
+ SNMPv1, SNMPv2c, and SNMPv3. It provides various C++ classes
implementing prototypes for scalar and table SNMP managed
objects that can be customized by derivation. Additional
classes support the development of proxy agents as well as
diff --git a/package/aiccu/Config.in b/package/aiccu/Config.in
index b346328dcc..a2d6100171 100644
--- a/package/aiccu/Config.in
+++ b/package/aiccu/Config.in
@@ -1,5 +1,6 @@
config BR2_PACKAGE_AICCU
bool "aiccu"
+ depends on !BR2_STATIC_LIBS # gnutls
depends on BR2_USE_WCHAR
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_MMU # fork()
@@ -18,6 +19,7 @@ config BR2_PACKAGE_AICCU
http://www.sixxs.net/tools/aiccu/
-comment "aiccu needs a toolchain w/ wchar, threads"
+comment "aiccu needs a toolchain w/ wchar, threads, dynamic library"
depends on BR2_USE_MMU
- depends on !(BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS)
+ depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS \
+ || BR2_STATIC_LIBS
diff --git a/package/armadillo/armadillo.mk b/package/armadillo/armadillo.mk
index 714c1b2ddf..beb60c8c64 100644
--- a/package/armadillo/armadillo.mk
+++ b/package/armadillo/armadillo.mk
@@ -5,7 +5,9 @@
################################################################################
ARMADILLO_VERSION = 6.500.4
-ARMADILLO_SITE = http://downloads.sourceforge.net/project/arma
+# upstream removed tarball from
+# http://downloads.sourceforge.net/project/arma
+ARMADILLO_SITE = https://ftp.fau.de/macports/distfiles/armadillo
ARMADILLO_DEPENDENCIES = clapack
ARMADILLO_INSTALL_STAGING = YES
ARMADILLO_LICENSE = MPL-2.0
diff --git a/package/audiofile/0008-CVE-2015-7747.patch b/package/audiofile/0008-CVE-2015-7747.patch
new file mode 100644
index 0000000000..13256123c4
--- /dev/null
+++ b/package/audiofile/0008-CVE-2015-7747.patch
@@ -0,0 +1,161 @@
+Description: fix buffer overflow when changing both sample format and
+ number of channels
+Origin: https://github.com/mpruett/audiofile/pull/25
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721
+Bug-Debian: https://bugs.debian.org/801102
+
+Downloaded from
+https://gitweb.gentoo.org/repo/gentoo.git/tree/media-libs/audiofile/files/audiofile-0.3.6-CVE-2015-7747.patch
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+--- a/libaudiofile/modules/ModuleState.cpp
++++ b/libaudiofile/modules/ModuleState.cpp
+@@ -402,7 +402,7 @@ status ModuleState::arrange(AFfilehandle
+ addModule(new Transform(outfc, in.pcm, out.pcm));
+
+ if (in.channelCount != out.channelCount)
+- addModule(new ApplyChannelMatrix(infc, isReading,
++ addModule(new ApplyChannelMatrix(outfc, isReading,
+ in.channelCount, out.channelCount,
+ in.pcm.minClip, in.pcm.maxClip,
+ track->channelMatrix));
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -26,6 +26,7 @@ TESTS = \
+ VirtualFile \
+ floatto24 \
+ query2 \
++ sixteen-stereo-to-eight-mono \
+ sixteen-to-eight \
+ testchannelmatrix \
+ testdouble \
+@@ -139,6 +140,7 @@ printmarkers_SOURCES = printmarkers.c
+ printmarkers_LDADD = $(LIBAUDIOFILE) -lm
+
+ sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h
++sixteen_stereo_to_eight_mono_SOURCES = sixteen-stereo-to-eight-mono.c TestUtilities.cpp TestUtilities.h
+
+ testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h
+
+--- /dev/null
++++ b/test/sixteen-stereo-to-eight-mono.c
+@@ -0,0 +1,118 @@
++/*
++ Audio File Library
++
++ Copyright 2000, Silicon Graphics, Inc.
++
++ 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.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++
++/*
++ sixteen-stereo-to-eight-mono.c
++
++ This program tests the conversion from 2-channel 16-bit integers to
++ 1-channel 8-bit integers.
++*/
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include <stdint.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++
++#include <audiofile.h>
++
++#include "TestUtilities.h"
++
++int main (int argc, char **argv)
++{
++ AFfilehandle file;
++ AFfilesetup setup;
++ int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921};
++ int8_t frames8[] = {28, 6, -2};
++ int i, frameCount = 3;
++ int8_t byte;
++ AFframecount result;
++
++ setup = afNewFileSetup();
++
++ afInitFileFormat(setup, AF_FILE_WAVE);
++
++ afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
++ afInitChannels(setup, AF_DEFAULT_TRACK, 2);
++
++ char *testFileName;
++ if (!createTemporaryFile("sixteen-to-eight", &testFileName))
++ {
++ fprintf(stderr, "Could not create temporary file.\n");
++ exit(EXIT_FAILURE);
++ }
++
++ file = afOpenFile(testFileName, "w", setup);
++ if (file == AF_NULL_FILEHANDLE)
++ {
++ fprintf(stderr, "could not open file for writing\n");
++ exit(EXIT_FAILURE);
++ }
++
++ afFreeFileSetup(setup);
++
++ afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount);
++
++ afCloseFile(file);
++
++ file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP);
++ if (file == AF_NULL_FILEHANDLE)
++ {
++ fprintf(stderr, "could not open file for reading\n");
++ exit(EXIT_FAILURE);
++ }
++
++ afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8);
++ afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1);
++
++ for (i=0; i<frameCount; i++)
++ {
++ /* Read one frame. */
++ result = afReadFrames(file, AF_DEFAULT_TRACK, &byte, 1);
++
++ if (result != 1)
++ break;
++
++ /* Compare the byte read with its precalculated value. */
++ if (memcmp(&byte, &frames8[i], 1) != 0)
++ {
++ printf("error\n");
++ printf("expected %d, got %d\n", frames8[i], byte);
++ exit(EXIT_FAILURE);
++ }
++ else
++ {
++#ifdef DEBUG
++ printf("got what was expected: %d\n", byte);
++#endif
++ }
++ }
++
++ afCloseFile(file);
++ unlink(testFileName);
++ free(testFileName);
++
++ exit(EXIT_SUCCESS);
++}
diff --git a/package/audiofile/0009-Fix-static-linking-with-libsndfile.patch b/package/audiofile/0009-Fix-static-linking-with-libsndfile.patch
new file mode 100644
index 0000000000..c48e664a3e
--- /dev/null
+++ b/package/audiofile/0009-Fix-static-linking-with-libsndfile.patch
@@ -0,0 +1,193 @@
+From d89a938f48e97b5770509d53c5478c5c3008d6e8 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd.kuhls@t-online.de>
+Date: Sat, 27 May 2017 17:53:33 +0200
+Subject: [PATCH 1/1] Fix static linking with libsndfile
+
+libsndfile and audiofile both contain mixXX functions in their alac
+code which lead to symbol name clashes when apps like mpd try to
+statically link to both audiofile and libsndfile at the same time.
+
+This patch renames these functions to avoid the problem which was
+detected by the buildroot autobuilders:
+http://autobuild.buildroot.net/results/799/7997ccd698f03885f98d00bd150dc3a578e4b161/
+
+Patch sent upstream: https://github.com/mpruett/audiofile/pull/45
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ libaudiofile/alac/ALACEncoder.cpp | 28 ++++++++++++++--------------
+ libaudiofile/alac/matrix_enc.c | 8 ++++----
+ libaudiofile/alac/matrixlib.h | 8 ++++----
+ 3 files changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/libaudiofile/alac/ALACEncoder.cpp b/libaudiofile/alac/ALACEncoder.cpp
+index da922c2..3d088cc 100644
+--- a/libaudiofile/alac/ALACEncoder.cpp
++++ b/libaudiofile/alac/ALACEncoder.cpp
+@@ -332,19 +332,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui
+ switch ( mBitDepth )
+ {
+ case 16:
+- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes );
++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes );
+ break;
+ case 20:
+- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes );
++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate, mixBits, mixRes );
+ break;
+ case 24:
+ // includes extraction of shifted-off bytes
+- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate,
++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ case 32:
+ // includes extraction of shifted-off bytes
+- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate,
++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples/dilate,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ }
+@@ -379,19 +379,19 @@ int32_t ALACEncoder::EncodeStereo( BitBuffer * bitstream, void * inputBuffer, ui
+ switch ( mBitDepth )
+ {
+ case 16:
+- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
+ break;
+ case 20:
+- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
+ break;
+ case 24:
+ // also extracts the shifted off bytes into the shift buffers
+- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ case 32:
+ // also extracts the shifted off bytes into the shift buffers
+- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ }
+@@ -605,19 +605,19 @@ int32_t ALACEncoder::EncodeStereoFast( BitBuffer * bitstream, void * inputBuffer
+ switch ( mBitDepth )
+ {
+ case 16:
+- mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
++ audiofile_alac_mix16( (int16_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
+ break;
+ case 20:
+- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, mixBits, mixRes );
+ break;
+ case 24:
+ // also extracts the shifted off bytes into the shift buffers
+- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ case 32:
+ // also extracts the shifted off bytes into the shift buffers
+- mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
++ audiofile_alac_mix32( (int32_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples,
+ mixBits, mixRes, mShiftBufferUV, bytesShifted );
+ break;
+ }
+@@ -756,7 +756,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff
+ break;
+ case 20:
+ // mix20() with mixres param = 0 means de-interleave so use it to simplify things
+- mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 );
++ audiofile_alac_mix20( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0 );
+ for ( index = 0; index < numSamples; index++ )
+ {
+ BitBufferWrite( bitstream, mMixBufferU[index], 20 );
+@@ -765,7 +765,7 @@ int32_t ALACEncoder::EncodeStereoEscape( BitBuffer * bitstream, void * inputBuff
+ break;
+ case 24:
+ // mix24() with mixres param = 0 means de-interleave so use it to simplify things
+- mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 );
++ audiofile_alac_mix24( (uint8_t *) inputBuffer, stride, mMixBufferU, mMixBufferV, numSamples, 0, 0, mShiftBufferUV, 0 );
+ for ( index = 0; index < numSamples; index++ )
+ {
+ BitBufferWrite( bitstream, mMixBufferU[index], 24 );
+diff --git a/libaudiofile/alac/matrix_enc.c b/libaudiofile/alac/matrix_enc.c
+index e194330..8abd556 100644
+--- a/libaudiofile/alac/matrix_enc.c
++++ b/libaudiofile/alac/matrix_enc.c
+@@ -57,7 +57,7 @@
+
+ // 16-bit routines
+
+-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres )
++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres )
+ {
+ int16_t * ip = in;
+ int32_t j;
+@@ -95,7 +95,7 @@ void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num
+ // 20-bit routines
+ // - the 20 bits of data are left-justified in 3 bytes of storage but right-aligned for input/output predictor buffers
+
+-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres )
++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres )
+ {
+ int32_t l, r;
+ uint8_t * ip = in;
+@@ -140,7 +140,7 @@ void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num
+ // 24-bit routines
+ // - the 24 bits of data are right-justified in the input/output predictor buffers
+
+-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted )
+ {
+ int32_t l, r;
+@@ -240,7 +240,7 @@ void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t num
+ // - otherwise, the calculations might overflow into the 33rd bit and be lost
+ // - therefore, these routines deal with the specified "unused lower" bytes in the "shift" buffers
+
+-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted )
+ {
+ int32_t * ip = in;
+diff --git a/libaudiofile/alac/matrixlib.h b/libaudiofile/alac/matrixlib.h
+index 0a4f371..5728b6d 100644
+--- a/libaudiofile/alac/matrixlib.h
++++ b/libaudiofile/alac/matrixlib.h
+@@ -38,17 +38,17 @@ extern "C" {
+ #endif
+
+ // 16-bit routines
+-void mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres );
++void audiofile_alac_mix16( int16_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres );
+ void unmix16( int32_t * u, int32_t * v, int16_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres );
+
+ // 20-bit routines
+-void mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres );
++void audiofile_alac_mix20( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples, int32_t mixbits, int32_t mixres );
+ void unmix20( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples, int32_t mixbits, int32_t mixres );
+
+ // 24-bit routines
+ // - 24-bit data sometimes compresses better by shifting off the bottom byte so these routines deal with
+ // the specified "unused lower bytes" in the combined "shift" buffer
+-void mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
++void audiofile_alac_mix24( uint8_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted );
+ void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted );
+@@ -57,7 +57,7 @@ void unmix24( int32_t * u, int32_t * v, uint8_t * out, uint32_t stride, int32_t
+ // - note that these really expect the internal data width to be < 32-bit but the arrays are 32-bit
+ // - otherwise, the calculations might overflow into the 33rd bit and be lost
+ // - therefore, these routines deal with the specified "unused lower" bytes in the combined "shift" buffer
+-void mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
++void audiofile_alac_mix32( int32_t * in, uint32_t stride, int32_t * u, int32_t * v, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted );
+ void unmix32( int32_t * u, int32_t * v, int32_t * out, uint32_t stride, int32_t numSamples,
+ int32_t mixbits, int32_t mixres, uint16_t * shiftUV, int32_t bytesShifted );
+--
+2.11.0
+
diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index 639f012045..32c87a659e 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -9,7 +9,7 @@ BASH_SITE = $(BR2_GNU_MIRROR)/bash
# Build after since bash is better than busybox shells
BASH_DEPENDENCIES = ncurses readline host-bison \
$(if $(BR2_PACKAGE_BUSYBOX),busybox)
-BASH_CONF_OPTS = --with-installed-readline
+BASH_CONF_OPTS = --with-installed-readline --without-bash-malloc
BASH_LICENSE = GPL-3.0+
BASH_LICENSE_FILES = COPYING
@@ -24,7 +24,7 @@ BASH_CONF_ENV += \
# The static build needs some trickery
ifeq ($(BR2_STATIC_LIBS),y)
-BASH_CONF_OPTS += --enable-static-link --without-bash-malloc
+BASH_CONF_OPTS += --enable-static-link
# bash wants to redefine the getenv() function. To check whether this is
# possible, AC_TRY_RUN is used which is not possible in
# cross-compilation.
diff --git a/package/binutils/Config.in.host b/package/binutils/Config.in.host
index e147ef0a26..03ddf62cbc 100644
--- a/package/binutils/Config.in.host
+++ b/package/binutils/Config.in.host
@@ -23,7 +23,7 @@ endchoice
config BR2_BINUTILS_VERSION
string
- default "arc-2017.03-rc1" if BR2_arc
+ default "arc-2017.03" if BR2_arc
default "2.26.1" if BR2_BINUTILS_VERSION_2_26_X
default "2.27" if BR2_BINUTILS_VERSION_2_27_X
default "2.28" if BR2_BINUTILS_VERSION_2_28_X
diff --git a/package/binutils/arc-2017.03-rc1/0300-PATCH-ld-makefile.patch b/package/binutils/arc-2017.03/0300-PATCH-ld-makefile.patch
index 6b3cd440d1..6b3cd440d1 100644
--- a/package/binutils/arc-2017.03-rc1/0300-PATCH-ld-makefile.patch
+++ b/package/binutils/arc-2017.03/0300-PATCH-ld-makefile.patch
diff --git a/package/binutils/arc-2017.03-rc1/0301-PATCH-check-ldrunpath-length.patch b/package/binutils/arc-2017.03/0301-PATCH-check-ldrunpath-length.patch
index 9bb23411f6..9bb23411f6 100644
--- a/package/binutils/arc-2017.03-rc1/0301-PATCH-check-ldrunpath-length.patch
+++ b/package/binutils/arc-2017.03/0301-PATCH-check-ldrunpath-length.patch
diff --git a/package/binutils/arc-2017.03-rc1/0500-add-sysroot-fix-from-bug-3049.patch b/package/binutils/arc-2017.03/0500-add-sysroot-fix-from-bug-3049.patch
index 0331088666..0331088666 100644
--- a/package/binutils/arc-2017.03-rc1/0500-add-sysroot-fix-from-bug-3049.patch
+++ b/package/binutils/arc-2017.03/0500-add-sysroot-fix-from-bug-3049.patch
diff --git a/package/binutils/arc-2017.03-rc1/0600-poison-system-directories.patch b/package/binutils/arc-2017.03/0600-poison-system-directories.patch
index bb1a7b438c..bb1a7b438c 100644
--- a/package/binutils/arc-2017.03-rc1/0600-poison-system-directories.patch
+++ b/package/binutils/arc-2017.03/0600-poison-system-directories.patch
diff --git a/package/binutils/binutils.hash b/package/binutils/binutils.hash
index be3f7036d1..5a7062004e 100644
--- a/package/binutils/binutils.hash
+++ b/package/binutils/binutils.hash
@@ -4,4 +4,4 @@ sha512 cf276f84935312361a2ca077e04d0b469d23a3aed979d8ba5d92ea590904ffb2c2e7ed12c
sha512 ede2e4e59a800260eea8c14eafbaee94e30abadafd5c419a3370f9f62213cf027d6400a1d4970b6958bd4d220e675dcd483a708107016e7abd5c99d7392ba8fd binutils-2.28.tar.bz2
# Locally calculated (fetched from Github)
-sha512 536d252a4dae94803eb95a400e16d43c8e709276e3baed1d0c07fd764b2457b7845a0b3de9c78ab10211ab7e18a49c3a988570fc434357a72aac05cee9ca6beb binutils-arc-2017.03-rc1.tar.gz
+sha512 07d5639e74eafe8fced259870c1a7dedee67c534573dda53fb78ee1ffeec9e17479fdde41dccd03b1cf0248023acbef7f66013398b2f722e4a8891ac680d1d16 binutils-arc-2017.03.tar.gz
diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index 72e2d0b3fb..0dc20a082d 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -9,7 +9,7 @@
BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION))
ifeq ($(BINUTILS_VERSION),)
ifeq ($(BR2_arc),y)
-BINUTILS_VERSION = arc-2017.03-rc1
+BINUTILS_VERSION = arc-2017.03
else
BINUTILS_VERSION = 2.27
endif
diff --git a/package/bluez_utils/0004-test-add-missing-header.patch b/package/bluez_utils/0004-test-add-missing-header.patch
new file mode 100644
index 0000000000..c74afb8304
--- /dev/null
+++ b/package/bluez_utils/0004-test-add-missing-header.patch
@@ -0,0 +1,34 @@
+From d3c098c2fde55ddf0c7d56eae56925103d35da73 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sat, 13 May 2017 18:56:51 +0200
+Subject: [PATCH] test: add missing header
+
+test/attest.c: In function 'at_command':
+test/attest.c:43:2: error: unknown type name 'fd_set'
+ fd_set rfds;
+ ^
+
+Fixes:
+http://autobuild.buildroot.net/results/06c/06c930d9c5299b79500d018ac3fb2861ce834c7c/
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ test/attest.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/test/attest.c b/test/attest.c
+index 12ba682..2626cf1 100644
+--- a/test/attest.c
++++ b/test/attest.c
+@@ -35,6 +35,8 @@
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+
++#include <sys/select.h>
++
+ #include <bluetooth/bluetooth.h>
+ #include <bluetooth/rfcomm.h>
+
+--
+2.9.3
+
diff --git a/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch b/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch
new file mode 100644
index 0000000000..438da97cb1
--- /dev/null
+++ b/package/bluez_utils/0005-test-avoid-conflict-with-encrypt-function.patch
@@ -0,0 +1,107 @@
+From d8056252d0c99bfb2482f0a420dcf9a36019ddf8 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sat, 13 May 2017 18:58:51 +0200
+Subject: [PATCH] test: avoid conflict with encrypt function
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+With a musl based toolchain:
+
+test/l2test.c:110:12: error: ‘encrypt’ redeclared as different kind of symbol
+ static int encrypt = 0;
+ ^
+In file included from test/l2test.c:34:0:
+[...]/sysroot/usr/include/unistd.h:145:6: note: previous declaration of ‘encrypt’ was here
+ void encrypt(char *, int);
+ ^
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ test/l2test.c | 8 ++++----
+ test/rctest.c | 8 ++++----
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/test/l2test.c b/test/l2test.c
+index f66486d..9ef6faf 100644
+--- a/test/l2test.c
++++ b/test/l2test.c
+@@ -107,7 +107,7 @@ static char *filename = NULL;
+ static int rfcmode = 0;
+ static int master = 0;
+ static int auth = 0;
+-static int encrypt = 0;
++static int _encrypt = 0;
+ static int secure = 0;
+ static int socktype = SOCK_SEQPACKET;
+ static int linger = 0;
+@@ -340,7 +340,7 @@ static int do_connect(char *svr)
+ opt |= L2CAP_LM_MASTER;
+ if (auth)
+ opt |= L2CAP_LM_AUTH;
+- if (encrypt)
++ if (_encrypt)
+ opt |= L2CAP_LM_ENCRYPT;
+ if (secure)
+ opt |= L2CAP_LM_SECURE;
+@@ -475,7 +475,7 @@ static void do_listen(void (*handler)(int sk))
+ opt |= L2CAP_LM_MASTER;
+ if (auth)
+ opt |= L2CAP_LM_AUTH;
+- if (encrypt)
++ if (_encrypt)
+ opt |= L2CAP_LM_ENCRYPT;
+ if (secure)
+ opt |= L2CAP_LM_SECURE;
+@@ -1407,7 +1407,7 @@ int main(int argc, char *argv[])
+ break;
+
+ case 'E':
+- encrypt = 1;
++ _encrypt = 1;
+ break;
+
+ case 'S':
+diff --git a/test/rctest.c b/test/rctest.c
+index 4d7c90a..7ad5a0b 100644
+--- a/test/rctest.c
++++ b/test/rctest.c
+@@ -79,7 +79,7 @@ static char *filename = NULL;
+
+ static int master = 0;
+ static int auth = 0;
+-static int encrypt = 0;
++static int _encrypt = 0;
+ static int secure = 0;
+ static int socktype = SOCK_STREAM;
+ static int linger = 0;
+@@ -200,7 +200,7 @@ static int do_connect(const char *svr)
+ opt |= RFCOMM_LM_MASTER;
+ if (auth)
+ opt |= RFCOMM_LM_AUTH;
+- if (encrypt)
++ if (_encrypt)
+ opt |= RFCOMM_LM_ENCRYPT;
+ if (secure)
+ opt |= RFCOMM_LM_SECURE;
+@@ -291,7 +291,7 @@ static void do_listen(void (*handler)(int sk))
+ opt |= RFCOMM_LM_MASTER;
+ if (auth)
+ opt |= RFCOMM_LM_AUTH;
+- if (encrypt)
++ if (_encrypt)
+ opt |= RFCOMM_LM_ENCRYPT;
+ if (secure)
+ opt |= RFCOMM_LM_SECURE;
+@@ -701,7 +701,7 @@ int main(int argc, char *argv[])
+ break;
+
+ case 'E':
+- encrypt = 1;
++ _encrypt = 1;
+ break;
+
+ case 'S':
+--
+2.9.3
+
diff --git a/package/bluez_utils/Config.in b/package/bluez_utils/Config.in
index ea44068f89..327d26bce3 100644
--- a/package/bluez_utils/Config.in
+++ b/package/bluez_utils/Config.in
@@ -4,6 +4,7 @@ config BR2_PACKAGE_BLUEZ_UTILS
depends on BR2_USE_WCHAR # libglib2
depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, alsa-lib, libglib2
depends on BR2_USE_MMU # dbus, libglib2
+ select BR2_PACKAGE_CHECK
select BR2_PACKAGE_DBUS
select BR2_PACKAGE_LIBGLIB2
help
diff --git a/package/bluez_utils/bluez_utils.mk b/package/bluez_utils/bluez_utils.mk
index b39688664f..256f012df9 100644
--- a/package/bluez_utils/bluez_utils.mk
+++ b/package/bluez_utils/bluez_utils.mk
@@ -8,7 +8,7 @@ BLUEZ_UTILS_VERSION = 4.101
BLUEZ_UTILS_SOURCE = bluez-$(BLUEZ_UTILS_VERSION).tar.xz
BLUEZ_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth
BLUEZ_UTILS_INSTALL_STAGING = YES
-BLUEZ_UTILS_DEPENDENCIES = dbus libglib2
+BLUEZ_UTILS_DEPENDENCIES = host-pkgconf check dbus libglib2
BLUEZ_UTILS_CONF_OPTS = --enable-test --enable-tools
BLUEZ_UTILS_AUTORECONF = YES
BLUEZ_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 9825c09ad2..f0a2385706 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -98,8 +98,21 @@ config BR2_PACKAGE_BOOST_IOSTREAMS
config BR2_PACKAGE_BOOST_LOCALE
bool "boost-locale"
+ # When boost-locale is enabled with icu support, Boost no
+ # longer supports building the libboost_* libraries as static
+ # libraries, causing build failures when other boost features
+ # than boost-locale are enabled. To work around this, we
+ # prevent using boost-locale on static linking configurations
+ # with icu enabled. See
+ # https://svn.boost.org/trac/boost/ticket/9685 for more
+ # details.
+ depends on !(BR2_STATIC_LIBS && BR2_PACKAGE_ICU)
select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
+comment "boost-locale needs a toolchain w/ dynamic library"
+ depends on BR2_PACKAGE_ICU
+ depends on BR2_STATIC_LIBS
+
config BR2_PACKAGE_BOOST_LOG
bool "boost-log"
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
diff --git a/package/c-icap/c-icap.mk b/package/c-icap/c-icap.mk
index e57ecd0ae0..c722098c59 100644
--- a/package/c-icap/c-icap.mk
+++ b/package/c-icap/c-icap.mk
@@ -27,17 +27,17 @@ C_ICAP_CONF_ENV = ac_cv_10031b_ipc_sem=yes ac_cv_fcntl=yes
C_ICAP_AUTORECONF = YES
ifeq ($(BR2_PACKAGE_BERKELEYDB),y)
-C_ICAP_CONF_OPTS += --with-berkeleydb
+C_ICAP_CONF_OPTS += --with-bdb
C_ICAP_DEPENDENCIES += berkeleydb
else
-C_ICAP_CONF_OPTS += --without-berkeleydb
+C_ICAP_CONF_OPTS += --without-bdb
endif
ifeq ($(BR2_PACKAGE_BZIP2),y)
-C_ICAP_CONF_OPTS += --with-bzip2
+C_ICAP_CONF_OPTS += --with-bzlib
C_ICAP_DEPENDENCIES += bzip2
else
-C_ICAP_CONF_OPTS += --without-bzip2
+C_ICAP_CONF_OPTS += --without-bzlib
endif
ifeq ($(BR2_PACKAGE_LIBMEMCACHED),y)
diff --git a/package/clamav/0003-backtrace-uClibc.patch b/package/clamav/0002-backtrace-uClibc.patch
index 82ad67307d..82ad67307d 100644
--- a/package/clamav/0003-backtrace-uClibc.patch
+++ b/package/clamav/0002-backtrace-uClibc.patch
diff --git a/package/connman/Config.in b/package/connman/Config.in
index 28cf16861c..253c604e88 100644
--- a/package/connman/Config.in
+++ b/package/connman/Config.in
@@ -33,12 +33,16 @@ config BR2_PACKAGE_CONNMAN_WIFI
config BR2_PACKAGE_CONNMAN_WISPR
bool "enable WISPr support"
+ depends on !BR2_STATIC_LIBS # gnutls
select BR2_PACKAGE_GNUTLS
help
Enable support for Wireless Internet Service Provider
roaming (WISPr). A RADIUS server is used to authenticate the
subscriber's credentials.
+comment "connman WISPr needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
+
config BR2_PACKAGE_CONNMAN_BLUETOOTH
bool "enable Bluetooth support"
help
diff --git a/package/cppcms/cppcms.mk b/package/cppcms/cppcms.mk
index 1f6c09dfa9..9d05e8150f 100644
--- a/package/cppcms/cppcms.mk
+++ b/package/cppcms/cppcms.mk
@@ -11,6 +11,10 @@ CPPCMS_LICENSE_FILES = COPYING.TXT
CPPCMS_SITE = http://downloads.sourceforge.net/project/cppcms/cppcms/$(CPPCMS_VERSION)
CPPCMS_INSTALL_STAGING = YES
+# disable rpath to avoid getting /usr/lib added to the link search
+# path
+CPPCMS_CONF_OPTS = -DCMAKE_SKIP_RPATH=ON
+
CPPCMS_DEPENDENCIES = zlib pcre libgcrypt
ifeq ($(BR2_PACKAGE_CPPCMS_ICU),y)
diff --git a/package/daemon/daemon.mk b/package/daemon/daemon.mk
index dfa573f426..79cf3f7aab 100644
--- a/package/daemon/daemon.mk
+++ b/package/daemon/daemon.mk
@@ -14,6 +14,7 @@ define DAEMON_CONFIGURE_CMDS
endef
define DAEMON_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) ready
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D)
endef
diff --git a/package/dhcp/dhcp.mk b/package/dhcp/dhcp.mk
index 4d2cb06352..45cae087aa 100644
--- a/package/dhcp/dhcp.mk
+++ b/package/dhcp/dhcp.mk
@@ -102,6 +102,7 @@ define DHCP_INSTALL_INIT_SYSTEMD
ln -sf ../../../../usr/lib/systemd/system/dhcpd.service \
$(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/dhcpd.service
+ mkdir -p $(TARGET_DIR)/usr/lib/tmpfiles.d
echo "d /var/lib/dhcp 0755 - - - -" > \
$(TARGET_DIR)/usr/lib/tmpfiles.d/dhcpd.conf
echo "f /var/lib/dhcp/dhcpd.leases - - - - -" >> \
diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk
index c4c1157f43..0176f51bb0 100644
--- a/package/docker-engine/docker-engine.mk
+++ b/package/docker-engine/docker-engine.mk
@@ -42,6 +42,11 @@ DOCKER_ENGINE_BUILD_TAGS += seccomp
DOCKER_ENGINE_DEPENDENCIES += libseccomp
endif
+ifeq ($(BR2_INIT_SYSTEMD),y)
+DOCKER_ENGINE_BUILD_TAGS += journald
+DOCKER_ENGINE_DEPENDENCIES += systemd
+endif
+
ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y)
DOCKER_ENGINE_BUILD_TAGS += daemon
DOCKER_ENGINE_BUILD_TARGETS += dockerd
diff --git a/package/dropbear/dropbear.hash b/package/dropbear/dropbear.hash
index 88f3e6ed5d..98776e7179 100644
--- a/package/dropbear/dropbear.hash
+++ b/package/dropbear/dropbear.hash
@@ -1,2 +1,2 @@
# From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc
-sha256 2720ea54ed009af812701bcc290a2a601d5c107d12993e5d92c0f5f81f718891 dropbear-2016.74.tar.bz2
+sha256 6cbc1dcb1c9709d226dff669e5604172a18cf5dbf9a201474d5618ae4465098c dropbear-2017.75.tar.bz2
diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk
index a4e2272157..bf7f99d975 100644
--- a/package/dropbear/dropbear.mk
+++ b/package/dropbear/dropbear.mk
@@ -4,7 +4,7 @@
#
################################################################################
-DROPBEAR_VERSION = 2016.74
+DROPBEAR_VERSION = 2017.75
DROPBEAR_SITE = http://matt.ucc.asn.au/dropbear/releases
DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2
DROPBEAR_LICENSE = MIT, BSD-2-Clause-like, BSD-2-Clause
diff --git a/package/efibootmgr/efibootmgr.hash b/package/efibootmgr/efibootmgr.hash
index f71dced53f..3f934bad08 100644
--- a/package/efibootmgr/efibootmgr.hash
+++ b/package/efibootmgr/efibootmgr.hash
@@ -1,2 +1,3 @@
# locally computed hash
sha256 3f260491e2c62e93cb6347ea6f21aaa5f93152e9e7f0269d314623769d82e473 efibootmgr-14.tar.gz
+sha256 8e91f16927d296ffebd4f7fafda2f84c0f6201aba089a35e8090abd5aacdc58e 3466fd05c8c6f1052e0426d64eed40f8a88fd78f.patch
diff --git a/package/efibootmgr/efibootmgr.mk b/package/efibootmgr/efibootmgr.mk
index 094dd28969..a946d5f00f 100644
--- a/package/efibootmgr/efibootmgr.mk
+++ b/package/efibootmgr/efibootmgr.mk
@@ -6,6 +6,9 @@
EFIBOOTMGR_VERSION = 14
EFIBOOTMGR_SITE = $(call github,rhinstaller,efibootmgr,$(EFIBOOTMGR_VERSION))
+# Patch fixes the build with gcc 6.x.
+EFIBOOTMGR_PATCH = \
+ https://github.com/rhinstaller/efibootmgr/commit/3466fd05c8c6f1052e0426d64eed40f8a88fd78f.patch
EFIBOOTMGR_LICENSE = GPL-2.0+
EFIBOOTMGR_LICENSE_FILES = COPYING
EFIBOOTMGR_DEPENDENCIES = efivar $(if $(BR2_NEEDS_GETTEXT),gettext)
diff --git a/package/efl/Config.in b/package/efl/Config.in
index 371ed3f0d4..6ea57dc94f 100644
--- a/package/efl/Config.in
+++ b/package/efl/Config.in
@@ -178,13 +178,15 @@ config BR2_PACKAGE_EFL_WAYLAND
depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # Evas DRM Engine
depends on BR2_PACKAGE_EFL_EEZE # efl drm
depends on BR2_PACKAGE_EFL_OPENGLES # OpenGL ES with EGL support only
+ depends on BR2_ENABLE_LOCALE # efl-drm <- efl-elput <- linput
select BR2_PACKAGE_EFL_DRM
select BR2_PACKAGE_WAYLAND_PROTOCOLS
-comment "Wayland support needs udev /dev management (eeze) and OpenGL ES w/ EGL, threads"
+comment "Wayland support needs udev /dev management (eeze), OpenGL ES w/ EGL, threads, locales"
depends on BR2_PACKAGE_WAYLAND
depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \
- || !BR2_PACKAGE_EFL_OPENGLES || !BR2_PACKAGE_EFL_EEZE
+ || !BR2_PACKAGE_EFL_OPENGLES || !BR2_PACKAGE_EFL_EEZE \
+ || !BR2_ENABLE_LOCALE
choice
bool "OpenGL support"
@@ -216,6 +218,7 @@ endchoice # OpenGL support
config BR2_PACKAGE_EFL_ELPUT
bool "Elput"
+ depends on BR2_ENABLE_LOCALE # libinput
depends on BR2_PACKAGE_EFL_EEZE
select BR2_PACKAGE_LIBINPUT
select BR2_PACKAGE_LIBXKBCOMMON
@@ -226,23 +229,24 @@ config BR2_PACKAGE_EFL_ELPUT
libinput without having to duplicate the code in each
subsystem.
-comment "Elput support needs udev /dev management (eeze)"
- depends on !BR2_PACKAGE_EFL_EEZE
+comment "Elput support needs udev /dev management (eeze), locales"
+ depends on !BR2_PACKAGE_EFL_EEZE || !BR2_ENABLE_LOCALE
config BR2_PACKAGE_EFL_DRM
bool "Evas DRM Engine"
depends on BR2_PACKAGE_EFL_EEZE
depends on BR2_TOOLCHAIN_HAS_THREADS # libdrm
depends on BR2_PACKAGE_MESA3D_OPENGL_EGL # require libgbm from mesa3d
+ depends on BR2_ENABLE_LOCALE # efl-elput <- libinput
select BR2_PACKAGE_EFL_ELPUT
select BR2_PACKAGE_LIBDRM
select BR2_PACKAGE_LIBXKBCOMMON
help
This option enable building support for the Evas DRM Engine.
-comment "Evas DRM Engine needs udev /dev management (eeze) and mesa3d w/ EGL support, threads"
+comment "Evas DRM Engine needs udev /dev management (eeze), mesa3d w/ EGL support, threads, locales"
depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_PACKAGE_MESA3D_OPENGL_EGL \
- || !BR2_PACKAGE_EFL_EEZE
+ || !BR2_PACKAGE_EFL_EEZE || !BR2_ENABLE_LOCALE
comment "libevas loaders"
diff --git a/package/elfutils/0002-disable-progs.patch b/package/elfutils/0002-disable-progs.patch
index ea6b934dfc..3f80fe60df 100644
--- a/package/elfutils/0002-disable-progs.patch
+++ b/package/elfutils/0002-disable-progs.patch
@@ -1,4 +1,7 @@
-Add a --{enable,disable}-progs configure option
+From dfea82b761b2ea4708fbf9370a5467ae4be525ca Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Mon, 29 May 2017 23:03:48 +0300
+Subject: [PATCH] Add a --{enable,disable}-progs configure option
Add a --{enable,disable}-progs configuration option to elfutils. This
allows to selectively disable the compilation of the elfutils programs
@@ -13,26 +16,15 @@ Based on the former patch by Thomas Petazzoni.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+---
+ Makefile.am | 6 +++++-
+ configure.ac | 6 ++++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
-diff -rup a/configure.ac b/configure.ac
---- a/configure.ac 2016-03-31 09:48:08.000000000 +0100
-+++ b/configure.ac 2016-06-17 14:47:03.561704498 +0100
-@@ -253,6 +253,12 @@ AC_SUBST([LIBEBL_SUBDIR])
- AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
- AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
-
-+AC_ARG_ENABLE([progs],
-+ AS_HELP_STRING([--enable-progs], [enable progs]),
-+ enable_progs=$enableval,
-+ enable_progs=yes)
-+AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes)
-+
- dnl zlib is mandatory.
- save_LIBS="$LIBS"
- LIBS=
-diff -rup a/Makefile.am b/Makefile.am
---- a/Makefile.am 2016-01-12 12:49:19.000000000 +0000
-+++ b/Makefile.am 2016-06-17 14:48:02.585861468 +0100
+diff --git a/Makefile.am b/Makefile.am
+index 2ff444e7bf1d..70443abb4fb6 100644
+--- a/Makefile.am
++++ b/Makefile.am
@@ -26,9 +26,13 @@ AM_MAKEFLAGS = --no-print-directory
pkginclude_HEADERS = version.h
@@ -48,3 +40,23 @@ diff -rup a/Makefile.am b/Makefile.am
EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
COPYING COPYING-GPLV2 COPYING-LGPLV3
+diff --git a/configure.ac b/configure.ac
+index c2c1d90b2133..7b4c38381cca 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -259,6 +259,12 @@ AC_SUBST([LIBEBL_SUBDIR])
+ AC_DEFINE_UNQUOTED(LIBEBL_SUBDIR, "$LIBEBL_SUBDIR")
+ AH_TEMPLATE([LIBEBL_SUBDIR], [$libdir subdirectory containing libebl modules.])
+
++AC_ARG_ENABLE([progs],
++ AS_HELP_STRING([--enable-progs], [enable progs]),
++ enable_progs=$enableval,
++ enable_progs=yes)
++AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes)
++
+ dnl zlib is mandatory.
+ save_LIBS="$LIBS"
+ LIBS=
+--
+2.11.0
+
diff --git a/package/elfutils/0003-fts.patch b/package/elfutils/0003-fts.patch
index 0131b750f8..cf5ba25c82 100644
--- a/package/elfutils/0003-fts.patch
+++ b/package/elfutils/0003-fts.patch
@@ -1,4 +1,7 @@
-Add an implementation of the fts_*() functions
+From 098760f7eac1fb86b3f6871d5bb10f9f44468f2d Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Mon, 29 May 2017 23:08:05 +0300
+Subject: [PATCH] Add an implementation of the fts_*() functions
The fts_*() functions are optional in uClibc, and not compiled in our
default configuration. The best option would be to migrate this
@@ -28,11 +31,21 @@ Based on the former patch by Thomas Petazzoni.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+---
+ configure.ac | 4 +
+ libdwfl/Makefile.am | 3 +
+ libdwfl/fts.c | 1095 ++++++++++++++++++++++++++++++++++++++++
+ libdwfl/fts_.h | 131 +++++
+ libdwfl/linux-kernel-modules.c | 4 +
+ 5 files changed, 1237 insertions(+)
+ create mode 100644 libdwfl/fts.c
+ create mode 100644 libdwfl/fts_.h
-diff -Nrup a/configure.ac b/configure.ac
---- a/configure.ac 2016-06-17 14:47:03.561704498 +0100
-+++ b/configure.ac 2016-06-17 14:52:35.038200412 +0100
-@@ -259,6 +259,10 @@ AC_ARG_ENABLE([progs],
+diff --git a/configure.ac b/configure.ac
+index 7b4c38381cca..bcebb05fa532 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -265,6 +265,10 @@ AC_ARG_ENABLE([progs],
enable_progs=yes)
AM_CONDITIONAL(ENABLE_PROGS, test "$enable_progs" = yes)
@@ -43,9 +56,25 @@ diff -Nrup a/configure.ac b/configure.ac
dnl zlib is mandatory.
save_LIBS="$LIBS"
LIBS=
-diff -Nrup a/libdwfl/fts.c b/libdwfl/fts.c
---- a/libdwfl/fts.c 1970-01-01 01:00:00.000000000 +0100
-+++ b/libdwfl/fts.c 2016-06-17 14:57:26.649912084 +0100
+diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am
+index 89ca92ed8110..a5a5615c5f94 100644
+--- a/libdwfl/Makefile.am
++++ b/libdwfl/Makefile.am
+@@ -77,6 +77,9 @@ endif
+ if LZMA
+ libdwfl_a_SOURCES += lzma.c
+ endif
++if !HAVE_FTS
++libdwfl_a_SOURCES += fts.c
++endif
+
+ libdwfl = $(libdw)
+ libdw = ../libdw/libdw.so
+diff --git a/libdwfl/fts.c b/libdwfl/fts.c
+new file mode 100644
+index 000000000000..f34cc03bd963
+--- /dev/null
++++ b/libdwfl/fts.c
@@ -0,0 +1,1095 @@
+/*-
+ * Copyright (c) 1990, 1993, 1994
@@ -1142,9 +1171,11 @@ diff -Nrup a/libdwfl/fts.c b/libdwfl/fts.c
+ errno = oerrno;
+ return (ret);
+}
-diff -Nrup a/libdwfl/fts_.h b/libdwfl/fts_.h
---- a/libdwfl/fts_.h 1970-01-01 01:00:00.000000000 +0100
-+++ b/libdwfl/fts_.h 2016-06-17 14:58:42.003387566 +0100
+diff --git a/libdwfl/fts_.h b/libdwfl/fts_.h
+new file mode 100644
+index 000000000000..0a070ba8dce5
+--- /dev/null
++++ b/libdwfl/fts_.h
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 1989, 1993
@@ -1277,31 +1308,25 @@ diff -Nrup a/libdwfl/fts_.h b/libdwfl/fts_.h
+__END_DECLS
+
+#endif /* fts.h */
-diff -Nrup a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
---- a/libdwfl/linux-kernel-modules.c 2016-03-02 16:25:38.000000000 +0000
-+++ b/libdwfl/linux-kernel-modules.c 2016-06-17 14:59:50.267724089 +0100
-@@ -29,7 +29,11 @@
- /* We include this before config.h because it can't handle _FILE_OFFSET_BITS.
- Everything we need here is fine if its declarations just come first. */
-
+diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
+index 9d0fef2cf260..47f0e3892294 100644
+--- a/libdwfl/linux-kernel-modules.c
++++ b/libdwfl/linux-kernel-modules.c
+@@ -31,10 +31,14 @@
+ Everything we need here is fine if its declarations just come first.
+ Also, include sys/types.h before fts. On some systems fts.h is not self
+ contained. */
+#ifdef HAVE_FTS_H
- #include <fts.h>
+ #ifdef BAD_FTS
+ #include <sys/types.h>
+ #include <fts.h>
+ #endif
+#else
+#include <fts_.h>
+#endif
#include <config.h>
-
-diff -Nrup a/libdwfl/Makefile.am b/libdwfl/Makefile.am
---- a/libdwfl/Makefile.am 2016-01-12 12:49:19.000000000 +0000
-+++ b/libdwfl/Makefile.am 2016-06-17 15:01:03.492157569 +0100
-@@ -77,6 +77,9 @@ endif
- if LZMA
- libdwfl_a_SOURCES += lzma.c
- endif
-+if !HAVE_FTS
-+libdwfl_a_SOURCES += fts.c
-+endif
-
- libdwfl = $(libdw)
- libdw = ../libdw/libdw.so
+ #include <system.h>
+--
+2.11.0
+
diff --git a/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch b/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch
index aa4d12d6a2..a7017d6e88 100644
--- a/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch
+++ b/package/elfutils/0005-really-make-werror-conditional-to-build-werror.patch
@@ -1,4 +1,7 @@
-Really make -Werror conditional to BUILD_WERROR
+From 1d8f27d73df6369b19ddd6732960df0d4fdec338 Mon Sep 17 00:00:00 2001
+From: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+Date: Mon, 29 May 2017 23:24:42 +0300
+Subject: [PATCH] Really make -Werror conditional to BUILD_WERROR
Otherwise it will fail with an error message like this one:
@@ -12,15 +15,22 @@ cc1: all warnings being treated as errors
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
+---
+ config/eu.am | 1 -
+ 1 file changed, 1 deletion(-)
-diff -rup a/config/eu.am b/config/eu.am
---- a/config/eu.am 2016-03-02 16:25:38.000000000 +0000
-+++ b/config/eu.am 2016-06-17 15:05:08.270974835 +0100
-@@ -65,7 +65,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -W
+diff --git a/config/eu.am b/config/eu.am
+index 8fe1e259f9e2..c5a6209a4e04 100644
+--- a/config/eu.am
++++ b/config/eu.am
+@@ -71,7 +71,6 @@ AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
-Wold-style-definition -Wstrict-prototypes \
$(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \
- $(NULL_DEREFERENCE_WARNING) \
+ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \
- $(if $($(*F)_no_Werror),,-Werror) \
$(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
$(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \
$($(*F)_CFLAGS)
+--
+2.11.0
+
diff --git a/package/elfutils/elfutils.hash b/package/elfutils/elfutils.hash
index 9fa9403f3f..76b6dc6458 100644
--- a/package/elfutils/elfutils.hash
+++ b/package/elfutils/elfutils.hash
@@ -1,2 +1,2 @@
-# Locally calculated
-sha256 3c056914c8a438b210be0d790463b960fc79d234c3f05ce707cbff80e94cba30 elfutils-0.166.tar.bz2
+# From https://sourceware.org/elfutils/ftp/0.169/sha512.sum
+sha512 0a81a20bb2aff533d035d6b76f1403437b2e11bce390db57e34b8c26e4b9b3150346d83dddcbfbbdc58063f046ca3223508dba35c6ce88e375d201e7a777a8b9 elfutils-0.169.tar.bz2
diff --git a/package/elfutils/elfutils.mk b/package/elfutils/elfutils.mk
index de2ef9caa0..e43d0367ad 100644
--- a/package/elfutils/elfutils.mk
+++ b/package/elfutils/elfutils.mk
@@ -4,7 +4,7 @@
#
################################################################################
-ELFUTILS_VERSION = 0.166
+ELFUTILS_VERSION = 0.169
ELFUTILS_SOURCE = elfutils-$(ELFUTILS_VERSION).tar.bz2
ELFUTILS_SITE = https://sourceware.org/elfutils/ftp/$(ELFUTILS_VERSION)
ELFUTILS_INSTALL_STAGING = YES
@@ -20,11 +20,9 @@ HOST_ELFUTILS_AUTORECONF = YES
# Pass a custom program prefix to avoid a naming conflict between
# elfutils binaries and binutils binaries.
ELFUTILS_CONF_OPTS += \
- --disable-werror \
--program-prefix="eu-"
HOST_ELFUTILS_CONF_OPTS = \
- --disable-werror \
--with-bzlib \
--with-lzma \
--disable-progs
diff --git a/package/erlang/Config.in b/package/erlang/Config.in
index 11407db129..1cd93ca955 100644
--- a/package/erlang/Config.in
+++ b/package/erlang/Config.in
@@ -16,11 +16,12 @@ config BR2_PACKAGE_ERLANG
depends on !BR2_STATIC_LIBS
depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
help
- Erlang is a programming language used to build massively scalable
- soft real-time systems with requirements on high availability.
- Some of its uses are in telecoms, banking, e-commerce, computer
- telephony and instant messaging. Erlang's runtime system has
- built-in support for concurrency, distribution and fault tolerance.
+ Erlang is a programming language used to build massively
+ scalable soft real-time systems with requirements on high
+ availability. Some of its uses are in telecoms, banking,
+ e-commerce, computer telephony and instant messaging.
+ Erlang's runtime system has built-in support for
+ concurrency, distribution and fault tolerance.
http://www.erlang.org
@@ -29,18 +30,19 @@ if BR2_PACKAGE_ERLANG
config BR2_PACKAGE_ERLANG_SMP
bool "enable SMP support"
help
- Erlang provides both a UP and an SMP emulator. The UP emulator
- is always built, and this option enables compilation of the SMP
- emulator. The choice of which emulator to use is made at runtime.
- If you do not need SMP support, turning this option off reduces
- compile time and the size of the Erlang installation.
+ Erlang provides both a UP and an SMP emulator. The UP
+ emulator is always built, and this option enables
+ compilation of the SMP emulator. The choice of which
+ emulator to use is made at runtime. If you do not need SMP
+ support, turning this option off reduces compile time and
+ the size of the Erlang installation.
config BR2_PACKAGE_ERLANG_MEGACO
bool "install megaco application"
help
- The Megaco application is a framework for building applications
- on top of the Megaco/H.248 protocol. It is approximately 14MB in
- size so if you do not need it then it is recommended not to
- enable it.
+ The Megaco application is a framework for building
+ applications on top of the Megaco/H.248 protocol. It is
+ approximately 14MB in size so if you do not need it then
+ it is recommended not to enable it.
endif # BR2_PACKAGE_ERLANG
diff --git a/package/espeak/Config.in b/package/espeak/Config.in
index aed627af92..6a8f1d4098 100644
--- a/package/espeak/Config.in
+++ b/package/espeak/Config.in
@@ -27,6 +27,9 @@ config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_NONE
config BR2_PACKAGE_ESPEAK_AUDIO_BACKEND_ALSA
bool "alsa via portaudio"
+ # Selecting portaudio generates spurious "unmet dependencies"
+ # warnings. Unless you are changing the dependencies of espeak
+ # or portaudio, just ignore those spurious warnings.
select BR2_PACKAGE_PORTAUDIO
select BR2_PACKAGE_PORTAUDIO_CXX
diff --git a/package/exim/Config.in b/package/exim/Config.in
index 230ac86f96..aa50a86736 100644
--- a/package/exim/Config.in
+++ b/package/exim/Config.in
@@ -8,8 +8,9 @@ config BR2_PACKAGE_EXIM
select BR2_PACKAGE_PCRE
select BR2_PACKAGE_BERKELEYDB
help
- Exim is a message transfer agent (MTA) developed at the University of
- Cambridge for use on Unix systems connected to the Internet.
+ Exim is a message transfer agent (MTA) developed at the
+ University of Cambridge for use on Unix systems connected to
+ the Internet.
http://www.exim.org/
diff --git a/package/expedite/0001-fix-build-failure-with-gcc-5.patch b/package/expedite/0001-fix-build-failure-with-gcc-5.patch
deleted file mode 100644
index 2d5d6ef033..0000000000
--- a/package/expedite/0001-fix-build-failure-with-gcc-5.patch
+++ /dev/null
@@ -1,289 +0,0 @@
-From 01a29e6a1d2ed083d1a1884dbca37ae518f354c7 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@gmail.com>
-Date: Sun, 30 Apr 2017 12:07:02 +0200
-Subject: [PATCH] fix build failure with gcc < 5
-
-Definition of variables inside the initialization part of for() loops
-was added by [1] and produce some build failure with "old" gcc version
-(gcc < 5).
-
-This way of writing for loop is not consistent with the rest of the
-code. So revert to the C89 for loop syntax.
-
-Reported upstream:
-https://phab.enlightenment.org/T5440
-
-[1] https://git.enlightenment.org/tools/expedite.git/commit/?id=0529ce56b6fb01e9651e76461e9608e15a040fb3
-
-Fixes:
-http://autobuild.buildroot.net/results/930/930796603d37bc309a591eec68037192c51028ce
-
-Signed-off-by: Romain Naour <romain.naour@gmail.com>
----
- src/bin/image_data_argb.c | 9 ++++++---
- src/bin/image_data_argb_alpha.c | 6 ++++--
- src/bin/image_data_ycbcr601pl.c | 12 ++++++++----
- .../image_data_ycbcr601pl_map_nearest_solid_rotate.c | 12 ++++++++----
- src/bin/image_data_ycbcr601pl_map_solid_rotate.c | 12 ++++++++----
- src/bin/image_data_ycbcr601pl_wide_stride.c | 17 +++++++++++------
- 6 files changed, 45 insertions(+), 23 deletions(-)
-
-diff --git a/src/bin/image_data_argb.c b/src/bin/image_data_argb.c
-index d5889ce..9c607b2 100644
---- a/src/bin/image_data_argb.c
-+++ b/src/bin/image_data_argb.c
-@@ -20,12 +20,13 @@ static Evas_Object *o_images[1];
- /* setup */
- static void _setup(void)
- {
-+ int i;
- Evas_Object *o;
- Eina_Slice sl;
-
- sl.len = 640 * 480 * 4;
- sl.mem = malloc(sl.len);
-- for (int i = 0; i < 1; i++)
-+ for (i = 0; i < 1; i++)
- {
- o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
-@@ -42,7 +43,8 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
- Evas_Object *o = o_images[i];
- Eina_Slice sl = {};
-@@ -56,7 +58,8 @@ static void _cleanup(void)
- /* loop - do things */
- static void _loop(double t, int f)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
- Evas_Object *o = o_images[i];
- unsigned int *data, *p;
-diff --git a/src/bin/image_data_argb_alpha.c b/src/bin/image_data_argb_alpha.c
-index 79f4c54..ffbe57e 100644
---- a/src/bin/image_data_argb_alpha.c
-+++ b/src/bin/image_data_argb_alpha.c
-@@ -20,12 +20,13 @@ static Evas_Object *o_images[1];
- /* setup */
- static void _setup(void)
- {
-+ int i;
- Evas_Object *o;
- Eina_Slice sl;
-
- sl.len = 640 * 480 * 4;
- sl.mem = malloc(sl.len);
-- for (int i = 0; i < 1; i++)
-+ for (i = 0; i < 1; i++)
- {
- o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
-@@ -42,7 +43,8 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
- Evas_Object *o = o_images[i];
- Eina_Slice sl = {};
-diff --git a/src/bin/image_data_ycbcr601pl.c b/src/bin/image_data_ycbcr601pl.c
-index 032d5b3..e126e98 100644
---- a/src/bin/image_data_ycbcr601pl.c
-+++ b/src/bin/image_data_ycbcr601pl.c
-@@ -21,9 +21,11 @@ static Eina_Slice slice[3];
- /* setup */
- static void _setup(void)
- {
-+ int i;
- FILE *f;
-- for (int i = 0; i < 1; i++)
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
- efl_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
-@@ -37,7 +39,7 @@ static void _setup(void)
- slice[2].len = 320 * 240;
- f = fopen(build_path("tp.yuv"), "rb");
- if (!f) continue;
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- slice[p].mem = malloc(slice[p].len);
- fread((void *) slice[p].mem, slice[p].len, 1, f);
-@@ -51,10 +53,12 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = o_images[i];
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- efl_gfx_buffer_managed_set(o, NULL, 640, 480, 0, EFL_GFX_COLORSPACE_YCBCR422P601_PL, p);
- free((void *) slice[p].mem);
-diff --git a/src/bin/image_data_ycbcr601pl_map_nearest_solid_rotate.c b/src/bin/image_data_ycbcr601pl_map_nearest_solid_rotate.c
-index 0a5bcf4..db52b0b 100644
---- a/src/bin/image_data_ycbcr601pl_map_nearest_solid_rotate.c
-+++ b/src/bin/image_data_ycbcr601pl_map_nearest_solid_rotate.c
-@@ -21,9 +21,11 @@ static Eina_Slice slice[3];
- /* setup */
- static void _setup(void)
- {
-+ int i;
- FILE *f;
-- for (int i = 0; i < 1; i++)
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
- efl_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
-@@ -37,7 +39,7 @@ static void _setup(void)
- slice[2].len = 320 * 240;
- f = fopen(build_path("tp.yuv"), "rb");
- if (!f) continue;
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- slice[p].mem = malloc(slice[p].len);
- fread((void *) slice[p].mem, slice[p].len, 1, f);
-@@ -51,10 +53,12 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = o_images[i];
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- efl_gfx_buffer_managed_set(o, NULL, 640, 480, 0, EFL_GFX_COLORSPACE_YCBCR422P601_PL, p);
- free((void *) slice[p].mem);
-diff --git a/src/bin/image_data_ycbcr601pl_map_solid_rotate.c b/src/bin/image_data_ycbcr601pl_map_solid_rotate.c
-index 355293f..ac4364d 100644
---- a/src/bin/image_data_ycbcr601pl_map_solid_rotate.c
-+++ b/src/bin/image_data_ycbcr601pl_map_solid_rotate.c
-@@ -22,8 +22,10 @@ static Eina_Slice slice[3];
- static void _setup(void)
- {
- FILE *f;
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
- efl_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
-@@ -37,7 +39,7 @@ static void _setup(void)
- slice[2].len = 320 * 240;
- f = fopen(build_path("tp.yuv"), "rb");
- if (!f) continue;
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- slice[p].mem = malloc(slice[p].len);
- fread((void *) slice[p].mem, slice[p].len, 1, f);
-@@ -51,10 +53,12 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = o_images[i];
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- efl_gfx_buffer_managed_set(o, NULL, 640, 480, 0, EFL_GFX_COLORSPACE_YCBCR422P601_PL, p);
- free((void *) slice[p].mem);
-diff --git a/src/bin/image_data_ycbcr601pl_wide_stride.c b/src/bin/image_data_ycbcr601pl_wide_stride.c
-index d4e8fa2..9adb62f 100644
---- a/src/bin/image_data_ycbcr601pl_wide_stride.c
-+++ b/src/bin/image_data_ycbcr601pl_wide_stride.c
-@@ -21,11 +21,13 @@ static Eina_Slice slice[3];
- /* setup */
- static void _setup(void)
- {
-+ int i;
- int stride;
- FILE *f;
- int w = 320 - 16;
-- for (int i = 0; i < 1; i++)
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = efl_add(EFL_CANVAS_IMAGE_CLASS, evas);
- o_images[i] = o;
- efl_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC);
-@@ -41,7 +43,7 @@ static void _setup(void)
- f = fopen(build_path("tp.yuv"), "rb");
- if (!f) continue;
- stride = 640;
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- slice[p].mem = malloc(slice[p].len);
- fread((void *) slice[p].mem, slice[p].len, 1, f);
-@@ -57,10 +59,12 @@ static void _setup(void)
- /* cleanup */
- static void _cleanup(void)
- {
-- for (int i = 0; i < 1; i++)
-+ int i;
-+ for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = o_images[i];
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- efl_gfx_buffer_managed_set(o, NULL, 640, 480, 0,
- EFL_GFX_COLORSPACE_YCBCR422P601_PL, p);
-@@ -77,11 +81,12 @@ static void _loop(double t, int f)
- Evas_Coord x, y, w, h;
- for (i = 0; i < 1; i++)
- {
-+ int p;
- Evas_Object *o = o_images[i];
- Eina_Slice sl[3];
- int stride;
-
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- efl_gfx_buffer_managed_get(o, &sl[p], p);
-
- w = 640;
-@@ -97,7 +102,7 @@ static void _loop(double t, int f)
- if (w > 640) w = 320;
-
- stride = 640;
-- for (int p = 0; p < 3; p++)
-+ for (p = 0; p < 3; p++)
- {
- efl_gfx_buffer_managed_set(o, &sl[p], w, 480, stride,
- EFL_GFX_COLORSPACE_YCBCR422P601_PL, p);
---
-2.9.3
-
diff --git a/package/expedite/expedite.hash b/package/expedite/expedite.hash
index 2d1db59c89..828ee0553b 100644
--- a/package/expedite/expedite.hash
+++ b/package/expedite/expedite.hash
@@ -1,2 +1,2 @@
# locally computed
-sha256 007e382861555f1023b679e21ff44122b0622c514ce8ef9d7c390b9ac1511009 expedite-0529ce56b6fb01e9651e76461e9608e15a040fb3.tar.gz
+sha256 56e1dbd9826d932f0ef72a10dfdf32b6e0f680ab6830f8a8cfc60644ac69dbf1 expedite-e7b11dd328d9db82b49cde795944a721beaf0112.tar.gz
diff --git a/package/expedite/expedite.mk b/package/expedite/expedite.mk
index d49e87a1a8..6bd4b007ba 100644
--- a/package/expedite/expedite.mk
+++ b/package/expedite/expedite.mk
@@ -4,7 +4,7 @@
#
################################################################################
-EXPEDITE_VERSION = 0529ce56b6fb01e9651e76461e9608e15a040fb3
+EXPEDITE_VERSION = e7b11dd328d9db82b49cde795944a721beaf0112
EXPEDITE_SITE = http://git.enlightenment.org/tools/expedite.git
EXPEDITE_SITE_METHOD = git
EXPEDITE_LICENSE = BSD-2-Clause
diff --git a/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch b/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch
new file mode 100644
index 0000000000..f8c7484452
--- /dev/null
+++ b/package/faketime/0001-Disable-the-non-null-compare-warning-error.patch
@@ -0,0 +1,32 @@
+From e85a157b51b1276c91c736d8624d9f3e876e9189 Mon Sep 17 00:00:00 2001
+From: Andreas Rammhold <andreas@rammhold.de>
+Date: Tue, 20 Dec 2016 19:25:32 +0100
+Subject: [PATCH] Disable the non-null compare warning/error.
+
+We rely on the provided local library definitions for the hooked
+functions which in some cases (GCC >6) carry a non-null-attribute flag
+which causes compile errors on `!= NULL` checks.
+
+[Romain: rebase on 0.9.6]
+(cherry picked from commit 47e958b753fc15098a2b7d0e9ef26b83ee255874)
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 51634b0..bbbd476 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -67,7 +67,7 @@ INSTALL ?= install
+ PREFIX ?= /usr/local
+ LIBDIRNAME ?= /lib/faketime
+
+-CFLAGS += -std=gnu99 -Wall -Wextra -Werror -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"'
++CFLAGS += -std=gnu99 -Wall -Wextra -Werror -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"'
+ LIB_LDFLAGS += -shared
+ LDFLAGS += -Wl,--version-script=libfaketime.map -lpthread
+ LDADD += -ldl -lm -lrt
+--
+2.9.3
+
diff --git a/package/fbgrab/fbgrab.mk b/package/fbgrab/fbgrab.mk
index 15e0a95c90..d81a5ee2a0 100644
--- a/package/fbgrab/fbgrab.mk
+++ b/package/fbgrab/fbgrab.mk
@@ -11,7 +11,7 @@ FBGRAB_LICENSE = GPL-2.0
FBGRAB_LICENSE_FILES = COPYING
define FBGRAB_BUILD_CMDS
- $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
+ $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) fbgrab
endef
define FBGRAB_INSTALL_TARGET_CMDS
diff --git a/package/ffmpeg/Config.in b/package/ffmpeg/Config.in
index 383374ddbe..279f94f0d1 100644
--- a/package/ffmpeg/Config.in
+++ b/package/ffmpeg/Config.in
@@ -3,7 +3,13 @@ config BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS
# fenv.h lacks FE_INVALID, FE_OVERFLOW & FE_UNDERFLOW on nios2
# No support for ARMv7-M in the ARM assembly logic
# Microblaze build affected by gcc PR71124 (infinite loop)
- default y if !BR2_nios2 && !BR2_ARM_CPU_ARMV7M && !BR2_microblaze
+ # m68k coldfire causes a build failure, because the check for
+ # atomics (atomic_store) succeeds, which causes ffmpeg to
+ # think atomic intrinsics are available, while they are
+ # not. See https://patchwork.ozlabs.org/patch/756664/ and
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 for more
+ # details.
+ default y if !BR2_nios2 && !BR2_ARM_CPU_ARMV7M && !BR2_microblaze && !BR2_m68k_cf
menuconfig BR2_PACKAGE_FFMPEG
bool "ffmpeg"
diff --git a/package/ffmpeg/ffmpeg.hash b/package/ffmpeg/ffmpeg.hash
index e243acc746..ab7ba5eee3 100644
--- a/package/ffmpeg/ffmpeg.hash
+++ b/package/ffmpeg/ffmpeg.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 599e7f7c017221c22011c4037b88bdcd1c47cd40c1e466838bc3c465f3e9569d ffmpeg-3.3.tar.xz
+sha256 b702a7fc656ac23e276b8c823a2f646e4e6f6309bb2788435a708e69bea98f2f ffmpeg-3.3.1.tar.xz
diff --git a/package/ffmpeg/ffmpeg.mk b/package/ffmpeg/ffmpeg.mk
index 10e4e74d7a..d69923b84f 100644
--- a/package/ffmpeg/ffmpeg.mk
+++ b/package/ffmpeg/ffmpeg.mk
@@ -4,7 +4,7 @@
#
################################################################################
-FFMPEG_VERSION = 3.3
+FFMPEG_VERSION = 3.3.1
FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz
FFMPEG_SITE = http://ffmpeg.org/releases
FFMPEG_INSTALL_STAGING = YES
diff --git a/package/firejail/Config.in b/package/firejail/Config.in
deleted file mode 100644
index 764217b217..0000000000
--- a/package/firejail/Config.in
+++ /dev/null
@@ -1,21 +0,0 @@
-config BR2_PACKAGE_FIREJAIL
- bool "firejail"
- depends on BROKEN # does not cross-compile at all
- depends on BR2_USE_MMU # fork()
- depends on BR2_TOOLCHAIN_HAS_THREADS
- # uClibc: error: ‘EM_ARM’ undeclared
- depends on !BR2_TOOLCHAIN_USES_UCLIBC
- help
- Firejail is a SUID program that reduces the risk of security
- breaches by restricting the running environment of untrusted
- applications using Linux namespaces and seccomp-bpf. It
- allows a process and all its descendants to have their own
- private view of the globally shared kernel resources, such
- as the network stack, process table, mount table.
-
- https://firejail.wordpress.com/
-
-comment "firejail needs a glibc or musl toolchain w/ threads"
- depends on BR2_USE_MMU
- depends on BROKEN
- depends on BR2_TOOLCHAIN_USES_UCLIBC || !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/firejail/firejail.hash b/package/firejail/firejail.hash
deleted file mode 100644
index 0cb86b45a4..0000000000
--- a/package/firejail/firejail.hash
+++ /dev/null
@@ -1,3 +0,0 @@
-# From https://sourceforge.net/projects/firejail/files/firejail/
-md5 7e6dca7202b1d70105b39646755cc620 firejail-0.9.44.8.tar.xz
-sha1 019423df0aee84d474f9fcd1f6a871a2fe8aa9a5 firejail-0.9.44.8.tar.xz
diff --git a/package/firejail/firejail.mk b/package/firejail/firejail.mk
deleted file mode 100644
index 858f547a1e..0000000000
--- a/package/firejail/firejail.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-################################################################################
-#
-# firejail
-#
-################################################################################
-
-FIREJAIL_VERSION = 0.9.44.8
-FIREJAIL_SITE = http://download.sourceforge.net/firejail
-FIREJAIL_SOURCE = firejail-$(FIREJAIL_VERSION).tar.xz
-FIREJAIL_LICENSE = GPL-2.0+
-FIREJAIL_LICENSE_FILES = COPYING
-
-FIREJAIL_CONF_OPTS = \
- --enable-bind \
- --enable-file-transfer \
- --enable-network \
- --enable-seccomp \
- --enable-userns
-
-ifeq ($(BR2_PACKAGE_BUSYBOX),y)
-FIREJAIL_CONF_OPTS += --enable-busybox-workaround
-endif
-
-define FIREJAIL_PERMISSIONS
- /usr/bin/firejail f 4755 0 0 - - - - -
-endef
-
-$(eval $(autotools-package))
diff --git a/package/flashrom/0002-sys-io.h.patch b/package/flashrom/0002-sys-io.h.patch
deleted file mode 100644
index 8d990c6f91..0000000000
--- a/package/flashrom/0002-sys-io.h.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-hwaccess: sys/io.h is not specific to glibc
-
-Under Linux, sys/io.h provides inb and outb, so we really need it.
-However, its inclusion is conditional to the _GLIBC_ define. This is
-usually OK under Linux, since both glibc and uClibc define it (uclibc
-fakes being glibc).
-
-But the musl C library does not impersonate glibc, so we're missing
-including sys/io.h in this case.
-
-Change the include from checking _GLIBC_ to checking whether this is
-Linux, looking for the __linux__ define.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-
-diff -durN flashrom-0.9.8.orig/hwaccess.h flashrom-0.9.8/hwaccess.h
---- flashrom-0.9.8.orig/hwaccess.h 2015-02-10 09:03:10.000000000 +0100
-+++ flashrom-0.9.8/hwaccess.h 2015-10-28 20:01:54.259202484 +0100
-@@ -27,7 +27,7 @@
- #include "platform.h"
-
- #if IS_X86
--#if defined(__GLIBC__)
-+#if defined(__linux__)
- #include <sys/io.h>
- #endif
- #endif
diff --git a/package/flashrom/flashrom.hash b/package/flashrom/flashrom.hash
index a2168699f3..64b67b99cf 100644
--- a/package/flashrom/flashrom.hash
+++ b/package/flashrom/flashrom.hash
@@ -1,2 +1,2 @@
# Locally computed
-sha256 13dc7c895e583111ecca370363a3527d237d178a134a94b20db7df177c05f934 flashrom-0.9.8.tar.bz2
+sha256 cb3156b0f63eb192024b76c0814135930297aac41f80761a5d293de769783c45 flashrom-0.9.9.tar.bz2
diff --git a/package/flashrom/flashrom.mk b/package/flashrom/flashrom.mk
index 0b89bf3e67..4ecdce8f41 100644
--- a/package/flashrom/flashrom.mk
+++ b/package/flashrom/flashrom.mk
@@ -4,7 +4,7 @@
#
################################################################################
-FLASHROM_VERSION = 0.9.8
+FLASHROM_VERSION = 0.9.9
FLASHROM_SOURCE = flashrom-$(FLASHROM_VERSION).tar.bz2
FLASHROM_SITE = http://download.flashrom.org/releases
FLASHROM_DEPENDENCIES = pciutils libusb libusb-compat libftdi host-pkgconf
diff --git a/package/ftop/Config.in b/package/ftop/Config.in
index 1f5ebbbbfa..aefe4f5151 100644
--- a/package/ftop/Config.in
+++ b/package/ftop/Config.in
@@ -5,4 +5,4 @@ config BR2_PACKAGE_FTOP
Ftop is to files what top is to processes.
The progress of all open files and file systems can be monitored.
- https://code.google.com/p/ftop/
+ https://sourceforge.net/projects/ftop/
diff --git a/package/ftop/ftop.hash b/package/ftop/ftop.hash
index 06f2fb1f40..ca8dc827ef 100644
--- a/package/ftop/ftop.hash
+++ b/package/ftop/ftop.hash
@@ -1,2 +1,5 @@
-# From https://code.google.com/p/ftop/downloads/detail?name=ftop-1.0.tar.gz&can=2&q=
-sha1 a0523862dd63ed3bec14846b6e05afcfdebb15c2 ftop-1.0.tar.gz
+# From https://sourceforge.net/projects/ftop/files/ftop/1.0/
+md5 57c68b6e7431f4219d9eddaebcb395da ftop-1.0.tar.bz2
+sha1 d3ef1b74825f50c7c442d299b29d23c2478f199b ftop-1.0.tar.bz2
+# Locally computed
+sha256 3a705f4f291384344cd32c3dd5f5f6a7cd7cea7624c83cb7e923966dbcd47f82 ftop-1.0.tar.bz2
diff --git a/package/ftop/ftop.mk b/package/ftop/ftop.mk
index d10e9cd0cd..5498fb524a 100644
--- a/package/ftop/ftop.mk
+++ b/package/ftop/ftop.mk
@@ -5,7 +5,8 @@
################################################################################
FTOP_VERSION = 1.0
-FTOP_SITE = http://ftop.googlecode.com/files
+FTOP_SOURCE = ftop-$(FTOP_VERSION).tar.bz2
+FTOP_SITE = https://sourceforge.net/projects/ftop/files/ftop/$(FTOP_VERSION)
FTOP_DEPENDENCIES = ncurses
FTOP_LICENSE = GPL-3.0+
FTOP_LICENSE_FILES = COPYING
diff --git a/package/fxload/Config.in b/package/fxload/Config.in
index ac190f043e..d178e2c903 100644
--- a/package/fxload/Config.in
+++ b/package/fxload/Config.in
@@ -1,5 +1,9 @@
config BR2_PACKAGE_FXLOAD
bool "fxload"
+ # Hits gcc PR63261 on Microblaze with debugging symbols
+ # enabled. Since this package is unlikely to be useful on
+ # Microblaze, just disable it on this architecture.
+ depends on !BR2_microblaze
help
This program is conveniently able to download firmware into FX, FX2,
and FX2LP EZ-USB devices, as well as the original AnchorChips EZ-USB.
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index 3e7fb807f9..2b78b29d4a 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -92,7 +92,7 @@ config BR2_GCC_VERSION
default "5.4.0" if BR2_GCC_VERSION_5_X
default "6.3.0" if BR2_GCC_VERSION_6_X
default "7.1.0" if BR2_GCC_VERSION_7_X
- default "arc-2017.03-rc1" if BR2_GCC_VERSION_ARC
+ default "arc-2017.03" if BR2_GCC_VERSION_ARC
default "musl-5.4.0" if BR2_GCC_VERSION_OR1K
config BR2_EXTRA_GCC_CONFIG_OPTIONS
diff --git a/package/gcc/arc-2016.09-release/895-arc-define-_REENTRANT-when-pthread-is-passed.patch b/package/gcc/arc-2016.09-release/895-arc-define-_REENTRANT-when-pthread-is-passed.patch
deleted file mode 100644
index ee9add53c4..0000000000
--- a/package/gcc/arc-2016.09-release/895-arc-define-_REENTRANT-when-pthread-is-passed.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4c6367c99461fdd7bd5613483f2582d7f08fba87 Mon Sep 17 00:00:00 2001
-From: Vlad Zakharov <vzakhar@synopsys.com>
-Date: Tue, 28 Feb 2017 17:41:11 +0300
-Subject: [PATCH] arc: define _REENTRANT when -pthread is passed
-
-The compiler is supposed to have the builtin defined _REENTRANT defined
-when -pthread is passed, which wasn't done on the ARC architecture.
-
-When _REENTRANT is not passed, the C library will not use reentrant
-functions, and the latest version of ax_pthread.m4 from the
-autoconf-archive will no longer detect that thread support is
-available (see https://savannah.gnu.org/patch/?8186).
-
-Signed-off-by: Vlad Zakharov <vzakhar@synopsys.com>
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
----
- gcc/config/arc/arc.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h
-index 611ef54..fdd4b5d 100644
---- a/gcc/config/arc/arc.h
-+++ b/gcc/config/arc/arc.h
-@@ -93,6 +93,7 @@ along with GCC; see the file COPYING3. If not see
- %{mdsp-packa:-D__Xdsp_packa} %{mcrc:-D__Xcrc} %{mdvbf:-D__Xdvbf} \
- %{mtelephony:-D__Xtelephony} %{mxy:-D__Xxy} %{mmul64: -D__Xmult32} \
- %{mlock:-D__Xlock} %{mswape:-D__Xswape} %{mrtsc:-D__Xrtsc} \
-+%{pthread:-D_REENTRANT} \
- %{mcpu=nps400:-D__NPS400__}"
-
- #define CC1_SPEC "\
---
-2.7.4
-
diff --git a/package/gcc/arc-2017.03/0001-ARC-Fix-tst_movb-pattern.patch b/package/gcc/arc-2017.03/0001-ARC-Fix-tst_movb-pattern.patch
new file mode 100644
index 0000000000..3b09a13019
--- /dev/null
+++ b/package/gcc/arc-2017.03/0001-ARC-Fix-tst_movb-pattern.patch
@@ -0,0 +1,55 @@
+From 08235ef444fd32d311fc9edb65895133820462e3 Mon Sep 17 00:00:00 2001
+From: claziss <claziss@synopsys.com>
+Date: Wed, 24 May 2017 12:53:43 +0200
+Subject: [PATCH] [ARC] Fix tst_movb pattern.
+
+The tst_movb pattern is missing guarding when spitting.
+
+gcc/
+2017-05-24 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * config/arc/arc.md (tst_movb): Add guard when splitting.
+
+testsuite/
+2017-05-24 Claudiu Zissulescu <claziss@synopsys.com>
+
+ * gcc.target/arc/pr9001195952.c: New test.
+---
+ gcc/config/arc/arc.md | 2 +-
+ gcc/testsuite/gcc.target/arc/pr9001195952.c | 11 +++++++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+ create mode 100755 gcc/testsuite/gcc.target/arc/pr9001195952.c
+
+diff --git a/gcc/config/arc/arc.md b/gcc/config/arc/arc.md
+index e78abaaafc42..d5510aeb0600 100644
+--- a/gcc/config/arc/arc.md
++++ b/gcc/config/arc/arc.md
+@@ -863,7 +863,7 @@ archs4xd, archs4xd_slow"
+ (clobber (match_scratch:SI 3 "=X,X,X,X,X,X,Rrq,Rrq,c"))]
+ "TARGET_NPS_BITOPS"
+ "movb.f.cl %3,%1,%p2,%p2,%s2"
+- "reload_completed
++ "TARGET_NPS_BITOPS && reload_completed
+ && (extract_constrain_insn_cached (insn), (which_alternative & ~1) != 6)"
+ [(set (match_dup 0) (match_dup 4))])
+
+diff --git a/gcc/testsuite/gcc.target/arc/pr9001195952.c b/gcc/testsuite/gcc.target/arc/pr9001195952.c
+new file mode 100755
+index 000000000000..252438d8d78b
+--- /dev/null
++++ b/gcc/testsuite/gcc.target/arc/pr9001195952.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-skip-if "" { ! { clmcpu } } } */
++/* { dg-options "-mcpu=archs -Os -w -fpic" } */
++
++/* tst_movb split pattern is wrong for anything else than NPS
++ chip. */
++__bswap_32___bsx() {
++ int a = __builtin_bswap32(__bswap_32___bsx);
++ if (a & 1048575)
++ zlog_warn();
++}
+--
+2.7.4
+
diff --git a/package/gcc/arc-2017.03-rc1/301-missing-execinfo_h.patch b/package/gcc/arc-2017.03/301-missing-execinfo_h.patch
index 2d0e7baa44..2d0e7baa44 100644
--- a/package/gcc/arc-2017.03-rc1/301-missing-execinfo_h.patch
+++ b/package/gcc/arc-2017.03/301-missing-execinfo_h.patch
diff --git a/package/gcc/arc-2017.03-rc1/860-cilk-wchar.patch b/package/gcc/arc-2017.03/860-cilk-wchar.patch
index 1d9916f554..1d9916f554 100644
--- a/package/gcc/arc-2017.03-rc1/860-cilk-wchar.patch
+++ b/package/gcc/arc-2017.03/860-cilk-wchar.patch
diff --git a/package/gcc/arc-2017.03-rc1/940-uclinux-enable-threads.patch b/package/gcc/arc-2017.03/940-uclinux-enable-threads.patch
index 5532656725..5532656725 100644
--- a/package/gcc/arc-2017.03-rc1/940-uclinux-enable-threads.patch
+++ b/package/gcc/arc-2017.03/940-uclinux-enable-threads.patch
diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
index 7a37bb6da1..f64329b072 100644
--- a/package/gcc/gcc.hash
+++ b/package/gcc/gcc.hash
@@ -8,6 +8,6 @@ sha512 234dd9b1bdc9a9c6e352216a7ef4ccadc6c07f156006a59759c5e0e6a69f0abcdc14630e
sha512 b5d952be9a10f0e0926bb2868877d10544039d6d2f35ba0a08f51231dd622a007650764a03e173194701467547789ad7d2d9cbc10adcdf118d619cdedbd14aec gcc-7.1.0.tar.bz2
# Locally calculated (fetched from Github)
-sha512 e4fe5a179b8feabf932a8a6f4794ff6907b868a65487412d855a4b3671aa24ec8544a44f3b63e69ea2c12fcd4d8028d0619d40bf016ee7c1a5b5a99aa9315ef3 gcc-arc-2017.03-rc1.tar.gz
+sha512 282f76b8b63372f5b4426092b80d36da96cd0bda2a8588405b9ec22806c69fafb696b0e0df65bc36c3c3aa8ce5befc24246fd5c6ddb21dcde01f45f7b11ff7c4 gcc-arc-2017.03.tar.gz
# Locally calculated (fetched from Github)
sha512 841101f7de45f327bf2e92f3efc73ca88a021e4b9b541458ce80a16e55882bd8606a8492d75c57c589ee2c10d42ae2865b67690155d7289a541df1d68096402f gcc-musl-5.4.0.tar.gz
diff --git a/package/gdb/Config.in.host b/package/gdb/Config.in.host
index 62b5b1a58c..cd763aa9be 100644
--- a/package/gdb/Config.in.host
+++ b/package/gdb/Config.in.host
@@ -55,7 +55,7 @@ endif
# If cross-gdb is not enabled, the latest working version is chosen.
config BR2_GDB_VERSION
string
- default "arc-2017.03-rc1-gdb" if BR2_arc
+ default "arc-2017.03-gdb" if BR2_arc
default "6be65fb56ea6694a9260733a536a023a1e2d4d57" if BR2_microblaze
default "7.10.1" if BR2_GDB_VERSION_7_10
default "7.11.1" if BR2_GDB_VERSION_7_11 || !BR2_PACKAGE_HOST_GDB
diff --git a/package/gdb/gdb.hash b/package/gdb/gdb.hash
index efb5b11d7b..b0f8a6e042 100644
--- a/package/gdb/gdb.hash
+++ b/package/gdb/gdb.hash
@@ -5,4 +5,4 @@ sha512 0ac8d0a495103611ef41167a08313a010dce6ca4c6d827cbe8558a0c1a1a8a6bfa53f1b7
# Locally calculated (fetched from Github)
sha512 0a467091d4b01fbecabb4b8da1cb743025c70e7f4874a0b5c8fa2ec623569a39bde6762b91806de0be6e63711aeb6909715cfbe43860de73d8aec6159a9f10a7 gdb-6be65fb56ea6694a9260733a536a023a1e2d4d57.tar.gz
-sha512 0bd0ec8169ee059493675db59170f09a6c16d12408a426d6f07892a72d43b73e3ef0059ea409e9fb72998da6cb762d336b852d2e13e2817a0a0fe976e20803bd gdb-arc-2017.03-rc1-gdb.tar.gz
+sha512 8ec849a5ea1c16f104c51c4813c35ab229e460eef0025967673b87316f62b5171f05448cda018464914d43d2da50b2902eb7f9f060d0af1368a9db111f959668 gdb-arc-2017.03-gdb.tar.gz
diff --git a/package/gnutls/Config.in b/package/gnutls/Config.in
index 1af00cd71a..1db069c655 100644
--- a/package/gnutls/Config.in
+++ b/package/gnutls/Config.in
@@ -1,5 +1,7 @@
config BR2_PACKAGE_GNUTLS
bool "gnutls"
+ # https://gitlab.com/gnutls/gnutls/issues/203
+ depends on !BR2_STATIC_LIBS
depends on BR2_USE_WCHAR
select BR2_PACKAGE_LIBTASN1
select BR2_PACKAGE_LIBUNISTRING
@@ -22,5 +24,5 @@ config BR2_PACKAGE_GNUTLS_TOOLS
endif
-comment "gnutls needs a toolchain w/ wchar"
- depends on !BR2_USE_WCHAR
+comment "gnutls needs a toolchain w/ wchar, dynamic library"
+ depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
diff --git a/package/gnutls/gnutls.hash b/package/gnutls/gnutls.hash
index 64b86d7599..8e2469a5bd 100644
--- a/package/gnutls/gnutls.hash
+++ b/package/gnutls/gnutls.hash
@@ -1,2 +1,2 @@
# Locally calculated after checking pgp signature
-sha256 af443e86ba538d4d3e37c4732c00101a492fe4b56a55f4112ff0ab39dbe6579d gnutls-3.5.10.tar.xz
+sha256 63cb39a5eaa029381df2e49a74cfb7be89fc4a592445191818ffe1e66bde57cb gnutls-3.5.12.tar.xz
diff --git a/package/gnutls/gnutls.mk b/package/gnutls/gnutls.mk
index 47da90fd79..c192469f9e 100644
--- a/package/gnutls/gnutls.mk
+++ b/package/gnutls/gnutls.mk
@@ -5,7 +5,7 @@
################################################################################
GNUTLS_VERSION_MAJOR = 3.5
-GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).10
+GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).12
GNUTLS_SOURCE = gnutls-$(GNUTLS_VERSION).tar.xz
GNUTLS_SITE = ftp://ftp.gnutls.org/gcrypt/gnutls/v$(GNUTLS_VERSION_MAJOR)
GNUTLS_LICENSE = LGPL-2.1+ (core library), GPL-3.0+ (gnutls-openssl library)
diff --git a/package/google-breakpad/google-breakpad.mk b/package/google-breakpad/google-breakpad.mk
index 191ee5bec2..3501f45b12 100644
--- a/package/google-breakpad/google-breakpad.mk
+++ b/package/google-breakpad/google-breakpad.mk
@@ -23,14 +23,14 @@ define HOST_GOOGLE_BREAKPAD_LSS
$(HOST_DIR)/usr/include/linux_syscall_support.h \
$(@D)/src/third_party/lss/linux_syscall_support.h
endef
-HOST_GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += HOST_GOOGLE_BREAKPAD_LSS
+HOST_GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += HOST_GOOGLE_BREAKPAD_LSS
define GOOGLE_BREAKPAD_LSS
$(INSTALL) -D -m 0644 \
$(STAGING_DIR)/usr/include/linux_syscall_support.h \
$(@D)/src/third_party/lss/linux_syscall_support.h
endef
-GOOGLE_BREAKPAD_POST_EXTRACT_HOOKS += GOOGLE_BREAKPAD_LSS
+GOOGLE_BREAKPAD_PRE_CONFIGURE_HOOKS += GOOGLE_BREAKPAD_LSS
define GOOGLE_BREAKPAD_EXTRACT_SYMBOLS
$(EXTRA_ENV) package/google-breakpad/gen-syms.sh $(STAGING_DIR) \
diff --git a/package/gpsd/0001-do-not-interact-with-systemctl-when-cross-compiling.patch b/package/gpsd/0001-do-not-interact-with-systemctl-when-cross-compiling.patch
new file mode 100644
index 0000000000..9e91a02ef3
--- /dev/null
+++ b/package/gpsd/0001-do-not-interact-with-systemctl-when-cross-compiling.patch
@@ -0,0 +1,41 @@
+From 777cb3737ae85b13642fff48eabb601c4d40f527 Mon Sep 17 00:00:00 2001
+From: James Knight <james.d.knight@live.com>
+Date: Tue, 16 Feb 2016 23:51:08 -0500
+Subject: [PATCH] do not interact with systemctl when cross-compiling
+
+The installation process for GPSd on a systemd environment will attempt
+to reload systemd's manager configuration (systemctl daemon-reload).
+This is to allow the system to take advantage of the newly installed
+GPSd services. When cross-compiling, the installation process should not
+attempt to interact with the build environment's systemd instance (if
+any). The following change checks if the build is not cross compiling
+(via 'not env["sysroot"]') before attempting to do a systemd reload.
+
+Signed-off-by: James Knight <james.d.knight@live.com>
+[yann.morin.1998@free.fr: tweak to apply on 3.16]
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+---
+ SConstruct | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index c3bfd0d1..97c1b3a9 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1909,10 +1909,12 @@ udev_install = Utility('udev-install', 'install', [
+ ] + hotplug_wrapper_install)
+
+ if env['systemd']:
++ env.Requires(udev_install, systemd_install)
++
++if env['systemd'] and not env["sysroot"]:
+ systemctl_daemon_reload = Utility('systemctl-daemon-reload', '', [ 'systemctl daemon-reload || true'])
+ env.AlwaysBuild(systemctl_daemon_reload)
+ env.Precious(systemctl_daemon_reload)
+- env.Requires(udev_install, systemd_install)
+ env.Requires(systemctl_daemon_reload, systemd_install)
+ env.Requires(udev_install, systemctl_daemon_reload)
+
+--
+2.11.0
+
diff --git a/package/hans/hans.mk b/package/hans/hans.mk
index 2e1e0024e2..505858123f 100644
--- a/package/hans/hans.mk
+++ b/package/hans/hans.mk
@@ -10,7 +10,7 @@ HANS_LICENSE = GPL-3.0+
HANS_LICENSE_FILES = LICENSE
define HANS_BUILD_CMDS
- $(TARGET_MAKE_ENV) $(MAKE) GCC="$(TARGET_CC)" GPP="$(TARGET_CXX)" -C $(@D)
+ $(TARGET_MAKE_ENV) $(MAKE1) GCC="$(TARGET_CC)" GPP="$(TARGET_CXX)" -C $(@D)
endef
define HANS_INSTALL_TARGET_CMDS
diff --git a/package/keepalived/Config.in b/package/keepalived/Config.in
index efa745ad9e..0140e62ae2 100644
--- a/package/keepalived/Config.in
+++ b/package/keepalived/Config.in
@@ -2,6 +2,7 @@ config BR2_PACKAGE_KEEPALIVED
bool "keepalived"
depends on BR2_USE_MMU
depends on !BR2_STATIC_LIBS # uses libdl
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
select BR2_PACKAGE_OPENSSL
select BR2_PACKAGE_POPT
help
@@ -15,6 +16,6 @@ config BR2_PACKAGE_KEEPALIVED
http://www.keepalived.org/
-comment "keepalived needs a toolchain w/ dynamic library"
+comment "keepalived needs a toolchain w/ dynamic library, headers >= 3.4"
depends on BR2_USE_MMU
- depends on BR2_STATIC_LIBS
+ depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
diff --git a/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk
index 5f1a55dbb2..217b39591a 100644
--- a/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk
+++ b/package/kodi-jsonschemabuilder/kodi-jsonschemabuilder.mk
@@ -6,7 +6,7 @@
# Not possible to directly refer to kodi variables, because of
# first/second expansion trickery...
-KODI_JSONSCHEMABUILDER_VERSION = 17.1-Krypton
+KODI_JSONSCHEMABUILDER_VERSION = 17.3-Krypton
KODI_JSONSCHEMABUILDER_SITE = $(call github,xbmc,xbmc,$(KODI_JSONSCHEMABUILDER_VERSION))
KODI_JSONSCHEMABUILDER_SOURCE = kodi-$(KODI_JSONSCHEMABUILDER_VERSION).tar.gz
KODI_JSONSCHEMABUILDER_LICENSE = GPL-2.0
diff --git a/package/kodi-texturepacker/kodi-texturepacker.mk b/package/kodi-texturepacker/kodi-texturepacker.mk
index c6d3b0523b..7c3e82a6ce 100644
--- a/package/kodi-texturepacker/kodi-texturepacker.mk
+++ b/package/kodi-texturepacker/kodi-texturepacker.mk
@@ -6,7 +6,7 @@
# Not possible to directly refer to kodi variables, because of
# first/second expansion trickery...
-KODI_TEXTUREPACKER_VERSION = 17.1-Krypton
+KODI_TEXTUREPACKER_VERSION = 17.3-Krypton
KODI_TEXTUREPACKER_SITE = $(call github,xbmc,xbmc,$(KODI_TEXTUREPACKER_VERSION))
KODI_TEXTUREPACKER_SOURCE = kodi-$(KODI_TEXTUREPACKER_VERSION).tar.gz
KODI_TEXTUREPACKER_LICENSE = GPL-2.0
diff --git a/package/kodi/kodi.hash b/package/kodi/kodi.hash
index 5e76fc50c4..167b179288 100644
--- a/package/kodi/kodi.hash
+++ b/package/kodi/kodi.hash
@@ -1,5 +1,5 @@
# Locally computed
-sha256 303f3903cbb57ccc2961f09cf3746505542bcb129a464f0687d7ca8601cebbee kodi-17.1-Krypton.tar.gz
+sha256 1de8653a3729cefd1baaf09ecde5ace01a1e3a58fbf29d48c1363f2503d331a1 kodi-17.3-Krypton.tar.gz
# Locally computed - libdvdcss
sha256 b6eb2d929ff56cb051152c32010afc5e7cf5fe8c5ae32dca412a2b46b6b57e34 2f12236.tar.gz
# Locally computed - libdvdnav
diff --git a/package/kodi/kodi.mk b/package/kodi/kodi.mk
index 0b89bdd86a..2636a0b96e 100644
--- a/package/kodi/kodi.mk
+++ b/package/kodi/kodi.mk
@@ -6,7 +6,7 @@
# When updating the version, please also update kodi-jsonschemabuilder
# and kodi-texturepacker
-KODI_VERSION = 17.1-Krypton
+KODI_VERSION = 17.3-Krypton
KODI_SITE = $(call github,xbmc,xbmc,$(KODI_VERSION))
KODI_LICENSE = GPL-2.0
KODI_LICENSE_FILES = LICENSE.GPL
diff --git a/package/kvm-unit-tests/0001-x86-hyperv_clock-be-explicit-about-mul-instruction-d.patch b/package/kvm-unit-tests/0001-x86-hyperv_clock-be-explicit-about-mul-instruction-d.patch
new file mode 100644
index 0000000000..c8ee6b1ac4
--- /dev/null
+++ b/package/kvm-unit-tests/0001-x86-hyperv_clock-be-explicit-about-mul-instruction-d.patch
@@ -0,0 +1,35 @@
+From 022ae220d6e7b5bd064bc8698c271dca4dac7d8c Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Mon, 8 May 2017 22:27:25 +0200
+Subject: [PATCH] x86/hyperv_clock: be explicit about mul instruction data size
+
+With gcc 4.7.2, the build fails with:
+
+x86/hyperv_clock.c: Assembler messages:
+x86/hyperv_clock.c:21: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
+
+In order to avoid this, make the mul instruction data size explicit by
+adding the appropriate suffix. It operates on 64-bit data, so use
+"mulq".
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ x86/hyperv_clock.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/x86/hyperv_clock.c b/x86/hyperv_clock.c
+index 8b1deba..6c4dd56 100644
+--- a/x86/hyperv_clock.c
++++ b/x86/hyperv_clock.c
+@@ -19,7 +19,7 @@ static inline u64 scale_delta(u64 delta, u64 mul_frac)
+ u64 product, unused;
+
+ __asm__ (
+- "mul %3"
++ "mulq %3"
+ : "=d" (product), "=a" (unused) : "1" (delta), "rm" ((u64)mul_frac) );
+
+ return product;
+--
+2.7.4
+
diff --git a/package/libepoxy/0002-Make-EGL-support-optional.patch b/package/libepoxy/0002-Make-EGL-support-optional.patch
new file mode 100644
index 0000000000..b114bb268c
--- /dev/null
+++ b/package/libepoxy/0002-Make-EGL-support-optional.patch
@@ -0,0 +1,200 @@
+From 0511fc56e7017209ad18d16551ccaad05de9486c Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Mon, 8 May 2017 23:12:49 +0200
+Subject: [PATCH] Make EGL support optional
+
+It is perfectly possible to build Mesa3D with just OpenGL support, and
+use with GLX in X.org, without having EGL/OpenGLES support.
+
+However, libepoxy currently unconditionally requires EGL support in its
+configure.ac, which causes a build failure when Mesa3D only provides
+full OpenGL support:
+
+checking for EGL... no
+configure: error: Package requirements (egl) were not met:
+
+Package egl was not found in the pkg-config search path.
+Perhaps you should add the directory containing `egl.pc'
+to the PKG_CONFIG_PATH environment variable
+Package 'egl', required by 'world', not found
+
+This commit fixes that by:
+
+ - Adjusting the configure.ac to add a --{enable,disable}-egl option
+ handled in the exact same way as --{enable,disable}-glx
+
+ - Adjusting the meson build logic in the same way.
+
+ - Adjusting src/dispatch_common.h to define PLATFORM_HAS_EGL correctly,
+ which allows to not include any EGL related header file if EGL
+ support is not enabled.
+
+Submitted-upstream: https://github.com/anholt/libepoxy/pull/123
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ configure.ac | 33 ++++++++++++++++++++++++++++-----
+ meson.build | 21 ++++++++++++++++++---
+ meson_options.txt | 5 +++++
+ src/dispatch_common.h | 8 ++++----
+ 4 files changed, 55 insertions(+), 12 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 31b0985..2dbecd9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -88,11 +88,35 @@ AS_CASE([$enable_glx],
+ [AC_MSG_ERROR([Invalid value "$enable_glx" for option "--enable-glx"])]
+ ])
+
+-# The remaining platform specific API for GL/GLES are enabled
+-# depending on the platform we're building for
++AC_ARG_ENABLE([egl],
++ [AC_HELP_STRING([--enable-egl=@<:@auto,yes,no@:>@], [Enable EGL support @<:@default=auto@:>@])],
++ [enable_egl=$enableval],
++ [enable_egl=auto])
++
++AS_CASE([$enable_egl],
++ [auto], [
++ AS_CASE([$host_os],
++ [mingw*], [build_egl=no],
++ [darwin*], [build_egl=no],
++ [android*], [build_egl=no],
++ [build_egl=yes])
++ ],
++
++ [yes], [
++ build_egl=yes
++ ],
++
++ [no], [
++ build_egl=no
++ ],
++
++ [AC_MSG_ERROR([Invalid value "$enable_egl" for option "--enable-egl"])]
++])
++
++# The remaining platform specific API are enabled depending on the
++# platform we're building for
+ AS_CASE([$host_os],
+ [mingw*], [
+- build_egl=no
+ build_wgl=yes
+ has_znow=yes
+ # On windows, the DLL has to have all of its functions
+@@ -108,7 +132,6 @@ AS_CASE([$host_os],
+ ],
+
+ [darwin*], [
+- build_egl=no
+ build_wgl=no
+ build_apple=yes
+ has_znow=no
+@@ -116,7 +139,6 @@ AS_CASE([$host_os],
+ ],
+
+ [
+- build_egl=yes
+ build_wgl=no
+ has_znow=yes
+ # On platforms with dlopen, we load everything dynamically and
+@@ -131,6 +153,7 @@ AM_CONDITIONAL(BUILD_EGL, test x$build_egl = xyes)
+ if test x$build_egl = xyes; then
+ PKG_CHECK_MODULES(EGL, [egl])
+ AC_DEFINE([BUILD_EGL], [1], [build EGL tests])
++ AC_DEFINE(ENABLE_EGL, [1], [Whether EGL support is enabled])
+ fi
+
+ AM_CONDITIONAL(BUILD_GLX, test x$build_glx = xyes)
+diff --git a/meson.build b/meson.build
+index 5435f45..226152e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -51,26 +51,41 @@ elif enable_glx == 'no'
+ build_glx = false
+ endif
+
++enable_egl = get_option('enable-egl')
++if enable_egl == 'auto'
++ if host_system == 'windows'
++ build_egl = false
++ elif host_system == 'darwin'
++ build_egl = false
++ elif host_system == 'android'
++ build_egl = false
++ else
++ build_egl = true
++ endif
++elif enable_egl == 'yes'
++ build_egl = true
++elif enable_egl == 'no'
++ build_egl = false
++endif
++
+ # The remaining platform specific API for GL/GLES are enabled
+ # depending on the platform we're building for
+ if host_system == 'windows'
+- build_egl = false
+ build_apple = false
+ build_wgl = true
+ has_znow = true
+ elif host_system == 'darwin'
+- build_egl = false
+ build_apple = true
+ build_wgl = false
+ has_znow = false
+ else
+- build_egl = true
+ build_apple = false
+ build_wgl = false
+ has_znow = true
+ endif
+
+ conf.set10('ENABLE_GLX', build_glx)
++conf.set10('ENABLE_EGL', build_egl)
+
+ # Compiler flags, taken from the Xorg macros
+ if cc.get_id() == 'msvc'
+diff --git a/meson_options.txt b/meson_options.txt
+index 18932f5..244476a 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -6,3 +6,8 @@ option('enable-glx',
+ choices: [ 'auto', 'yes', 'no' ],
+ value: 'auto',
+ description: 'Enable GLX support')
++option('enable-egl',
++ type: 'combo',
++ choices: [ 'auto', 'yes', 'no' ],
++ value: 'auto',
++ description: 'Enable EGL support')
+diff --git a/src/dispatch_common.h b/src/dispatch_common.h
+index e3277f7..e16771f 100644
+--- a/src/dispatch_common.h
++++ b/src/dispatch_common.h
+@@ -24,19 +24,19 @@
+ #include "config.h"
+
+ #ifdef _WIN32
+-#define PLATFORM_HAS_EGL 0
++#define PLATFORM_HAS_EGL ENABLE_EGL
+ #define PLATFORM_HAS_GLX ENABLE_GLX
+ #define PLATFORM_HAS_WGL 1
+ #elif defined(__APPLE__)
+-#define PLATFORM_HAS_EGL 0
++#define PLATFORM_HAS_EGL ENABLE_EGL
+ #define PLATFORM_HAS_GLX ENABLE_GLX
+ #define PLATFORM_HAS_WGL 0
+ #elif defined(ANDROID)
+-#define PLATFORM_HAS_EGL 1
++#define PLATFORM_HAS_EGL ENABLE_EGL
+ #define PLATFORM_HAS_GLX 0
+ #define PLATFORM_HAS_WGL 0
+ #else
+-#define PLATFORM_HAS_EGL 1
++#define PLATFORM_HAS_EGL ENABLE_EGL
+ #define PLATFORM_HAS_GLX ENABLE_GLX
+ #define PLATFORM_HAS_WGL 0
+ #endif
+--
+2.7.4
+
diff --git a/package/libepoxy/libepoxy.mk b/package/libepoxy/libepoxy.mk
index be8c55e391..e72743df39 100644
--- a/package/libepoxy/libepoxy.mk
+++ b/package/libepoxy/libepoxy.mk
@@ -12,6 +12,8 @@ LIBEPOXY_INSTALL_STAGING = YES
LIBEPOXY_DEPENDENCIES = host-pkgconf xutil_util-macros
LIBEPOXY_LICENSE = MIT
LIBEPOXY_LICENSE_FILES = COPYING
+# 0002-Make-EGL-support-optional.patch
+LIBEPOXY_AUTORECONF = YES
ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
LIBEPOXY_CONF_OPTS += --enable-egl
diff --git a/package/libev/libev.mk b/package/libev/libev.mk
index 2e3ed45436..87cdd6f61c 100644
--- a/package/libev/libev.mk
+++ b/package/libev/libev.mk
@@ -5,7 +5,7 @@
################################################################################
LIBEV_VERSION = 4.22
-LIBEV_SITE = http://dist.schmorp.de/libev
+LIBEV_SITE = http://dist.schmorp.de/libev/Attic
LIBEV_INSTALL_STAGING = YES
LIBEV_LICENSE = BSD-2-Clause or GPL-2.0+
LIBEV_LICENSE_FILES = LICENSE
diff --git a/package/libmicrohttpd/Config.in b/package/libmicrohttpd/Config.in
index 302dbb7ac8..2a685ca408 100644
--- a/package/libmicrohttpd/Config.in
+++ b/package/libmicrohttpd/Config.in
@@ -12,14 +12,15 @@ if BR2_PACKAGE_LIBMICROHTTPD
config BR2_PACKAGE_LIBMICROHTTPD_SSL
bool "https support"
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
+ depends on !BR2_STATIC_LIBS # gnutls
depends on BR2_USE_WCHAR
select BR2_PACKAGE_GNUTLS
select BR2_PACKAGE_LIBGCRYPT
help
Enable HTTPS (SSL) support.
-comment "libmicrohttpd https support needs a toolchain w/ wchar"
- depends on !BR2_USE_WCHAR
+comment "libmicrohttpd https support needs a toolchain w/ wchar, dynamic library"
+ depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
endif
diff --git a/package/libmicrohttpd/libmicrohttpd.hash b/package/libmicrohttpd/libmicrohttpd.hash
index e72255a0b6..a1460fd724 100644
--- a/package/libmicrohttpd/libmicrohttpd.hash
+++ b/package/libmicrohttpd/libmicrohttpd.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 bcc721895d4a114b0548a39d2241c35caacb9e2e072d40e11b55c60e3d5ddcbe libmicrohttpd-0.9.54.tar.gz
+sha256 0c1cab8dc9f2588bd3076a28f77a7f8de9560cbf2d80e53f9a8696ada80ed0f8 libmicrohttpd-0.9.55.tar.gz
diff --git a/package/libmicrohttpd/libmicrohttpd.mk b/package/libmicrohttpd/libmicrohttpd.mk
index 939e06e9d1..a87c93b3ae 100644
--- a/package/libmicrohttpd/libmicrohttpd.mk
+++ b/package/libmicrohttpd/libmicrohttpd.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBMICROHTTPD_VERSION = 0.9.54
+LIBMICROHTTPD_VERSION = 0.9.55
LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd
LIBMICROHTTPD_LICENSE_FILES = COPYING
LIBMICROHTTPD_INSTALL_STAGING = YES
diff --git a/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch b/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch
new file mode 100644
index 0000000000..25591fc4a4
--- /dev/null
+++ b/package/libminiupnpc/0001-miniupnpc-Fix-CVE-2017-8798.patch
@@ -0,0 +1,59 @@
+From f0f1f4b22d6a98536377a1bb07e7c20e4703d229 Mon Sep 17 00:00:00 2001
+From: Thomas Bernard <miniupnp@free.fr>
+Date: Tue, 9 May 2017 12:00:47 +0200
+Subject: [PATCH] miniupnpc: Fix CVE-2017-8798
+
+Thanks to tin/Team OSTStrom
+
+[Peter: drop Changelog.txt modification, convert to -p1 format]
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ miniupnpc/miniwget.c | 12 +++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+diff --git a/miniwget.c b/miniwget.c
+index 37cb47b7..1eda57c5 100644
+--- a/miniwget.c
++++ b/miniwget.c
+@@ -284,11 +284,12 @@ getHTTPResponse(int s, int * size, int * status_code)
+ goto end_of_stream;
+ }
+ }
+- bytestocopy = ((int)chunksize < (n - i))?chunksize:(unsigned int)(n - i);
++ /* it is guaranteed that (n >= i) */
++ bytestocopy = (chunksize < (unsigned int)(n - i))?chunksize:(unsigned int)(n - i);
+ if((content_buf_used + bytestocopy) > content_buf_len)
+ {
+ char * tmp;
+- if(content_length >= (int)(content_buf_used + bytestocopy)) {
++ if((content_length >= 0) && ((unsigned int)content_length >= (content_buf_used + bytestocopy))) {
+ content_buf_len = content_length;
+ } else {
+ content_buf_len = content_buf_used + bytestocopy;
+@@ -313,14 +314,15 @@ getHTTPResponse(int s, int * size, int * status_code)
+ {
+ /* not chunked */
+ if(content_length > 0
+- && (int)(content_buf_used + n) > content_length) {
++ && (content_buf_used + n) > (unsigned int)content_length) {
+ /* skipping additional bytes */
+ n = content_length - content_buf_used;
+ }
+ if(content_buf_used + n > content_buf_len)
+ {
+ char * tmp;
+- if(content_length >= (int)(content_buf_used + n)) {
++ if(content_length >= 0
++ && (unsigned int)content_length >= (content_buf_used + n)) {
+ content_buf_len = content_length;
+ } else {
+ content_buf_len = content_buf_used + n;
+@@ -340,7 +342,7 @@ getHTTPResponse(int s, int * size, int * status_code)
+ }
+ }
+ /* use the Content-Length header value if available */
+- if(content_length > 0 && (int)content_buf_used >= content_length)
++ if(content_length > 0 && content_buf_used >= (unsigned int)content_length)
+ {
+ #ifdef DEBUG
+ printf("End of HTTP content\n");
diff --git a/package/libqmi/0001-musl-compat-canonicalize_file_name.patch b/package/libqmi/0001-musl-compat-canonicalize_file_name.patch
index fd606d8051..3ae1c2eb47 100644
--- a/package/libqmi/0001-musl-compat-canonicalize_file_name.patch
+++ b/package/libqmi/0001-musl-compat-canonicalize_file_name.patch
@@ -1,22 +1,24 @@
-From 85863c9e051fe59add4e47dbfcb37072234f0110 Mon Sep 17 00:00:00 2001
+From 8f6181b6f8dd82aa1ab1288cc7f2fd05d4a2519f Mon Sep 17 00:00:00 2001
From: Matt Weber <matthew.weber@rockwellcollins.com>
Date: Mon, 1 May 2017 19:55:07 -0500
Subject: [PATCH] musl compat canonicalize_file_name()
-Adds an inline equivalent of canonicalize_file_name
+Adds an equivalent of canonicalize_file_name
using realpath().
Bug report (origin of this patch):
https://bugs.freedesktop.org/show_bug.cgi?id=99944
+Bug report has been updated with suggestion to not use inline.
+
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
---
configure.ac | 2 ++
- src/libqmi-glib/qmi-utils.h | 18 ++++++++++++++++++
- 2 files changed, 20 insertions(+)
+ src/libqmi-glib/qmi-utils.c | 15 +++++++++++++++
+ 2 files changed, 17 insertions(+)
diff --git a/configure.ac b/configure.ac
-index 162d5ae..9cb82fd 100644
+index c56fa3e..d835db4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -80,6 +80,8 @@ AC_SUBST(GLIB_LIBS)
@@ -28,19 +30,16 @@ index 162d5ae..9cb82fd 100644
dnl qmi-firmware-update is optional, enabled by default
AC_ARG_ENABLE([firmware-update],
AS_HELP_STRING([--enable-firmware-update],
-diff --git a/src/libqmi-glib/qmi-utils.h b/src/libqmi-glib/qmi-utils.h
-index 4fd5199..4869da5 100644
---- a/src/libqmi-glib/qmi-utils.h
-+++ b/src/libqmi-glib/qmi-utils.h
-@@ -29,6 +29,24 @@
- #error "Only <libqmi-glib.h> can be included directly."
- #endif
+diff --git a/src/libqmi-glib/qmi-utils.c b/src/libqmi-glib/qmi-utils.c
+index 29e5f22..26aff9e 100644
+--- a/src/libqmi-glib/qmi-utils.c
++++ b/src/libqmi-glib/qmi-utils.c
+@@ -34,6 +34,21 @@
+ #include "qmi-utils.h"
+ #include "qmi-error-types.h"
+#ifndef HAVE_CANONICALIZE_FILE_NAME
+#include <limits.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <stdio.h>
+static char * canonicalize_file_name(const char *path)
+{
+ char buf[PATH_MAX] = { };
@@ -54,9 +53,9 @@ index 4fd5199..4869da5 100644
+}
+#endif
+
- #include <glib.h>
-
- G_BEGIN_DECLS
+ /**
+ * SECTION:qmi-utils
+ * @title: Common utilities
--
-2.7.4
+1.9.1
diff --git a/package/libsoup/Config.in b/package/libsoup/Config.in
index bc0ba950aa..236d3c428a 100644
--- a/package/libsoup/Config.in
+++ b/package/libsoup/Config.in
@@ -22,11 +22,15 @@ config BR2_PACKAGE_LIBSOUP_GNOME
config BR2_PACKAGE_LIBSOUP_SSL
bool "https support"
+ depends on !BR2_STATIC_LIBS # gnutls
select BR2_PACKAGE_GLIB_NETWORKING
select BR2_PACKAGE_GNUTLS
help
Enable HTTPS (SSL) support.
+comment "libsoup https support needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
+
endif
comment "libsoup needs a toolchain w/ wchar, threads"
diff --git a/package/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch b/package/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch
deleted file mode 100644
index 387ba7aa3b..0000000000
--- a/package/libtasn1/0001-configure-don-t-add-Werror-to-build-flags.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From dd091c8af163213e12aa92f61bc4916e0f102633 Mon Sep 17 00:00:00 2001
-From: Nikos Mavrogiannopoulos <nmav@redhat.com>
-Date: Tue, 26 Jul 2016 08:45:33 +0200
-Subject: [PATCH] configure: don't add -Werror to build flags
-
-Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
----
-Patch status: upstream
-
- configure.ac | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 7a14e04..066f5fe 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -70,8 +70,6 @@ AC_ARG_ENABLE([gcc-warnings],
- )
-
- if test "$gl_gcc_warnings" = yes; then
-- gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
--
- nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
- nw="$nw -Wc++-compat" # We don't care strongly about C++ compilers
- nw="$nw -Wtraditional" # Warns on #elif which we use often
---
-2.7.3
-
diff --git a/package/libtasn1/libtasn1.hash b/package/libtasn1/libtasn1.hash
index 5b2100e87d..699c14050a 100644
--- a/package/libtasn1/libtasn1.hash
+++ b/package/libtasn1/libtasn1.hash
@@ -1,2 +1,2 @@
# Locally calculated after checking pgp signature
-sha256 4f6f7a8fd691ac2b8307c8ca365bad711db607d4ad5966f6938a9d2ecd65c920 libtasn1-4.9.tar.gz
+sha256 6753da2e621257f33f5b051cc114d417e5206a0818fe0b1ecfd6153f70934753 libtasn1-4.12.tar.gz
diff --git a/package/libtasn1/libtasn1.mk b/package/libtasn1/libtasn1.mk
index 714c4f88e6..b34a3b63f0 100644
--- a/package/libtasn1/libtasn1.mk
+++ b/package/libtasn1/libtasn1.mk
@@ -4,7 +4,7 @@
#
################################################################################
-LIBTASN1_VERSION = 4.9
+LIBTASN1_VERSION = 4.12
LIBTASN1_SITE = $(BR2_GNU_MIRROR)/libtasn1
LIBTASN1_DEPENDENCIES = host-bison
LIBTASN1_LICENSE = GPL-3.0+ (tests, tools), LGPL-2.1+ (library)
@@ -12,7 +12,5 @@ LIBTASN1_LICENSE_FILES = COPYING COPYING.LIB
LIBTASN1_INSTALL_STAGING = YES
# 'missing' fallback logic botched so disable it completely
LIBTASN1_CONF_ENV = MAKEINFO="true"
-# For 0001-configure-don-t-add-Werror-to-build-flags.patch
-LIBTASN1_AUTORECONF = YES
$(eval $(autotools-package))
diff --git a/package/libv4l/0003-utils-qv4l2-Makefile.am-link-with-librt.patch b/package/libv4l/0003-utils-qv4l2-Makefile.am-link-with-librt.patch
new file mode 100644
index 0000000000..4bac577d98
--- /dev/null
+++ b/package/libv4l/0003-utils-qv4l2-Makefile.am-link-with-librt.patch
@@ -0,0 +1,29 @@
+From 66d1d752976f4b45a5faff2bc68fc2fa9d435c71 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sun, 14 May 2017 22:04:55 +0200
+Subject: [PATCH] utils/qv4l2/Makefile.am: link with librt
+
+qv4l2 uses clock_gettime(), so it should link with librt to be
+compatible with old versions of glibc.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ utils/qv4l2/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/utils/qv4l2/Makefile.am b/utils/qv4l2/Makefile.am
+index fd58486..a991d66 100644
+--- a/utils/qv4l2/Makefile.am
++++ b/utils/qv4l2/Makefile.am
+@@ -7,7 +7,7 @@ qv4l2_SOURCES = qv4l2.cpp general-tab.cpp ctrl-tab.cpp vbi-tab.cpp capture-win.c
+ v4l2-tpg-core.c v4l2-tpg-colors.c
+ nodist_qv4l2_SOURCES = moc_qv4l2.cpp moc_general-tab.cpp moc_capture-win.cpp moc_vbi-tab.cpp qrc_qv4l2.cpp
+ qv4l2_LDADD = ../../lib/libv4l2/libv4l2.la ../../lib/libv4lconvert/libv4lconvert.la \
+- ../libv4l2util/libv4l2util.la ../libmedia_dev/libmedia_dev.la
++ ../libv4l2util/libv4l2util.la ../libmedia_dev/libmedia_dev.la -lrt
+ qv4l2_CPPFLAGS = -I../common
+
+ if WITH_QTGL
+--
+2.7.4
+
diff --git a/package/libv4l/libv4l.mk b/package/libv4l/libv4l.mk
index b139fa2fa5..08dc6cbf17 100644
--- a/package/libv4l/libv4l.mk
+++ b/package/libv4l/libv4l.mk
@@ -11,6 +11,11 @@ LIBV4L_INSTALL_STAGING = YES
LIBV4L_DEPENDENCIES = host-pkgconf
LIBV4L_CONF_OPTS = --disable-doxygen-doc
+# 0003-utils-qv4l2-Makefile.am-link-with-librt.patch, host-gettext
+# needed for autoreconf to work
+LIBV4L_AUTORECONF = YES
+LIBV4L_DEPENDENCIES += host-gettext
+
# fix uclibc-ng configure/compile
LIBV4L_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'
@@ -41,10 +46,7 @@ LIBV4L_DEPENDENCIES += libgl
endif
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
-LIBV4L_CONF_OPTS += --with-libudev
LIBV4L_DEPENDENCIES += udev
-else
-LIBV4L_CONF_OPTS += --without-libudev
endif
ifeq ($(BR2_PACKAGE_LIBGLU),y)
diff --git a/package/linux-headers/Config.in.host b/package/linux-headers/Config.in.host
index dcfcce94cf..c7a3710520 100644
--- a/package/linux-headers/Config.in.host
+++ b/package/linux-headers/Config.in.host
@@ -225,10 +225,10 @@ config BR2_DEFAULT_KERNEL_HEADERS
default "3.2.88" if BR2_KERNEL_HEADERS_3_2
default "3.4.113" if BR2_KERNEL_HEADERS_3_4
default "3.10.105" if BR2_KERNEL_HEADERS_3_10
- default "3.12.73" if BR2_KERNEL_HEADERS_3_12
- default "4.1.39" if BR2_KERNEL_HEADERS_4_1
- default "4.4.66" if BR2_KERNEL_HEADERS_4_4
- default "4.9.26" if BR2_KERNEL_HEADERS_4_9
- default "4.10.14" if BR2_KERNEL_HEADERS_4_10
- default "4.11" if BR2_KERNEL_HEADERS_4_11
+ default "3.12.74" if BR2_KERNEL_HEADERS_3_12
+ default "4.1.40" if BR2_KERNEL_HEADERS_4_1
+ default "4.4.70" if BR2_KERNEL_HEADERS_4_4
+ default "4.9.30" if BR2_KERNEL_HEADERS_4_9
+ default "4.10.17" if BR2_KERNEL_HEADERS_4_10
+ default "4.11.3" if BR2_KERNEL_HEADERS_4_11
default BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION
diff --git a/package/ltp-testsuite/Config.in b/package/ltp-testsuite/Config.in
index a7d3e58a3d..4c00e40f33 100644
--- a/package/ltp-testsuite/Config.in
+++ b/package/ltp-testsuite/Config.in
@@ -1,10 +1,24 @@
+config BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS
+ bool
+ # Needs __sync*() built-ins for 4-byte data, except on a few
+ # architectures for which a specific implementation is
+ # provided in ltp-testsuite
+ default y if BR2_TOOLCHAIN_HAS_SYNC_4
+ default y if BR2_arc
+ default y if BR2_i386
+ default y if BR2_powerpc
+ default y if BR2_powepc64
+ default y if BR2_powerpc64le
+ default y if BR2_x86_64
+ # does not build on nios2, cachectl.h issue
+ depends on !BR2_nios2
+
config BR2_PACKAGE_LTP_TESTSUITE
bool "ltp-testsuite"
depends on BR2_USE_MMU # fork()
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on !BR2_TOOLCHAIN_USES_MUSL
- # does not build, cachectl.h issue
- depends on !BR2_nios2
+ depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS
select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC
help
The Linux Test Project provides a huge testsuite for Linux.
@@ -12,6 +26,6 @@ config BR2_PACKAGE_LTP_TESTSUITE
http://linux-test-project.github.io
comment "ltp-testsuite needs a glibc or uClibc toolchain w/ NPTL"
- depends on !BR2_nios2
+ depends on BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS
depends on BR2_USE_MMU
depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_TOOLCHAIN_USES_MUSL
diff --git a/package/ltp-testsuite/ltp-testsuite.mk b/package/ltp-testsuite/ltp-testsuite.mk
index 1790309f81..eb9453af6f 100644
--- a/package/ltp-testsuite/ltp-testsuite.mk
+++ b/package/ltp-testsuite/ltp-testsuite.mk
@@ -68,4 +68,12 @@ endef
LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_UNSUPPORTED
endif
+# ldd command build system tries to build a shared library unconditionally.
+ifeq ($(BR2_STATIC_LIBS),y)
+define LTP_TESTSUITE_REMOVE_LDD
+ rm -rf $(@D)/testcases/commands/ldd
+endef
+LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_LDD
+endif
+
$(eval $(autotools-package))
diff --git a/package/lua/lua.mk b/package/lua/lua.mk
index 5ef61e039e..bc0a9d456b 100644
--- a/package/lua/lua.mk
+++ b/package/lua/lua.mk
@@ -70,6 +70,7 @@ define LUA_BUILD_CMDS
CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \
CFLAGS="$(TARGET_CFLAGS) $(LUA_CFLAGS)" \
MYLIBS="$(LUA_MYLIBS)" AR="$(TARGET_CROSS)ar rcu" \
+ MYLDFLAGS="$(TARGET_LDFLAGS)" \
BUILDMODE=$(LUA_BUILDMODE) \
PKG_VERSION=$(LUA_VERSION) -C $(@D)/src all
endef
diff --git a/package/madplay/0002-buildroot-libtool-v1.5.patch.patch b/package/madplay/0002-buildroot-libtool-v1.5.patch.patch
new file mode 100644
index 0000000000..2be336384b
--- /dev/null
+++ b/package/madplay/0002-buildroot-libtool-v1.5.patch.patch
@@ -0,0 +1,109 @@
+From ce661985c098635965573aac8fc983a72f60d396 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Tue, 30 May 2017 16:42:34 +0200
+Subject: [PATCH] buildroot-libtool-v1.5.patch
+
+Apply buildroot-libtool-v1.5.patch rebased on libtool 1.5.2 used
+in madplay and fixing all conflicts.
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ ltmain.sh | 40 ++++++++++++++++++++++++++++++----------
+ 1 file changed, 30 insertions(+), 10 deletions(-)
+
+diff --git a/ltmain.sh b/ltmain.sh
+index 4b9f940..0b71220 100644
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -164,6 +164,11 @@ do
+ arg="$1"
+ shift
+
++ # Make -static behave as -all-static
++ case $arg in
++ -static) arg="-all-static" ;;
++ esac
++
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+@@ -549,8 +554,9 @@ if test -z "$show_help"; then
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+- $echo "$modename: specify a tag with \`--tag'" 1>&2
+- exit 1
++ $echo "$modename: defaulting to \`CC'"
++ $echo "$modename: if this is not correct, specify a tag with \`--tag'"
++# exit 1
+ # else
+ # $echo "$modename: using $tagname tagged configuration"
+ fi
+@@ -1228,7 +1234,8 @@ EOF
+ prevarg="$arg"
+
+ case $arg in
+- -all-static)
++ # Make -static behave like -all-static
++ -all-static | -static)
+ if test -n "$link_static_flag"; then
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+@@ -2135,8 +2142,14 @@ EOF
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+- dir="$libdir"
+- absdir="$libdir"
++ # Adding 'libdir' from the .la file to our library search paths
++ # breaks crosscompilation horribly. We cheat here and don't add
++ # it, instead adding the path where we found the .la. -CL
++ dir="$abs_ladir"
++ absdir="$abs_ladir"
++ libdir="$abs_ladir"
++ #dir="$libdir"
++ #absdir="$libdir"
+ fi
+ else
+ dir="$ladir/$objdir"
+@@ -2261,7 +2274,7 @@ EOF
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+- need_relink=yes
++ need_relink=no
+ fi
+ # This is a shared library
+
+@@ -5146,6 +5159,10 @@ fi\
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
++ # Replacing uninstalled with installed can easily break crosscompilation,
++ # since the installed path is generally the wrong architecture. -CL
++ newdependency_libs="$newdependency_libs $deplib"
++ continue
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+@@ -5464,10 +5481,13 @@ relink_command=\"$relink_command\""
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+- if test "$inst_prefix_dir" = "$destdir"; then
+- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+- exit 1
+- fi
++ #
++ # This breaks install into our staging area. -PB
++ #
++ # if test "$inst_prefix_dir" = "$destdir"; then
++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
++ # exit 1
++ # fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+--
+2.9.4
+
diff --git a/package/mariadb/mariadb.hash b/package/mariadb/mariadb.hash
index afcf37803d..580fe987d9 100644
--- a/package/mariadb/mariadb.hash
+++ b/package/mariadb/mariadb.hash
@@ -1,2 +1,2 @@
-# From https://downloads.mariadb.org/mariadb/10.1.22/
-sha256 bcb0572e7ad32cea9740a21e9255f733bdf60a5561ffbda317c22dd12b3966ce mariadb-10.1.22.tar.gz
+# From https://downloads.mariadb.org/mariadb/10.1.23/
+sha256 54d8114e24bfa5e3ebdc7d69e071ad1471912847ea481b227d204f9d644300bf mariadb-10.1.23.tar.gz
diff --git a/package/mariadb/mariadb.mk b/package/mariadb/mariadb.mk
index 5a1f06d861..757352bc26 100644
--- a/package/mariadb/mariadb.mk
+++ b/package/mariadb/mariadb.mk
@@ -4,10 +4,12 @@
#
################################################################################
-MARIADB_VERSION = 10.1.22
+MARIADB_VERSION = 10.1.23
MARIADB_SITE = https://downloads.mariadb.org/interstitial/mariadb-$(MARIADB_VERSION)/source
MARIADB_LICENSE = GPL-2.0 (server), GPL-2.0 with FLOSS exception (GPL client library), LGPL-2.0 (LGPL client library)
-MARIADB_LICENSE_FILES = README COPYING COPYING.LESSER
+# Tarball no longer contains LGPL license text
+# https://jira.mariadb.org/browse/MDEV-12297
+MARIADB_LICENSE_FILES = README COPYING
MARIADB_INSTALL_STAGING = YES
MARIADB_PROVIDES = mysql
diff --git a/package/mke2img/mke2img b/package/mke2img/mke2img
index b773aa99db..758b6dee68 100755
--- a/package/mke2img/mke2img
+++ b/package/mke2img/mke2img
@@ -44,6 +44,9 @@ main() {
if [ -z "${image}" ]; then
error "you must specify an output image file with '-o'\n"
fi
+ if [ -z "${nb_blocks}" ]; then
+ error "you must specify the size of the output image with '-b'\n"
+ fi
case "${gen}:${rev}" in
2:0|2:1|3:1|4:1)
;;
diff --git a/package/mono/mono.mk b/package/mono/mono.mk
index b066bc6020..0fafc974d4 100644
--- a/package/mono/mono.mk
+++ b/package/mono/mono.mk
@@ -30,7 +30,6 @@ MONO_CONF_OPTS = --with-mcs-docs=no \
define MONO_INSTALL_LIBS
rsync -av --exclude=*.so --exclude=*.mdb \
$(HOST_DIR)/usr/lib/mono $(TARGET_DIR)/usr/lib/
- rsync -av $(HOST_DIR)/etc/mono $(TARGET_DIR)/etc
endef
MONO_POST_INSTALL_TARGET_HOOKS += MONO_INSTALL_LIBS
diff --git a/package/mosh/Config.in b/package/mosh/Config.in
index 96c3b94e8c..da8a305a06 100644
--- a/package/mosh/Config.in
+++ b/package/mosh/Config.in
@@ -20,8 +20,16 @@ config BR2_PACKAGE_MOSH
# runtime dependency
select BR2_PACKAGE_OPENSSH if !BR2_PACKAGE_DROPBEAR_CLIENT
help
- Remote terminal application that supports intermittent connectivity,
- allows roaming, and provides speculative local echo and line editing
- of user keystrokes.
+ Remote terminal application that supports intermittent
+ connectivity, allows roaming, and provides speculative local
+ echo and line editing of user keystrokes.
+
+ Mosh requires that the remote machine has a locale setting
+ matching the one on the client.
+
+ When using mosh with dropbear on a remote machine, the
+ client needs mosh with a version above 1.3.0 and the
+ --no-ssh-pty option needs to be passed when starting the
+ connection.
https://mosh.org
diff --git a/package/mosquitto/0001-Remove-lanl-when-WITH_ADNS-is-unset.patch b/package/mosquitto/0001-Remove-lanl-when-WITH_ADNS-is-unset.patch
deleted file mode 100644
index f9b1b273d1..0000000000
--- a/package/mosquitto/0001-Remove-lanl-when-WITH_ADNS-is-unset.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 0de640dd834b6c01c4904e11d51f3a1406c89469 Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Mon, 3 Apr 2017 20:34:07 +0200
-Subject: [PATCH] Remove -lanl when WITH_ADNS is unset
-
-Do not add -lanl to BROKER_LIBS for all Linux builds.
-Indeed, -lanl is only needed for getaddrinfo_a which is only used in
-_mosquitto_try_connect_step1 when WITH_ADNS is set
-
-Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
----
- config.mk | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/config.mk b/config.mk
-index 6e369c2..44639d2 100644
---- a/config.mk
-+++ b/config.mk
-@@ -159,10 +159,6 @@ ifeq ($(UNAME),QNX)
- LIB_LIBS:=$(LIB_LIBS) -lsocket
- endif
-
--ifeq ($(UNAME),Linux)
-- BROKER_LIBS:=$(BROKER_LIBS) -lanl
--endif
--
- ifeq ($(WITH_WRAP),yes)
- BROKER_LIBS:=$(BROKER_LIBS) -lwrap
- BROKER_CFLAGS:=$(BROKER_CFLAGS) -DWITH_WRAP
---
-2.5.0
-
diff --git a/package/mosquitto/mosquitto.hash b/package/mosquitto/mosquitto.hash
index 5514c2118d..6c102ebaa5 100644
--- a/package/mosquitto/mosquitto.hash
+++ b/package/mosquitto/mosquitto.hash
@@ -1,2 +1,2 @@
# Locally computed:
-sha512 c05ca8679b9a6f540868f4ccf701257fcabc114d5450ac0bbbe80b91bb7cd4fc52668773e945506760c7a5bd8a494e0a56100714112e5d2713d57bfab8951587 mosquitto-1.4.11.tar.gz
+sha512 75e6105498869ab13265df7a0bea6052c014d59d0c0efb61162d8257d34c0153fce32130e84c28e99fd494f374949aac5e01c19f7439c2eea575b52ef1179c3c mosquitto-1.4.12.tar.gz
diff --git a/package/mosquitto/mosquitto.mk b/package/mosquitto/mosquitto.mk
index 9ffd149a75..a9eb5b02f3 100644
--- a/package/mosquitto/mosquitto.mk
+++ b/package/mosquitto/mosquitto.mk
@@ -4,7 +4,7 @@
#
################################################################################
-MOSQUITTO_VERSION = 1.4.11
+MOSQUITTO_VERSION = 1.4.12
MOSQUITTO_SITE = http://mosquitto.org/files/source
MOSQUITTO_LICENSE = EPL-1.0 or EDLv1.0
MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v10 edl-v10
diff --git a/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch b/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch
new file mode 100644
index 0000000000..6a6f467d7b
--- /dev/null
+++ b/package/mpir/0001-mpn-arm-udiv.asm-workaround-binutils-bug-14887.patch
@@ -0,0 +1,40 @@
+From d858ce52d1971cb4e8500b0ebc0472fdae4686ec Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sun, 7 May 2017 23:12:04 +0200
+Subject: [PATCH] mpn/arm/udiv.asm: workaround binutils bug #14887
+
+Old binutils versions are affected by bug #14887,
+https://sourceware.org/bugzilla/show_bug.cgi?id=14887, which causes a
+build failure when a register specification is surrounded by
+whitespaces. Removing those whitespaces works around the issue.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ mpn/arm/udiv.asm | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/mpn/arm/udiv.asm b/mpn/arm/udiv.asm
+index 25197a6..ed11eb3 100644
+--- a/mpn/arm/udiv.asm
++++ b/mpn/arm/udiv.asm
+@@ -50,7 +50,7 @@ L(oop): divstep(n1,n0,d)
+ teq r12, #0
+ bne L(oop)
+
+- str n1, [ rem_ptr ] C store remainder
++ str n1, [rem_ptr] C store remainder
+ adc r0, n0, n0 C quotient: add last carry from divstep
+ mov pc, lr
+
+@@ -89,7 +89,7 @@ L(oop2):
+ addcs n0, n0, #1 C adjust quotient
+
+ L(_even_divisor):
+- str n1, [ rem_ptr ] C store remainder
++ str n1, [rem_ptr] C store remainder
+ mov r0, n0 C quotient
+ ldmfd sp!, { r8, pc }
+ EPILOGUE(mpn_udiv_qrnnd)
+--
+2.7.4
+
diff --git a/package/mpir/mpir.mk b/package/mpir/mpir.mk
index b7f3829007..91f704d30c 100644
--- a/package/mpir/mpir.mk
+++ b/package/mpir/mpir.mk
@@ -20,4 +20,20 @@ ifeq ($(BR2_MIPS_NABI64),y)
MPIR_CONF_OPTS += ABI=64
endif
+# The optimized ARM assembly code uses ARM-only (i.e not Thumb1/2
+# compatible) instructions.
+ifeq ($(BR2_arm)$(BR2_armeb):$(BR2_ARM_CPU_HAS_ARM),y:)
+MPIR_CONF_ENV += MPN_PATH="generic"
+endif
+
+# Optimized mips32/mips64 code not suitable for mips32r6/mips64r6
+ifeq ($(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)
+MPIR_CONF_ENV += MPN_PATH="generic"
+endif
+
+# Optimized powerpc64 code is not suitable for powerpc64le
+ifeq ($(BR2_powerpc64le),y)
+MPIR_CONF_ENV += MPN_PATH="generic"
+endif
+
$(eval $(autotools-package))
diff --git a/package/mpv/Config.in b/package/mpv/Config.in
index 6e115aedb1..ce6f367d72 100644
--- a/package/mpv/Config.in
+++ b/package/mpv/Config.in
@@ -12,6 +12,12 @@ config BR2_PACKAGE_MPV
select BR2_PACKAGE_ZLIB
# Select xkbcommon for wayland to avoid being mysterious
select BR2_PACKAGE_LIBXKBCOMMON if BR2_PACKAGE_WAYLAND
+ # Select all necessary X11 dependencies if X.org is enabled
+ select BR2_PACKAGE_XLIB_LIBX11 if BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_XLIB_LIBXINERAMA if BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_XORG7
help
mpv is a fork of mplayer2 and MPlayer. It shares some features
with the former projects while introducing many more.
diff --git a/package/mpv/mpv.mk b/package/mpv/mpv.mk
index 24ccf8ce2a..37548c9074 100644
--- a/package/mpv/mpv.mk
+++ b/package/mpv/mpv.mk
@@ -173,7 +173,7 @@ endif
# This requires one or more of the egl-drm, wayland, x11 backends
# For now we support wayland and x11
ifeq ($(BR2_PACKAGE_LIBVA),y)
-ifneq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_XLIB_LIBX11),)
+ifneq ($(BR2_PACKAGE_WAYLAND)$(BR2_PACKAGE_XORG7),)
MPV_CONF_OPTS += --enable-vaapi
MPV_DEPENDENCIES += libva
else
@@ -191,31 +191,12 @@ else
MPV_CONF_OPTS += --disable-wayland
endif
-# Base X11 support
-ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
-MPV_CONF_OPTS += --enable-x11 --disable-xss
-MPV_DEPENDENCIES += xlib_libX11
-# xext
-ifeq ($(BR2_PACKAGE_XLIB_LIBXEXT),y)
-MPV_CONF_OPTS += --enable-xext
-MPV_DEPENDENCIES += xlib_libXext
-else
-MPV_CONF_OPTS += --disable-xext
-endif
-# xinerama
-ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)
-MPV_CONF_OPTS += --enable-xinerama
-MPV_DEPENDENCIES += xlib_libXinerama
-else
-MPV_CONF_OPTS += --disable-xinerama
-endif
-# xrandr
-ifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y)
-MPV_CONF_OPTS += --enable-xrandr
-MPV_DEPENDENCIES += xlib_libXrandr
-else
-MPV_CONF_OPTS += --disable-xrandr
-endif
+# Base X11 support. Config.in ensures that if BR2_PACKAGE_XORG7 is
+# enabled, xlib_libX11, xlib_libXext, xlib_libXinerama,
+# xlib_libXrandr, xlib_libXScrnSaver.
+ifeq ($(BR2_PACKAGE_XORG7),y)
+MPV_CONF_OPTS += --enable-x11
+MPV_DEPENDENCIES += xlib_libX11 xlib_libXext xlib_libXinerama xlib_libXrandr xlib_libXScrnSaver
# XVideo
ifeq ($(BR2_PACKAGE_XLIB_LIBXV),y)
MPV_CONF_OPTS += --enable-xv
diff --git a/package/mxml/mxml.mk b/package/mxml/mxml.mk
index 7c48380e59..ac270bd1bb 100644
--- a/package/mxml/mxml.mk
+++ b/package/mxml/mxml.mk
@@ -5,7 +5,7 @@
################################################################################
MXML_VERSION = 2.10
-MXML_SITE = http://www.msweet.org/files/project3
+MXML_SITE = https://github.com/michaelrsweet/mxml/releases/download/release-$(MXML_VERSION)
MXML_LICENSE = LGPL-2.0+ with exceptions
MXML_LICENSE_FILES = COPYING
MXML_INSTALL_STAGING = YES
diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
index c9dabfdd42..04bb651325 100644
--- a/package/network-manager/Config.in
+++ b/package/network-manager/Config.in
@@ -1,6 +1,7 @@
config BR2_PACKAGE_NETWORK_MANAGER
bool "networkmanager"
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
+ depends on !BR2_STATIC_LIBS # gnutls
depends on BR2_USE_MMU # dbus
depends on BR2_PACKAGE_HAS_UDEV
# Tested with 3.2, but may even work with earlier versions
@@ -57,8 +58,8 @@ comment "pppd support needs a glibc or uClibc toolchain"
endif
-comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7"
+comment "NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 3.7, dynamic library"
depends on BR2_USE_MMU
depends on !BR2_PACKAGE_HAS_UDEV || \
!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 || \
- !BR2_TOOLCHAIN_USES_GLIBC
+ !BR2_TOOLCHAIN_USES_GLIBC || BR2_STATIC_LIBS
diff --git a/package/ntp/0003-ntpq-fpic.patch b/package/ntp/0003-ntpq-fpic.patch
new file mode 100644
index 0000000000..6e05a677c5
--- /dev/null
+++ b/package/ntp/0003-ntpq-fpic.patch
@@ -0,0 +1,23 @@
+ntpq/Makefile.am: add NTP_HARD_CFLAGS
+
+Pass NTP_HARD_CFLAGS when building ntpq, like in all other ntp
+modules, to make sure -fPIC is passed.
+
+Originally taken from
+https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=494143c3b4921a5c8b8596d58f2c8b98296bf688.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/ntpq/Makefile.am
+===================================================================
+--- a/ntpq/Makefile.am
++++ b/ntpq/Makefile.am
+@@ -23,7 +23,7 @@
+ ntpq_LDADD += $(LDADD_NTP)
+ noinst_HEADERS= ntpq.h
+ noinst_LIBRARIES= libntpq.a
+-libntpq_a_CFLAGS= -DNO_MAIN_ALLOWED -DBUILD_AS_LIB
++libntpq_a_CFLAGS= $(NTP_HARD_CFLAGS) -DNO_MAIN_ALLOWED -DBUILD_AS_LIB
+ CLEANFILES=
+ DISTCLEANFILES= .version version.c config.log $(man_MANS)
+ ETAGS_ARGS= Makefile.am
diff --git a/package/ntp/ntp.mk b/package/ntp/ntp.mk
index cd6cb1659e..26f58628aa 100644
--- a/package/ntp/ntp.mk
+++ b/package/ntp/ntp.mk
@@ -21,6 +21,7 @@ NTP_CONF_OPTS = \
--with-crypto
# 0002-ntp-syscalls-fallback.patch
+# 0003-ntpq-fpic.patch
NTP_AUTORECONF = YES
ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y)
diff --git a/package/odroid-scripts/Config.in b/package/odroid-scripts/Config.in
index c4e09cad72..c07c3a4c09 100644
--- a/package/odroid-scripts/Config.in
+++ b/package/odroid-scripts/Config.in
@@ -1,6 +1,6 @@
config BR2_PACKAGE_ODROID_SCRIPTS
bool "odroid-scripts"
- depends on BR2_aarch64 || BR2_arm
+ depends on BR2_aarch64 || BR2_arm || BR2_armeb
select BR2_PACKAGE_FBSET # runtime
select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # needed for fbset
help
diff --git a/package/ola/0001-Remove-fvisibiliy-inlines-hidden.patch b/package/ola/0001-Remove-fvisibiliy-inlines-hidden.patch
deleted file mode 100644
index f2bf247c2e..0000000000
--- a/package/ola/0001-Remove-fvisibiliy-inlines-hidden.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From cd4f5d9d8a10c368584e8e714ebb0f9695267063 Mon Sep 17 00:00:00 2001
-From: Simon Marchi <simon.marchi@polymtl.ca>
-Date: Mon, 10 Aug 2015 15:01:42 -0400
-Subject: [PATCH] Remove -fvisibiliy-inlines-hidden
-
-Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 714e435..17a23e2 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -32,7 +32,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = --enable-python-libs
- COMMON_CXXFLAGS_ONLY_WARNINGS = \
- -I$(top_srcdir)/include \
- -I$(top_builddir)/include \
-- -Wall -Wformat -W -fvisibility-inlines-hidden \
-+ -Wall -Wformat -W \
- $(libprotobuf_CFLAGS)
-
- COMMON_CXXFLAGS = $(COMMON_CXXFLAGS_ONLY_WARNINGS)
---
-2.5.0
-
diff --git a/package/ola/0002-Remove-replacing-I-with-isystem.patch b/package/ola/0002-Remove-replacing-I-with-isystem.patch
deleted file mode 100644
index 010c99a3bc..0000000000
--- a/package/ola/0002-Remove-replacing-I-with-isystem.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-From bbb03794def326c2e8ad2de523c5a61a4c8cb464 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
-Date: Thu, 22 Sep 2016 00:58:58 +0200
-Subject: [PATCH] Remove replacing -I with -isystem
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Building OLA with a GCC 6 cross-toolchain fails:
-
-```
-/usr/bin/arm-linux-g++ -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE
--D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I./include -I./include
--Wall -Wformat -W -isystem
-/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include -pthread
--D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os
--pthread -c -o libs/acn/e131_transmit_test.o
-libs/acn/e131_transmit_test.cpp
-/usr/bin/arm-linux-g++ -DHAVE_CONFIG_H -I. -D_LARGEFILE_SOURCE
--D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I./include -I./include
--Wall -Wformat -W -isystem
-/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include -pthread
--D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os
--pthread -c -o libs/acn/E131TestFramework.o
-libs/acn/E131TestFramework.cpp
-In file included from
-/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/ext/string_conversions.h:41:0,
- from
-/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/bits/basic_string.h:5402,
- from
-/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/string:52,
- from ./tools/ola_trigger/config.ypp:2:
-/opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0/cstdlib:75:25:
-fatal error: stdlib.h: No such file or directory
- #include_next <stdlib.h>
- ^
-compilation terminated.
-```
-
-The C++ library in GCC 6 now provides its own `<stdlib.h>` header that
-wraps the C library header of the same name, so in `<cstdlib>` the
-header include
-
-```
-#include <stdlib.h>
-```
-
-has become
-
-```
-#include_next <stdlib.h>
-```
-
-`#include_next` is sensitive to the order of directories in the
-preprocessor's search path, so if that order is changed with `-isystem`
-then the compiler can't find the right header:
-
-```
-[1] /usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
-[2] /opt/ext-toolchain/arm-buildroot-linux-gnueabihf/include/c++/6.1.0
-[..]
-End of search list.
-```
-
-`<cstdlib>` is located in [2] whereas `<stdlib.h>` (C library header) is
-in [1]. In this case, the `#include_next <stdlib.h>` statement in
-`<cstdlib>`, located in [2], is evaluated **after** the search path [1],
-so the compiler does not find the right system header.
-
-The problem is that the OLA build system replaces the `-I` in the CFLAGS
-from libprotobuf with `-isystem` to fix some warnings treated as errors
-in the libprotobuf header files.
-
-`-isystem` should be used to suppress warnings in system headers only
-and the libprotobuf header files are not system files.
-
-The correct fix is to compile with less restrictions and remove
-`-Werror` for the build.
-
-As using `-isystem` is reordering GCCs search path and using `-isystem`
-is really not necessary, remove the faulty replacement of `-I`.
-
-Upstream status: https://github.com/OpenLightingProject/ola/pull/1126
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
----
- config/ola.m4 | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/config/ola.m4 b/config/ola.m4
-index 2796cfb..d3b8cc8 100644
---- a/config/ola.m4
-+++ b/config/ola.m4
-@@ -24,9 +24,6 @@ AC_DEFUN([PROTOBUF_SUPPORT],
- AC_REQUIRE_CPP()
- PKG_CHECK_MODULES(libprotobuf, [protobuf >= $1])
-
--# We want to replace -I with -isystem here to disable errors in the .h files
--# See https://groups.google.com/forum/#!topic/open-lighting/39Mj0KXlCIk
--libprotobuf_CFLAGS=`echo $libprotobuf_CFLAGS | sed 's/-I/-isystem /'`
- AC_SUBST([libprotobuf_CFLAGS])
-
- AC_ARG_WITH([protoc],
---
-2.10.0
-
diff --git a/package/ola/Config.in b/package/ola/Config.in
deleted file mode 100644
index 45e8f8fe5c..0000000000
--- a/package/ola/Config.in
+++ /dev/null
@@ -1,138 +0,0 @@
-comment "ola needs a toolchain w/ C++, threads, dynamic library, host and target gcc >= 4.5"
- depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
- || BR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_4_5 \
- || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
- depends on BROKEN
- depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
-
-menuconfig BR2_PACKAGE_OLA
- bool "ola (open lighting architecture)"
- select BR2_PACKAGE_PROTOBUF
- select BR2_PACKAGE_UTIL_LINUX_LIBUUID
- select BR2_PACKAGE_UTIL_LINUX
- # Build fails with current protobuf
- # https://github.com/OpenLightingProject/ola/issues/1192
- depends on BROKEN
- depends on BR2_INSTALL_LIBSTDCPP # protobuf
- depends on !BR2_STATIC_LIBS # protobuf
- depends on BR2_TOOLCHAIN_HAS_THREADS
- depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
- depends on BR2_HOST_GCC_AT_LEAST_4_5 # protobuf
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 # protobuf
- help
- Open Lighting Architecture provides applications
- with a mechanism to send and receive DMX512 & RDM
- commands using hardware devices and DMX over IP protocols.
-
- http://www.opendmx.net/index.php/OLA
-
-if BR2_PACKAGE_OLA
-
-comment "bindings and interface"
-
-config BR2_PACKAGE_OLA_WEB
- bool "http interface"
- depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt, libmicrohttpd
- select BR2_PACKAGE_LIBMICROHTTPD
- help
- Build OLA with browser interface.
-
-config BR2_PACKAGE_OLA_PYTHON_BINDINGS
- bool "python bindings"
- depends on BR2_PACKAGE_PYTHON
- select BR2_PACKAGE_PYTHON_PROTOBUF
- help
- Build OLA with support for the Python language.
-
-config BR2_PACKAGE_OLA_SLP
- bool "slp tools"
- help
- Build OLA with slp tools.
-
-comment "tests and examples"
-
-config BR2_PACKAGE_OLA_EXAMPLES
- bool "examples"
- select BR2_PACKAGE_NCURSES
- help
- Build OLA examples.
-
-config BR2_PACKAGE_OLA_RDM_TESTS
- bool "rdm tests"
- depends on BR2_PACKAGE_OLA_PYTHON_BINDINGS
- depends on BR2_PACKAGE_PYTHON_NUMPY_ARCH_SUPPORTS
- select BR2_PACKAGE_PYTHON_NUMPY
- help
- Build OLA RDM tests.
-
-comment "plugin selections"
-
-config BR2_PACKAGE_OLA_PLUGIN_E131
- bool "acn E131"
- help
- Build ACN E131 plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_ARTNET
- bool "artnet"
- help
- Build Artnet plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_OPENDMX
- bool "DMX4Linux"
- help
- Build DMX4Linux plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_DUMMY
- bool "dummy"
- help
- Build Dummy plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_ESPNET
- bool "espnet"
- help
- Build EspNet plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_KINET
- bool "kinet"
- help
- Build KiNet plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_MILINT
- bool "Milford Instruments"
- help
- Build Milford Instruments 1-463 plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_OSC
- bool "osc"
- select BR2_PACKAGE_LIBLO
- help
- Build Open Sound Control plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_PATHPORT
- bool "pathport"
- help
- Build Pathport plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_SANDNET
- bool "sandnet"
- help
- Build SandNet plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_SHOWNET
- bool "shownet"
- help
- Build ShowNet plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_STAGEPROFI
- bool "stageprofi"
- select BR2_PACKAGE_LIBUSB
- help
- Build StageProfi plugin for OLA.
-
-config BR2_PACKAGE_OLA_PLUGIN_USBPRO
- bool "usbpro"
- select BR2_PACKAGE_LIBUSB
- help
- Build UsbPro plugin for OLA.
-
-endif
diff --git a/package/ola/ola.hash b/package/ola/ola.hash
deleted file mode 100644
index a791e9caa4..0000000000
--- a/package/ola/ola.hash
+++ /dev/null
@@ -1,2 +0,0 @@
-# Locally calculated
-sha256 986e61874bc80db3b23cf201af2dafa39e3412cc50cddf1cd449c869110bfd27 ola-0.10.2.tar.gz
diff --git a/package/ola/ola.mk b/package/ola/ola.mk
deleted file mode 100644
index 9348d70b85..0000000000
--- a/package/ola/ola.mk
+++ /dev/null
@@ -1,180 +0,0 @@
-################################################################################
-#
-# ola
-#
-################################################################################
-
-OLA_VERSION = 0.10.2
-OLA_SITE = https://github.com/OpenLightingProject/ola/releases/download/$(OLA_VERSION)
-OLA_LICENSE = LGPL-2.1+ (libola, libolacommon, Python bindings), GPL-2.0+ (libolaserver, olad, Python examples and tests)
-OLA_LICENSE_FILES = LICENCE GPL LGPL
-OLA_INSTALL_STAGING = YES
-OLA_AUTORECONF = YES
-
-# util-linux provides uuid lib
-OLA_DEPENDENCIES = protobuf util-linux host-bison host-flex host-ola
-
-OLA_CONF_OPTS = \
- ac_cv_have_pymod_google_protobuf=yes \
- --disable-gcov \
- --disable-tcmalloc \
- --disable-unittests \
- --disable-root-check \
- --disable-java-libs \
- --disable-fatal-warnings \
- --with-ola-protoc-plugin=$(HOST_DIR)/usr/bin/ola_protoc_plugin
-
-HOST_OLA_DEPENDENCIES = host-util-linux host-protobuf
-
-# When building the host part, disable as much as possible to speed up
-# the configure step and avoid missing host dependencies.
-HOST_OLA_CONF_OPTS = \
- --disable-all-plugins \
- --disable-slp \
- --disable-osc \
- --disable-uart \
- --disable-libusb \
- --disable-libftdi \
- --disable-http \
- --disable-examples \
- --disable-unittests \
- --disable-doxygen-html \
- --disable-doxygen-doc \
- --disable-fatal-warnings
-
-# On the host side, we only need ola_protoc_plugin, so build and install this
-# only.
-HOST_OLA_MAKE_OPTS = protoc/ola_protoc_plugin
-define HOST_OLA_INSTALL_CMDS
- $(INSTALL) -D -m 0755 $(@D)/protoc/ola_protoc_plugin $(HOST_DIR)/usr/bin/ola_protoc_plugin
-endef
-
-# sets where to find python libs built for target and required by ola
-OLA_CONF_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages
-OLA_MAKE_ENV = PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages
-
-## OLA Bindings and Interface selections
-
-ifeq ($(BR2_PACKAGE_OLA_WEB),y)
-OLA_CONF_OPTS += --enable-http
-OLA_DEPENDENCIES += libmicrohttpd
-else
-OLA_CONF_OPTS += --disable-http
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_SLP),y)
-OLA_CONF_OPTS += --enable-slp
-else
-OLA_CONF_OPTS += --disable-slp
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PYTHON_BINDINGS),y)
-OLA_CONF_OPTS += --enable-python-libs
-OLA_DEPENDENCIES += python python-protobuf
-else
-OLA_CONF_OPTS += --disable-python-libs
-endif
-
-## OLA Examples and Tests
-
-ifeq ($(BR2_PACKAGE_OLA_EXAMPLES),y)
-OLA_CONF_OPTS += --enable-examples
-OLA_DEPENDENCIES += ncurses
-else
-OLA_CONF_OPTS += --disable-examples
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_RDM_TESTS),y)
-OLA_CONF_OPTS += --enable-rdm-tests
-OLA_DEPENDENCIES += python-numpy
-# needed as numpy builds some shared libraries and ola checks for
-# numpy using a host python test program which fails with 'wrong ELF
-# class'.
-OLA_CONF_ENV = ac_cv_have_pymod_numpy=yes
-else
-OLA_CONF_OPTS += --disable-rdm-tests
-endif
-
-## OLA Plugin selections
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_E131),y)
-OLA_CONF_OPTS += --enable-e131
-else
-OLA_CONF_OPTS += --disable-e131
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_ARTNET),y)
-OLA_CONF_OPTS += --enable-artnet
-else
-OLA_CONF_OPTS += --disable-artnet
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_OPENDMX),y)
-OLA_CONF_OPTS += --enable-opendmx
-else
-OLA_CONF_OPTS += --disable-opendmx
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_DUMMY),y)
-OLA_CONF_OPTS += --enable-dummy
-else
-OLA_CONF_OPTS += --disable-dummy
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_ESPNET),y)
-OLA_CONF_OPTS += --enable-espnet
-else
-OLA_CONF_OPTS += --disable-espnet
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_KINET),y)
-OLA_CONF_OPTS += --enable-kinet
-else
-OLA_CONF_OPTS += --disable-kinet
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_OSC),y)
-OLA_CONF_OPTS += --enable-osc
-OLA_DEPENDENCIES += liblo
-else
-OLA_CONF_OPTS += --disable-osc
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_MILINT),y)
-OLA_CONF_OPTS += --enable-milinst
-else
-OLA_CONF_OPTS += --disable-milinst
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_PATHPORT),y)
-OLA_CONF_OPTS += --enable-pathport
-else
-OLA_CONF_OPTS += --disable-pathport
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_SANDNET),y)
-OLA_CONF_OPTS += --enable-sandnet
-else
-OLA_CONF_OPTS += --disable-sandnet
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_SHOWNET),y)
-OLA_CONF_OPTS += --enable-shownet
-else
-OLA_CONF_OPTS += --disable-shownet
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_STAGEPROFI),y)
-OLA_CONF_OPTS += --enable-stageprofi --enable-libusb
-else
-OLA_CONF_OPTS += --disable-stageprofi
-endif
-
-ifeq ($(BR2_PACKAGE_OLA_PLUGIN_USBPRO),y)
-OLA_CONF_OPTS += --enable-usbpro --enable-libusb
-else
-OLA_CONF_OPTS += --disable-usbpro
-endif
-
-$(eval $(autotools-package))
-$(eval $(host-autotools-package))
diff --git a/package/openblas/Config.in b/package/openblas/Config.in
index de26ab3b73..bc628960f5 100644
--- a/package/openblas/Config.in
+++ b/package/openblas/Config.in
@@ -31,7 +31,8 @@ config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET
default "SICORTEX" if BR2_MIPS_CPU_MIPS64
# I6400 is built with MSA support which is only available in Codescape toolchains
default "I6400" if BR2_mips_i6400 && BR2_TOOLCHAIN_EXTERNAL_CODESCAPE_IMG_MIPS
- default "SPARC" if BR2_sparc
+ # OpenBLAS assumes SPARC=Sparc v9
+ default "SPARC" if BR2_sparc_v9
# Cortex-A15 always have a VFPv4
default "CORTEXA15" if (BR2_cortex_a15 && BR2_ARM_EABIHF)
# Cortex-A9 have an optional VFPv3, so we need to make sure it
diff --git a/package/opencv/opencv.mk b/package/opencv/opencv.mk
index ff5ab02b16..92cfd431a0 100644
--- a/package/opencv/opencv.mk
+++ b/package/opencv/opencv.mk
@@ -192,7 +192,8 @@ OPENCV_CONF_OPTS += -DWITH_GTK=OFF
endif
ifeq ($(BR2_PACKAGE_OPENCV_WITH_JASPER),y)
-OPENCV_CONF_OPTS += -DWITH_JASPER=ON
+OPENCV_CONF_OPTS += -DWITH_JASPER=ON \
+ -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -D__STDC_LIMIT_MACROS"
OPENCV_DEPENDENCIES += jasper
else
OPENCV_CONF_OPTS += -DWITH_JASPER=OFF
diff --git a/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch b/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch
new file mode 100644
index 0000000000..017c7bb026
--- /dev/null
+++ b/package/opencv3/0001-cmake-support-multiple-CPU-targets.patch
@@ -0,0 +1,2564 @@
+From 1c54b13cb29463af514a107c42946abd97b5ca41 Mon Sep 17 00:00:00 2001
+From: Alexander Alekhin <alexander.alekhin@intel.com>
+Date: Wed, 7 Sep 2016 18:02:36 +0300
+Subject: [PATCH] cmake: support multiple CPU targets
+
+Backported from: https://github.com/opencv/opencv/commit/e16227b53cabab1caa4b7aba8ff59a630528348f
+Signed-off-by: Samuel Martin <s.martin49@gmail.com>
+---
+ CMakeLists.txt | 50 +-
+ cmake/OpenCVCompilerOptimizations.cmake | 651 +++++++++++++++++++++
+ cmake/OpenCVCompilerOptions.cmake | 161 +----
+ cmake/OpenCVGenHeaders.cmake | 4 +
+ cmake/OpenCVModule.cmake | 3 +
+ cmake/OpenCVPCHSupport.cmake | 5 +-
+ cmake/OpenCVUtils.cmake | 50 +-
+ cmake/checks/cpu_avx.cpp | 9 +
+ cmake/checks/cpu_avx2.cpp | 10 +
+ cmake/checks/cpu_avx512.cpp | 10 +
+ cmake/checks/cpu_fp16.cpp | 33 ++
+ cmake/checks/cpu_popcnt.cpp | 8 +
+ cmake/checks/cpu_sse.cpp | 2 +
+ cmake/checks/cpu_sse2.cpp | 2 +
+ cmake/checks/cpu_sse3.cpp | 7 +
+ cmake/checks/cpu_sse41.cpp | 6 +
+ cmake/checks/cpu_sse42.cpp | 5 +
+ cmake/checks/cpu_ssse3.cpp | 7 +
+ cmake/checks/fp16.cpp | 33 --
+ cmake/templates/cv_cpu_config.h.in | 5 +
+ cmake/templates/cvconfig.h.in | 13 +
+ .../core/include/opencv2/core/cv_cpu_dispatch.h | 166 ++++++
+ modules/core/include/opencv2/core/cv_cpu_helper.h | 133 +++++
+ modules/core/include/opencv2/core/cvdef.h | 145 +----
+ modules/core/include/opencv2/core/fast_math.hpp | 60 +-
+ modules/core/src/system.cpp | 301 ++++++++--
+ modules/highgui/CMakeLists.txt | 2 +-
+ modules/imgproc/src/imgwarp.cpp | 4 +-
+ modules/objdetect/src/haar.cpp | 5 +-
+ 29 files changed, 1472 insertions(+), 418 deletions(-)
+ create mode 100644 cmake/OpenCVCompilerOptimizations.cmake
+ create mode 100644 cmake/checks/cpu_avx.cpp
+ create mode 100644 cmake/checks/cpu_avx2.cpp
+ create mode 100644 cmake/checks/cpu_avx512.cpp
+ create mode 100644 cmake/checks/cpu_fp16.cpp
+ create mode 100644 cmake/checks/cpu_popcnt.cpp
+ create mode 100644 cmake/checks/cpu_sse.cpp
+ create mode 100644 cmake/checks/cpu_sse2.cpp
+ create mode 100644 cmake/checks/cpu_sse3.cpp
+ create mode 100644 cmake/checks/cpu_sse41.cpp
+ create mode 100644 cmake/checks/cpu_sse42.cpp
+ create mode 100644 cmake/checks/cpu_ssse3.cpp
+ delete mode 100644 cmake/checks/fp16.cpp
+ create mode 100644 cmake/templates/cv_cpu_config.h.in
+ create mode 100644 modules/core/include/opencv2/core/cv_cpu_dispatch.h
+ create mode 100644 modules/core/include/opencv2/core/cv_cpu_helper.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index cc45f6f..9c9971e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -85,6 +85,10 @@ if(POLICY CMP0042)
+ cmake_policy(SET CMP0042 NEW)
+ endif()
+
++if(POLICY CMP0051)
++ cmake_policy(SET CMP0051 NEW)
++endif()
++
+ include(cmake/OpenCVUtils.cmake)
+
+ # must go before the project command
+@@ -274,16 +278,6 @@ OCV_OPTION(ENABLE_COVERAGE "Enable coverage collection with GCov"
+ OCV_OPTION(ENABLE_OMIT_FRAME_POINTER "Enable -fomit-frame-pointer for GCC" ON IF CMAKE_COMPILER_IS_GNUCXX AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX) )
+ OCV_OPTION(ENABLE_POWERPC "Enable PowerPC for GCC" ON IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
+ OCV_OPTION(ENABLE_FAST_MATH "Enable -ffast-math (not recommended for GCC 4.6.x)" OFF IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSE "Enable SSE instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSE2 "Enable SSE2 instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSE3 "Enable SSE3 instructions" ON IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSSE3 "Enable SSSE3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSE41 "Enable SSE4.1 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_SSE42 "Enable SSE4.2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_POPCNT "Enable POPCNT instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_AVX "Enable AVX instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_AVX2 "Enable AVX2 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+-OCV_OPTION(ENABLE_FMA3 "Enable FMA3 instructions" OFF IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
+ OCV_OPTION(ENABLE_NEON "Enable NEON instructions" "${NEON}" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
+ OCV_OPTION(ENABLE_VFPV3 "Enable VFPv3-D32 instructions" OFF IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
+ OCV_OPTION(ENABLE_NOISY_WARNINGS "Show all warnings even if they are too noisy" OFF )
+@@ -292,6 +286,9 @@ OCV_OPTION(ANDROID_EXAMPLES_WITH_LIBS "Build binaries of Android examples with n
+ OCV_OPTION(ENABLE_IMPL_COLLECTION "Collect implementation data on function call" OFF )
+ OCV_OPTION(ENABLE_INSTRUMENTATION "Instrument functions to collect calls trace and performance" OFF )
+ OCV_OPTION(GENERATE_ABI_DESCRIPTOR "Generate XML file for abi_compliance_checker tool" OFF IF UNIX)
++OCV_OPTION(CV_ENABLE_INTRINSICS "Use intrinsic-based optimized code" ON )
++OCV_OPTION(CV_DISABLE_OPTIMIZATION "Disable explicit optimized code (dispatched code/intrinsics/loop unrolling/etc)" OFF )
++
+
+ OCV_OPTION(DOWNLOAD_EXTERNAL_TEST_DATA "Download external test data (Python executable and OPENCV_TEST_DATA_PATH environment variable may be required)" OFF )
+
+@@ -492,6 +489,9 @@ if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL
+ set(CMAKE_BUILD_TYPE Release)
+ endif()
+
++# --- Python Support ---
++include(cmake/OpenCVDetectPython.cmake)
++
+ include(cmake/OpenCVCompilerOptions.cmake)
+
+
+@@ -569,9 +569,6 @@ else()
+ unset(DOXYGEN_FOUND CACHE)
+ endif()
+
+-# --- Python Support ---
+-include(cmake/OpenCVDetectPython.cmake)
+-
+ # --- Java Support ---
+ include(cmake/OpenCVDetectApacheAnt.cmake)
+ if(ANDROID)
+@@ -860,6 +857,33 @@ if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
+ status(" Configuration:" ${CMAKE_BUILD_TYPE})
+ endif()
+
++
++# ========================= CPU code generation mode =========================
++status("")
++status(" CPU/HW features:")
++status(" Baseline:" "${CPU_BASELINE_FINAL}")
++if(NOT CPU_BASELINE STREQUAL CPU_BASELINE_FINAL)
++ status(" requested:" "${CPU_BASELINE}")
++endif()
++if(CPU_BASELINE_REQUIRE)
++ status(" required:" "${CPU_BASELINE_REQUIRE}")
++endif()
++if(CPU_BASELINE_DISABLE)
++ status(" disabled:" "${CPU_BASELINE_DISABLE}")
++endif()
++if(CPU_DISPATCH_FINAL OR CPU_DISPATCH)
++ status(" Dispatched code generation:" "${CPU_DISPATCH_FINAL}")
++ if(NOT CPU_DISPATCH STREQUAL CPU_DISPATCH_FINAL)
++ status(" requested:" "${CPU_DISPATCH}")
++ endif()
++ if(CPU_DISPATCH_REQUIRE)
++ status(" required:" "${CPU_DISPATCH_REQUIRE}")
++ endif()
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ status(" ${OPT} (${CPU_${OPT}_USAGE_COUNT} files):" "+ ${CPU_DISPATCH_${OPT}_INCLUDED}")
++ endforeach()
++endif()
++
+ # ========================== C/C++ options ==========================
+ if(CMAKE_CXX_COMPILER_VERSION)
+ set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})")
+diff --git a/cmake/OpenCVCompilerOptimizations.cmake b/cmake/OpenCVCompilerOptimizations.cmake
+new file mode 100644
+index 0000000..b849f02
+--- /dev/null
++++ b/cmake/OpenCVCompilerOptimizations.cmake
+@@ -0,0 +1,651 @@
++# x86/x86-64 arch:
++# SSE / SSE2 (always available on 64-bit CPUs)
++# SSE3 / SSSE3
++# SSE4_1 / SSE4_2 / POPCNT
++# AVX / AVX2 / AVX512
++# FMA3
++
++# CPU_{opt}_SUPPORTED=ON/OFF - compiler support (possibly with additional flag)
++# CPU_{opt}_IMPLIES=<list>
++# CPU_{opt}_FORCE=<list> - subset of "implies" list
++# CPU_{opt}_FLAGS_ON=""
++# CPU_{opt}_FEATURE_ALIAS - mapping to CV_CPU_* HWFeature enum
++
++# Input variables:
++# CPU_BASELINE=<list> - preferred list of baseline optimizations
++# CPU_DISPATCH=<list> - preferred list of dispatched optimizations
++
++# Advanced input variables:
++# CPU_BASELINE_REQUIRE=<list> - list of required baseline optimizations
++# CPU_DISPATCH_REQUIRE=<list> - list of required dispatched optimizations
++# CPU_BASELINE_DISABLE=<list> - list of disabled baseline optimizations
++
++# Output variables:
++# CPU_BASELINE_FINAL=<list> - final list of enabled compiler optimizations
++# CPU_DISPATCH_FINAL=<list> - final list of dispatched optimizations
++#
++# CPU_DISPATCH_FLAGS_${opt} - flags for source files compiled separately (_opt_avx2.cpp)
++
++set(CPU_ALL_OPTIMIZATIONS "SSE;SSE2;SSE3;SSSE3;SSE4_1;SSE4_2;POPCNT;AVX;FP16;AVX2;FMA3") # without AVX512
++list(APPEND CPU_ALL_OPTIMIZATIONS NEON VFPV3 FP16)
++list(REMOVE_DUPLICATES CPU_ALL_OPTIMIZATIONS)
++
++ocv_update(CPU_VFPV3_FEATURE_ALIAS "")
++
++
++set(HELP_CPU_BASELINE "Specify list of enabled baseline CPU optimizations")
++set(HELP_CPU_BASELINE_REQUIRE "Specify list of required baseline CPU optimizations")
++set(HELP_CPU_BASELINE_DISABLE "Specify list of forbidden baseline CPU optimizations")
++set(HELP_CPU_DISPATCH "Specify list of dispatched CPU optimizations")
++set(HELP_CPU_DISPATCH_REQUIRE "Specify list of required dispatched CPU optimizations")
++
++foreach(var CPU_BASELINE CPU_BASELINE_REQUIRE CPU_BASELINE_DISABLE CPU_DISPATCH CPU_DISPATCH_REQUIRE)
++ if(DEFINED ${var})
++ string(REPLACE "," ";" _list "${${var}}")
++ set(${var} "${_list}" CACHE STRING "${HELP_${var}}" FORCE)
++ endif()
++endforeach()
++
++# process legacy flags
++macro(ocv_optimization_process_obsolete_option legacy_flag OPT legacy_warn)
++ if(DEFINED ${legacy_flag})
++ if(${legacy_warn})
++ message(STATUS "WARNING: Option ${legacy_flag}='${${legacy_flag}}' is deprecated and should not be used anymore")
++ message(STATUS " Behaviour of this option is not backward compatible")
++ message(STATUS " Refer to 'CPU_BASELINE'/'CPU_DISPATCH' CMake options documentation")
++ endif()
++ if(${legacy_flag})
++ if(NOT ";${CPU_BASELINE_REQUIRE};" MATCHES ";${OPT};")
++ set(CPU_BASELINE_REQUIRE "${CPU_BASELINE_REQUIRE};${OPT}" CACHE STRING "${HELP_CPU_BASELINE_REQUIRE}" FORCE)
++ endif()
++ else()
++ if(NOT ";${CPU_BASELINE_DISABLE};" MATCHES ";${OPT};")
++ set(CPU_BASELINE_DISABLE "${CPU_BASELINE_DISABLE};${OPT}" CACHE STRING "${HELP_CPU_BASELINE_DISABLE}" FORCE)
++ endif()
++ endif()
++ endif()
++endmacro()
++ocv_optimization_process_obsolete_option(ENABLE_SSE SSE ON)
++ocv_optimization_process_obsolete_option(ENABLE_SSE2 SSE2 ON)
++ocv_optimization_process_obsolete_option(ENABLE_SSE3 SSE3 ON)
++ocv_optimization_process_obsolete_option(ENABLE_SSSE3 SSSE3 ON)
++ocv_optimization_process_obsolete_option(ENABLE_SSE41 SSE4_1 ON)
++ocv_optimization_process_obsolete_option(ENABLE_SSE42 SSE4_2 ON)
++ocv_optimization_process_obsolete_option(ENABLE_POPCNT POPCNT ON)
++ocv_optimization_process_obsolete_option(ENABLE_AVX AVX ON)
++ocv_optimization_process_obsolete_option(ENABLE_AVX2 AVX2 ON)
++ocv_optimization_process_obsolete_option(ENABLE_FMA3 FMA3 ON)
++
++ocv_optimization_process_obsolete_option(ENABLE_VFPV3 VFPV3 OFF)
++ocv_optimization_process_obsolete_option(ENABLE_NEON NEON OFF)
++
++
++macro(ocv_is_optimization_in_list resultvar check_opt)
++ set(__checked "")
++ set(__queue ${ARGN})
++ set(${resultvar} 0)
++ while(__queue AND NOT ${resultvar})
++ list(REMOVE_DUPLICATES __queue)
++ set(__queue_current ${__queue})
++ set(__queue "")
++ foreach(OPT ${__queue_current})
++ if("x${OPT}" STREQUAL "x${check_opt}")
++ set(${resultvar} 1)
++ break()
++ elseif(NOT ";${__checked};" MATCHES ";${OPT};")
++ list(APPEND __queue ${CPU_${OPT}_IMPLIES})
++ endif()
++ list(APPEND __checked ${OPT})
++ endforeach()
++ endwhile()
++endmacro()
++
++macro(ocv_is_optimization_in_force_list resultvar check_opt)
++ set(__checked "")
++ set(__queue ${ARGN})
++ set(${resultvar} 0)
++ while(__queue AND NOT ${resultvar})
++ list(REMOVE_DUPLICATES __queue)
++ set(__queue_current ${__queue})
++ set(__queue "")
++ foreach(OPT ${__queue_current})
++ if(OPT STREQUAL "${check_opt}")
++ set(${resultvar} 1)
++ break()
++ elseif(NOT ";${__checked};" MATCHES ";${OPT};")
++ list(APPEND __queue ${CPU_${OPT}_FORCE})
++ endif()
++ list(APPEND __checked ${OPT})
++ endforeach()
++ endwhile()
++endmacro()
++
++macro(ocv_append_optimization_flag var OPT)
++ if(CPU_${OPT}_FLAGS_CONFLICT)
++ string(REGEX REPLACE " ${CPU_${OPT}_FLAGS_CONFLICT}" "" ${var} " ${${var}}")
++ string(REGEX REPLACE "^ +" "" ${var} "${${var}}")
++ endif()
++ set(${var} "${${var}} ${CPU_${OPT}_FLAGS_ON}")
++endmacro()
++
++# Support GCC -march=native or Intel Compiler -xHost flags
++if(";${CPU_BASELINE};" MATCHES ";NATIVE;" OR ";${CPU_BASELINE};" MATCHES ";HOST;")
++ set(CPU_BASELINE_DETECT ON)
++ set(_add_native_flag ON)
++elseif(";${CPU_BASELINE};" MATCHES ";DETECT;")
++ set(CPU_BASELINE_DETECT ON)
++elseif(" ${CMAKE_CXX_FLAGS} " MATCHES " -march=native | -xHost | /QxHost ")
++ if(DEFINED CPU_BASELINE)
++ message(STATUS "CPU: Detected '-march=native' or '-xHost' compiler flag. Force CPU_BASELINE=DETECT.")
++ endif()
++ set(CPU_BASELINE "DETECT" CACHE STRING "${HELP_CPU_BASELINE}")
++ set(CPU_BASELINE_DETECT ON)
++endif()
++
++if(X86 OR X86_64)
++ ocv_update(CPU_KNOWN_OPTIMIZATIONS "SSE;SSE2;SSE3;SSSE3;SSE4_1;POPCNT;SSE4_2;FP16;FMA3;AVX;AVX2;AVX512")
++
++ ocv_update(CPU_SSE_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse.cpp")
++ ocv_update(CPU_SSE2_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse2.cpp")
++ ocv_update(CPU_SSE3_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse3.cpp")
++ ocv_update(CPU_SSSE3_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_ssse3.cpp")
++ ocv_update(CPU_SSE4_1_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse41.cpp")
++ ocv_update(CPU_SSE4_2_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_sse42.cpp")
++ ocv_update(CPU_POPCNT_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_popcnt.cpp")
++ ocv_update(CPU_AVX_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx.cpp")
++ ocv_update(CPU_AVX2_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx2.cpp")
++ ocv_update(CPU_FP16_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp")
++ ocv_update(CPU_AVX512_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_avx512.cpp")
++
++ if(NOT OPENCV_CPU_OPT_IMPLIES_IGNORE)
++ ocv_update(CPU_AVX512_IMPLIES "AVX2")
++ ocv_update(CPU_AVX512_FORCE "") # Don't force other optimizations
++ ocv_update(CPU_AVX2_IMPLIES "AVX;FMA3;FP16")
++ ocv_update(CPU_FMA3_IMPLIES "AVX2")
++ ocv_update(CPU_FMA3_FORCE "") # Don't force other optimizations
++ ocv_update(CPU_FP16_IMPLIES "AVX")
++ ocv_update(CPU_FP16_FORCE "") # Don't force other optimizations
++ ocv_update(CPU_AVX_IMPLIES "SSE4_2")
++ ocv_update(CPU_SSE4_2_IMPLIES "SSE4_1;POPCNT")
++ ocv_update(CPU_POPCNT_IMPLIES "SSE4_1")
++ ocv_update(CPU_POPCNT_FORCE "") # Don't force other optimizations
++ ocv_update(CPU_SSE4_1_IMPLIES "SSE3;SSSE3")
++ ocv_update(CPU_SSSE3_IMPLIES "SSE3")
++ ocv_update(CPU_SSE3_IMPLIES "SSE2")
++ ocv_update(CPU_SSE2_IMPLIES "SSE")
++ endif()
++
++ if(CV_ICC)
++ macro(ocv_intel_compiler_optimization_option name unix_flags msvc_flags)
++ ocv_update(CPU_${name}_FLAGS_NAME "${name}")
++ if(MSVC)
++ set(enable_flags "${msvc_flags}")
++ set(flags_conflict "/arch:[^ ]+")
++ else()
++ set(enable_flags "${unix_flags}")
++ set(flags_conflict "-msse[^ ]*|-mssse3|-mavx[^ ]*|-march[^ ]+")
++ endif()
++ ocv_update(CPU_${name}_FLAGS_ON "${enable_flags}")
++ if(flags_conflict)
++ ocv_update(CPU_${name}_FLAGS_CONFLICT "${flags_conflict}")
++ endif()
++ endmacro()
++ ocv_intel_compiler_optimization_option(AVX2 "-march=core-avx2" "/arch:CORE-AVX2")
++ ocv_intel_compiler_optimization_option(FP16 "-mavx" "/arch:AVX")
++ ocv_intel_compiler_optimization_option(AVX "-mavx" "/arch:AVX")
++ ocv_intel_compiler_optimization_option(FMA3 "" "")
++ ocv_intel_compiler_optimization_option(POPCNT "" "")
++ ocv_intel_compiler_optimization_option(SSE4_2 "-msse4.2" "/arch:SSE4.2")
++ ocv_intel_compiler_optimization_option(SSE4_1 "-msse4.1" "/arch:SSE4.1")
++ ocv_intel_compiler_optimization_option(SSE3 "-msse3" "/arch:SSE3")
++ ocv_intel_compiler_optimization_option(SSSE3 "-mssse3" "/arch:SSSE3")
++ ocv_intel_compiler_optimization_option(SSE2 "-msse2" "/arch:SSE2")
++ if(NOT X86_64) # x64 compiler doesn't support /arch:sse
++ ocv_intel_compiler_optimization_option(SSE "-msse" "/arch:SSE")
++ endif()
++ #ocv_intel_compiler_optimization_option(AVX512 "-march=core-avx512")
++ elseif(CMAKE_COMPILER_IS_GNUCXX)
++ ocv_update(CPU_AVX2_FLAGS_ON "-mavx2")
++ ocv_update(CPU_FP16_FLAGS_ON "-mf16c")
++ ocv_update(CPU_AVX_FLAGS_ON "-mavx")
++ ocv_update(CPU_FMA3_FLAGS_ON "-mfma")
++ ocv_update(CPU_POPCNT_FLAGS_ON "-mpopcnt")
++ ocv_update(CPU_SSE4_2_FLAGS_ON "-msse4.2")
++ ocv_update(CPU_SSE4_1_FLAGS_ON "-msse4.1")
++ ocv_update(CPU_SSE3_FLAGS_ON "-msse3")
++ ocv_update(CPU_SSSE3_FLAGS_ON "-mssse3")
++ ocv_update(CPU_SSE2_FLAGS_ON "-msse2")
++ ocv_update(CPU_SSE_FLAGS_ON "-msse")
++ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0")
++ ocv_update(CPU_AVX512_FLAGS_ON "-mavx512f -mavx512pf -mavx512er -mavx512cd -mavx512vl -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi")
++ endif()
++ elseif(MSVC)
++ ocv_update(CPU_AVX2_FLAGS_ON "/arch:AVX2")
++ ocv_update(CPU_AVX_FLAGS_ON "/arch:AVX")
++ if(NOT MSVC64)
++ # 64-bit MSVC compiler uses SSE/SSE2 by default
++ ocv_update(CPU_SSE_FLAGS_ON "/arch:SSE")
++ ocv_update(CPU_SSE_SUPPORTED ON)
++ ocv_update(CPU_SSE2_FLAGS_ON "/arch:SSE2")
++ ocv_update(CPU_SSE2_SUPPORTED ON)
++ else()
++ ocv_update(CPU_SSE_SUPPORTED ON)
++ ocv_update(CPU_SSE2_SUPPORTED ON)
++ endif()
++ # Other instruction sets are supported by default since MSVC 2008 at least
++ else()
++ message(WARNING "TODO: Unsupported compiler")
++ endif()
++
++ if(NOT DEFINED CPU_DISPATCH)
++ set(CPU_DISPATCH "SSE4_1;AVX;FP16;AVX2" CACHE STRING "${HELP_CPU_DISPATCH}")
++ endif()
++
++ if(NOT DEFINED CPU_BASELINE)
++ if(X86_64)
++ set(CPU_BASELINE "SSSE3" CACHE STRING "${HELP_CPU_BASELINE}")
++ else()
++ set(CPU_BASELINE "SSE2" CACHE STRING "${HELP_CPU_BASELINE}")
++ endif()
++ endif()
++
++elseif(ARM OR AARCH64)
++ ocv_update(CPU_FP16_TEST_FILE "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp")
++ if(NOT AARCH64)
++ ocv_update(CPU_KNOWN_OPTIMIZATIONS "VFPV3;NEON;FP16")
++ ocv_update(CPU_NEON_FLAGS_ON "-mfpu=neon")
++ ocv_update(CPU_VFPV3_FLAGS_ON "-mfpu=vfpv3")
++ ocv_update(CPU_FP16_FLAGS_ON "-mfpu=neon-fp16")
++ set(CPU_BASELINE "DETECT" CACHE STRING "${HELP_CPU_BASELINE}")
++ else()
++ ocv_update(CPU_KNOWN_OPTIMIZATIONS "NEON;FP16")
++ ocv_update(CPU_NEON_FLAGS_ON "")
++ set(CPU_BASELINE "NEON" CACHE STRING "${HELP_CPU_BASELINE}")
++ endif()
++endif()
++
++# Helper values for cmake-gui
++set(CPU_BASELINE "DETECT" CACHE STRING "${HELP_CPU_BASELINE}")
++set(CPU_DISPATCH "" CACHE STRING "${HELP_CPU_DISPATCH}")
++set_property(CACHE CPU_BASELINE PROPERTY STRINGS "" ${CPU_KNOWN_OPTIMIZATIONS})
++set_property(CACHE CPU_DISPATCH PROPERTY STRINGS "" ${CPU_KNOWN_OPTIMIZATIONS})
++
++set(CPU_BASELINE_FLAGS "")
++
++set(CPU_BASELINE_FINAL "")
++set(CPU_DISPATCH_FINAL "")
++
++macro(ocv_check_compiler_optimization OPT)
++ if(NOT DEFINED CPU_${OPT}_SUPPORTED)
++ if((DEFINED CPU_${OPT}_FLAGS_ON AND NOT "x${CPU_${OPT}_FLAGS_ON}" STREQUAL "x") OR CPU_${OPT}_TEST_FILE)
++ set(_varname "")
++ if(CPU_${OPT}_TEST_FILE)
++ set(__available 0)
++ if(CPU_BASELINE_DETECT)
++ set(_varname "HAVE_CPU_${OPT}_SUPPORT")
++ ocv_check_compiler_flag(CXX "${CPU_BASELINE_FLAGS}" "${_varname}" "${CPU_${OPT}_TEST_FILE}")
++ if(${_varname})
++ list(APPEND CPU_BASELINE_FINAL ${OPT})
++ set(__available 1)
++ endif()
++ endif()
++ if(NOT __available)
++ if(NOT "x${CPU_${OPT}_FLAGS_NAME}" STREQUAL "x")
++ set(_varname "HAVE_CPU_${CPU_${OPT}_FLAGS_NAME}")
++ set(_compile_flags "${CPU_BASELINE_FLAGS}")
++ ocv_append_optimization_flag(_compile_flags ${OPT})
++ ocv_check_compiler_flag(CXX "${_compile_flags}" "${_varname}" "${CPU_${OPT}_TEST_FILE}")
++ elseif(NOT "x${CPU_${OPT}_FLAGS_ON}" STREQUAL "x")
++ ocv_check_flag_support(CXX "${CPU_${OPT}_FLAGS_ON}" _varname "" "${CPU_${OPT}_TEST_FILE}")
++ else()
++ set(_varname "HAVE_CPU_${OPT}_SUPPORT")
++ set(_compile_flags "${CPU_BASELINE_FLAGS}")
++ ocv_append_optimization_flag(_compile_flags ${OPT})
++ ocv_check_compiler_flag(CXX "${_compile_flags}" "${_varname}" "${CPU_${OPT}_TEST_FILE}")
++ endif()
++ endif()
++ else()
++ ocv_check_flag_support(CXX "${CPU_${OPT}_FLAGS_ON}" _varname "")
++ endif()
++ if(_varname AND ${_varname})
++ set(CPU_${OPT}_SUPPORTED ON)
++ elseif(NOT CPU_${OPT}_SUPPORTED)
++ message(STATUS "${OPT} is not supported by C++ compiler")
++ endif()
++ else()
++ set(CPU_${OPT}_SUPPORTED ON)
++ endif()
++ endif()
++endmacro()
++
++foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
++ set(CPU_${OPT}_USAGE_COUNT 0 CACHE INTERNAL "" FORCE)
++ if(NOT DEFINED CPU_${OPT}_FORCE)
++ set(CPU_${OPT}_FORCE "${CPU_${OPT}_IMPLIES}")
++ endif()
++endforeach()
++
++if(_add_native_flag)
++ set(_varname "HAVE_CPU_NATIVE_SUPPORT")
++ ocv_check_compiler_flag(CXX "-march=native" "${_varname}" "")
++ if(_varname)
++ set(CPU_BASELINE_FLAGS "${CPU_BASELINE_FLAGS} -march=native")
++ else()
++ set(_varname "HAVE_CPU_HOST_SUPPORT")
++ if(MSVC)
++ set(_flag "/QxHost")
++ else()
++ set(_flag "-xHost")
++ endif()
++ ocv_check_compiler_flag(CXX "${_flag}" "${_varname}" "")
++ if(_varname)
++ set(CPU_BASELINE_FLAGS "${CPU_BASELINE_FLAGS} ${flag}")
++ endif()
++ endif()
++endif()
++
++foreach(OPT ${CPU_KNOWN_OPTIMIZATIONS})
++ set(__is_disabled 0)
++ foreach(OPT2 ${CPU_BASELINE_DISABLE})
++ ocv_is_optimization_in_list(__is_disabled ${OPT2} ${OPT})
++ if(__is_disabled)
++ break()
++ endif()
++ endforeach()
++ if(__is_disabled)
++ set(__is_from_baseline 0)
++ else()
++ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_REQUIRE})
++ if(NOT __is_from_baseline)
++ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE})
++ endif()
++ endif()
++ ocv_is_optimization_in_list(__is_from_dispatch ${OPT} ${CPU_DISPATCH_REQUIRE})
++ if(NOT __is_from_dispatch)
++ ocv_is_optimization_in_list(__is_from_dispatch ${OPT} ${CPU_DISPATCH})
++ endif()
++ if(__is_from_dispatch OR __is_from_baseline OR CPU_BASELINE_DETECT)
++ ocv_check_compiler_optimization(${OPT})
++ endif()
++ if(CPU_BASELINE_DETECT AND NOT __is_from_baseline AND NOT __is_disabled)
++ ocv_is_optimization_in_list(__is_from_baseline ${OPT} ${CPU_BASELINE_FINAL})
++ endif()
++ if(CPU_${OPT}_SUPPORTED)
++ if(";${CPU_DISPATCH};" MATCHES ";${OPT};" AND NOT __is_from_baseline)
++ list(APPEND CPU_DISPATCH_FINAL ${OPT})
++ elseif(__is_from_baseline AND NOT CPU_BASELINE_DETECT)
++ list(APPEND CPU_BASELINE_FINAL ${OPT})
++ ocv_append_optimization_flag(CPU_BASELINE_FLAGS ${OPT})
++ endif()
++ endif()
++endforeach()
++
++foreach(OPT ${CPU_BASELINE_REQUIRE})
++ if(NOT ";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
++ message(SEND_ERROR "Required baseline optimization is not supported: ${OPT} (CPU_BASELINE_REQUIRE=${CPU_BASELINE_REQUIRE})")
++ endif()
++endforeach()
++
++foreach(OPT ${CPU_BASELINE})
++ if(OPT STREQUAL "DETECT" OR OPT STREQUAL "HOST" OR OPT STREQUAL "NATIVE")
++ # nothing
++ elseif(NOT ";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
++ message(STATUS "Optimization ${OPT} is not available, skipped")
++ endif()
++endforeach()
++
++foreach(OPT ${CPU_DISPATCH_REQUIRE})
++ if(";${CPU_DISPATCH_FINAL};" MATCHES ";${OPT};")
++ # OK
++ elseif(";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
++ message(SEND_ERROR "Dispatched optimization ${OPT} is in baseline list (CPU_DISPATCH_REQUIRE=${CPU_DISPATCH_REQUIRE})")
++ else()
++ message(SEND_ERROR "Required dispatch optimization is not supported: ${OPT} (CPU_DISPATCH_REQUIRE=${CPU_DISPATCH_REQUIRE})")
++ endif()
++endforeach()
++
++foreach(OPT ${CPU_DISPATCH})
++ if(";${CPU_DISPATCH_FINAL};" MATCHES ";${OPT};")
++ # OK
++ elseif(";${CPU_BASELINE_FINAL};" MATCHES ";${OPT};")
++ # OK
++ else()
++ message(STATUS "Dispatch optimization ${OPT} is not available, skipped")
++ endif()
++endforeach()
++
++#message(STATUS "CPU_BASELINE_FINAL=${CPU_BASELINE_FINAL}")
++#message(STATUS "CPU_DISPATCH_FINAL=${CPU_DISPATCH_FINAL}")
++
++#if(CPU_DISPATCH_FINAL AND NOT PYTHON_DEFAULT_EXECUTABLE)
++# message(FATAL_ERROR "Python is required for CPU dispatched optimization support")
++#endif()
++
++macro(ocv_compiler_optimization_options)
++ set(__flags "${OPENCV_EXTRA_CXX_FLAGS} ${CPU_BASELINE_FLAGS}")
++ if(NOT __flags STREQUAL CACHED_CPU_BASELINE_FLAGS)
++ set(CACHED_CPU_BASELINE_FLAGS "${__flags}" CACHE INTERNAL "" FORCE)
++ ocv_clear_vars(HAVE_CPU_BASELINE_FLAGS)
++ endif()
++ ocv_check_compiler_flag(CXX "${__flags}" HAVE_CPU_BASELINE_FLAGS)
++ if(NOT HAVE_CPU_BASELINE_FLAGS)
++ message(FATAL_ERROR "Compiler doesn't support baseline optimization flags: ${CPU_BASELINE_FLAGS}")
++ endif()
++ add_extra_compiler_option_force("${CPU_BASELINE_FLAGS}")
++
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ set(__dispatch_flags "")
++ set(__dispatch_definitions "")
++ set(__dispatch_opts "")
++ set(__dispatch_opts_force "")
++ foreach(OPT2 ${CPU_KNOWN_OPTIMIZATIONS})
++ if(NOT CPU_${OPT2}_SUPPORTED)
++ #continue()
++ else()
++ ocv_is_optimization_in_list(__is_from_baseline ${OPT2} ${CPU_BASELINE_FINAL})
++ if(NOT __is_from_baseline)
++ ocv_is_optimization_in_list(__is_active ${OPT2} ${OPT})
++ if(__is_active)
++ ocv_append_optimization_flag(__dispatch_flags ${OPT2})
++ list(APPEND __dispatch_definitions "CV_CPU_COMPILE_${OPT2}=1")
++ list(APPEND __dispatch_opts "${OPT2}")
++ endif()
++ ocv_is_optimization_in_force_list(__is_force ${OPT2} ${OPT})
++ if(__is_force)
++ list(APPEND __dispatch_opts_force "${OPT2}")
++ endif()
++ endif()
++ endif()
++ endforeach()
++ set(__flags "${OPENCV_EXTRA_CXX_FLAGS} ${__dispatch_flags}")
++ if(NOT __flags STREQUAL CACHED_CPU_DISPATCH_${OPT}_FLAGS)
++ set(CACHED_CPU_DISPATCH_${OPT}_FLAGS "${__flags}" CACHE INTERNAL "" FORCE)
++ ocv_clear_vars(HAVE_CPU_DISPATCH_FLAGS_${OPT})
++ endif()
++ ocv_check_compiler_flag(CXX "${__flags}" HAVE_CPU_DISPATCH_FLAGS_${OPT})
++ if(NOT HAVE_CPU_DISPATCH_FLAGS_${OPT})
++ message(FATAL_ERROR "Compiler doesn't support optimization flags for ${OPT} dispatch mode: ${__dispatch_flags}")
++ endif()
++ set(CPU_DISPATCH_FLAGS_${OPT} "${__dispatch_flags}")
++ set(CPU_DISPATCH_DEFINITIONS_${OPT} "${__dispatch_definitions}")
++ set(CPU_DISPATCH_${OPT}_INCLUDED "${__dispatch_opts}")
++ set(CPU_DISPATCH_${OPT}_FORCED "${__dispatch_opts_force}")
++ endforeach()
++
++ if(ENABLE_POWERPC)
++ add_extra_compiler_option("-mcpu=G3 -mtune=G5")
++ endif()
++ if(ARM)
++ add_extra_compiler_option("-mfp16-format=ieee")
++ endif(ARM)
++ if(ENABLE_NEON)
++ add_extra_compiler_option("-mfpu=neon")
++ endif()
++ if(ENABLE_VFPV3 AND NOT ENABLE_NEON)
++ add_extra_compiler_option("-mfpu=vfpv3")
++ endif()
++endmacro()
++
++macro(ocv_compiler_optimization_options_finalize)
++ if(CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64))
++ if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 4)
++ if(OPENCV_EXTRA_CXX_FLAGS MATCHES "-m(sse2|avx)")
++ add_extra_compiler_option(-mfpmath=sse) # !! important - be on the same wave with x64 compilers
++ else()
++ add_extra_compiler_option(-mfpmath=387)
++ endif()
++ endif()
++ endif()
++
++ if(MSVC)
++ # Generate Intrinsic Functions
++ set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /Oi")
++
++ if((X86 OR X86_64) AND CMAKE_SIZEOF_VOID_P EQUAL 4 AND ";${CPU_BASELINE_FINAL};" MATCHES ";SSE;")
++ set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /fp:fast") # !! important - be on the same wave with x64 compilers
++ endif()
++ endif(MSVC)
++endmacro()
++
++macro(ocv_compiler_optimization_process_sources SOURCES_VAR_NAME LIBS_VAR_NAME TARGET_BASE_NAME)
++ set(__result "")
++ set(__result_libs "")
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ set(__result_${OPT} "")
++ endforeach()
++ foreach(fname ${${SOURCES_VAR_NAME}})
++ string(TOLOWER "${fname}" fname_LOWER)
++ if(fname_LOWER MATCHES "[.]opt_.*[.]cpp$")
++ if(CV_DISABLE_OPTIMIZATION OR NOT CV_ENABLE_INTRINSICS)
++ message(STATUS "Excluding from source files list: ${fname}")
++ #continue()
++ else()
++ set(__opt_found 0)
++ foreach(OPT ${CPU_BASELINE_FINAL})
++ string(TOLOWER "${OPT}" OPT_LOWER)
++ if(fname_LOWER MATCHES "_${OPT_LOWER}[.]cpp$")
++#message("${fname} BASELINE-${OPT}")
++ set(__opt_found 1)
++ list(APPEND __result "${fname}")
++ break()
++ endif()
++ endforeach()
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ foreach(OPT2 ${CPU_DISPATCH_${OPT}_FORCED})
++ string(TOLOWER "${OPT2}" OPT2_LOWER)
++ if(fname_LOWER MATCHES "_${OPT2_LOWER}[.]cpp$")
++ list(APPEND __result_${OPT} "${fname}")
++ math(EXPR CPU_${OPT}_USAGE_COUNT "${CPU_${OPT}_USAGE_COUNT}+1")
++ set(CPU_${OPT}_USAGE_COUNT "${CPU_${OPT}_USAGE_COUNT}" CACHE INTERNAL "" FORCE)
++#message("${fname} ${OPT}")
++#message(" ${CPU_DISPATCH_${OPT}_INCLUDED}")
++#message(" ${CPU_DISPATCH_DEFINITIONS_${OPT}}")
++#message(" ${CPU_DISPATCH_FLAGS_${OPT}}")
++ set(__opt_found 1)
++ break()
++ endif()
++ endforeach()
++ if(__opt_found)
++ set(__opt_found 1)
++ break()
++ endif()
++ endforeach()
++ if(NOT __opt_found)
++ message(STATUS "Excluding from source files list: ${fname}")
++ endif()
++ endif()
++ else()
++ list(APPEND __result "${fname}")
++ endif()
++ endforeach()
++
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ if(__result_${OPT})
++#message("${OPT}: ${__result_${OPT}}")
++ if(CMAKE_GENERATOR MATCHES "^Visual")
++ # extra flags are added before common flags, so switching between optimizations doesn't work correctly
++ # Also CMAKE_CXX_FLAGS doesn't work (it is directory-based, so add_subdirectory is required)
++ add_library(${TARGET_BASE_NAME}_${OPT} OBJECT ${__result_${OPT}})
++ ocv_append_dependant_targets(${TARGET_BASE_NAME} ${TARGET_BASE_NAME}_${OPT})
++ set_target_properties(${TARGET_BASE_NAME}_${OPT} PROPERTIES COMPILE_DEFINITIONS "${CPU_DISPATCH_DEFINITIONS_${OPT}}")
++ set_target_properties(${TARGET_BASE_NAME}_${OPT} PROPERTIES COMPILE_FLAGS "${CPU_DISPATCH_FLAGS_${OPT}}")
++ #list(APPEND __result_libs ${TARGET_BASE_NAME}_${OPT})
++ list(APPEND __result "$<TARGET_OBJECTS:${TARGET_BASE_NAME}_${OPT}>")
++ else()
++ foreach(fname ${__result_${OPT}})
++ set_source_files_properties("${fname}" PROPERTIES COMPILE_DEFINITIONS "${CPU_DISPATCH_DEFINITIONS_${OPT}}")
++ set_source_files_properties("${fname}" PROPERTIES COMPILE_FLAGS "${CPU_DISPATCH_FLAGS_${OPT}}")
++ endforeach()
++ list(APPEND __result ${__result_${OPT}})
++ endif()
++ endif()
++ endforeach()
++ set(${SOURCES_VAR_NAME} "${__result}")
++ list(APPEND ${LIBS_VAR_NAME} ${__result_libs})
++endmacro()
++
++macro(ocv_compiler_optimization_fill_cpu_config)
++ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE "")
++ foreach(OPT ${CPU_BASELINE_FINAL})
++ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}
++#define CV_CPU_COMPILE_${OPT} 1
++#define CV_CPU_BASELINE_COMPILE_${OPT} 1
++")
++ endforeach()
++
++ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}
++#define CV_CPU_BASELINE_FEATURES 0 \\")
++ foreach(OPT ${CPU_BASELINE_FINAL})
++ if(NOT DEFINED CPU_${OPT}_FEATURE_ALIAS OR NOT "x${CPU_${OPT}_FEATURE_ALIAS}" STREQUAL "x")
++ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}
++ , CV_CPU_${OPT} \\")
++ endif()
++ endforeach()
++ set(OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE}\n")
++
++ set(__dispatch_modes "")
++ foreach(OPT ${CPU_DISPATCH_FINAL})
++ list(APPEND __dispatch_modes ${CPU_DISPATCH_${OPT}_FORCE} ${OPT})
++ endforeach()
++ list(REMOVE_DUPLICATES __dispatch_modes)
++ set(OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE "")
++ foreach(OPT ${__dispatch_modes})
++ set(OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE}
++#define CV_CPU_DISPATCH_COMPILE_${OPT} 1")
++ endforeach()
++
++ set(OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE "// AUTOGENERATED, DO NOT EDIT\n")
++ foreach(OPT ${CPU_ALL_OPTIMIZATIONS})
++ if(NOT DEFINED CPU_${OPT}_FEATURE_ALIAS OR NOT "x${CPU_${OPT}_FEATURE_ALIAS}" STREQUAL "x")
++ set(OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE "${OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE}
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_${OPT}
++# define CV_CPU_HAS_SUPPORT_${OPT} 1
++# define CV_CPU_CALL_${OPT}(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_${OPT}
++# define CV_CPU_HAS_SUPPORT_${OPT} (cv::checkHardwareSupport(CV_CPU_${OPT}))
++# define CV_CPU_CALL_${OPT}(...) if (CV_CPU_HAS_SUPPORT_${OPT}) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_${OPT} 0
++# define CV_CPU_CALL_${OPT}(...)
++#endif
++")
++ endif()
++ endforeach()
++
++ set(__file "${CMAKE_SOURCE_DIR}/modules/core/include/opencv2/core/cv_cpu_helper.h")
++ if(EXISTS "${__file}")
++ file(READ "${__file}" __content)
++ endif()
++ if(__content STREQUAL OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE)
++ #message(STATUS "${__file} contains same content")
++ else()
++ file(WRITE "${__file}" "${OPENCV_CPU_CONTROL_DEFINITIONS_CONFIGMAKE}")
++ message(WARNING "${__file} is updated")
++ endif()
++endmacro()
++
++if(CV_DISABLE_OPTIMIZATION OR CV_ICC)
++ ocv_update(CV_ENABLE_UNROLLED 0)
++else()
++ ocv_update(CV_ENABLE_UNROLLED 1)
++endif()
+diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake
+index 5bb0479..0eb68b6 100644
+--- a/cmake/OpenCVCompilerOptions.cmake
++++ b/cmake/OpenCVCompilerOptions.cmake
+@@ -31,24 +31,21 @@ endif()
+ if(MINGW OR (X86 AND UNIX AND NOT APPLE))
+ # mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O2 instead
+ if(CMAKE_COMPILER_IS_GNUCXX)
+- foreach(flags CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
+- string(REPLACE "-O3" "-O2" ${flags} "${${flags}}")
+- endforeach()
+- endif()
+-
+- if(CMAKE_COMPILER_IS_GNUCC)
+- foreach(flags CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG)
++ foreach(flags
++ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG
++ CMAKE_C_FLAGS CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_DEBUG)
+ string(REPLACE "-O3" "-O2" ${flags} "${${flags}}")
+ endforeach()
+ endif()
+ endif()
+
+ if(MSVC)
+- string(REGEX REPLACE "^ *| * $" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
+- string(REGEX REPLACE "^ *| * $" "" CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT}")
++ string(STRIP "${CMAKE_CXX_FLAGS}" CMAKE_CXX_FLAGS)
++ string(STRIP "${CMAKE_CXX_FLAGS_INIT}" CMAKE_CXX_FLAGS_INIT)
+ if(CMAKE_CXX_FLAGS STREQUAL CMAKE_CXX_FLAGS_INIT)
+ # override cmake default exception handling option
+- string(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
++ string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Flags used by the compiler during all build types." FORCE)
+ endif()
+ endif()
+@@ -63,9 +60,6 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "")
+ set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "")
+
+ macro(add_extra_compiler_option option)
+- if(CMAKE_BUILD_TYPE)
+- set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})
+- endif()
+ ocv_check_flag_support(CXX "${option}" _varname "${OPENCV_EXTRA_CXX_FLAGS} ${ARGN}")
+ if(${_varname})
+ set(OPENCV_EXTRA_CXX_FLAGS "${OPENCV_EXTRA_CXX_FLAGS} ${option}")
+@@ -77,6 +71,12 @@ macro(add_extra_compiler_option option)
+ endif()
+ endmacro()
+
++macro(add_extra_compiler_option_force option)
++ set(OPENCV_EXTRA_CXX_FLAGS "${OPENCV_EXTRA_CXX_FLAGS} ${option}")
++ set(OPENCV_EXTRA_C_FLAGS "${OPENCV_EXTRA_C_FLAGS} ${option}")
++endmacro()
++
++
+ # Gets environment variable and puts its value to the corresponding preprocessor definition
+ # Useful for WINRT that has no access to environment variables
+ macro(add_env_definitions option)
+@@ -102,7 +102,11 @@ if(MINGW)
+ endif()
+
+ if(CV_ICC AND NOT ENABLE_FAST_MATH)
+- add_extra_compiler_option("-fp-model precise")
++ if(MSVC)
++ add_extra_compiler_option("/fp:precise")
++ else()
++ add_extra_compiler_option("-fp-model precise")
++ endif()
+ endif()
+
+ if(CMAKE_COMPILER_IS_GNUCXX)
+@@ -141,7 +145,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+ endif()
+
+ # We need pthread's
+- if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX))
++ if(UNIX AND NOT ANDROID AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX)) # TODO
+ add_extra_compiler_option(-pthread)
+ endif()
+
+@@ -170,83 +174,6 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+ if(ENABLE_FAST_MATH)
+ add_extra_compiler_option(-ffast-math)
+ endif()
+- if(ENABLE_POWERPC)
+- add_extra_compiler_option("-mcpu=G3 -mtune=G5")
+- endif()
+- if(ENABLE_SSE)
+- add_extra_compiler_option(-msse)
+- endif()
+- if(ENABLE_SSE2)
+- add_extra_compiler_option(-msse2)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-sse2)
+- endif()
+- if(ARM)
+- add_extra_compiler_option("-mfp16-format=ieee")
+- endif(ARM)
+- if(ENABLE_NEON)
+- add_extra_compiler_option("-mfpu=neon")
+- endif()
+- if(ENABLE_VFPV3 AND NOT ENABLE_NEON)
+- add_extra_compiler_option("-mfpu=vfpv3")
+- endif()
+-
+- # SSE3 and further should be disabled under MingW because it generates compiler errors
+- if(NOT MINGW)
+- if(ENABLE_AVX)
+- add_extra_compiler_option(-mavx)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-avx)
+- endif()
+- if(ENABLE_AVX2)
+- add_extra_compiler_option(-mavx2)
+-
+- if(ENABLE_FMA3)
+- add_extra_compiler_option(-mfma)
+- endif()
+- endif()
+-
+- # GCC depresses SSEx instructions when -mavx is used. Instead, it generates new AVX instructions or AVX equivalence for all SSEx instructions when needed.
+- if(NOT OPENCV_EXTRA_CXX_FLAGS MATCHES "-mavx")
+- if(ENABLE_SSE3)
+- add_extra_compiler_option(-msse3)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-sse3)
+- endif()
+-
+- if(ENABLE_SSSE3)
+- add_extra_compiler_option(-mssse3)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-ssse3)
+- endif()
+-
+- if(ENABLE_SSE41)
+- add_extra_compiler_option(-msse4.1)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-sse4.1)
+- endif()
+-
+- if(ENABLE_SSE42)
+- add_extra_compiler_option(-msse4.2)
+- elseif(X86 OR X86_64)
+- add_extra_compiler_option(-mno-sse4.2)
+- endif()
+-
+- if(ENABLE_POPCNT)
+- add_extra_compiler_option(-mpopcnt)
+- endif()
+- endif()
+- endif(NOT MINGW)
+-
+- if(X86 OR X86_64)
+- if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+- if(OPENCV_EXTRA_CXX_FLAGS MATCHES "-m(sse2|avx)")
+- add_extra_compiler_option(-mfpmath=sse)# !! important - be on the same wave with x64 compilers
+- else()
+- add_extra_compiler_option(-mfpmath=387)
+- endif()
+- endif()
+- endif()
+
+ # Profiling?
+ if(ENABLE_PROFILING)
+@@ -257,7 +184,7 @@ if(CMAKE_COMPILER_IS_GNUCXX)
+ string(REPLACE "-fomit-frame-pointer" "" ${flags} "${${flags}}")
+ string(REPLACE "-ffunction-sections" "" ${flags} "${${flags}}")
+ endforeach()
+- elseif(NOT APPLE AND NOT ANDROID)
++ elseif(NOT ((IOS OR ANDROID) AND NOT BUILD_SHARED_LIBS))
+ # Remove unreferenced functions: function level linking
+ add_extra_compiler_option(-ffunction-sections)
+ endif()
+@@ -296,41 +223,6 @@ if(MSVC)
+ set(OPENCV_EXTRA_FLAGS_RELEASE "${OPENCV_EXTRA_FLAGS_RELEASE} /Zi")
+ endif()
+
+- if(ENABLE_AVX2 AND NOT MSVC_VERSION LESS 1800)
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:AVX2")
+- endif()
+- if(ENABLE_AVX AND NOT MSVC_VERSION LESS 1600 AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:AVX")
+- endif()
+-
+- if(ENABLE_SSE4_1 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE4.1")
+- endif()
+-
+- if(ENABLE_SSE3 AND CV_ICC AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE3")
+- endif()
+-
+- if(NOT MSVC64)
+- # 64-bit MSVC compiler uses SSE/SSE2 by default
+- if(ENABLE_SSE2 AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE2")
+- endif()
+- if(ENABLE_SSE AND NOT OPENCV_EXTRA_FLAGS MATCHES "/arch:")
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /arch:SSE")
+- endif()
+- endif()
+-
+- if(ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1 OR ENABLE_AVX OR ENABLE_AVX2)
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /Oi")
+- endif()
+-
+- if(X86 OR X86_64)
+- if(CMAKE_SIZEOF_VOID_P EQUAL 4 AND ENABLE_SSE2)
+- set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /fp:fast") # !! important - be on the same wave with x64 compilers
+- endif()
+- endif()
+-
+ if(OPENCV_WARNINGS_ARE_ERRORS)
+ set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS} /WX")
+ endif()
+@@ -353,6 +245,16 @@ if(NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX AND NOT ANDROID)
+ set(OPENCV_EXTRA_FLAGS "-fPIC ${OPENCV_EXTRA_FLAGS}")
+ endif()
+
++include(cmake/OpenCVCompilerOptimizations.cmake)
++
++if(COMMAND ocv_compiler_optimization_options)
++ ocv_compiler_optimization_options()
++endif()
++
++if(COMMAND ocv_compiler_optimization_options_finalize)
++ ocv_compiler_optimization_options_finalize()
++endif()
++
+ # Add user supplied extra options (optimization, etc...)
+ # ==========================================================
+ set(OPENCV_EXTRA_FLAGS "${OPENCV_EXTRA_FLAGS}" CACHE INTERNAL "Extra compiler options")
+@@ -370,6 +272,7 @@ if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_OPENCV_GCC_VERSION_NUM GREATER 399)
+ add_extra_compiler_option(-fvisibility-inlines-hidden)
+ endif()
+
++# TODO !!!!!
+ if(NOT OPENCV_FP16_DISABLE AND NOT IOS)
+ if(ARM AND ENABLE_NEON)
+ set(FP16_OPTION "-mfpu=neon-fp16")
+@@ -378,7 +281,7 @@ if(NOT OPENCV_FP16_DISABLE AND NOT IOS)
+ endif()
+ try_compile(__VALID_FP16
+ "${OpenCV_BINARY_DIR}"
+- "${OpenCV_SOURCE_DIR}/cmake/checks/fp16.cpp"
++ "${OpenCV_SOURCE_DIR}/cmake/checks/cpu_fp16.cpp"
+ COMPILE_DEFINITIONS "-DCHECK_FP16" "${FP16_OPTION}"
+ OUTPUT_VARIABLE TRY_OUT
+ )
+diff --git a/cmake/OpenCVGenHeaders.cmake b/cmake/OpenCVGenHeaders.cmake
+index 2988979..477b910 100644
+--- a/cmake/OpenCVGenHeaders.cmake
++++ b/cmake/OpenCVGenHeaders.cmake
+@@ -3,6 +3,10 @@ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in" "${OPENCV_CO
+ configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/cvconfig.h.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/cvconfig.h")
+ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
+
++# platform-specific config file
++ocv_compiler_optimization_fill_cpu_config()
++configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/cv_cpu_config.h.in" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cv_cpu_config.h")
++
+ # ----------------------------------------------------------------------------
+ # opencv_modules.hpp based on actual modules list
+ # ----------------------------------------------------------------------------
+diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
+index 742a287..3e98bf5 100644
+--- a/cmake/OpenCVModule.cmake
++++ b/cmake/OpenCVModule.cmake
+@@ -65,6 +65,7 @@ foreach(mod ${OPENCV_MODULES_BUILD} ${OPENCV_MODULES_DISABLED_USER} ${OPENCV_MOD
+ unset(OPENCV_MODULE_${mod}_PRIVATE_OPT_DEPS CACHE)
+ unset(OPENCV_MODULE_${mod}_LINK_DEPS CACHE)
+ unset(OPENCV_MODULE_${mod}_WRAPPERS CACHE)
++ unset(OPENCV_DEPENDANT_TARGETS_${mod} CACHE)
+ endforeach()
+
+ # clean modules info which needs to be recalculated
+@@ -641,6 +642,8 @@ macro(ocv_set_module_sources)
+ # use full paths for module to be independent from the module location
+ ocv_convert_to_full_paths(OPENCV_MODULE_${the_module}_HEADERS)
+
++ ocv_compiler_optimization_process_sources(OPENCV_MODULE_${the_module}_SOURCES OPENCV_MODULE_${the_module}_DEPS_EXT ${the_module})
++
+ set(OPENCV_MODULE_${the_module}_HEADERS ${OPENCV_MODULE_${the_module}_HEADERS} CACHE INTERNAL "List of header files for ${the_module}")
+ set(OPENCV_MODULE_${the_module}_SOURCES ${OPENCV_MODULE_${the_module}_SOURCES} CACHE INTERNAL "List of source files for ${the_module}")
+ endmacro()
+diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake
+index 90437cb..45968e7 100644
+--- a/cmake/OpenCVPCHSupport.cmake
++++ b/cmake/OpenCVPCHSupport.cmake
+@@ -326,7 +326,10 @@ MACRO(ADD_NATIVE_PRECOMPILED_HEADER _targetName _input)
+
+ get_target_property(_sources ${_targetName} SOURCES)
+ foreach(src ${_sources})
+- if(NOT "${src}" MATCHES "\\.mm$")
++ if(NOT "${src}" MATCHES "\\.mm$"
++ AND NOT "${src}" MATCHES "\\.h$" AND NOT "${src}" MATCHES "\\.hpp$" # header files
++ AND NOT "${src}" MATCHES "^\$" # CMake generator expressions
++ )
+ get_source_file_property(oldProps "${src}" COMPILE_FLAGS)
+ if(NOT oldProps)
+ set(newProperties "/Yu\"${_input}\" /FI\"${_input}\"")
+diff --git a/cmake/OpenCVUtils.cmake b/cmake/OpenCVUtils.cmake
+index cdf257d..8a5ee28 100644
+--- a/cmake/OpenCVUtils.cmake
++++ b/cmake/OpenCVUtils.cmake
+@@ -37,7 +37,11 @@ endmacro()
+
+ macro(ocv_update VAR)
+ if(NOT DEFINED ${VAR})
+- set(${VAR} ${ARGN})
++ if("x${ARGN}" STREQUAL "x")
++ set(${VAR} "")
++ else()
++ set(${VAR} ${ARGN})
++ endif()
+ else()
+ #ocv_debug_message("Preserve old value for ${VAR}: ${${VAR}}")
+ endif()
+@@ -151,8 +155,15 @@ function(ocv_append_target_property target prop)
+ endif()
+ endfunction()
+
++function(ocv_append_dependant_targets target)
++ #ocv_debug_message("ocv_append_dependant_targets(${target} ${ARGN})")
++ _ocv_fix_target(target)
++ set(OPENCV_DEPENDANT_TARGETS_${target} "${OPENCV_DEPENDANT_TARGETS_${target}};${ARGN}" CACHE INTERNAL "" FORCE)
++endfunction()
++
+ # adds include directories in such way that directories from the OpenCV source tree go first
+ function(ocv_target_include_directories target)
++ #ocv_debug_message("ocv_target_include_directories(${target} ${ARGN})")
+ _ocv_fix_target(target)
+ set(__params "")
+ if(CMAKE_COMPILER_IS_GNUCXX AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0" AND
+@@ -173,6 +184,11 @@ function(ocv_target_include_directories target)
+ else()
+ if(TARGET ${target})
+ target_include_directories(${target} PRIVATE ${__params})
++ if(OPENCV_DEPENDANT_TARGETS_${target})
++ foreach(t ${OPENCV_DEPENDANT_TARGETS_${target}})
++ target_include_directories(${t} PRIVATE ${__params})
++ endforeach()
++ endif()
+ else()
+ set(__new_inc "${OCV_TARGET_INCLUDE_DIRS_${target}};${__params}")
+ set(OCV_TARGET_INCLUDE_DIRS_${target} "${__new_inc}" CACHE INTERNAL "")
+@@ -205,8 +221,11 @@ set(OCV_COMPILER_FAIL_REGEX
+ )
+
+ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)
++ set(_fname "${ARGN}")
+ if(NOT DEFINED ${RESULT})
+- if("_${LANG}_" MATCHES "_CXX_")
++ if(_fname)
++ # nothing
++ elseif("_${LANG}_" MATCHES "_CXX_")
+ set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.cxx")
+ if("${CMAKE_CXX_FLAGS} ${FLAG} " MATCHES "-Werror " OR "${CMAKE_CXX_FLAGS} ${FLAG} " MATCHES "-Werror=unknown-pragmas ")
+ FILE(WRITE "${_fname}" "int main() { return 0; }\n")
+@@ -231,7 +250,13 @@ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)
+ unset(_fname)
+ endif()
+ if(_fname)
+- MESSAGE(STATUS "Performing Test ${RESULT}")
++ if(NOT "x${ARGN}" STREQUAL "x")
++ file(RELATIVE_PATH __msg "${CMAKE_SOURCE_DIR}" "${ARGN}")
++ set(__msg " (check file: ${__msg})")
++ else()
++ set(__msg "")
++ endif()
++ MESSAGE(STATUS "Performing Test ${RESULT}${__msg}")
+ TRY_COMPILE(${RESULT}
+ "${CMAKE_BINARY_DIR}"
+ "${_fname}"
+@@ -278,7 +303,11 @@ MACRO(ocv_check_compiler_flag LANG FLAG RESULT)
+ endif()
+ ENDMACRO()
+
+-macro(ocv_check_flag_support lang flag varname)
++macro(ocv_check_flag_support lang flag varname base_options)
++ if(CMAKE_BUILD_TYPE)
++ set(CMAKE_TRY_COMPILE_CONFIGURATION ${CMAKE_BUILD_TYPE})
++ endif()
++
+ if("_${lang}_" MATCHES "_CXX_")
+ set(_lang CXX)
+ elseif("_${lang}_" MATCHES "_C_")
+@@ -293,7 +322,7 @@ macro(ocv_check_flag_support lang flag varname)
+ string(REGEX REPLACE "^(/|-)" "HAVE_${_lang}_" ${varname} "${${varname}}")
+ string(REGEX REPLACE " -|-|=| |\\." "_" ${varname} "${${varname}}")
+
+- ocv_check_compiler_flag("${_lang}" "${ARGN} ${flag}" ${${varname}})
++ ocv_check_compiler_flag("${_lang}" "${base_options} ${flag}" ${${varname}} ${ARGN})
+ endmacro()
+
+ # turns off warnings
+@@ -327,7 +356,7 @@ macro(ocv_warnings_disable)
+ string(REPLACE "${warning}" "" ${var} "${${var}}")
+ string(REPLACE "-W" "-Wno-" warning "${warning}")
+ endif()
+- ocv_check_flag_support(${var} "${warning}" _varname)
++ ocv_check_flag_support(${var} "${warning}" _varname "")
+ if(${_varname})
+ set(${var} "${${var}} ${warning}")
+ endif()
+@@ -342,7 +371,7 @@ macro(ocv_warnings_disable)
+ else()
+ string(REPLACE "-wd" "-Qwd" warning "${warning}")
+ endif()
+- ocv_check_flag_support(${var} "${warning}" _varname)
++ ocv_check_flag_support(${var} "${warning}" _varname "")
+ if(${_varname})
+ set(${var} "${${var}} ${warning}")
+ endif()
+@@ -357,7 +386,7 @@ macro(ocv_warnings_disable)
+ endmacro()
+
+ macro(add_apple_compiler_options the_module)
+- ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS)
++ ocv_check_flag_support(OBJCXX "-fobjc-exceptions" HAVE_OBJC_EXCEPTIONS "")
+ if(HAVE_OBJC_EXCEPTIONS)
+ foreach(source ${OPENCV_MODULE_${the_module}_SOURCES})
+ if("${source}" MATCHES "\\.mm$")
+@@ -892,6 +921,11 @@ function(_ocv_append_target_includes target)
+ if (TARGET ${target}_object)
+ target_include_directories(${target}_object PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}})
+ endif()
++ if(OPENCV_DEPENDANT_TARGETS_${target})
++ foreach(t ${OPENCV_DEPENDANT_TARGETS_${target}})
++ target_include_directories(${t} PRIVATE ${OCV_TARGET_INCLUDE_DIRS_${target}})
++ endforeach()
++ endif()
+ unset(OCV_TARGET_INCLUDE_DIRS_${target} CACHE)
+ endif()
+ endfunction()
+diff --git a/cmake/checks/cpu_avx.cpp b/cmake/checks/cpu_avx.cpp
+new file mode 100644
+index 0000000..05536f4
+--- /dev/null
++++ b/cmake/checks/cpu_avx.cpp
+@@ -0,0 +1,9 @@
++#if !defined __AVX__ // MSVC supports this flag since MSVS 2013
++#error "__AVX__ define is missing"
++#endif
++#include <immintrin.h>
++void test()
++{
++ __m256 a = _mm256_set1_ps(0.0f);
++}
++int main() { return 0; }
+diff --git a/cmake/checks/cpu_avx2.cpp b/cmake/checks/cpu_avx2.cpp
+new file mode 100644
+index 0000000..3ab1143
+--- /dev/null
++++ b/cmake/checks/cpu_avx2.cpp
+@@ -0,0 +1,10 @@
++#if !defined __AVX2__ // MSVC supports this flag since MSVS 2013
++#error "__AVX2__ define is missing"
++#endif
++#include <immintrin.h>
++void test()
++{
++ int data[8] = {0,0,0,0, 0,0,0,0};
++ __m256i a = _mm256_loadu_si256((const __m256i *)data);
++}
++int main() { return 0; }
+diff --git a/cmake/checks/cpu_avx512.cpp b/cmake/checks/cpu_avx512.cpp
+new file mode 100644
+index 0000000..d0898ab
+--- /dev/null
++++ b/cmake/checks/cpu_avx512.cpp
+@@ -0,0 +1,10 @@
++#if defined __AVX512__ || defined __AVX512F__
++#include <immintrin.h>
++void test()
++{
++ __m512i zmm = _mm512_setzero_si512();
++}
++#else
++#error "AVX512 is not supported"
++#endif
++int main() { return 0; }
+diff --git a/cmake/checks/cpu_fp16.cpp b/cmake/checks/cpu_fp16.cpp
+new file mode 100644
+index 0000000..6951f1c
+--- /dev/null
++++ b/cmake/checks/cpu_fp16.cpp
+@@ -0,0 +1,33 @@
++#include <stdio.h>
++
++#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700) || (defined __INTEL_COMPILER && defined __AVX__)
++#include <immintrin.h>
++int test()
++{
++ const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
++ short dst[8];
++ __m128 v_src = _mm_load_ps(src);
++ __m128i v_dst = _mm_cvtps_ph(v_src, 0);
++ _mm_storel_epi64((__m128i*)dst, v_dst);
++ return (int)dst[0];
++}
++#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)
++#include "arm_neon.h"
++int test()
++{
++ const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
++ short dst[8];
++ float32x4_t v_src = *(float32x4_t*)src;
++ float16x4_t v_dst = vcvt_f16_f32(v_src);
++ *(float16x4_t*)dst = v_dst;
++ return (int)dst[0];
++}
++#else
++#error "FP16 is not supported"
++#endif
++
++int main()
++{
++ printf("%d\n", test());
++ return 0;
++}
+diff --git a/cmake/checks/cpu_popcnt.cpp b/cmake/checks/cpu_popcnt.cpp
+new file mode 100644
+index 0000000..f55c9f3
+--- /dev/null
++++ b/cmake/checks/cpu_popcnt.cpp
+@@ -0,0 +1,8 @@
++#include <nmmintrin.h>
++#ifndef _MSC_VER
++#include <popcntintrin.h>
++#endif
++int main() {
++ int i = _mm_popcnt_u64(1);
++ return 0;
++}
+diff --git a/cmake/checks/cpu_sse.cpp b/cmake/checks/cpu_sse.cpp
+new file mode 100644
+index 0000000..c6269ac
+--- /dev/null
++++ b/cmake/checks/cpu_sse.cpp
+@@ -0,0 +1,2 @@
++#include <xmmintrin.h>
++int main() { return 0; }
+diff --git a/cmake/checks/cpu_sse2.cpp b/cmake/checks/cpu_sse2.cpp
+new file mode 100644
+index 0000000..68a69f8
+--- /dev/null
++++ b/cmake/checks/cpu_sse2.cpp
+@@ -0,0 +1,2 @@
++#include <emmintrin.h>
++int main() { return 0; }
+diff --git a/cmake/checks/cpu_sse3.cpp b/cmake/checks/cpu_sse3.cpp
+new file mode 100644
+index 0000000..98ce219
+--- /dev/null
++++ b/cmake/checks/cpu_sse3.cpp
+@@ -0,0 +1,7 @@
++#include <pmmintrin.h>
++int main() {
++ __m128 u, v;
++ u = _mm_set1_ps(0.0f);
++ v = _mm_moveldup_ps(u); // SSE3
++ return 0;
++}
+diff --git a/cmake/checks/cpu_sse41.cpp b/cmake/checks/cpu_sse41.cpp
+new file mode 100644
+index 0000000..ddd835b
+--- /dev/null
++++ b/cmake/checks/cpu_sse41.cpp
+@@ -0,0 +1,6 @@
++#include <smmintrin.h>
++int main() {
++ __m128i a = _mm_setzero_si128(), b = _mm_setzero_si128();
++ __m128i c = _mm_packus_epi32(a, b);
++ return 0;
++}
+diff --git a/cmake/checks/cpu_sse42.cpp b/cmake/checks/cpu_sse42.cpp
+new file mode 100644
+index 0000000..56f5665
+--- /dev/null
++++ b/cmake/checks/cpu_sse42.cpp
+@@ -0,0 +1,5 @@
++#include <nmmintrin.h>
++int main() {
++ int i = _mm_popcnt_u64(1);
++ return 0;
++}
+diff --git a/cmake/checks/cpu_ssse3.cpp b/cmake/checks/cpu_ssse3.cpp
+new file mode 100644
+index 0000000..e583199
+--- /dev/null
++++ b/cmake/checks/cpu_ssse3.cpp
+@@ -0,0 +1,7 @@
++#include <tmmintrin.h>
++const double v = 0;
++int main() {
++ __m128i a = _mm_setzero_si128();
++ __m128i b = _mm_abs_epi32(a);
++ return 0;
++}
+diff --git a/cmake/checks/fp16.cpp b/cmake/checks/fp16.cpp
+deleted file mode 100644
+index c77c844..0000000
+--- a/cmake/checks/fp16.cpp
++++ /dev/null
+@@ -1,33 +0,0 @@
+-#include <stdio.h>
+-
+-#if defined __F16C__ || (defined _MSC_VER && _MSC_VER >= 1700)
+-#include <immintrin.h>
+-int test()
+-{
+- const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
+- short dst[8];
+- __m128 v_src = _mm_load_ps(src);
+- __m128i v_dst = _mm_cvtps_ph(v_src, 0);
+- _mm_storel_epi64((__m128i*)dst, v_dst);
+- return (int)dst[0];
+-}
+-#elif defined __GNUC__ && (defined __arm__ || defined __aarch64__)
+-#include "arm_neon.h"
+-int test()
+-{
+- const float src[] = { 0.0f, 0.0f, 0.0f, 0.0f };
+- short dst[8];
+- float32x4_t v_src = *(float32x4_t*)src;
+- float16x4_t v_dst = vcvt_f16_f32(v_src);
+- *(float16x4_t*)dst = v_dst;
+- return (int)dst[0];
+-}
+-#else
+-#error "FP16 is not supported"
+-#endif
+-
+-int main()
+-{
+- printf("%d\n", test());
+- return 0;
+-}
+diff --git a/cmake/templates/cv_cpu_config.h.in b/cmake/templates/cv_cpu_config.h.in
+new file mode 100644
+index 0000000..27b2731
+--- /dev/null
++++ b/cmake/templates/cv_cpu_config.h.in
+@@ -0,0 +1,5 @@
++// OpenCV CPU baseline features
++@OPENCV_CPU_BASELINE_DEFINITIONS_CONFIGMAKE@
++
++// OpenCV supported CPU dispatched features
++@OPENCV_CPU_DISPATCH_DEFINITIONS_CONFIGMAKE@
+diff --git a/cmake/templates/cvconfig.h.in b/cmake/templates/cvconfig.h.in
+index 05add9e..658d12c 100644
+--- a/cmake/templates/cvconfig.h.in
++++ b/cmake/templates/cvconfig.h.in
+@@ -1,6 +1,15 @@
++#ifndef OPENCV_CVCONFIG_H_INCLUDED
++#define OPENCV_CVCONFIG_H_INCLUDED
++
+ /* OpenCV compiled as static or dynamic libs */
+ #cmakedefine BUILD_SHARED_LIBS
+
++/* OpenCV intrinsics optimized code */
++#cmakedefine CV_ENABLE_INTRINSICS
++
++/* OpenCV additional optimized code */
++#cmakedefine CV_DISABLE_OPTIMIZATION
++
+ /* Compile for 'real' NVIDIA GPU architectures */
+ #define CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN}"
+
+@@ -206,3 +215,7 @@
+
+ /* OpenVX */
+ #cmakedefine HAVE_OPENVX
++
++
++
++#endif // OPENCV_CVCONFIG_H_INCLUDED
+diff --git a/modules/core/include/opencv2/core/cv_cpu_dispatch.h b/modules/core/include/opencv2/core/cv_cpu_dispatch.h
+new file mode 100644
+index 0000000..9a8537f
+--- /dev/null
++++ b/modules/core/include/opencv2/core/cv_cpu_dispatch.h
+@@ -0,0 +1,166 @@
++// This file is part of OpenCV project.
++// It is subject to the license terms in the LICENSE file found in the top-level directory
++// of this distribution and at http://opencv.org/license.html.
++
++#if defined __OPENCV_BUILD \
++
++#include "cv_cpu_config.h"
++#include "cv_cpu_helper.h"
++
++#if defined CV_ENABLE_INTRINSICS \
++ && !defined CV_DISABLE_OPTIMIZATION \
++ && !defined __CUDACC__ /* do not include SSE/AVX/NEON headers for NVCC compiler */ \
++
++#ifdef CV_CPU_COMPILE_SSE2
++# include <emmintrin.h>
++# define CV_MMX 1
++# define CV_SSE 1
++# define CV_SSE2 1
++#endif
++#ifdef CV_CPU_COMPILE_SSE3
++# include <pmmintrin.h>
++# define CV_SSE3 1
++#endif
++#ifdef CV_CPU_COMPILE_SSSE3
++# include <tmmintrin.h>
++# define CV_SSSE3 1
++#endif
++#ifdef CV_CPU_COMPILE_SSE4_1
++# include <smmintrin.h>
++# define CV_SSE4_1 1
++#endif
++#ifdef CV_CPU_COMPILE_SSE4_2
++# include <nmmintrin.h>
++# define CV_SSE4_2 1
++#endif
++#ifdef CV_CPU_COMPILE_POPCNT
++# ifdef _MSC_VER
++# include <nmmintrin.h>
++# if defined(_M_X64)
++# define CV_POPCNT_U64 _mm_popcnt_u64
++# endif
++# define CV_POPCNT_U32 _mm_popcnt_u32
++# else
++# include <popcntintrin.h>
++# if defined(__x86_64__)
++# define CV_POPCNT_U64 __builtin_popcountll
++# endif
++# define CV_POPCNT_U32 __builtin_popcount
++# endif
++# define CV_POPCNT 1
++#endif
++#ifdef CV_CPU_COMPILE_AVX
++# include <immintrin.h>
++# define CV_AVX 1
++#endif
++#ifdef CV_CPU_COMPILE_AVX2
++# include <immintrin.h>
++# define CV_AVX2 1
++#endif
++#ifdef CV_CPU_COMPILE_FMA3
++# define CV_FMA3 1
++#endif
++
++#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)
++# include <Intrin.h>
++# include <arm_neon.h>
++# define CV_NEON 1
++#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
++# include <arm_neon.h>
++# define CV_NEON 1
++#endif
++
++#if defined(__ARM_NEON__) || defined(__aarch64__)
++# include <arm_neon.h>
++#endif
++
++#endif // CV_ENABLE_INTRINSICS && !CV_DISABLE_OPTIMIZATION && !__CUDACC__
++
++#endif // __OPENCV_BUILD
++
++
++
++#if !defined __OPENCV_BUILD // Compatibility code
++
++#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2)
++# include <emmintrin.h>
++# define CV_MMX 1
++# define CV_SSE 1
++# define CV_SSE2 1
++#elif (defined WIN32 || defined _WIN32) && defined(_M_ARM)
++# include <Intrin.h>
++# include <arm_neon.h>
++# define CV_NEON 1
++#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
++# include <arm_neon.h>
++# define CV_NEON 1
++#endif
++
++#endif // !__OPENCV_BUILD (Compatibility code)
++
++
++
++#ifndef CV_MMX
++# define CV_MMX 0
++#endif
++#ifndef CV_SSE
++# define CV_SSE 0
++#endif
++#ifndef CV_SSE2
++# define CV_SSE2 0
++#endif
++#ifndef CV_SSE3
++# define CV_SSE3 0
++#endif
++#ifndef CV_SSSE3
++# define CV_SSSE3 0
++#endif
++#ifndef CV_SSE4_1
++# define CV_SSE4_1 0
++#endif
++#ifndef CV_SSE4_2
++# define CV_SSE4_2 0
++#endif
++#ifndef CV_POPCNT
++# define CV_POPCNT 0
++#endif
++#ifndef CV_AVX
++# define CV_AVX 0
++#endif
++#ifndef CV_AVX2
++# define CV_AVX2 0
++#endif
++#ifndef CV_FMA3
++# define CV_FMA3 0
++#endif
++#ifndef CV_AVX_512F
++# define CV_AVX_512F 0
++#endif
++#ifndef CV_AVX_512BW
++# define CV_AVX_512BW 0
++#endif
++#ifndef CV_AVX_512CD
++# define CV_AVX_512CD 0
++#endif
++#ifndef CV_AVX_512DQ
++# define CV_AVX_512DQ 0
++#endif
++#ifndef CV_AVX_512ER
++# define CV_AVX_512ER 0
++#endif
++#ifndef CV_AVX_512IFMA512
++# define CV_AVX_512IFMA512 0
++#endif
++#ifndef CV_AVX_512PF
++# define CV_AVX_512PF 0
++#endif
++#ifndef CV_AVX_512VBMI
++# define CV_AVX_512VBMI 0
++#endif
++#ifndef CV_AVX_512VL
++# define CV_AVX_512VL 0
++#endif
++
++#ifndef CV_NEON
++# define CV_NEON 0
++#endif
+diff --git a/modules/core/include/opencv2/core/cv_cpu_helper.h b/modules/core/include/opencv2/core/cv_cpu_helper.h
+new file mode 100644
+index 0000000..cb755d6
+--- /dev/null
++++ b/modules/core/include/opencv2/core/cv_cpu_helper.h
+@@ -0,0 +1,133 @@
++// AUTOGENERATED, DO NOT EDIT
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE
++# define CV_CPU_HAS_SUPPORT_SSE 1
++# define CV_CPU_CALL_SSE(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE
++# define CV_CPU_HAS_SUPPORT_SSE (cv::checkHardwareSupport(CV_CPU_SSE))
++# define CV_CPU_CALL_SSE(...) if (CV_CPU_HAS_SUPPORT_SSE) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSE 0
++# define CV_CPU_CALL_SSE(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE2
++# define CV_CPU_HAS_SUPPORT_SSE2 1
++# define CV_CPU_CALL_SSE2(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE2
++# define CV_CPU_HAS_SUPPORT_SSE2 (cv::checkHardwareSupport(CV_CPU_SSE2))
++# define CV_CPU_CALL_SSE2(...) if (CV_CPU_HAS_SUPPORT_SSE2) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSE2 0
++# define CV_CPU_CALL_SSE2(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE3
++# define CV_CPU_HAS_SUPPORT_SSE3 1
++# define CV_CPU_CALL_SSE3(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE3
++# define CV_CPU_HAS_SUPPORT_SSE3 (cv::checkHardwareSupport(CV_CPU_SSE3))
++# define CV_CPU_CALL_SSE3(...) if (CV_CPU_HAS_SUPPORT_SSE3) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSE3 0
++# define CV_CPU_CALL_SSE3(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSSE3
++# define CV_CPU_HAS_SUPPORT_SSSE3 1
++# define CV_CPU_CALL_SSSE3(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSSE3
++# define CV_CPU_HAS_SUPPORT_SSSE3 (cv::checkHardwareSupport(CV_CPU_SSSE3))
++# define CV_CPU_CALL_SSSE3(...) if (CV_CPU_HAS_SUPPORT_SSSE3) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSSE3 0
++# define CV_CPU_CALL_SSSE3(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_1
++# define CV_CPU_HAS_SUPPORT_SSE4_1 1
++# define CV_CPU_CALL_SSE4_1(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_1
++# define CV_CPU_HAS_SUPPORT_SSE4_1 (cv::checkHardwareSupport(CV_CPU_SSE4_1))
++# define CV_CPU_CALL_SSE4_1(...) if (CV_CPU_HAS_SUPPORT_SSE4_1) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSE4_1 0
++# define CV_CPU_CALL_SSE4_1(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_SSE4_2
++# define CV_CPU_HAS_SUPPORT_SSE4_2 1
++# define CV_CPU_CALL_SSE4_2(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_SSE4_2
++# define CV_CPU_HAS_SUPPORT_SSE4_2 (cv::checkHardwareSupport(CV_CPU_SSE4_2))
++# define CV_CPU_CALL_SSE4_2(...) if (CV_CPU_HAS_SUPPORT_SSE4_2) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_SSE4_2 0
++# define CV_CPU_CALL_SSE4_2(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_POPCNT
++# define CV_CPU_HAS_SUPPORT_POPCNT 1
++# define CV_CPU_CALL_POPCNT(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_POPCNT
++# define CV_CPU_HAS_SUPPORT_POPCNT (cv::checkHardwareSupport(CV_CPU_POPCNT))
++# define CV_CPU_CALL_POPCNT(...) if (CV_CPU_HAS_SUPPORT_POPCNT) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_POPCNT 0
++# define CV_CPU_CALL_POPCNT(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX
++# define CV_CPU_HAS_SUPPORT_AVX 1
++# define CV_CPU_CALL_AVX(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX
++# define CV_CPU_HAS_SUPPORT_AVX (cv::checkHardwareSupport(CV_CPU_AVX))
++# define CV_CPU_CALL_AVX(...) if (CV_CPU_HAS_SUPPORT_AVX) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_AVX 0
++# define CV_CPU_CALL_AVX(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FP16
++# define CV_CPU_HAS_SUPPORT_FP16 1
++# define CV_CPU_CALL_FP16(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FP16
++# define CV_CPU_HAS_SUPPORT_FP16 (cv::checkHardwareSupport(CV_CPU_FP16))
++# define CV_CPU_CALL_FP16(...) if (CV_CPU_HAS_SUPPORT_FP16) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_FP16 0
++# define CV_CPU_CALL_FP16(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_AVX2
++# define CV_CPU_HAS_SUPPORT_AVX2 1
++# define CV_CPU_CALL_AVX2(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_AVX2
++# define CV_CPU_HAS_SUPPORT_AVX2 (cv::checkHardwareSupport(CV_CPU_AVX2))
++# define CV_CPU_CALL_AVX2(...) if (CV_CPU_HAS_SUPPORT_AVX2) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_AVX2 0
++# define CV_CPU_CALL_AVX2(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_FMA3
++# define CV_CPU_HAS_SUPPORT_FMA3 1
++# define CV_CPU_CALL_FMA3(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_FMA3
++# define CV_CPU_HAS_SUPPORT_FMA3 (cv::checkHardwareSupport(CV_CPU_FMA3))
++# define CV_CPU_CALL_FMA3(...) if (CV_CPU_HAS_SUPPORT_FMA3) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_FMA3 0
++# define CV_CPU_CALL_FMA3(...)
++#endif
++
++#if !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_COMPILE_NEON
++# define CV_CPU_HAS_SUPPORT_NEON 1
++# define CV_CPU_CALL_NEON(...) return __VA_ARGS__
++#elif !defined CV_DISABLE_OPTIMIZATION && defined CV_ENABLE_INTRINSICS && defined CV_CPU_DISPATCH_COMPILE_NEON
++# define CV_CPU_HAS_SUPPORT_NEON (cv::checkHardwareSupport(CV_CPU_NEON))
++# define CV_CPU_CALL_NEON(...) if (CV_CPU_HAS_SUPPORT_NEON) return __VA_ARGS__
++#else
++# define CV_CPU_HAS_SUPPORT_NEON 0
++# define CV_CPU_CALL_NEON(...)
++#endif
+diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h
+index 699b166..0a46e02 100644
+--- a/modules/core/include/opencv2/core/cvdef.h
++++ b/modules/core/include/opencv2/core/cvdef.h
+@@ -48,6 +48,10 @@
+ //! @addtogroup core_utils
+ //! @{
+
++#ifdef __OPENCV_BUILD
++#include "cvconfig.h"
++#endif
++
+ #if !defined _CRT_SECURE_NO_DEPRECATE && defined _MSC_VER && _MSC_VER > 1300
+ # define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio warnings */
+ #endif
+@@ -59,10 +63,6 @@
+ #undef abs
+ #undef Complex
+
+-#if !defined _CRT_SECURE_NO_DEPRECATE && defined _MSC_VER && _MSC_VER > 1300
+-# define _CRT_SECURE_NO_DEPRECATE /* to avoid multiple Visual Studio warnings */
+-#endif
+-
+ #include <limits.h>
+ #include "opencv2/core/hal/interface.h"
+
+@@ -88,7 +88,7 @@
+ # endif
+ #endif
+
+-#if defined CV_ICC && !defined CV_ENABLE_UNROLLED
++#if defined CV_DISABLE_OPTIMIZATION || (defined CV_ICC && !defined CV_ENABLE_UNROLLED)
+ # define CV_ENABLE_UNROLLED 0
+ #else
+ # define CV_ENABLE_UNROLLED 1
+@@ -161,142 +161,9 @@ enum CpuFeatures {
+ CPU_NEON = 100
+ };
+
+-// do not include SSE/AVX/NEON headers for NVCC compiler
+-#ifndef __CUDACC__
+-
+-#if defined __SSE2__ || defined _M_X64 || (defined _M_IX86_FP && _M_IX86_FP >= 2)
+-# include <emmintrin.h>
+-# define CV_MMX 1
+-# define CV_SSE 1
+-# define CV_SSE2 1
+-# if defined __SSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)
+-# include <pmmintrin.h>
+-# define CV_SSE3 1
+-# endif
+-# if defined __SSSE3__ || (defined _MSC_VER && _MSC_VER >= 1500)
+-# include <tmmintrin.h>
+-# define CV_SSSE3 1
+-# endif
+-# if defined __SSE4_1__ || (defined _MSC_VER && _MSC_VER >= 1500)
+-# include <smmintrin.h>
+-# define CV_SSE4_1 1
+-# endif
+-# if defined __SSE4_2__ || (defined _MSC_VER && _MSC_VER >= 1500)
+-# include <nmmintrin.h>
+-# define CV_SSE4_2 1
+-# endif
+-# if defined __POPCNT__ || (defined _MSC_VER && _MSC_VER >= 1500)
+-# ifdef _MSC_VER
+-# include <nmmintrin.h>
+-# else
+-# include <popcntintrin.h>
+-# endif
+-# define CV_POPCNT 1
+-# endif
+-# if defined __AVX__ || (defined _MSC_VER && _MSC_VER >= 1600 && 0)
+-// MS Visual Studio 2010 (2012?) has no macro pre-defined to identify the use of /arch:AVX
+-// See: http://connect.microsoft.com/VisualStudio/feedback/details/605858/arch-avx-should-define-a-predefined-macro-in-x64-and-set-a-unique-value-for-m-ix86-fp-in-win32
+-# include <immintrin.h>
+-# define CV_AVX 1
+-# if defined(_XCR_XFEATURE_ENABLED_MASK)
+-# define __xgetbv() _xgetbv(_XCR_XFEATURE_ENABLED_MASK)
+-# else
+-# define __xgetbv() 0
+-# endif
+-# endif
+-# if defined __AVX2__ || (defined _MSC_VER && _MSC_VER >= 1800 && 0)
+-# include <immintrin.h>
+-# define CV_AVX2 1
+-# if defined __FMA__
+-# define CV_FMA3 1
+-# endif
+-# endif
+-#endif
+-
+-#if (defined WIN32 || defined _WIN32) && defined(_M_ARM)
+-# include <Intrin.h>
+-# include <arm_neon.h>
+-# define CV_NEON 1
+-# define CPU_HAS_NEON_FEATURE (true)
+-#elif defined(__ARM_NEON__) || (defined (__ARM_NEON) && defined(__aarch64__))
+-# include <arm_neon.h>
+-# define CV_NEON 1
+-#endif
+-
+-#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__
+-# define CV_VFP 1
+-#endif
+-
+-#endif // __CUDACC__
+-
+-#ifndef CV_POPCNT
+-#define CV_POPCNT 0
+-#endif
+-#ifndef CV_MMX
+-# define CV_MMX 0
+-#endif
+-#ifndef CV_SSE
+-# define CV_SSE 0
+-#endif
+-#ifndef CV_SSE2
+-# define CV_SSE2 0
+-#endif
+-#ifndef CV_SSE3
+-# define CV_SSE3 0
+-#endif
+-#ifndef CV_SSSE3
+-# define CV_SSSE3 0
+-#endif
+-#ifndef CV_SSE4_1
+-# define CV_SSE4_1 0
+-#endif
+-#ifndef CV_SSE4_2
+-# define CV_SSE4_2 0
+-#endif
+-#ifndef CV_AVX
+-# define CV_AVX 0
+-#endif
+-#ifndef CV_AVX2
+-# define CV_AVX2 0
+-#endif
+-#ifndef CV_FMA3
+-# define CV_FMA3 0
+-#endif
+-#ifndef CV_AVX_512F
+-# define CV_AVX_512F 0
+-#endif
+-#ifndef CV_AVX_512BW
+-# define CV_AVX_512BW 0
+-#endif
+-#ifndef CV_AVX_512CD
+-# define CV_AVX_512CD 0
+-#endif
+-#ifndef CV_AVX_512DQ
+-# define CV_AVX_512DQ 0
+-#endif
+-#ifndef CV_AVX_512ER
+-# define CV_AVX_512ER 0
+-#endif
+-#ifndef CV_AVX_512IFMA512
+-# define CV_AVX_512IFMA512 0
+-#endif
+-#ifndef CV_AVX_512PF
+-# define CV_AVX_512PF 0
+-#endif
+-#ifndef CV_AVX_512VBMI
+-# define CV_AVX_512VBMI 0
+-#endif
+-#ifndef CV_AVX_512VL
+-# define CV_AVX_512VL 0
+-#endif
+
+-#ifndef CV_NEON
+-# define CV_NEON 0
+-#endif
++#include "cv_cpu_dispatch.h"
+
+-#ifndef CV_VFP
+-# define CV_VFP 0
+-#endif
+
+ /* fundamental constants */
+ #define CV_PI 3.1415926535897932384626433832795
+diff --git a/modules/core/include/opencv2/core/fast_math.hpp b/modules/core/include/opencv2/core/fast_math.hpp
+index c76936a..31c1062 100644
+--- a/modules/core/include/opencv2/core/fast_math.hpp
++++ b/modules/core/include/opencv2/core/fast_math.hpp
+@@ -47,6 +47,12 @@
+
+ #include "opencv2/core/cvdef.h"
+
++#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \
++ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)
++#include <emmintrin.h>
++#endif
++
++
+ //! @addtogroup core_utils
+ //! @{
+
+@@ -66,7 +72,7 @@
+ # include "tegra_round.hpp"
+ #endif
+
+-#if CV_VFP
++#if defined __GNUC__ && defined __arm__ && (defined __ARM_PCS_VFP || defined __ARM_VFPV3__ || defined __ARM_NEON__) && !defined __SOFTFP__
+ // 1. general scheme
+ #define ARM_ROUND(_value, _asm_string) \
+ int res; \
+@@ -82,7 +88,7 @@
+ #endif
+ // 3. version for float
+ #define ARM_ROUND_FLT(value) ARM_ROUND(value, "vcvtr.s32.f32 %[temp], %[value]\n vmov %[res], %[temp]")
+-#endif // CV_VFP
++#endif
+
+ /** @brief Rounds floating-point number to the nearest integer
+
+@@ -93,7 +99,7 @@ CV_INLINE int
+ cvRound( double value )
+ {
+ #if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \
+- && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)
++ && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__)
+ __m128d t = _mm_set_sd( value );
+ return _mm_cvtsd_si32(t);
+ #elif defined _MSC_VER && defined _M_IX86
+@@ -108,7 +114,7 @@ cvRound( double value )
+ defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION
+ TEGRA_ROUND_DBL(value);
+ #elif defined CV_ICC || defined __GNUC__
+-# if CV_VFP
++# if defined ARM_ROUND_DBL
+ ARM_ROUND_DBL(value);
+ # else
+ return (int)lrint(value);
+@@ -130,18 +136,8 @@ cvRound( double value )
+ */
+ CV_INLINE int cvFloor( double value )
+ {
+-#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)
+- __m128d t = _mm_set_sd( value );
+- int i = _mm_cvtsd_si32(t);
+- return i - _mm_movemask_pd(_mm_cmplt_sd(t, _mm_cvtsi32_sd(t,i)));
+-#elif defined __GNUC__
+ int i = (int)value;
+ return i - (i > value);
+-#else
+- int i = cvRound(value);
+- float diff = (float)(value - i);
+- return i - (diff < 0);
+-#endif
+ }
+
+ /** @brief Rounds floating-point number to the nearest integer not smaller than the original.
+@@ -153,18 +149,8 @@ CV_INLINE int cvFloor( double value )
+ */
+ CV_INLINE int cvCeil( double value )
+ {
+-#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__&& !defined __APPLE__)) && !defined(__CUDACC__)
+- __m128d t = _mm_set_sd( value );
+- int i = _mm_cvtsd_si32(t);
+- return i + _mm_movemask_pd(_mm_cmplt_sd(_mm_cvtsi32_sd(t,i), t));
+-#elif defined __GNUC__
+ int i = (int)value;
+ return i + (i < value);
+-#else
+- int i = cvRound(value);
+- float diff = (float)(i - value);
+- return i + (diff < 0);
+-#endif
+ }
+
+ /** @brief Determines if the argument is Not A Number.
+@@ -200,8 +186,8 @@ CV_INLINE int cvIsInf( double value )
+ /** @overload */
+ CV_INLINE int cvRound(float value)
+ {
+-#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ && \
+- defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)
++#if ((defined _MSC_VER && defined _M_X64) || (defined __GNUC__ && defined __x86_64__ \
++ && defined __SSE2__ && !defined __APPLE__) || CV_SSE2) && !defined(__CUDACC__)
+ __m128 t = _mm_set_ss( value );
+ return _mm_cvtss_si32(t);
+ #elif defined _MSC_VER && defined _M_IX86
+@@ -216,7 +202,7 @@ CV_INLINE int cvRound(float value)
+ defined __GNUC__) && defined HAVE_TEGRA_OPTIMIZATION
+ TEGRA_ROUND_FLT(value);
+ #elif defined CV_ICC || defined __GNUC__
+-# if CV_VFP
++# if defined ARM_ROUND_FLT
+ ARM_ROUND_FLT(value);
+ # else
+ return (int)lrintf(value);
+@@ -237,18 +223,8 @@ CV_INLINE int cvRound( int value )
+ /** @overload */
+ CV_INLINE int cvFloor( float value )
+ {
+-#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__ && !defined __APPLE__)) && !defined(__CUDACC__)
+- __m128 t = _mm_set_ss( value );
+- int i = _mm_cvtss_si32(t);
+- return i - _mm_movemask_ps(_mm_cmplt_ss(t, _mm_cvtsi32_ss(t,i)));
+-#elif defined __GNUC__
+ int i = (int)value;
+ return i - (i > value);
+-#else
+- int i = cvRound(value);
+- float diff = (float)(value - i);
+- return i - (diff < 0);
+-#endif
+ }
+
+ /** @overload */
+@@ -260,18 +236,8 @@ CV_INLINE int cvFloor( int value )
+ /** @overload */
+ CV_INLINE int cvCeil( float value )
+ {
+-#if (defined _MSC_VER && defined _M_X64 || (defined __GNUC__ && defined __SSE2__&& !defined __APPLE__)) && !defined(__CUDACC__)
+- __m128 t = _mm_set_ss( value );
+- int i = _mm_cvtss_si32(t);
+- return i + _mm_movemask_ps(_mm_cmplt_ss(_mm_cvtsi32_ss(t,i), t));
+-#elif defined __GNUC__
+ int i = (int)value;
+ return i + (i < value);
+-#else
+- int i = cvRound(value);
+- float diff = (float)(i - value);
+- return i + (diff < 0);
+-#endif
+ }
+
+ /** @overload */
+diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp
+index 3c8f39d..a983838 100644
+--- a/modules/core/src/system.cpp
++++ b/modules/core/src/system.cpp
+@@ -237,24 +237,81 @@ void Exception::formatMessage()
+ msg = format("%s:%d: error: (%d) %s\n", file.c_str(), line, code, err.c_str());
+ }
+
++static const char* g_hwFeatureNames[CV_HARDWARE_MAX_FEATURE] = { NULL };
++
++static const char* getHWFeatureName(int id)
++{
++ return (id < CV_HARDWARE_MAX_FEATURE) ? g_hwFeatureNames[id] : NULL;
++}
++static const char* getHWFeatureNameSafe(int id)
++{
++ const char* name = getHWFeatureName(id);
++ return name ? name : "Unknown feature";
++}
++
+ struct HWFeatures
+ {
+ enum { MAX_FEATURE = CV_HARDWARE_MAX_FEATURE };
+
+- HWFeatures(void)
++ HWFeatures(bool run_initialize = false)
+ {
+- memset( have, 0, sizeof(have) );
+- x86_family = 0;
++ memset( have, 0, sizeof(have[0]) * MAX_FEATURE );
++ if (run_initialize)
++ initialize();
+ }
+
+- static HWFeatures initialize(void)
++ static void initializeNames()
+ {
+- HWFeatures f;
++ for (int i = 0; i < CV_HARDWARE_MAX_FEATURE; i++)
++ {
++ g_hwFeatureNames[i] = 0;
++ }
++ g_hwFeatureNames[CPU_MMX] = "MMX";
++ g_hwFeatureNames[CPU_SSE] = "SSE";
++ g_hwFeatureNames[CPU_SSE2] = "SSE2";
++ g_hwFeatureNames[CPU_SSE3] = "SSE3";
++ g_hwFeatureNames[CPU_SSSE3] = "SSSE3";
++ g_hwFeatureNames[CPU_SSE4_1] = "SSE4.1";
++ g_hwFeatureNames[CPU_SSE4_2] = "SSE4.2";
++ g_hwFeatureNames[CPU_POPCNT] = "POPCNT";
++ g_hwFeatureNames[CPU_FP16] = "FP16";
++ g_hwFeatureNames[CPU_AVX] = "AVX";
++ g_hwFeatureNames[CPU_AVX2] = "AVX2";
++ g_hwFeatureNames[CPU_FMA3] = "FMA3";
++
++ g_hwFeatureNames[CPU_AVX_512F] = "AVX512F";
++ g_hwFeatureNames[CPU_AVX_512BW] = "AVX512BW";
++ g_hwFeatureNames[CPU_AVX_512CD] = "AVX512CD";
++ g_hwFeatureNames[CPU_AVX_512DQ] = "AVX512DQ";
++ g_hwFeatureNames[CPU_AVX_512ER] = "AVX512ER";
++ g_hwFeatureNames[CPU_AVX_512IFMA512] = "AVX512IFMA";
++ g_hwFeatureNames[CPU_AVX_512PF] = "AVX512PF";
++ g_hwFeatureNames[CPU_AVX_512VBMI] = "AVX512VBMI";
++ g_hwFeatureNames[CPU_AVX_512VL] = "AVX512VL";
++
++ g_hwFeatureNames[CPU_NEON] = "NEON";
++ }
++
++ void initialize(void)
++ {
++#ifndef WINRT
++ if (getenv("OPENCV_DUMP_CONFIG"))
++ {
++ fprintf(stderr, "\nOpenCV build configuration is:\n%s\n",
++ cv::getBuildInformation().c_str());
++ }
++#endif
++
++ initializeNames();
++
+ int cpuid_data[4] = { 0, 0, 0, 0 };
++ int cpuid_data_ex[4] = { 0, 0, 0, 0 };
+
+ #if defined _MSC_VER && (defined _M_IX86 || defined _M_X64)
++ #define OPENCV_HAVE_X86_CPUID 1
+ __cpuid(cpuid_data, 1);
+ #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)
++ #define OPENCV_HAVE_X86_CPUID 1
+ #ifdef __x86_64__
+ asm __volatile__
+ (
+@@ -278,33 +335,36 @@ struct HWFeatures
+ #endif
+ #endif
+
+- f.x86_family = (cpuid_data[0] >> 8) & 15;
+- if( f.x86_family >= 6 )
++ #ifdef OPENCV_HAVE_X86_CPUID
++ int x86_family = (cpuid_data[0] >> 8) & 15;
++ if( x86_family >= 6 )
+ {
+- f.have[CV_CPU_MMX] = (cpuid_data[3] & (1 << 23)) != 0;
+- f.have[CV_CPU_SSE] = (cpuid_data[3] & (1<<25)) != 0;
+- f.have[CV_CPU_SSE2] = (cpuid_data[3] & (1<<26)) != 0;
+- f.have[CV_CPU_SSE3] = (cpuid_data[2] & (1<<0)) != 0;
+- f.have[CV_CPU_SSSE3] = (cpuid_data[2] & (1<<9)) != 0;
+- f.have[CV_CPU_FMA3] = (cpuid_data[2] & (1<<12)) != 0;
+- f.have[CV_CPU_SSE4_1] = (cpuid_data[2] & (1<<19)) != 0;
+- f.have[CV_CPU_SSE4_2] = (cpuid_data[2] & (1<<20)) != 0;
+- f.have[CV_CPU_POPCNT] = (cpuid_data[2] & (1<<23)) != 0;
+- f.have[CV_CPU_AVX] = (((cpuid_data[2] & (1<<28)) != 0)&&((cpuid_data[2] & (1<<27)) != 0));//OS uses XSAVE_XRSTORE and CPU support AVX
+- f.have[CV_CPU_FP16] = (cpuid_data[2] & (1<<29)) != 0;
++ have[CV_CPU_MMX] = (cpuid_data[3] & (1<<23)) != 0;
++ have[CV_CPU_SSE] = (cpuid_data[3] & (1<<25)) != 0;
++ have[CV_CPU_SSE2] = (cpuid_data[3] & (1<<26)) != 0;
++ have[CV_CPU_SSE3] = (cpuid_data[2] & (1<<0)) != 0;
++ have[CV_CPU_SSSE3] = (cpuid_data[2] & (1<<9)) != 0;
++ have[CV_CPU_FMA3] = (cpuid_data[2] & (1<<12)) != 0;
++ have[CV_CPU_SSE4_1] = (cpuid_data[2] & (1<<19)) != 0;
++ have[CV_CPU_SSE4_2] = (cpuid_data[2] & (1<<20)) != 0;
++ have[CV_CPU_POPCNT] = (cpuid_data[2] & (1<<23)) != 0;
++ have[CV_CPU_AVX] = (cpuid_data[2] & (1<<28)) != 0;
++ have[CV_CPU_FP16] = (cpuid_data[2] & (1<<29)) != 0;
+
+ // make the second call to the cpuid command in order to get
+ // information about extended features like AVX2
+ #if defined _MSC_VER && (defined _M_IX86 || defined _M_X64)
+- __cpuidex(cpuid_data, 7, 0);
++ #define OPENCV_HAVE_X86_CPUID_EX 1
++ __cpuidex(cpuid_data_ex, 7, 0);
+ #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)
++ #define OPENCV_HAVE_X86_CPUID_EX 1
+ #ifdef __x86_64__
+ asm __volatile__
+ (
+ "movl $7, %%eax\n\t"
+ "movl $0, %%ecx\n\t"
+ "cpuid\n\t"
+- :[eax]"=a"(cpuid_data[0]),[ebx]"=b"(cpuid_data[1]),[ecx]"=c"(cpuid_data[2]),[edx]"=d"(cpuid_data[3])
++ :[eax]"=a"(cpuid_data_ex[0]),[ebx]"=b"(cpuid_data_ex[1]),[ecx]"=c"(cpuid_data_ex[2]),[edx]"=d"(cpuid_data_ex[3])
+ :
+ : "cc"
+ );
+@@ -317,29 +377,76 @@ struct HWFeatures
+ "cpuid\n\t"
+ "movl %%ebx, %0\n\t"
+ "popl %%ebx\n\t"
+- : "=r"(cpuid_data[1]), "=c"(cpuid_data[2])
++ : "=r"(cpuid_data_ex[1]), "=c"(cpuid_data_ex[2])
+ :
+ : "cc"
+ );
+ #endif
+ #endif
+- f.have[CV_CPU_AVX2] = (cpuid_data[1] & (1<<5)) != 0;
+-
+- f.have[CV_CPU_AVX_512F] = (cpuid_data[1] & (1<<16)) != 0;
+- f.have[CV_CPU_AVX_512DQ] = (cpuid_data[1] & (1<<17)) != 0;
+- f.have[CV_CPU_AVX_512IFMA512] = (cpuid_data[1] & (1<<21)) != 0;
+- f.have[CV_CPU_AVX_512PF] = (cpuid_data[1] & (1<<26)) != 0;
+- f.have[CV_CPU_AVX_512ER] = (cpuid_data[1] & (1<<27)) != 0;
+- f.have[CV_CPU_AVX_512CD] = (cpuid_data[1] & (1<<28)) != 0;
+- f.have[CV_CPU_AVX_512BW] = (cpuid_data[1] & (1<<30)) != 0;
+- f.have[CV_CPU_AVX_512VL] = (cpuid_data[1] & (1<<31)) != 0;
+- f.have[CV_CPU_AVX_512VBMI] = (cpuid_data[2] & (1<<1)) != 0;
++
++ #ifdef OPENCV_HAVE_X86_CPUID_EX
++ have[CV_CPU_AVX2] = (cpuid_data_ex[1] & (1<<5)) != 0;
++
++ have[CV_CPU_AVX_512F] = (cpuid_data_ex[1] & (1<<16)) != 0;
++ have[CV_CPU_AVX_512DQ] = (cpuid_data_ex[1] & (1<<17)) != 0;
++ have[CV_CPU_AVX_512IFMA512] = (cpuid_data_ex[1] & (1<<21)) != 0;
++ have[CV_CPU_AVX_512PF] = (cpuid_data_ex[1] & (1<<26)) != 0;
++ have[CV_CPU_AVX_512ER] = (cpuid_data_ex[1] & (1<<27)) != 0;
++ have[CV_CPU_AVX_512CD] = (cpuid_data_ex[1] & (1<<28)) != 0;
++ have[CV_CPU_AVX_512BW] = (cpuid_data_ex[1] & (1<<30)) != 0;
++ have[CV_CPU_AVX_512VL] = (cpuid_data_ex[1] & (1<<31)) != 0;
++ have[CV_CPU_AVX_512VBMI] = (cpuid_data_ex[2] & (1<<1)) != 0;
++ #else
++ CV_UNUSED(cpuid_data_ex);
++ #endif
++
++ bool have_AVX_OS_support = true;
++ bool have_AVX512_OS_support = true;
++ if (!(cpuid_data[2] & (1<<27)))
++ have_AVX_OS_support = false; // OS uses XSAVE_XRSTORE and CPU support AVX
++ else
++ {
++ int xcr0 = 0;
++ #ifdef _XCR_XFEATURE_ENABLED_MASK // requires immintrin.h
++ xcr0 = (int)_xgetbv(_XCR_XFEATURE_ENABLED_MASK);
++ #elif defined __GNUC__ && (defined __i386__ || defined __x86_64__)
++ __asm__ ("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx" );
++ #endif
++ if ((xcr0 & 0x6) != 0x6)
++ have_AVX_OS_support = false; // YMM registers
++ if ((xcr0 & 0xe6) != 0xe6)
++ have_AVX512_OS_support = false; // ZMM registers
++ }
++
++ if (!have_AVX_OS_support)
++ {
++ have[CV_CPU_AVX] = false;
++ have[CV_CPU_FP16] = false;
++ have[CV_CPU_AVX2] = false;
++ have[CV_CPU_FMA3] = false;
++ }
++ if (!have_AVX_OS_support || !have_AVX512_OS_support)
++ {
++ have[CV_CPU_AVX_512F] = false;
++ have[CV_CPU_AVX_512BW] = false;
++ have[CV_CPU_AVX_512CD] = false;
++ have[CV_CPU_AVX_512DQ] = false;
++ have[CV_CPU_AVX_512ER] = false;
++ have[CV_CPU_AVX_512IFMA512] = false;
++ have[CV_CPU_AVX_512PF] = false;
++ have[CV_CPU_AVX_512VBMI] = false;
++ have[CV_CPU_AVX_512VL] = false;
++ }
+ }
++ #else
++ CV_UNUSED(cpuid_data);
++ CV_UNUSED(cpuid_data_ex);
++ #endif // OPENCV_HAVE_X86_CPUID
+
+ #if defined ANDROID || defined __linux__
+ #ifdef __aarch64__
+- f.have[CV_CPU_NEON] = true;
+- f.have[CV_CPU_FP16] = true;
++ have[CV_CPU_NEON] = true;
++ have[CV_CPU_FP16] = true;
+ #elif defined __arm__
+ int cpufile = open("/proc/self/auxv", O_RDONLY);
+
+@@ -352,8 +459,8 @@ struct HWFeatures
+ {
+ if (auxv.a_type == AT_HWCAP)
+ {
+- f.have[CV_CPU_NEON] = (auxv.a_un.a_val & 4096) != 0;
+- f.have[CV_CPU_FP16] = (auxv.a_un.a_val & 2) != 0;
++ have[CV_CPU_NEON] = (auxv.a_un.a_val & 4096) != 0;
++ have[CV_CPU_FP16] = (auxv.a_un.a_val & 2) != 0;
+ break;
+ }
+ }
+@@ -363,21 +470,133 @@ struct HWFeatures
+ #endif
+ #elif (defined __clang__ || defined __APPLE__)
+ #if (defined __ARM_NEON__ || (defined __ARM_NEON && defined __aarch64__))
+- f.have[CV_CPU_NEON] = true;
++ have[CV_CPU_NEON] = true;
+ #endif
+ #if (defined __ARM_FP && (((__ARM_FP & 0x2) != 0) && defined __ARM_NEON__))
+- f.have[CV_CPU_FP16] = true;
++ have[CV_CPU_FP16] = true;
+ #endif
+ #endif
+
+- return f;
++ int baseline_features[] = { CV_CPU_BASELINE_FEATURES };
++ if (!checkFeatures(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0])))
++ {
++ fprintf(stderr, "\n"
++ "******************************************************************\n"
++ "* FATAL ERROR: *\n"
++ "* This OpenCV build doesn't support current CPU/HW configuration *\n"
++ "* *\n"
++ "* Use OPENCV_DUMP_CONFIG=1 environment variable for details *\n"
++ "******************************************************************\n");
++ fprintf(stderr, "\nRequired baseline features:\n");
++ checkFeatures(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0]), true);
++ CV_ErrorNoReturn(cv::Error::StsAssert, "Missing support for required CPU baseline features. Check OpenCV build configuration and required CPU/HW setup.");
++ }
++
++ readSettings(baseline_features, sizeof(baseline_features) / sizeof(baseline_features[0]));
++ }
++
++ bool checkFeatures(const int* features, int count, bool dump = false)
++ {
++ bool result = true;
++ for (int i = 0; i < count; i++)
++ {
++ int feature = features[i];
++ if (feature)
++ {
++ if (have[feature])
++ {
++ if (dump) fprintf(stderr, "%s - OK\n", getHWFeatureNameSafe(feature));
++ }
++ else
++ {
++ result = false;
++ if (dump) fprintf(stderr, "%s - NOT AVAILABLE\n", getHWFeatureNameSafe(feature));
++ }
++ }
++ }
++ return result;
++ }
++
++ static inline bool isSymbolSeparator(char c)
++ {
++ return c == ',' || c == ';' || c == '-';
++ }
++
++ void readSettings(const int* baseline_features, int baseline_count)
++ {
++ bool dump = true;
++ const char* disabled_features =
++#ifndef WINRT
++ getenv("OPENCV_CPU_DISABLE");
++#else
++ NULL;
++#endif
++ if (disabled_features && disabled_features[0] != 0)
++ {
++ const char* start = disabled_features;
++ for (;;)
++ {
++ while (start[0] != 0 && isSymbolSeparator(start[0]))
++ {
++ start++;
++ }
++ if (start[0] == 0)
++ break;
++ const char* end = start;
++ while (end[0] != 0 && !isSymbolSeparator(end[0]))
++ {
++ end++;
++ }
++ if (end == start)
++ continue;
++ cv::String feature(start, end);
++ start = end;
++
++ CV_Assert(feature.size() > 0);
++
++ bool found = false;
++ for (int i = 0; i < CV_HARDWARE_MAX_FEATURE; i++)
++ {
++ if (!g_hwFeatureNames[i]) continue;
++ size_t len = strlen(g_hwFeatureNames[i]);
++ if (len != feature.size()) continue;
++ if (feature.compare(g_hwFeatureNames[i]) == 0)
++ {
++ bool isBaseline = false;
++ for (int k = 0; k < baseline_count; k++)
++ {
++ if (baseline_features[k] == i)
++ {
++ isBaseline = true;
++ break;
++ }
++ }
++ if (isBaseline)
++ {
++ if (dump) fprintf(stderr, "OPENCV: Trying to disable baseline CPU feature: '%s'. This has very limited effect, because code optimizations for this feature are executed unconditionally in the most cases.\n", getHWFeatureNameSafe(i));
++ }
++ if (!have[i])
++ {
++ if (dump) fprintf(stderr, "OPENCV: Trying to disable unavailable CPU feature on the current platform: '%s'.\n", getHWFeatureNameSafe(i));
++ }
++ have[i] = false;
++
++ found = true;
++ break;
++ }
++ }
++ if (!found)
++ {
++ if (dump) fprintf(stderr, "OPENCV: Trying to disable unknown CPU feature: '%s'.\n", feature.c_str());
++ }
++ }
++ }
+ }
+
+- int x86_family;
+ bool have[MAX_FEATURE+1];
+ };
+
+-static HWFeatures featuresEnabled = HWFeatures::initialize(), featuresDisabled = HWFeatures();
++static HWFeatures featuresEnabled(true), featuresDisabled = HWFeatures(false);
+ static HWFeatures* currentFeatures = &featuresEnabled;
+
+ bool checkHardwareSupport(int feature)
+diff --git a/modules/highgui/CMakeLists.txt b/modules/highgui/CMakeLists.txt
+index eb56177..6d9c650 100644
+--- a/modules/highgui/CMakeLists.txt
++++ b/modules/highgui/CMakeLists.txt
+@@ -65,7 +65,7 @@ elseif(HAVE_QT)
+
+ list(APPEND HIGHGUI_LIBRARIES ${QT_LIBRARIES})
+ list(APPEND highgui_srcs ${CMAKE_CURRENT_LIST_DIR}/src/window_QT.cpp ${_MOC_OUTFILES} ${_RCC_OUTFILES})
+- ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag)
++ ocv_check_flag_support(CXX -Wno-missing-declarations _have_flag "")
+ if(${_have_flag})
+ set_source_files_properties(${_RCC_OUTFILES} PROPERTIES COMPILE_FLAGS -Wno-missing-declarations)
+ endif()
+diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp
+index 0fa5202..dcf2e44 100644
+--- a/modules/imgproc/src/imgwarp.cpp
++++ b/modules/imgproc/src/imgwarp.cpp
+@@ -1649,7 +1649,7 @@ struct VResizeLanczos4
+ {
+ CastOp castOp;
+ VecOp vecOp;
+- int k, x = vecOp((const uchar**)src, (uchar*)dst, (const uchar*)beta, width);
++ int x = vecOp((const uchar**)src, (uchar*)dst, (const uchar*)beta, width);
+ #if CV_ENABLE_UNROLLED
+ for( ; x <= width - 4; x += 4 )
+ {
+@@ -1657,7 +1657,7 @@ struct VResizeLanczos4
+ const WT* S = src[0];
+ WT s0 = S[x]*b, s1 = S[x+1]*b, s2 = S[x+2]*b, s3 = S[x+3]*b;
+
+- for( k = 1; k < 8; k++ )
++ for( int k = 1; k < 8; k++ )
+ {
+ b = beta[k]; S = src[k];
+ s0 += S[x]*b; s1 += S[x+1]*b;
+diff --git a/modules/objdetect/src/haar.cpp b/modules/objdetect/src/haar.cpp
+index 51843fa..bb37ee9 100644
+--- a/modules/objdetect/src/haar.cpp
++++ b/modules/objdetect/src/haar.cpp
+@@ -824,10 +824,7 @@ cvRunHaarClassifierCascadeSum( const CvHaarClassifierCascade* _cascade,
+ CvPoint pt, double& stage_sum, int start_stage )
+ {
+ #ifdef CV_HAAR_USE_AVX
+- bool haveAVX = false;
+- if(cv::checkHardwareSupport(CV_CPU_AVX))
+- if(__xgetbv()&0x6)// Check if the OS will save the YMM registers
+- haveAVX = true;
++ bool haveAVX = cv::checkHardwareSupport(CV_CPU_AVX);
+ #else
+ # ifdef CV_HAAR_USE_SSE
+ bool haveSSE2 = cv::checkHardwareSupport(CV_CPU_SSE2);
+--
+2.7.4
+
diff --git a/package/opencv3/opencv3.mk b/package/opencv3/opencv3.mk
index 2e50ba244e..6df57057f5 100644
--- a/package/opencv3/opencv3.mk
+++ b/package/opencv3/opencv3.mk
@@ -97,22 +97,8 @@ OPENCV3_CONF_OPTS += \
#
# * PowerPC support is turned off since its only effect is altering CFLAGS,
# adding '-mcpu=G3 -mtune=G5' to them, which is already handled by Buildroot.
-# * fma3 and popcnt support is disabled because according to gcc manual [2], it
-# is only available on x86_64 haswell, broadwell and knl architecture.
-#
-# [2] https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/x86-Options.html#x86-Options
OPENCV3_CONF_OPTS += \
- -DENABLE_AVX=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \
- -DENABLE_AVX2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \
- -DENABLE_FMA3=OFF \
- -DENABLE_POPCNT=OFF \
- -DENABLE_POWERPC=OFF \
- -DENABLE_SSE=$(if $(BR2_X86_CPU_HAS_SSE),ON,OFF) \
- -DENABLE_SSE2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \
- -DENABLE_SSE3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \
- -DENABLE_SSE41=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \
- -DENABLE_SSE42=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \
- -DENABLE_SSSE3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF)
+ -DENABLE_POWERPC=OFF
# Cuda stuff
OPENCV3_CONF_OPTS += \
@@ -206,6 +192,7 @@ OPENCV3_CONF_OPTS += \
-DWITH_EIGEN=OFF \
-DWITH_GDAL=OFF \
-DWITH_GPHOTO2=OFF \
+ -DWITH_LAPACK=OFF \
-DWITH_MATLAB=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCL_SVM=OFF \
diff --git a/package/openpowerlink/0004-FIX-use-contrib-getopt-only-on-Windows.patch b/package/openpowerlink/0004-FIX-use-contrib-getopt-only-on-Windows.patch
new file mode 100644
index 0000000000..2edf9f236d
--- /dev/null
+++ b/package/openpowerlink/0004-FIX-use-contrib-getopt-only-on-Windows.patch
@@ -0,0 +1,102 @@
+From d05273e65657d82e44fb7bd91a8fba0ba990ff2c Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sat, 27 May 2017 23:51:41 +0200
+Subject: [PATCH] [FIX] use contrib getopt() only on Windows
+
+Otherwise, contrib getopt will clash with the one from the libc when
+building statically.
+
+lib64/libc.a(getopt.os):(.data+0x8): multiple definition of `optind'
+CMakeFiles/demo_mn_console.dir/__/__/contrib/getopt/getopt.c.o:(.data+0x8): first defined here
+lib64/libc.a(getopt.os):(.data+0x4): multiple definition of `opterr'
+CMakeFiles/demo_mn_console.dir/__/__/contrib/getopt/getopt.c.o:(.data+0xc): first defined here
+/lib64/libc.a(getopt.os): In function `__GI_getopt':
+getopt.c:(.text+0x76e): multiple definition of `getopt'
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ apps/demo_cn_console/CMakeLists.txt | 2 +-
+ apps/demo_cn_console/src/main.c | 6 ++++++
+ apps/demo_mn_console/CMakeLists.txt | 2 +-
+ apps/demo_mn_console/src/main.c | 6 ++++++
+ 4 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/apps/demo_cn_console/CMakeLists.txt b/apps/demo_cn_console/CMakeLists.txt
+index a3a80bb..5733213 100644
+--- a/apps/demo_cn_console/CMakeLists.txt
++++ b/apps/demo_cn_console/CMakeLists.txt
+@@ -61,7 +61,6 @@ SET(DEMO_SOURCES
+ ${COMMON_SOURCE_DIR}/eventlog/eventlog.c
+ ${COMMON_SOURCE_DIR}/eventlog/eventlogstring.c
+ ${CONTRIB_SOURCE_DIR}/console/printlog.c
+- ${CONTRIB_SOURCE_DIR}/getopt/getopt.c
+ )
+
+ INCLUDE_DIRECTORIES(
+@@ -114,6 +113,7 @@ ENDIF (CFG_KERNEL_STACK_DIRECTLINK)
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ include(linux.cmake)
+ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
++ SET(DEMO_SOURCES ${DEMO_SOURCES} ${CONTRIB_SOURCE_DIR}/getopt/getopt.c)
+ include (windows.cmake)
+ ELSE()
+ MESSAGE(FATAL_ERROR "System ${CMAKE_SYSTEM_NAME} is not supported!")
+diff --git a/apps/demo_cn_console/src/main.c b/apps/demo_cn_console/src/main.c
+index c630586..9406473 100644
+--- a/apps/demo_cn_console/src/main.c
++++ b/apps/demo_cn_console/src/main.c
+@@ -50,7 +50,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ #include <system/system.h>
+ #include <obdcreate/obdcreate.h>
++
++#if (TARGET_SYSTEM == _WIN32_)
+ #include <getopt/getopt.h>
++#else
++#include <unistd.h>
++#endif
++
+ #include <console/console.h>
+ #include <eventlog/eventlog.h>
+
+diff --git a/apps/demo_mn_console/CMakeLists.txt b/apps/demo_mn_console/CMakeLists.txt
+index 9c3378c..a81c4b3 100644
+--- a/apps/demo_mn_console/CMakeLists.txt
++++ b/apps/demo_mn_console/CMakeLists.txt
+@@ -67,7 +67,6 @@ SET(DEMO_SOURCES
+ ${COMMON_SOURCE_DIR}/eventlog/eventlog.c
+ ${COMMON_SOURCE_DIR}/eventlog/eventlogstring.c
+ ${CONTRIB_SOURCE_DIR}/console/printlog.c
+- ${CONTRIB_SOURCE_DIR}/getopt/getopt.c
+ )
+
+ INCLUDE_DIRECTORIES(
+@@ -129,6 +128,7 @@ ENDIF()
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ include(linux.cmake)
+ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
++ SET(DEMO_SOURCES ${DEMO_SOURCES} ${CONTRIB_SOURCE_DIR}/getopt/getopt.c)
+ include (windows.cmake)
+ ELSE()
+ MESSAGE(FATAL_ERROR "System ${CMAKE_SYSTEM_NAME} is not supported!")
+diff --git a/apps/demo_mn_console/src/main.c b/apps/demo_mn_console/src/main.c
+index 12d9be0..194e446 100644
+--- a/apps/demo_mn_console/src/main.c
++++ b/apps/demo_mn_console/src/main.c
+@@ -50,7 +50,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ #include <system/system.h>
+ #include <obdcreate/obdcreate.h>
++
++#if (TARGET_SYSTEM == _WIN32_)
+ #include <getopt/getopt.h>
++#else
++#include <unistd.h>
++#endif
++
+ #include <console/console.h>
+ #include <eventlog/eventlog.h>
+
+--
+2.9.4
+
diff --git a/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch b/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch
new file mode 100644
index 0000000000..091f18c40f
--- /dev/null
+++ b/package/openpowerlink/0005-FIX-use-pcap-config-to-fix-static-linking-with-libpc.patch
@@ -0,0 +1,166 @@
+From 406e1759dc6a4c18f6a38c3d7571aacb177487c6 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sun, 28 May 2017 00:25:11 +0200
+Subject: [PATCH] [FIX]: use pcap-config to fix static linking with libpcap
+
+When linking demo_mn_console statically with pcap, the CMake build
+system forget to link with other libraries linked with libpcap
+(-lnl-genl-3 -lnl-3 -ldbus-1 -pthread).
+
+[100%] Linking C executable demo_mn_console
+lib64/libpcap.a(pcap-linux.o): In function nl80211_init': pcap-linux.c:(.text+0x41e): undefined reference tonl_socket_alloc'
+
+To fix this, the build system could use pcap-config:
+pcap-config --libs --static
+-L/path/to/sysroot/usr/lib -lpcap -L/path/to/sysroot/usr/lib/.libs
+-lnl-genl-3 -lnl-3 -L/path/to/sysroot/usr/lib -ldbus-1 -pthread
+
+Fixes:
+http://autobuild.buildroot.net/results/f43/f437d09ac6c689c911e1885b95da33b692f2cb3c
+http://autobuild.buildroot.net/results/385/3859dc0f4de7e3284a96d5841f040f69f71842df
+https://github.com/OpenAutomationTechnologies/openPOWERLINK_V2/issues/187
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ apps/demo_cn_console/linux.cmake | 20 ++++++++++++++++++++
+ apps/demo_mn_console/linux.cmake | 20 ++++++++++++++++++++
+ apps/demo_mn_qt/linux.cmake | 22 +++++++++++++++++++++-
+ drivers/linux/drv_daemon_pcap/CMakeLists.txt | 22 +++++++++++++++++++++-
+ 4 files changed, 82 insertions(+), 2 deletions(-)
+
+diff --git a/apps/demo_cn_console/linux.cmake b/apps/demo_cn_console/linux.cmake
+index 1c6f51c..7752917 100644
+--- a/apps/demo_cn_console/linux.cmake
++++ b/apps/demo_cn_console/linux.cmake
+@@ -46,8 +46,28 @@ SET (DEMO_ARCH_SOURCES
+ ################################################################################
+ # Set architecture specific libraries
+
++IF (NOT CFG_COMPILE_SHARED_LIBRARY)
++ SET(PCAP_CONFIG_OPTS --static)
++ENDIF()
++
+ IF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON)
++
++find_program(PCAP_CONFIG NAMES pcap-config PATHS)
++
++if (PCAP_CONFIG)
++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}")
++
++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS})
++else (PCAP_CONFIG)
++ message (STATUS "pcap-config not found, using defaults...")
+ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap)
++endif (PCAP_CONFIG)
++
+ ENDIF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON)
+ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt)
+
+diff --git a/apps/demo_mn_console/linux.cmake b/apps/demo_mn_console/linux.cmake
+index d24e4fc..5951dbf 100644
+--- a/apps/demo_mn_console/linux.cmake
++++ b/apps/demo_mn_console/linux.cmake
+@@ -46,8 +46,28 @@ SET (DEMO_ARCH_SOURCES
+ ################################################################################
+ # Set architecture specific libraries
+
++IF (NOT CFG_COMPILE_SHARED_LIBRARY)
++ SET(PCAP_CONFIG_OPTS --static)
++ENDIF()
++
+ IF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON)
++
++find_program(PCAP_CONFIG NAMES pcap-config PATHS)
++
++if (PCAP_CONFIG)
++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}")
++
++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS})
++else (PCAP_CONFIG)
++ message (STATUS "pcap-config not found, using defaults...")
+ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap)
++endif (PCAP_CONFIG)
++
+ ENDIF (CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON)
+ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt)
+
+diff --git a/apps/demo_mn_qt/linux.cmake b/apps/demo_mn_qt/linux.cmake
+index 6ed75ee..c69dbd9 100644
+--- a/apps/demo_mn_qt/linux.cmake
++++ b/apps/demo_mn_qt/linux.cmake
+@@ -37,8 +37,28 @@
+ ################################################################################
+ # Set architecture specific libraries
+
++IF (NOT CFG_COMPILE_SHARED_LIBRARY)
++ SET(PCAP_CONFIG_OPTS --static)
++ENDIF()
++
+ IF(CFG_KERNEL_STACK_DIRECTLINK OR CFG_KERNEL_STACK_USERSPACE_DAEMON)
+- SET(ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap)
++
++find_program(PCAP_CONFIG NAMES pcap-config PATHS)
++
++if (PCAP_CONFIG)
++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}")
++
++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS})
++else (PCAP_CONFIG)
++ message (STATUS "pcap-config not found, using defaults...")
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap)
++endif (PCAP_CONFIG)
++
+ ENDIF()
+ SET(ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt)
+
+diff --git a/drivers/linux/drv_daemon_pcap/CMakeLists.txt b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
+index 2b4a2c1..98f693f 100644
+--- a/drivers/linux/drv_daemon_pcap/CMakeLists.txt
++++ b/drivers/linux/drv_daemon_pcap/CMakeLists.txt
+@@ -134,7 +134,27 @@ INCLUDE_DIRECTORIES(
+ ${CONTRIB_SOURCE_DIR}
+ )
+
+-SET (ARCH_LIBRARIES pcap pthread rt)
++IF (NOT CFG_COMPILE_SHARED_LIBRARY)
++ SET(PCAP_CONFIG_OPTS --static)
++ENDIF()
++
++find_program(PCAP_CONFIG NAMES pcap-config PATHS)
++
++if (PCAP_CONFIG)
++ message (STATUS "Looking for pcap-config... ${PCAP_CONFIG}")
++
++ execute_process (COMMAND ${PCAP_CONFIG} --libs ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++ execute_process (COMMAND ${PCAP_CONFIG} --cflags ${PCAP_CONFIG_OPTS}
++ OUTPUT_VARIABLE PCAP_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
++
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} ${PCAP_LDFLAGS})
++else (PCAP_CONFIG)
++ message (STATUS "pcap-config not found, using defaults...")
++ SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pcap)
++endif (PCAP_CONFIG)
++
++SET (ARCH_LIBRARIES ${ARCH_LIBRARIES} pthread rt)
+
+ ADD_EXECUTABLE(${EXE_NAME} ${DRV_SOURCES})
+ SET_PROPERTY(TARGET ${EXE_NAME} PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG;DEF_DEBUG_LVL=${CFG_DEBUG_LVL})
+--
+2.9.4
+
diff --git a/package/openpowerlink/openpowerlink.mk b/package/openpowerlink/openpowerlink.mk
index adcc48b10c..f52cc8da97 100644
--- a/package/openpowerlink/openpowerlink.mk
+++ b/package/openpowerlink/openpowerlink.mk
@@ -40,7 +40,8 @@ OPENPOWERLINK_CONF_OPTS += \
-DCFG_COMPILE_LIB_CN=$(OPENPOWERLINK_CN_ONOFF) \
-DCFG_COMPILE_LIB_CNAPP_USERINTF=OFF \
-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \
- -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF
+ -DCFG_COMPILE_LIB_CNDRV_PCAP=OFF \
+ -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config"
else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_USERSPACE_DAEMON_LIB),y)
OPENPOWERLINK_DEPENDENCIES += libpcap
OPENPOWERLINK_CONF_OPTS += \
@@ -52,7 +53,8 @@ OPENPOWERLINK_CONF_OPTS += \
-DCFG_COMPILE_LIB_CN=OFF \
-DCFG_COMPILE_LIB_CNAPP_USERINTF=$(OPENPOWERLINK_CN_ONOFF) \
-DCFG_COMPILE_LIB_CNAPP_KERNELINTF=OFF \
- -DCFG_COMPILE_LIB_CNDRV_PCAP=$(OPENPOWERLINK_CN_ONOFF)
+ -DCFG_COMPILE_LIB_CNDRV_PCAP=$(OPENPOWERLINK_CN_ONOFF) \
+ -DPCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config"
else ifeq ($(BR2_PACKAGE_OPENPOWERLINK_STACK_KERNEL_STACK_LIB),y)
OPENPOWERLINK_CONF_OPTS += \
-DCFG_COMPILE_LIB_MN=OFF \
diff --git a/package/openvpn/openvpn.hash b/package/openvpn/openvpn.hash
index a03345eb43..fe054e9618 100644
--- a/package/openvpn/openvpn.hash
+++ b/package/openvpn/openvpn.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 fde9e22c6df7a335d2d58c6a4d5967be76df173c766a5c51ece57fd044c76ee5 openvpn-2.4.1.tar.xz
+sha256 df5c4f384b7df6b08a2f6fa8a84b9fd382baf59c2cef1836f82e2a7f62f1bff9 openvpn-2.4.2.tar.xz
diff --git a/package/openvpn/openvpn.mk b/package/openvpn/openvpn.mk
index aba6e30e62..ff6bcdcee6 100644
--- a/package/openvpn/openvpn.mk
+++ b/package/openvpn/openvpn.mk
@@ -4,7 +4,7 @@
#
################################################################################
-OPENVPN_VERSION = 2.4.1
+OPENVPN_VERSION = 2.4.2
OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz
OPENVPN_SITE = http://swupdate.openvpn.net/community/releases
OPENVPN_DEPENDENCIES = host-pkgconf openssl
diff --git a/package/oracle-mysql/0008-fix-type-conversion.patch b/package/oracle-mysql/0008-fix-type-conversion.patch
new file mode 100644
index 0000000000..65babf4f20
--- /dev/null
+++ b/package/oracle-mysql/0008-fix-type-conversion.patch
@@ -0,0 +1,22 @@
+Fix type conversion
+
+Fixes the following build error with gcc 6.x:
+
+protocol.cc:27:40: error: narrowing conversion of ''\37777777776'' from 'char' to 'uchar {aka unsigned char}' inside { } [-Wnarrowing]
+ static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/server-tools/instance-manager/protocol.cc
+===================================================================
+--- a/server-tools/instance-manager/protocol.cc
++++ b/server-tools/instance-manager/protocol.cc
+@@ -24,7 +24,7 @@
+ #include <m_string.h>
+
+
+-static uchar eof_buff[1]= { (char) 254 }; /* Marker for end of fields */
++static uchar eof_buff[1]= { (uchar) 254 }; /* Marker for end of fields */
+ static const char ERROR_PACKET_CODE= (char) 255;
+
+
diff --git a/package/php/php.hash b/package/php/php.hash
index 35c592556a..d34242fea0 100644
--- a/package/php/php.hash
+++ b/package/php/php.hash
@@ -1,2 +1,2 @@
# From http://php.net/downloads.php
-sha256 71514386adf3e963df087c2044a0b3747900b8b1fc8da3a99f0a0ae9180d300b php-7.1.4.tar.xz
+sha256 d149a3c396c45611f5dc6bf14be190f464897145a76a8e5851cf18ff7094f6ac php-7.1.5.tar.xz
diff --git a/package/php/php.mk b/package/php/php.mk
index 46f57e4dc5..cfc6789916 100644
--- a/package/php/php.mk
+++ b/package/php/php.mk
@@ -4,7 +4,7 @@
#
################################################################################
-PHP_VERSION = 7.1.4
+PHP_VERSION = 7.1.5
PHP_SITE = http://www.php.net/distributions
PHP_SOURCE = php-$(PHP_VERSION).tar.xz
PHP_INSTALL_STAGING = YES
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 3b26e6b483..f474704980 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -694,6 +694,7 @@ $(1)-legal-source: $$($(2)_TARGET_ACTUAL_SOURCE)
endif # actual sources != sources
endif # actual sources != ""
+$(1)-source-check: PKG=$(2)
$(1)-source-check:
$$(foreach p,$$($(2)_ALL_DOWNLOADS),$$(call SOURCE_CHECK,$$(p))$$(sep))
diff --git a/package/popt/popt.mk b/package/popt/popt.mk
index 863a47a658..3ab53880d5 100644
--- a/package/popt/popt.mk
+++ b/package/popt/popt.mk
@@ -21,6 +21,7 @@ POPT_CONF_ENV = ac_cv_va_copy=yes
ifeq ($(BR2_PACKAGE_LIBICONV),y)
POPT_CONF_ENV += am_cv_lib_iconv=yes
POPT_CONF_OPTS += --with-libiconv-prefix=$(STAGING_DIR)/usr
+POPT_DEPENDENCIES += libiconv
endif
$(eval $(autotools-package))
diff --git a/package/postgresql/postgresql.hash b/package/postgresql/postgresql.hash
index 1524a342ab..c65edf71da 100644
--- a/package/postgresql/postgresql.hash
+++ b/package/postgresql/postgresql.hash
@@ -1,2 +1,2 @@
-# From https://ftp.postgresql.org/pub/source/v9.6.2/postgresql-9.6.2.tar.bz2.sha256
-sha256 0187b5184be1c09034e74e44761505e52357248451b0c854dddec6c231fe50c9 postgresql-9.6.2.tar.bz2
+# From https://ftp.postgresql.org/pub/source/v9.6.3/postgresql-9.6.3.tar.bz2.sha256
+sha256 1645b3736901f6d854e695a937389e68ff2066ce0cde9d73919d6ab7c995b9c6 postgresql-9.6.3.tar.bz2
diff --git a/package/postgresql/postgresql.mk b/package/postgresql/postgresql.mk
index e07afc94a8..62b41cbeaa 100644
--- a/package/postgresql/postgresql.mk
+++ b/package/postgresql/postgresql.mk
@@ -4,7 +4,7 @@
#
################################################################################
-POSTGRESQL_VERSION = 9.6.2
+POSTGRESQL_VERSION = 9.6.3
POSTGRESQL_SOURCE = postgresql-$(POSTGRESQL_VERSION).tar.bz2
POSTGRESQL_SITE = http://ftp.postgresql.org/pub/source/v$(POSTGRESQL_VERSION)
POSTGRESQL_LICENSE = PostgreSQL
diff --git a/package/protobuf/protobuf.mk b/package/protobuf/protobuf.mk
index 610da8c04a..2cd10ebad2 100644
--- a/package/protobuf/protobuf.mk
+++ b/package/protobuf/protobuf.mk
@@ -17,6 +17,10 @@ PROTOBUF_LICENSE_FILES = LICENSE
PROTOBUF_DEPENDENCIES = host-protobuf
PROTOBUF_CONF_OPTS = --with-protoc=$(HOST_DIR)/usr/bin/protoc
+ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
+PROTOBUF_CONF_ENV += LIBS=-latomic
+endif
+
PROTOBUF_INSTALL_STAGING = YES
PROTOBUF_PATCH = https://github.com/google/protobuf/commit/416f90939d4de58fe1a4e2489120010313183291.patch
diff --git a/package/pulseview/0003-CMakeLists.txt-Avoid-fext-numeric-literals-not-suppo.patch b/package/pulseview/0003-CMakeLists.txt-Avoid-fext-numeric-literals-not-suppo.patch
new file mode 100644
index 0000000000..89137f2ad8
--- /dev/null
+++ b/package/pulseview/0003-CMakeLists.txt-Avoid-fext-numeric-literals-not-suppo.patch
@@ -0,0 +1,28 @@
+From 6ad4d7a6f17edecc3523a7ab3d627f9a70dbacc1 Mon Sep 17 00:00:00 2001
+From: Uwe Hermann <uwe@hermann-uwe.de>
+Date: Wed, 17 May 2017 11:00:44 +0200
+Subject: [PATCH] CMakeLists.txt: Avoid -fext-numeric-literals, (not supported
+ by clang).
+
+This (re-)fixes bug #863.
+
+Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
+---
+ CMakeLists.txt | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e8bc79f..e7e4432 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -395,6 +395,7 @@ add_definitions(${QT_DEFINITIONS} -DQT_NO_KEYWORDS)
+ add_definitions(-D__STDC_LIMIT_MACROS)
+ add_definitions(-Wall -Wextra)
+ add_definitions(-std=c++11)
++add_definitions(-DBOOST_MATH_DISABLE_FLOAT128=1)
+
+ if(ENABLE_DECODE)
+ add_definitions(-DENABLE_DECODE)
+--
+2.9.3
+
diff --git a/package/python-enum34/python-enum34.mk b/package/python-enum34/python-enum34.mk
index 1a4c6c694e..c612cb65e2 100644
--- a/package/python-enum34/python-enum34.mk
+++ b/package/python-enum34/python-enum34.mk
@@ -7,7 +7,7 @@
PYTHON_ENUM34_VERSION = 1.1.6
PYTHON_ENUM34_SOURCE = enum34-$(PYTHON_ENUM34_VERSION).tar.gz
PYTHON_ENUM34_SITE = https://pypi.python.org/packages/bf/3e/31d502c25302814a7c2f1d3959d2a3b3f78e509002ba91aea64993936876
-PYTHON_ENUM34_SETUP_TYPE = distutils
+PYTHON_ENUM34_SETUP_TYPE = setuptools
PYTHON_ENUM34_LICENSE = BSD-3-Clause
PYTHON_ENUM34_LICENSE_FILES = enum/LICENSE
diff --git a/package/qpid-proton/Config.in b/package/qpid-proton/Config.in
index 47cddebe91..b49a2afa7e 100644
--- a/package/qpid-proton/Config.in
+++ b/package/qpid-proton/Config.in
@@ -6,10 +6,10 @@ config BR2_PACKAGE_QPID_PROTON
help
The AMQP messaging toolkit
- Qpid Proton is a high-performance, lightweight messaging library.
- It can be used in the widest range of messaging applications,
- including brokers, client libraries, routers, bridges, proxies, and
- more.
+ Qpid Proton is a high-performance, lightweight messaging
+ library. It can be used in the widest range of messaging
+ applications, including brokers, client libraries, routers,
+ bridges, proxies, and more.
https://qpid.apache.org/proton/
diff --git a/package/qt5/qt5declarative/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch b/package/qt5/qt5declarative/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch
new file mode 100644
index 0000000000..875634fdb4
--- /dev/null
+++ b/package/qt5/qt5declarative/0002-examples-qquickviewcomparison-and-quickwidget-needs-.patch
@@ -0,0 +1,58 @@
+From b4db5c6cef877b33b5e7cd5a07fe4a7e6797dcfc Mon Sep 17 00:00:00 2001
+From: Peter Seiderer <ps.report@gmx.net>
+Date: Tue, 16 May 2017 19:47:19 +0200
+Subject: [PATCH] examples: qquickviewcomparison and quickwidget needs OpenGL
+ support
+
+Fixes:
+
+ main.cpp:(.text._ZN11QQmlPrivate10createIntoI6FbItemEEvPv[_ZN11QQmlPrivate10createIntoI6FbItemEEvPv]+0x18): undefined reference to `QQuickFramebufferObject::QQuickFramebufferObject(QQuickItem*)'
+ .obj/main.o: In function `QQmlPrivate::QQmlElement<FbItem>::~QQmlElement()':
+ main.cpp:(.text._ZN11QQmlPrivate11QQmlElementI6FbItemED2Ev[_ZN11QQmlPrivate11QQmlElementI6FbItemED5Ev]+0x5c): undefined reference to `vtable for QQuickFramebufferObject'
+ .obj/main.o: In function `QQmlPrivate::QQmlElement<FbItem>::~QQmlElement()':
+ main.cpp:(.text._ZN11QQmlPrivate11QQmlElementI6FbItemED0Ev[_ZN11QQmlPrivate11QQmlElementI6FbItemED0Ev]+0x64): undefined reference to `vtable for QQuickFramebufferObject'
+ .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0x48): undefined reference to `QQuickFramebufferObject::isTextureProvider() const'
+ .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0x4c): undefined reference to `QQuickFramebufferObject::textureProvider() const'
+ .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xb4): undefined reference to `QQuickFramebufferObject::geometryChanged(QRectF const&, QRectF const&)'
+ .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xb8): undefined reference to `QQuickFramebufferObject::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*)'
+ .obj/main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI6FbItemEE[_ZTVN11QQmlPrivate11QQmlElementI6FbItemEE]+0xbc): undefined reference to `QQuickFramebufferObject::releaseResources()'
+ .obj/moc_fbitem.o: In function `FbItem::qt_metacast(char const*)':
+ moc_fbitem.cpp:(.text+0x70): undefined reference to `QQuickFramebufferObject::qt_metacast(char const*)'
+ .obj/moc_fbitem.o: In function `FbItem::qt_metacall(QMetaObject::Call, int, void**)':
+ moc_fbitem.cpp:(.text+0x80): undefined reference to `QQuickFramebufferObject::qt_metacall(QMetaObject::Call, int, void**)'
+ .obj/moc_fbitem.o: In function `FbItem::~FbItem()':
+ moc_fbitem.cpp:(.text._ZN6FbItemD2Ev[_ZN6FbItemD5Ev]+0x38): undefined reference to `vtable for QQuickFramebufferObject'
+ .obj/moc_fbitem.o: In function `FbItem::~FbItem()':
+ moc_fbitem.cpp:(.text._ZN6FbItemD0Ev[_ZN6FbItemD0Ev]+0x40): undefined reference to `vtable for QQuickFramebufferObject'
+ .obj/moc_fbitem.o:(.data.rel.ro+0x8): undefined reference to `typeinfo for QQuickFramebufferObject'
+ .obj/moc_fbitem.o:(.data.rel.ro+0x58): undefined reference to `QQuickFramebufferObject::isTextureProvider() const'
+ .obj/moc_fbitem.o:(.data.rel.ro+0x5c): undefined reference to `QQuickFramebufferObject::textureProvider() const'
+ .obj/moc_fbitem.o:(.data.rel.ro+0xc4): undefined reference to `QQuickFramebufferObject::geometryChanged(QRectF const&, QRectF const&)'
+ .obj/moc_fbitem.o:(.data.rel.ro+0xc8): undefined reference to `QQuickFramebufferObject::updatePaintNode(QSGNode*, QQuickItem::UpdatePaintNodeData*)'
+ .obj/moc_fbitem.o:(.data.rel.ro+0xcc): undefined reference to `QQuickFramebufferObject::releaseResources()'
+ .obj/moc_fbitem.o:(.data.rel.ro+0xf0): undefined reference to `QQuickFramebufferObject::staticMetaObject'
+
+Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+---
+ examples/quick/quick.pro | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/examples/quick/quick.pro b/examples/quick/quick.pro
+index 445dfb0fa..26ca0138e 100644
+--- a/examples/quick/quick.pro
++++ b/examples/quick/quick.pro
+@@ -36,7 +36,10 @@ qtConfig(opengl(es1|es2)?) {
+ # Widget dependent examples
+ qtHaveModule(widgets) {
+ SUBDIRS += embeddedinwidgets
+- qtHaveModule(quickwidgets): SUBDIRS += quickwidgets
++ # OpenGL Support Required
++ qtConfig(opengl(es1|es2)?) {
++ qtHaveModule(quickwidgets): SUBDIRS += quickwidgets
++ }
+ }
+
+ EXAMPLE_FILES = \
+--
+2.11.0
+
diff --git a/package/qwt/qwt.mk b/package/qwt/qwt.mk
index d4e6d52c13..619453bfc9 100644
--- a/package/qwt/qwt.mk
+++ b/package/qwt/qwt.mk
@@ -41,6 +41,12 @@ else
QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtOpenGL.*$$/\# QWT_CONFIG += QwtOpenGL/'
endif
+ifeq ($(BR2_STATIC_LIBS),y)
+QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/\# QWT_CONFIG += QwtDll/'
+else
+QWT_CONFIG += -e 's/^.*QWT_CONFIG.*QwtDll.*$$/QWT_CONFIG += QwtDll/'
+endif
+
define QWT_CONFIGURE_CMDS
$(SED) $(QWT_CONFIG) $(@D)/qwtconfig.pri
(cd $(@D); $(TARGET_MAKE_ENV) $(QWT_QMAKE))
diff --git a/package/rabbitmq-c/rabbitmq-c.mk b/package/rabbitmq-c/rabbitmq-c.mk
index 1ca35ad00c..eef09ec0b3 100644
--- a/package/rabbitmq-c/rabbitmq-c.mk
+++ b/package/rabbitmq-c/rabbitmq-c.mk
@@ -21,14 +21,20 @@ else ifeq ($(BR2_SHARED_LIBS),y)
RABBITMQ_C_CONF_OPTS += -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF
endif
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
+# CMake OpenSSL detection is buggy, and doesn't properly use
+# pkg-config, so it fails when statically linking. See
+# https://gitlab.kitware.com/cmake/cmake/issues/16885.
+ifeq ($(BR2_PACKAGE_OPENSSL):$(BR2_STATIC_LIBS),y:)
RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=ON
RABBITMQ_C_DEPENDENCIES += openssl
else
RABBITMQ_C_CONF_OPTS += -DENABLE_SSL_SUPPORT=OFF
endif
-ifeq ($(BR2_PACKAGE_POPT), y)
+# Popt is sometimes linked against libintl, but CMake doesn't know
+# about that, and there's no way to tell manually CMake to link
+# against an additional library.
+ifeq ($(BR2_PACKAGE_POPT):$(BR2_STATIC_LIBS),y:)
RABBITMQ_C_CONF_OPTS += -DBUILD_TOOLS=ON
RABBITMQ_C_DEPENDENCIES += popt
else
diff --git a/package/radvd/radvd.mk b/package/radvd/radvd.mk
index 64f755ddbb..88221875a3 100644
--- a/package/radvd/radvd.mk
+++ b/package/radvd/radvd.mk
@@ -8,7 +8,11 @@ RADVD_VERSION = 2.12
RADVD_SOURCE = radvd-$(RADVD_VERSION).tar.xz
RADVD_SITE = http://www.litech.org/radvd/dist
RADVD_DEPENDENCIES = host-bison flex host-flex host-pkgconf
-RADVD_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99'
+# We need to ignore <linux/if_arp.h>, because radvd already includes
+# <net/if_arp.h>, which conflicts with <linux/if_arp.h>.
+RADVD_CONF_ENV = \
+ ac_cv_prog_cc_c99='-std=gnu99' \
+ ac_cv_header_linux_if_arp_h=no
# For 0002-Don-t-force-fstack-protector-the-toolchain-might-lac.patch
RADVD_AUTORECONF = YES
RADVD_LICENSE = BSD-4-Clause-like
diff --git a/package/redis/redis.mk b/package/redis/redis.mk
index 67e9e7e8c4..6a7a3128c3 100644
--- a/package/redis/redis.mk
+++ b/package/redis/redis.mk
@@ -13,16 +13,21 @@ define REDIS_USERS
redis -1 redis -1 * /var/lib/redis /bin/false - Redis Server
endef
-# Uses __atomic_fetch_add_4
+# Uses __atomic_fetch_add_4. Adding -latomic to LDFLAGS does not work,
+# because LDFLAGS is used before the list of object files. We need to
+# add -latomic to FINAL_LIBS to provide -latomic at the correct place
+# in the linking command.
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
-REDIS_LIBATOMIC = -latomic
+define REDIS_FIX_MAKEFILE
+ $(SED) 's/FINAL_LIBS=-lm/FINAL_LIBS=-lm -latomic/' $(@D)/src/Makefile
+endef
+REDIS_POST_PATCH_HOOKS = REDIS_FIX_MAKEFILE
endif
# Redis doesn't support DESTDIR (yet, see
# https://github.com/antirez/redis/pull/609). We set PREFIX
# instead.
REDIS_BUILDOPTS = $(TARGET_CONFIGURE_OPTS) \
- LDFLAGS="$(TARGET_LDFLAGS) $(REDIS_LIBATOMIC)" \
PREFIX=$(TARGET_DIR)/usr MALLOC=libc
define REDIS_BUILD_CMDS
diff --git a/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch b/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch
new file mode 100644
index 0000000000..130e5d77c3
--- /dev/null
+++ b/package/rpcbind/0004-rpcbind-pair-all-svc_getargs-calls-with-svc_freeargs.patch
@@ -0,0 +1,231 @@
+From 093bf65c79af417cffa09d6475f58923540eebcc Mon Sep 17 00:00:00 2001
+From: Doran Moppert <dmoppert@redhat.com>
+Date: Thu, 11 May 2017 11:42:54 -0400
+Subject: [PATCH] rpcbind: pair all svc_getargs() calls with svc_freeargs() to
+ avoid memory leak
+
+This patch is to address CVE-2017-8779 "rpcbomb" in rpcbind, discussed
+at [1], [2], [3]. The last link suggests this issue is actually a bug
+in rpcbind, which led me here.
+
+The leak caused by the reproducer at [4] appears to come from
+rpcb_service_4(), in the case where svc_getargs() returns false and the
+function had an early return, rather than passing through the cleanup
+path at done:, as would otherwise occur.
+
+It also addresses a couple of other locations where the same fault seems
+to exist, though I haven't been able to exercise those. I hope someone
+more intimate with rpc(3) can confirm my understanding is correct, and
+that I haven't introduced any new bugs.
+
+Without this patch, using the reproducer (and variants) repeatedly
+against rpcbind with a numBytes argument of 1_000_000_000, /proc/$(pidof
+rpcbind)/status reports VmSize increase of 976564 kB each call, and
+VmRSS increase of around 260 kB every 33 calls - the specific numbers
+are probably an artifact of my rhel/glibc version. With the patch,
+there is a small (~50 kB) VmSize increase with the first message, but
+thereafter both VmSize and VmRSS remain steady.
+
+[1]: http://seclists.org/oss-sec/2017/q2/209
+[2]: https://bugzilla.redhat.com/show_bug.cgi?id=1448124
+[3]: https://sourceware.org/ml/libc-alpha/2017-05/msg00129.html
+[4]: https://github.com/guidovranken/rpcbomb/
+
+Signed-off-by: Doran Moppert <dmoppert@redhat.com>
+Signed-off-by: Steve Dickson <steved@redhat.com>
+(cherry picked from commit 7ea36eeece56b59f98e469934e4c20b4da043346)
+[Peter: unconditionally include syslog.h for LOG_DEBUG]
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+---
+ src/pmap_svc.c | 58 ++++++++++++++++++++++++++++++++++++++++++++----------
+ src/rpcb_svc.c | 2 +-
+ src/rpcb_svc_4.c | 2 +-
+ src/rpcb_svc_com.c | 8 ++++++++
+ 4 files changed, 58 insertions(+), 12 deletions(-)
+
+diff --git a/src/pmap_svc.c b/src/pmap_svc.c
+index ad28b93..f730bed 100644
+--- a/src/pmap_svc.c
++++ b/src/pmap_svc.c
+@@ -53,8 +53,8 @@ static char sccsid[] = "@(#)pmap_svc.c 1.23 89/04/05 Copyr 1984 Sun Micro";
+ #include <rpc/rpc.h>
+ #include <rpc/pmap_prot.h>
+ #include <rpc/rpcb_prot.h>
+-#ifdef RPCBIND_DEBUG
+ #include <syslog.h>
++#ifdef RPCBIND_DEBUG
+ #include <stdlib.h>
+ #endif
+ #include "rpcbind.h"
+@@ -175,6 +175,7 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
+ long ans;
+ uid_t uid;
+ char uidbuf[32];
++ int rc = TRUE;
+
+ /*
+ * Can't use getpwnam here. We might end up calling ourselves
+@@ -194,7 +195,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
+
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)&reg)) {
+ svcerr_decode(xprt);
+- return (FALSE);
++ rc = FALSE;
++ goto done;
+ }
+ #ifdef RPCBIND_DEBUG
+ if (debugging)
+@@ -205,7 +207,8 @@ pmapproc_change(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt, unsigned long
+
+ if (!check_access(xprt, op, reg.pm_prog, PMAPVERS)) {
+ svcerr_weakauth(xprt);
+- return (FALSE);
++ rc = (FALSE);
++ goto done;
+ }
+
+ rpcbreg.r_prog = reg.pm_prog;
+@@ -258,7 +261,16 @@ done_change:
+ rpcbs_set(RPCBVERS_2_STAT, ans);
+ else
+ rpcbs_unset(RPCBVERS_2_STAT, ans);
+- return (TRUE);
++done:
++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)&reg)) {
++ if (debugging) {
++ (void) xlog(LOG_DEBUG, "unable to free arguments\n");
++ if (doabort) {
++ rpcbind_abort();
++ }
++ }
++ }
++ return (rc);
+ }
+
+ /* ARGSUSED */
+@@ -272,15 +284,18 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
+ #ifdef RPCBIND_DEBUG
+ char *uaddr;
+ #endif
++ int rc = TRUE;
+
+ if (!svc_getargs(xprt, (xdrproc_t) xdr_pmap, (char *)&reg)) {
+ svcerr_decode(xprt);
+- return (FALSE);
++ rc = FALSE;
++ goto done;
+ }
+
+ if (!check_access(xprt, PMAPPROC_GETPORT, reg.pm_prog, PMAPVERS)) {
+ svcerr_weakauth(xprt);
+- return FALSE;
++ rc = FALSE;
++ goto done;
+ }
+
+ #ifdef RPCBIND_DEBUG
+@@ -330,21 +345,34 @@ pmapproc_getport(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
+ pmap_ipprot2netid(reg.pm_prot) ?: "<unknown>",
+ port ? udptrans : "");
+
+- return (TRUE);
++done:
++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)&reg)) {
++ if (debugging) {
++ (void) xlog(LOG_DEBUG, "unable to free arguments\n");
++ if (doabort) {
++ rpcbind_abort();
++ }
++ }
++ }
++ return (rc);
+ }
+
+ /* ARGSUSED */
+ static bool_t
+ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
+ {
++ int rc = TRUE;
++
+ if (!svc_getargs(xprt, (xdrproc_t)xdr_void, NULL)) {
+ svcerr_decode(xprt);
+- return (FALSE);
++ rc = FALSE;
++ goto done;
+ }
+
+ if (!check_access(xprt, PMAPPROC_DUMP, 0, PMAPVERS)) {
+ svcerr_weakauth(xprt);
+- return FALSE;
++ rc = FALSE;
++ goto done;
+ }
+
+ if ((!svc_sendreply(xprt, (xdrproc_t) xdr_pmaplist_ptr,
+@@ -354,7 +382,17 @@ pmapproc_dump(struct svc_req *rqstp /*__unused*/, SVCXPRT *xprt)
+ rpcbind_abort();
+ }
+ }
+- return (TRUE);
++
++done:
++ if (!svc_freeargs(xprt, (xdrproc_t) xdr_pmap, (char *)NULL)) {
++ if (debugging) {
++ (void) xlog(LOG_DEBUG, "unable to free arguments\n");
++ if (doabort) {
++ rpcbind_abort();
++ }
++ }
++ }
++ return (rc);
+ }
+
+ int pmap_netid2ipprot(const char *netid)
+diff --git a/src/rpcb_svc.c b/src/rpcb_svc.c
+index bd92201..0c22a9d 100644
+--- a/src/rpcb_svc.c
++++ b/src/rpcb_svc.c
+@@ -166,7 +166,7 @@ rpcb_service_3(struct svc_req *rqstp, SVCXPRT *transp)
+ svcerr_decode(transp);
+ if (debugging)
+ (void) xlog(LOG_DEBUG, "rpcbind: could not decode");
+- return;
++ goto done;
+ }
+
+ if (rqstp->rq_proc == RPCBPROC_SET
+diff --git a/src/rpcb_svc_4.c b/src/rpcb_svc_4.c
+index b673452..3e37b54 100644
+--- a/src/rpcb_svc_4.c
++++ b/src/rpcb_svc_4.c
+@@ -220,7 +220,7 @@ rpcb_service_4(struct svc_req *rqstp, SVCXPRT *transp)
+ svcerr_decode(transp);
+ if (debugging)
+ (void) xlog(LOG_DEBUG, "rpcbind: could not decode\n");
+- return;
++ goto done;
+ }
+
+ if (rqstp->rq_proc == RPCBPROC_SET
+diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
+index ff9ce6b..98ede61 100644
+--- a/src/rpcb_svc_com.c
++++ b/src/rpcb_svc_com.c
+@@ -931,6 +931,14 @@ error:
+ if (call_msg.rm_xid != 0)
+ (void) free_slot_by_xid(call_msg.rm_xid);
+ out:
++ if (!svc_freeargs(transp, (xdrproc_t) xdr_rmtcall_args, (char *) &a)) {
++ if (debugging) {
++ (void) xlog(LOG_DEBUG, "unable to free arguments\n");
++ if (doabort) {
++ rpcbind_abort();
++ }
++ }
++ }
+ if (local_uaddr)
+ free(local_uaddr);
+ if (buf_alloc)
+--
+2.11.0
+
diff --git a/package/rtl8188eu/Config.in b/package/rtl8188eu/Config.in
index 09cde24a0f..9263802e09 100644
--- a/package/rtl8188eu/Config.in
+++ b/package/rtl8188eu/Config.in
@@ -4,14 +4,14 @@ config BR2_PACKAGE_RTL8188EU
help
A standalone driver for the RTL8188EU USB Wi-Fi adapter.
This is needed only for Linux kernels before 3.12.
- Since 3.12, there is a (staging) driver in mainline, with a similar
- codebase.
+ Since 3.12, there is a (staging) driver in mainline, with a
+ similar codebase.
- Make sure your target kernel has the CONFIG_WIRELESS_EXT config
- option enabled.
+ Make sure your target kernel has the CONFIG_WIRELESS_EXT
+ config option enabled.
- Note: this package needs a firmware loading mechanism to load the
- binary blob for the chip to work.
+ Note: this package needs a firmware loading mechanism to load
+ the binary blob for the chip to work.
https://github.com/lwfinger/rtl8188eu
diff --git a/package/rtmpdump/rtmpdump.mk b/package/rtmpdump/rtmpdump.mk
index 19d9b04a2e..f5d430ce36 100644
--- a/package/rtmpdump/rtmpdump.mk
+++ b/package/rtmpdump/rtmpdump.mk
@@ -4,7 +4,7 @@
#
################################################################################
-RTMPDUMP_VERSION = a107cef9b392616dff54fabfd37f985ee2190a6f
+RTMPDUMP_VERSION = fa8646daeb19dfd12c181f7d19de708d623704c0
RTMPDUMP_SITE = git://git.ffmpeg.org/rtmpdump
RTMPDUMP_INSTALL_STAGING = YES
# Note that rtmpdump is GPL-2.0 but librtmp has its own license and since we only
diff --git a/package/samba4/Config.in b/package/samba4/Config.in
index 447418568d..ba48b8ab37 100644
--- a/package/samba4/Config.in
+++ b/package/samba4/Config.in
@@ -10,7 +10,7 @@ config BR2_PACKAGE_SAMBA4
depends on BR2_USE_WCHAR # python
depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # python -> libffi
- depends on !BR2_STATIC_LIBS # python
+ depends on !BR2_STATIC_LIBS # python, gnutls
depends on !BR2_nios2 # binary too large, relocations don't fit
depends on BR2_TOOLCHAIN_HAS_SYNC_4
select BR2_PACKAGE_E2FSPROGS
diff --git a/package/samba4/samba4.hash b/package/samba4/samba4.hash
index c0ac04a611..a16d834700 100644
--- a/package/samba4/samba4.hash
+++ b/package/samba4/samba4.hash
@@ -1,2 +1,2 @@
# Locally calculated
-sha256 e7b04b5d7ce10ed1205cc552200958e3c487ecf9647ea4c7b8c5f049f97c6be4 samba-4.5.9.tar.gz
+sha256 7cb753f5f6d5527ef40d4c1f47dacafb7c876cb304b4906ccb390c6a18477714 samba-4.5.10.tar.gz
diff --git a/package/samba4/samba4.mk b/package/samba4/samba4.mk
index 209d8ef728..93c45daa58 100644
--- a/package/samba4/samba4.mk
+++ b/package/samba4/samba4.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SAMBA4_VERSION = 4.5.9
+SAMBA4_VERSION = 4.5.10
SAMBA4_SITE = https://download.samba.org/pub/samba/stable
SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz
SAMBA4_INSTALL_STAGING = YES
diff --git a/package/snmppp/Config.in b/package/snmppp/Config.in
index 9e800fd57e..8d284673bc 100644
--- a/package/snmppp/Config.in
+++ b/package/snmppp/Config.in
@@ -14,8 +14,9 @@ config BR2_PACKAGE_SNMPPP_LOGGING
bool "enable logging"
help
Enable logging output for SNMP++.
- According to the SNMP++ documentation, disabling logging "increases
- performance drastically and minimizes memory consumption".
+ According to the SNMP++ documentation, disabling logging
+ "increases performance drastically and minimizes memory
+ consumption".
config BR2_PACKAGE_SNMPPP_SNMPV3
bool "enable SNMPv3"
diff --git a/package/stella/Config.in b/package/stella/Config.in
index dd8e32a651..4c10983a3e 100644
--- a/package/stella/Config.in
+++ b/package/stella/Config.in
@@ -9,7 +9,7 @@ config BR2_PACKAGE_STELLA
help
Stella is a multi-platform Atari 2600 VCS emulator.
- http://stella.sourceforge.net/
+ https://stella-emu.github.io/
comment "stella needs a toolchain w/ dynamic library, C++, gcc >= 4.8"
depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || \
diff --git a/package/stella/stella.mk b/package/stella/stella.mk
index 220abb275b..fbf7809a17 100644
--- a/package/stella/stella.mk
+++ b/package/stella/stella.mk
@@ -6,7 +6,7 @@
STELLA_VERSION = 4.7.2
STELLA_SOURCE = stella-$(STELLA_VERSION)-src.tar.xz
-STELLA_SITE = http://downloads.sourceforge.net/stella
+STELLA_SITE = https://github.com/stella-emu/stella/releases/download/release-$(STELLA_VERSION)
STELLA_LICENSE = GPL-2.0+
STELLA_LICENSE_FILES = Copyright.txt License.txt
diff --git a/package/stm32flash/Config.in b/package/stm32flash/Config.in
index cb6f4805ed..87afe3b8ff 100644
--- a/package/stm32flash/Config.in
+++ b/package/stm32flash/Config.in
@@ -2,7 +2,7 @@ config BR2_PACKAGE_STM32FLASH
bool "stm32flash"
help
Open source cross platform flash program for the STM32 ARM
- microcontrollers using the built-in ST serial bootloader over UART
- or I2C.
+ microcontrollers using the built-in ST serial bootloader
+ over UART or I2C.
http://sourceforge.net/projects/stm32flash/
diff --git a/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch b/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch
new file mode 100644
index 0000000000..442e53eb9e
--- /dev/null
+++ b/package/strongswan/0001-af_alg-fix-crypt-definition-conflict.patch
@@ -0,0 +1,55 @@
+From 0b906cb025a506be1b73e5b485179585d1a90be2 Mon Sep 17 00:00:00 2001
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Thu, 11 May 2017 14:04:47 +0300
+Subject: [PATCH] af_alg: fix crypt() definition conflict
+
+Rename the crypt() method to avoid conflict with POSIX crypt(). Fixes the
+following build failure with musl libc:
+
+In file included from ../../../../src/libstrongswan/utils/utils.h:53:0,
+ from ../../../../src/libstrongswan/library.h:101,
+ from af_alg_ops.h:24,
+ from af_alg_ops.c:16:
+af_alg_ops.c:110:22: error: conflicting types for 'crypt'
+ METHOD(af_alg_ops_t, crypt, bool,
+ ^
+../../../../src/libstrongswan/utils/utils/object.h:99:13: note: in definition of macro 'METHOD'
+ static ret name(union {iface *_public; this;} \
+ ^
+In file included from af_alg_ops.c:18:0:
+.../host/usr/x86_64-buildroot-linux-musl/sysroot/usr/include/unistd.h:144:7: note: previous declaration of 'crypt' was here
+ char *crypt(const char *, const char *);
+ ^
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+Upstream status: https://github.com/strongswan/strongswan/pull/72
+
+ src/libstrongswan/plugins/af_alg/af_alg_ops.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libstrongswan/plugins/af_alg/af_alg_ops.c b/src/libstrongswan/plugins/af_alg/af_alg_ops.c
+index 331d1e8010aa..452cd1ac30c9 100644
+--- a/src/libstrongswan/plugins/af_alg/af_alg_ops.c
++++ b/src/libstrongswan/plugins/af_alg/af_alg_ops.c
+@@ -107,7 +107,7 @@ METHOD(af_alg_ops_t, hash, bool,
+ return TRUE;
+ }
+
+-METHOD(af_alg_ops_t, crypt, bool,
++METHOD(af_alg_ops_t, crypt_, bool,
+ private_af_alg_ops_t *this, u_int32_t type, chunk_t iv, chunk_t data,
+ char *out)
+ {
+@@ -224,7 +224,7 @@ af_alg_ops_t *af_alg_ops_create(char *type, char *alg)
+ .public = {
+ .hash = _hash,
+ .reset = _reset,
+- .crypt = _crypt,
++ .crypt = _crypt_,
+ .set_key = _set_key,
+ .destroy = _destroy,
+ },
+--
+2.11.0
+
diff --git a/package/strongswan/strongswan.hash b/package/strongswan/strongswan.hash
index 97fb1998e4..cbc4e3857a 100644
--- a/package/strongswan/strongswan.hash
+++ b/package/strongswan/strongswan.hash
@@ -2,3 +2,6 @@
md5 9d7c77b0da9b69f859624897e5e9ebbf strongswan-5.4.0.tar.bz2
# Calculated based on the hash above
sha256 f8288faaea6a9cd8a7d413c0b76b7922be5da3dfcd01fd05cb30d2c55d3bbe89 strongswan-5.4.0.tar.bz2
+# Locally calculated
+sha256 f5ba7f46cf7ae81dd81bc86f9e4cfa0c5c7c6987149b3bc9c0b8bf08598a1063 strongswan-4.4.0-5.5.2_gmp_mpz_powm_sec.patch
+sha256 03db8c7a4133e877e8992e155c046dd27ec4810d50f239abf55595f0280caf31 strongswan-5.0.0-5.5.2_asn1_choice.patch
diff --git a/package/strongswan/strongswan.mk b/package/strongswan/strongswan.mk
index 2a852f22d0..1070eeaf8b 100644
--- a/package/strongswan/strongswan.mk
+++ b/package/strongswan/strongswan.mk
@@ -7,6 +7,9 @@
STRONGSWAN_VERSION = 5.4.0
STRONGSWAN_SOURCE = strongswan-$(STRONGSWAN_VERSION).tar.bz2
STRONGSWAN_SITE = http://download.strongswan.org
+STRONGSWAN_PATCH = \
+ $(STRONGSWAN_SITE)/patches/21_gmp_mpz_powm_sec_patch/strongswan-4.4.0-5.5.2_gmp_mpz_powm_sec.patch \
+ $(STRONGSWAN_SITE)/patches/22_asn1_choice_patch/strongswan-5.0.0-5.5.2_asn1_choice.patch
STRONGSWAN_LICENSE = GPL-2.0+
STRONGSWAN_LICENSE_FILES = COPYING LICENSE
STRONGSWAN_DEPENDENCIES = host-pkgconf
diff --git a/package/sudo/0001-fix-CVE-2017-1000367.patch b/package/sudo/0001-fix-CVE-2017-1000367.patch
new file mode 100644
index 0000000000..6e44399c05
--- /dev/null
+++ b/package/sudo/0001-fix-CVE-2017-1000367.patch
@@ -0,0 +1,264 @@
+Downloaded from upstream: https://www.sudo.ws/repos/sudo/raw-rev/b5460cbbb11b
+
+# HG changeset patch
+# User Todd C. Miller <Todd.Miller@courtesan.com>
+# Date 1496089973 21600
+# Node ID b5460cbbb11bbf9d92ffcc6798a686cf4125efd3
+# Parent c303e6eecc7841e2f891d70613e80fcf27fa6e86
+Fix for CVE-2017-1000367, parsing of /proc/pid/stat on Linux when
+the process name contains spaces. Since the user has control over
+the command name this could be used by a user with sudo access to
+overwrite an arbitrary file.
+Thanks to Qualys for investigating and reporting this bug.
+
+Also stop performing a breadth-first traversal of /dev when looking
+for the device. Only the directories specified in search_devs[]
+are checked.
+
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+diff -r c303e6eecc78 -r b5460cbbb11b src/ttyname.c
+--- a/src/ttyname.c Tue May 23 13:26:54 2017 -0600
++++ b/src/ttyname.c Mon May 29 14:32:53 2017 -0600
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2012-2016 Todd C. Miller <Todd.Miller@courtesan.com>
++ * Copyright (c) 2012-2017 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+@@ -145,20 +145,22 @@
+ }
+ #elif defined(HAVE_STRUCT_PSINFO_PR_TTYDEV) || defined(HAVE_PSTAT_GETPROC) || defined(__linux__)
+ /*
+- * Devices to search before doing a breadth-first scan.
++ * Device nodes and directories to search before searching all of /dev
+ */
+ static char *search_devs[] = {
+ "/dev/console",
+- "/dev/wscons",
+- "/dev/pts/",
+- "/dev/vt/",
+- "/dev/term/",
+- "/dev/zcons/",
++ "/dev/pts/", /* POSIX pty */
++ "/dev/vt/", /* Solaris virtual console */
++ "/dev/term/", /* Solaris serial ports */
++ "/dev/zcons/", /* Solaris zone console */
++ "/dev/pty/", /* HP-UX old-style pty */
+ NULL
+ };
+
++/*
++ * Device nodes to ignore when searching all of /dev
++ */
+ static char *ignore_devs[] = {
+- "/dev/fd/",
+ "/dev/stdin",
+ "/dev/stdout",
+ "/dev/stderr",
+@@ -166,16 +168,18 @@
+ };
+
+ /*
+- * Do a breadth-first scan of dir looking for the specified device.
++ * Do a scan of a directory looking for the specified device.
++ * Does not descend into subdirectories.
+ * Returns name on success and NULL on failure, setting errno.
+ */
+ static char *
+-sudo_ttyname_scan(const char *dir, dev_t rdev, bool builtin, char *name, size_t namelen)
++sudo_ttyname_scan(const char *dir, dev_t rdev, char *name, size_t namelen)
+ {
+- size_t sdlen, num_subdirs = 0, max_subdirs = 0;
+- char pathbuf[PATH_MAX], **subdirs = NULL;
++ size_t sdlen;
++ char pathbuf[PATH_MAX];
+ char *ret = NULL;
+ struct dirent *dp;
++ struct stat sb;
+ unsigned int i;
+ DIR *d = NULL;
+ debug_decl(sudo_ttyname_scan, SUDO_DEBUG_UTIL)
+@@ -187,6 +191,18 @@
+ if ((d = opendir(dir)) == NULL)
+ goto done;
+
++ if (fstat(dirfd(d), &sb) == -1) {
++ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
++ "unable to fstat %s", dir);
++ goto done;
++ }
++ if ((sb.st_mode & S_IWOTH) != 0) {
++ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
++ "ignoring world-writable directory %s", dir);
++ errno = ENOENT;
++ goto done;
++ }
++
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "scanning for dev %u in %s", (unsigned int)rdev, dir);
+
+@@ -224,18 +240,6 @@
+ }
+ if (ignore_devs[i] != NULL)
+ continue;
+- if (!builtin) {
+- /* Skip entries in search_devs; we already checked them. */
+- for (i = 0; search_devs[i] != NULL; i++) {
+- len = strlen(search_devs[i]);
+- if (search_devs[i][len - 1] == '/')
+- len--;
+- if (d_len == len && strncmp(pathbuf, search_devs[i], len) == 0)
+- break;
+- }
+- if (search_devs[i] != NULL)
+- continue;
+- }
+ # if defined(HAVE_STRUCT_DIRENT_D_TYPE) && defined(DTTOIF)
+ /*
+ * Avoid excessive stat() calls by checking dp->d_type.
+@@ -248,39 +252,14 @@
+ if (stat(pathbuf, &sb) == -1)
+ continue;
+ break;
+- case DT_DIR:
+- /* Directory, no need to stat() it. */
+- sb.st_mode = DTTOIF(dp->d_type);
+- sb.st_rdev = 0; /* quiet ccc-analyzer false positive */
+- break;
+ default:
+- /* Not a character device, link or directory, skip it. */
++ /* Not a character device or link, skip it. */
+ continue;
+ }
+ # else
+ if (stat(pathbuf, &sb) == -1)
+ continue;
+ # endif
+- if (S_ISDIR(sb.st_mode)) {
+- if (!builtin) {
+- /* Add to list of subdirs to search. */
+- if (num_subdirs + 1 > max_subdirs) {
+- char **new_subdirs;
+-
+- new_subdirs = reallocarray(subdirs, max_subdirs + 64,
+- sizeof(char *));
+- if (new_subdirs == NULL)
+- goto done;
+- subdirs = new_subdirs;
+- max_subdirs += 64;
+- }
+- subdirs[num_subdirs] = strdup(pathbuf);
+- if (subdirs[num_subdirs] == NULL)
+- goto done;
+- num_subdirs++;
+- }
+- continue;
+- }
+ if (S_ISCHR(sb.st_mode) && sb.st_rdev == rdev) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "resolved dev %u as %s", (unsigned int)rdev, pathbuf);
+@@ -296,16 +275,9 @@
+ }
+ }
+
+- /* Search subdirs if we didn't find it in the root level. */
+- for (i = 0; ret == NULL && i < num_subdirs; i++)
+- ret = sudo_ttyname_scan(subdirs[i], rdev, false, name, namelen);
+-
+ done:
+ if (d != NULL)
+ closedir(d);
+- for (i = 0; i < num_subdirs; i++)
+- free(subdirs[i]);
+- free(subdirs);
+ debug_return_str(ret);
+ }
+
+@@ -324,7 +296,7 @@
+ debug_decl(sudo_ttyname_dev, SUDO_DEBUG_UTIL)
+
+ /*
+- * First check search_devs for common tty devices.
++ * First check search_devs[] for common tty devices.
+ */
+ for (sd = search_devs; (devname = *sd) != NULL; sd++) {
+ len = strlen(devname);
+@@ -349,7 +321,7 @@
+ "comparing dev %u to %s: no", (unsigned int)rdev, buf);
+ } else {
+ /* Traverse directory */
+- ret = sudo_ttyname_scan(devname, rdev, true, name, namelen);
++ ret = sudo_ttyname_scan(devname, rdev, name, namelen);
+ if (ret != NULL || errno == ENOMEM)
+ goto done;
+ }
+@@ -367,9 +339,9 @@
+ }
+
+ /*
+- * Not found? Do a breadth-first traversal of /dev/.
++ * Not found? Check all device nodes in /dev.
+ */
+- ret = sudo_ttyname_scan(_PATH_DEV, rdev, false, name, namelen);
++ ret = sudo_ttyname_scan(_PATH_DEV, rdev, name, namelen);
+
+ done:
+ debug_return_str(ret);
+@@ -493,28 +465,35 @@
+ len = getline(&line, &linesize, fp);
+ fclose(fp);
+ if (len != -1) {
+- /* Field 7 is the tty dev (0 if no tty) */
+- char *cp = line;
+- char *ep = line;
+- const char *errstr;
+- int field = 0;
+- while (*++ep != '\0') {
+- if (*ep == ' ') {
+- *ep = '\0';
+- if (++field == 7) {
+- dev_t tdev = strtonum(cp, INT_MIN, INT_MAX, &errstr);
+- if (errstr) {
+- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+- "%s: tty device %s: %s", path, cp, errstr);
++ /*
++ * Field 7 is the tty dev (0 if no tty).
++ * Since the process name at field 2 "(comm)" may include spaces,
++ * start at the last ')' found.
++ */
++ char *cp = strrchr(line, ')');
++ if (cp != NULL) {
++ char *ep = cp;
++ const char *errstr;
++ int field = 1;
++
++ while (*++ep != '\0') {
++ if (*ep == ' ') {
++ *ep = '\0';
++ if (++field == 7) {
++ dev_t tdev = strtonum(cp, INT_MIN, INT_MAX, &errstr);
++ if (errstr) {
++ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
++ "%s: tty device %s: %s", path, cp, errstr);
++ }
++ if (tdev > 0) {
++ errno = serrno;
++ ret = sudo_ttyname_dev(tdev, name, namelen);
++ goto done;
++ }
++ break;
+ }
+- if (tdev > 0) {
+- errno = serrno;
+- ret = sudo_ttyname_dev(tdev, name, namelen);
+- goto done;
+- }
+- break;
++ cp = ep + 1;
+ }
+- cp = ep + 1;
+ }
+ }
+ }
+
diff --git a/package/sudo/sudo.mk b/package/sudo/sudo.mk
index 60767a369b..a6ea9acdb1 100644
--- a/package/sudo/sudo.mk
+++ b/package/sudo/sudo.mk
@@ -40,6 +40,13 @@ endif
ifeq ($(BR2_PACKAGE_OPENLDAP),y)
SUDO_DEPENDENCIES += openldap
SUDO_CONF_OPTS += --with-ldap
+# If we are building sudo statically and openldap was linked with openssl, then
+# when we link sudo with openldap we need to specify the openssl libs, otherwise
+# it will fail with "undefined reference" errors.
+ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_OPENSSL),yy)
+SUDO_DEPENDENCIES += host-pkgconf
+SUDO_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`"
+endif
else
SUDO_CONF_OPTS += --without-ldap
endif
diff --git a/package/taskd/Config.in b/package/taskd/Config.in
index 7d26abaae3..19d123fb59 100644
--- a/package/taskd/Config.in
+++ b/package/taskd/Config.in
@@ -1,5 +1,6 @@
config BR2_PACKAGE_TASKD
bool "taskd"
+ depends on !BR2_STATIC_LIBS # gnutls
depends on BR2_USE_WCHAR # gnutls
depends on BR2_USE_MMU # fork()
depends on BR2_INSTALL_LIBSTDCPP
@@ -11,6 +12,7 @@ config BR2_PACKAGE_TASKD
http://taskwarrior.org/
-comment "taskd needs a toolchain w/ C++, wchar"
+comment "taskd needs a toolchain w/ C++, wchar, dynamic library"
depends on BR2_USE_MMU
- depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP
+ depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \
+ BR2_STATIC_LIBS
diff --git a/package/uclibc-ng-test/0001-disable-for-glibc.patch b/package/uclibc-ng-test/0001-disable-for-glibc.patch
new file mode 100644
index 0000000000..13786c926f
--- /dev/null
+++ b/package/uclibc-ng-test/0001-disable-for-glibc.patch
@@ -0,0 +1,40 @@
+From 787e584f18afc967d91cfe1a8443df2657579ecb Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Fri, 12 May 2017 00:44:01 +0200
+Subject: [PATCH] disable for glibc
+
+uclibc-ng-test is broken with glibc 2.25 due to pthread_cond_t changes introduced by [1].
+Disable test-cond22 for glibc based toolchain.
+
+[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=ed19993b5b0d05d62cc883571519a67dae481a14
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ test/nptl/tst-cond22.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/nptl/tst-cond22.c b/test/nptl/tst-cond22.c
+index 3255cc0..23697dd 100644
+--- a/test/nptl/tst-cond22.c
++++ b/test/nptl/tst-cond22.c
+@@ -2,7 +2,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+
+-#if defined(__GLIBC__) || defined(__UCLIBC__)
++#if defined(__UCLIBC__)
+ static pthread_barrier_t b;
+ static pthread_cond_t c = PTHREAD_COND_INITIALIZER;
+ static pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
+@@ -54,7 +54,7 @@ tf (void *arg)
+ static int
+ do_test (void)
+ {
+-#if defined(__GLIBC__) || defined(__UCLIBC__)
++#if defined(__UCLIBC__)
+ int status = 0;
+
+ if (pthread_barrier_init (&b, NULL, 2) != 0)
+--
+2.9.3
+
diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in
index 2049c45731..6455b0d87a 100644
--- a/package/vpnc/Config.in
+++ b/package/vpnc/Config.in
@@ -1,6 +1,7 @@
config BR2_PACKAGE_VPNC
bool "vpnc"
depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
+ depends on !BR2_STATIC_LIBS # gnutls
depends on BR2_USE_MMU # fork()
depends on BR2_USE_WCHAR # gnutls
select BR2_PACKAGE_LIBGCRYPT
@@ -15,6 +16,6 @@ config BR2_PACKAGE_VPNC
http://www.unix-ag.uni-kl.de/~massar/vpnc
-comment "vpnc needs a toolchain w/ wchar"
+comment "vpnc needs a toolchain w/ wchar, dynamic library"
depends on BR2_USE_MMU
- depends on !BR2_USE_WCHAR
+ depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
diff --git a/package/webkitgtk/Config.in b/package/webkitgtk/Config.in
index 25f6fad49c..0e53d06379 100644
--- a/package/webkitgtk/Config.in
+++ b/package/webkitgtk/Config.in
@@ -49,11 +49,15 @@ if BR2_PACKAGE_WEBKITGTK
config BR2_PACKAGE_WEBKITGTK_HTTPS
bool "HTTPS support"
+ depends on !BR2_STATIC_LIBS # gnutls -> libsoup
select BR2_PACKAGE_CA_CERTIFICATES # runtime
select BR2_PACKAGE_LIBSOUP_SSL
help
Enable HTTPS protocol support.
+comment "webkitgtk https support needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
+
config BR2_PACKAGE_WEBKITGTK_MULTIMEDIA
bool "multimedia support"
select BR2_PACKAGE_GSTREAMER1
diff --git a/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch b/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch
new file mode 100644
index 0000000000..31b5cfed7d
--- /dev/null
+++ b/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch
@@ -0,0 +1,27 @@
+From d6919c0be7f531b20cbfcb9929d697ac3c132c40 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= <github@kempniu.pl>
+Date: Wed, 12 Oct 2016 15:17:51 +0200
+Subject: [PATCH] Fix compiler detection when using
+ --without-{crypt,crypto,ssl}
+
+(cherry picked from commit d6919c0be7f531b20cbfcb9929d697ac3c132c40)
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/configure.ac b/configure.ac
+index 55724bc..bdfff94 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -5,6 +5,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+ AM_CONFIG_HEADER(config.h)
+ AC_CONFIG_MACRO_DIR([m4])
+
++AC_PROG_CC
+ AC_PROG_SED
+
+ # some OS's need both -lssl and -lcrypto on link line:
+--
+2.9.3
+
diff --git a/package/xen/0007-tools-include-sys-sysmacros.h-on-Linux.patch b/package/xen/0007-tools-include-sys-sysmacros.h-on-Linux.patch
new file mode 100644
index 0000000000..91019cf99b
--- /dev/null
+++ b/package/xen/0007-tools-include-sys-sysmacros.h-on-Linux.patch
@@ -0,0 +1,52 @@
+From 796dea37fb229c34740f98bf80f3263d7a4e3c6d Mon Sep 17 00:00:00 2001
+From: Olaf Hering <olaf@aepfle.de>
+Date: Wed, 15 Mar 2017 07:01:34 +0000
+Subject: [PATCH] tools: include sys/sysmacros.h on Linux
+
+Due to a bug in the glibc headers the macros makedev(), major() and
+minor() where available by including sys/types.h. This bug was
+addressed in glibc-2.25 by introducing a warning when these macros are
+used. Since Xen is build with -Werror this new warning cause a compile
+error.
+
+Use sys/sysmacros.h to define these three macros.
+
+blktap2 is already Linux specific. The kernel header which was used to
+get makedev() does not provided it anymore, and it was wrong to use a
+kernel header anyway.
+
+Signed-off-by: Olaf Hering <olaf@aepfle.de>
+Acked-by: Wei Liu <wei.liu2@citrix.com>
+Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
+---
+ tools/blktap2/control/tap-ctl-allocate.c | 1 +
+ tools/libxl/libxl_osdeps.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/tools/blktap2/control/tap-ctl-allocate.c b/tools/blktap2/control/tap-ctl-allocate.c
+index 8a6471e987..187cadcde7 100644
+--- a/tools/blktap2/control/tap-ctl-allocate.c
++++ b/tools/blktap2/control/tap-ctl-allocate.c
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <getopt.h>
+ #include <libgen.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/ioctl.h>
+diff --git a/tools/libxl/libxl_osdeps.h b/tools/libxl/libxl_osdeps.h
+index a40d62066b..de1d24ecae 100644
+--- a/tools/libxl/libxl_osdeps.h
++++ b/tools/libxl/libxl_osdeps.h
+@@ -39,6 +39,7 @@
+ #define SYSFS_PCI_DEV "/sys/bus/pci/devices"
+ #define SYSFS_PCIBACK_DRIVER "/sys/bus/pci/drivers/pciback"
+ #define NETBACK_NIC_NAME "vif%u.%d"
++#include <sys/sysmacros.h>
+ #include <pty.h>
+ #include <uuid/uuid.h>
+ #elif defined(__sun__)
+--
+2.11.0
+
diff --git a/package/xen/xen.mk b/package/xen/xen.mk
index 89c09f872f..821ab21915 100644
--- a/package/xen/xen.mk
+++ b/package/xen/xen.mk
@@ -8,7 +8,7 @@ XEN_VERSION = 4.8.1
XEN_SITE = http://bits.xensource.com/oss-xen/release/$(XEN_VERSION)
XEN_LICENSE = GPL-2.0
XEN_LICENSE_FILES = COPYING
-XEN_DEPENDENCIES = host-python
+XEN_DEPENDENCIES = host-acpica host-python
# Calculate XEN_ARCH
ifeq ($(ARCH),aarch64)
diff --git a/package/xfsprogs/Config.in b/package/xfsprogs/Config.in
index 9f0d2509c0..fb603ad4b9 100644
--- a/package/xfsprogs/Config.in
+++ b/package/xfsprogs/Config.in
@@ -5,7 +5,7 @@ comment "xfsprogs needs a glibc or uClibc toolchain w/ threads"
config BR2_PACKAGE_XFSPROGS
bool "xfsprogs"
depends on BR2_USE_MMU # fork()
- depends on !BR2_TOOLCHAIN_USES_MUSL
+ depends on !BR2_TOOLCHAIN_USES_MUSL # missing __[u]int*_t
depends on BR2_TOOLCHAIN_HAS_THREADS
select BR2_PACKAGE_UTIL_LINUX
select BR2_PACKAGE_UTIL_LINUX_LIBUUID
diff --git a/support/misc/Vagrantfile b/support/misc/Vagrantfile
index 33ca6b802a..d26f246e03 100644
--- a/support/misc/Vagrantfile
+++ b/support/misc/Vagrantfile
@@ -5,7 +5,7 @@
################################################################################
# Buildroot version to use
-RELEASE='2017.02'
+RELEASE='2017.05'
### Change here for more memory/cores ###
VM_MEMORY=2048
diff --git a/support/testing/infra/__init__.py b/support/testing/infra/__init__.py
index c3f645cf99..a55ad7fdf5 100644
--- a/support/testing/infra/__init__.py
+++ b/support/testing/infra/__init__.py
@@ -8,24 +8,17 @@ from urllib2 import urlopen, HTTPError, URLError
ARTIFACTS_URL = "http://autobuild.buildroot.net/artefacts/"
-@contextlib.contextmanager
-def smart_open(filename=None):
+def open_log_file(builddir, stage, logtofile=True):
"""
- Return a file-like object that can be written to using the 'with'
- keyword, as in the example:
- with infra.smart_open("test.log") as outfile:
- outfile.write("Hello, world!\n")
+ Open a file for logging and return its handler.
+ If logtofile is True, returns sys.stdout. Otherwise opens a file
+ with a suitable name in the build directory.
"""
- if filename and filename != '-':
- fhandle = open(filename, 'a+')
+ if logtofile:
+ fhandle = open("{}-{}.log".format(builddir, stage), 'a+')
else:
fhandle = sys.stdout
-
- try:
- yield fhandle
- finally:
- if fhandle is not sys.stdout:
- fhandle.close()
+ return fhandle
def filepath(relpath):
return os.path.join(os.getcwd(), "support/testing", relpath)
@@ -77,6 +70,16 @@ def get_file_arch(builddir, prefix, fpath):
return get_elf_arch_tag(builddir, prefix, fpath, "Tag_CPU_arch")
def get_elf_prog_interpreter(builddir, prefix, fpath):
+ """
+ Runs the cross readelf on 'fpath' to extract the program interpreter
+ name and returns it.
+ Example:
+ >>> get_elf_prog_interpreter('br-tests/TestExternalToolchainLinaroArm',
+ 'arm-linux-gnueabihf',
+ 'bin/busybox')
+ /lib/ld-linux-armhf.so.3
+ >>>
+ """
cmd = ["host/usr/bin/{}-readelf".format(prefix),
"-l", os.path.join("target", fpath)]
out = subprocess.check_output(cmd, cwd=builddir, env={"LANG": "C"})
diff --git a/support/testing/infra/basetest.py b/support/testing/infra/basetest.py
index eb9da90119..557baa215c 100644
--- a/support/testing/infra/basetest.py
+++ b/support/testing/infra/basetest.py
@@ -36,14 +36,11 @@ class BRTest(unittest.TestCase):
keepbuilds = False
def show_msg(self, msg):
- print "[%s/%s/%s] %s" % (os.path.basename(self.__class__.outputdir),
- self.testname,
- datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
- msg)
+ print "{} {:40s} {}".format(datetime.datetime.now().strftime("%H:%M:%S"),
+ self.testname, msg)
def setUp(self):
self.testname = self.__class__.__name__
self.builddir = os.path.join(self.__class__.outputdir, self.testname)
- self.runlog = self.builddir + "-run.log"
self.emulator = None
self.show_msg("Starting")
self.b = Builder(self.__class__.config, self.builddir, self.logtofile)
diff --git a/support/testing/infra/builder.py b/support/testing/infra/builder.py
index 105da01ca2..a475bb0a30 100644
--- a/support/testing/infra/builder.py
+++ b/support/testing/infra/builder.py
@@ -8,16 +8,12 @@ class Builder(object):
def __init__(self, config, builddir, logtofile):
self.config = config
self.builddir = builddir
- self.logtofile = logtofile
+ self.logfile = infra.open_log_file(builddir, "build", logtofile)
def build(self):
if not os.path.isdir(self.builddir):
os.makedirs(self.builddir)
- log = "{}-build.log".format(self.builddir)
- if not self.logtofile:
- log = None
-
config_file = os.path.join(self.builddir, ".config")
with open(config_file, "w+") as cf:
cf.write(self.config)
@@ -25,14 +21,12 @@ class Builder(object):
cmd = ["make",
"O={}".format(self.builddir),
"olddefconfig"]
- with infra.smart_open(log) as log_fh:
- ret = subprocess.call(cmd, stdout=log_fh, stderr=log_fh)
+ ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile)
if ret != 0:
raise SystemError("Cannot olddefconfig")
cmd = ["make", "-C", self.builddir]
- with infra.smart_open(log) as log_fh:
- ret = subprocess.call(cmd, stdout=log_fh, stderr=log_fh)
+ ret = subprocess.call(cmd, stdout=self.logfile, stderr=self.logfile)
if ret != 0:
raise SystemError("Build failed")
diff --git a/support/testing/infra/emulator.py b/support/testing/infra/emulator.py
index 7c476cb0e4..2480b46540 100644
--- a/support/testing/infra/emulator.py
+++ b/support/testing/infra/emulator.py
@@ -14,9 +14,7 @@ class Emulator(object):
self.__tn = None
self.downloaddir = downloaddir
self.log = ""
- self.log_file = "{}-run.log".format(builddir)
- if logtofile is None:
- self.log_file = None
+ self.logfile = infra.open_log_file(builddir, "run", logtofile)
# Start Qemu to boot the system
#
@@ -72,9 +70,8 @@ class Emulator(object):
if kernel_cmdline:
qemu_cmd += ["-append", " ".join(kernel_cmdline)]
- with infra.smart_open(self.log_file) as lfh:
- lfh.write("> starting qemu with '%s'\n" % " ".join(qemu_cmd))
- self.qemu = subprocess.Popen(qemu_cmd, stdout=lfh, stderr=lfh)
+ self.logfile.write("> starting qemu with '%s'\n" % " ".join(qemu_cmd))
+ self.qemu = subprocess.Popen(qemu_cmd, stdout=self.logfile, stderr=self.logfile)
# Wait for the telnet port to appear and connect to it.
while True:
@@ -88,8 +85,7 @@ class Emulator(object):
def __read_until(self, waitstr, timeout=5):
data = self.__tn.read_until(waitstr, timeout)
self.log += data
- with infra.smart_open(self.log_file) as lfh:
- lfh.write(data)
+ self.logfile.write(data)
return data
def __write(self, wstr):
@@ -100,8 +96,7 @@ class Emulator(object):
def login(self, password=None):
self.__read_until("buildroot login:", 10)
if "buildroot login:" not in self.log:
- with infra.smart_open(self.log_file) as lfh:
- lfh.write("==> System does not boot")
+ self.logfile.write("==> System does not boot")
raise SystemError("System does not boot")
self.__write("root\n")
diff --git a/support/testing/run-tests b/support/testing/run-tests
index 339bb66efa..07dad0d8b9 100755
--- a/support/testing/run-tests
+++ b/support/testing/run-tests
@@ -10,17 +10,17 @@ def main():
parser = argparse.ArgumentParser(description='Run Buildroot tests')
parser.add_argument('testname', nargs='*',
help='list of test cases to execute')
- parser.add_argument('--list', '-l', action='store_true',
+ parser.add_argument('-l', '--list', action='store_true',
help='list of available test cases')
- parser.add_argument('--all', '-a', action='store_true',
+ parser.add_argument('-a', '--all', action='store_true',
help='execute all test cases')
- parser.add_argument('--stdout', '-s', action='store_true',
+ parser.add_argument('-s', '--stdout', action='store_true',
help='log everything to stdout')
- parser.add_argument('--output', '-o',
+ parser.add_argument('-o', '--output',
help='output directory')
- parser.add_argument('--download', '-d',
+ parser.add_argument('-d', '--download',
help='download directory')
- parser.add_argument('--keep', '-k',
+ parser.add_argument('-k', '--keep',
help='keep build directories',
action='store_true')
diff --git a/support/testing/tests/fs/test_ext.py b/support/testing/tests/fs/test_ext.py
index f7e2e85055..ea3d3f11d7 100644
--- a/support/testing/tests/fs/test_ext.py
+++ b/support/testing/tests/fs/test_ext.py
@@ -21,10 +21,10 @@ def dumpe2fs_run(builddir, image):
return ret.strip().splitlines()
def dumpe2fs_getprop(out, prop):
- for lines in out:
- lines = lines.split(": ")
- if lines[0] == prop:
- return lines[1].strip()
+ for line in out:
+ fields = line.split(": ")
+ if fields[0] == prop:
+ return fields[1].strip()
def boot_img_and_check_fs_type(emulator, builddir, fs_type):
img = os.path.join(builddir, "images", "rootfs.{}".format(fs_type))
@@ -86,6 +86,7 @@ BR2_TARGET_ROOTFS_EXT2_3=y
out = dumpe2fs_run(self.builddir, "rootfs.ext3")
self.assertEqual(dumpe2fs_getprop(out, REVISION_PROP), "1 (dynamic)")
self.assertIn("has_journal", dumpe2fs_getprop(out, FEATURES_PROP))
+ self.assertNotIn("extent", dumpe2fs_getprop(out, FEATURES_PROP))
exit_code = boot_img_and_check_fs_type(self.emulator,
self.builddir, "ext3")
diff --git a/support/testing/tests/toolchain/test_external.py b/support/testing/tests/toolchain/test_external.py
index 1fbf81f8d3..0b15d489db 100644
--- a/support/testing/tests/toolchain/test_external.py
+++ b/support/testing/tests/toolchain/test_external.py
@@ -7,7 +7,7 @@ BR2_TARGET_ROOTFS_CPIO=y
# BR2_TARGET_ROOTFS_TAR is not set
"""
-def check_broken_links(path):
+def has_broken_links(path):
for root, dirs, files in os.walk(path):
for f in files:
fpath = os.path.join(root, f)
@@ -20,9 +20,9 @@ class TestExternalToolchain(infra.basetest.BRTest):
# Check for broken symlinks
for d in ["lib", "usr/lib"]:
path = os.path.join(self.builddir, "staging", d)
- self.assertFalse(check_broken_links(path))
+ self.assertFalse(has_broken_links(path))
path = os.path.join(self.builddir, "target", d)
- self.assertFalse(check_broken_links(path))
+ self.assertFalse(has_broken_links(path))
interp = infra.get_elf_prog_interpreter(self.builddir,
self.toolchain_prefix,
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 652c9d8c1d..6aaf68bf65 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -28,7 +28,7 @@ config BR2_TOOLCHAIN_USES_MUSL
select BR2_TOOLCHAIN_HAS_THREADS
select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
select BR2_TOOLCHAIN_HAS_THREADS_NPTL
- select BR2_TOOLCHAIN_SUPPORTS_PIE
+ select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
choice
prompt "Toolchain type"
diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
index 9670350dc0..856be65669 100644
--- a/toolchain/toolchain-external/pkg-toolchain-external.mk
+++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
@@ -481,6 +481,8 @@ ifeq ($(BR2_i386),y)
MUSL_ARCH = i386
else ifeq ($(BR2_ARM_EABIHF),y)
MUSL_ARCH = armhf
+else ifeq ($(BR2_mips):$(BR2_SOFT_FLOAT),y:y)
+MUSL_ARCH = mips-sf
else ifeq ($(BR2_mipsel):$(BR2_SOFT_FLOAT),y:y)
MUSL_ARCH = mipsel-sf
else ifeq ($(BR2_sh),y)
diff --git a/toolchain/toolchain/toolchain.mk b/toolchain/toolchain/toolchain.mk
index e29837357a..e15ceeb426 100644
--- a/toolchain/toolchain/toolchain.mk
+++ b/toolchain/toolchain/toolchain.mk
@@ -21,8 +21,10 @@ TOOLCHAIN_ADD_TOOLCHAIN_DEPENDENCY = NO
# IFF_DORMANT and IFF_ECHO, add another macro to suppress them in the
# kernel header, and avoid macro/enum conflict.
#
+# Kernel version 3.12 introduced the libc-compat.h header.
+#
# [1] http://www.openwall.com/lists/musl/2015/10/08/2
-ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL)$(BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12),yy)
define TOOLCHAIN_MUSL_KERNEL_HEADERS_COMPATIBILITY_HACK
$(SED) 's/^#if defined(__GLIBC__)$$/#if 1/' \
$(STAGING_DIR)/usr/include/linux/libc-compat.h
OpenPOWER on IntegriCloud