diff options
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 @@ -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/ @@ -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 *)®)) { + 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 *)®)) { ++ 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 *)®)) { + 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 *)®)) { ++ 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 |

