diff options
Diffstat (limited to 'dev-qt/qtcore')
-rw-r--r-- | dev-qt/qtcore/Manifest | 1 | ||||
-rw-r--r-- | dev-qt/qtcore/files/qtcore-5.9.3-avx.patch | 69 | ||||
-rw-r--r-- | dev-qt/qtcore/qtcore-5.9.3.ebuild | 68 |
3 files changed, 138 insertions, 0 deletions
diff --git a/dev-qt/qtcore/Manifest b/dev-qt/qtcore/Manifest new file mode 100644 index 00000000..bbdb5796 --- /dev/null +++ b/dev-qt/qtcore/Manifest @@ -0,0 +1 @@ +DIST qtbase-opensource-src-5.9.3.tar.xz 45160080 SHA256 9e7c44005e7691dc7c85165bd4510282c47f0163521f4973eab71dbdb39a9982 SHA512 256ffb8760e94c0f87790ed35e210d0c9613e14314ff442dd763cc93fbd5caa6c11c95f5d44b12a7687fb93c9f857878132cf6d76e5933f647ca7beb54b18c7c WHIRLPOOL 08ee846bcc99fe1af47febc8436c5c6772cb1dbb096fd1cd7126e708efbf53251ddff66f1d6ea2ac9091e75f38ce784d209c3c94130e7c48b9adedd01a59b7ed diff --git a/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch b/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch new file mode 100644 index 00000000..be18433b --- /dev/null +++ b/dev-qt/qtcore/files/qtcore-5.9.3-avx.patch @@ -0,0 +1,69 @@ +From d813c66bfcfac1837814ec4d174d0389172f0d4c Mon Sep 17 00:00:00 2001 +From: Thiago Macieira <thiago.macieira@intel.com> +Date: Tue, 25 Apr 2017 12:02:09 -0300 +Subject: Fix the build when AVX2 is enabled but __F16C__ isn't defined + +If -mavx2 is used, __AVX2__ is defined, which enables the F16C code +after commit 280e321e52fd4e86545f3f0d4bd4e047786a897e, but that was +wrong since we aren't allowed to use the F16C intrinsics with either +Clang or GCC (we can only do that with GCC 4.9 and Clang 4.8, and only +with an __attribute__ decoration). + +With ICC and MSVC, we are allowed to use the intrinsics, but the +#include was missing. + +[ChangeLog][QtCore] Fixed a compilation issue with qfloat16 if AVX2 +support is enabled in the compiler. Since all processors that support +AVX2 also support F16C, for GCC and Clang it is recommended to either +add -mf16c to your build or to use the corresponding -march= switch. + +Task-number: QTBUG-64529 +Change-Id: I84e363d735b443cb9beefffd14b8ac1fd4baa978 +Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> +--- + src/corelib/global/qfloat16.h | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/src/corelib/global/qfloat16.h b/src/corelib/global/qfloat16.h +index 89a62a93db..a0aa9496b4 100644 +--- a/src/corelib/global/qfloat16.h ++++ b/src/corelib/global/qfloat16.h +@@ -44,7 +44,16 @@ + #include <QtCore/qmetatype.h> + #include <string.h> + +-#if defined __F16C__ ++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__) ++// All processors that support AVX2 do support F16C too. That doesn't mean ++// we're allowed to use the intrinsics directly, so we'll do it only for ++// the Intel and Microsoft's compilers. ++# if defined(Q_CC_INTEL) || defined(Q_CC_MSVC) ++# define __F16C__ 1 ++# endif ++#endif ++ ++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) + #include <immintrin.h> + #endif + +@@ -116,7 +125,7 @@ QT_WARNING_DISABLE_CLANG("-Wc99-extensions") + QT_WARNING_DISABLE_GCC("-Wold-style-cast") + inline qfloat16::qfloat16(float f) Q_DECL_NOTHROW + { +-#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__)) ++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) + __m128 packsingle = _mm_set_ss(f); + __m128i packhalf = _mm_cvtps_ph(packsingle, 0); + b16 = _mm_extract_epi16(packhalf, 0); +@@ -134,7 +143,7 @@ QT_WARNING_POP + + inline qfloat16::operator float() const Q_DECL_NOTHROW + { +-#if defined(QT_COMPILER_SUPPORTS_F16C) && (defined(__F16C__) || defined(__AVX2__)) ++#if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__F16C__) + __m128i packhalf = _mm_cvtsi32_si128(b16); + __m128 packsingle = _mm_cvtph_ps(packhalf); + return _mm_cvtss_f32(packsingle); +-- +cgit v1.1-6-g87c4 + diff --git a/dev-qt/qtcore/qtcore-5.9.3.ebuild b/dev-qt/qtcore/qtcore-5.9.3.ebuild new file mode 100644 index 00000000..bca803ff --- /dev/null +++ b/dev-qt/qtcore/qtcore-5.9.3.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +QT5_MODULE="qtbase" +inherit qt5-build + +DESCRIPTION="Cross-platform application development framework" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="amd64" +fi + +IUSE="icu systemd" + +DEPEND=" + dev-libs/double-conversion:= + dev-libs/glib:2 + dev-libs/libpcre2[pcre16,unicode] + sys-libs/zlib + icu? ( dev-libs/icu:= ) + !icu? ( virtual/libiconv ) + systemd? ( sys-apps/systemd:= ) +" +RDEPEND="${DEPEND}" + +PATCHES=( "${FILESDIR}/${P}-avx.patch" ) + +QT5_TARGET_SUBDIRS=( + src/tools/bootstrap + src/tools/moc + src/tools/rcc + src/tools/qfloat16-tables + src/corelib + src/tools/qlalr + doc +) + +src_configure() { + local myconf=( + $(qt_use icu) + $(qt_use !icu iconv) + $(qt_use systemd journald) + ) + qt5-build_src_configure +} + +src_install() { + qt5-build_src_install + + local flags=( + ALSA CUPS DBUS EGL EGLFS EGL_X11 EVDEV FONTCONFIG FREETYPE + HARFBUZZ IMAGEFORMAT_JPEG IMAGEFORMAT_PNG LIBPROXY MITSHM + OPENGL OPENSSL OPENVG PULSEAUDIO SHAPE SSL TSLIB XCURSOR + XFIXES XKB XRANDR XRENDER XSYNC ZLIB + ) + + for flag in ${flags[@]}; do + cat >> "${D%/}"/${QT5_HEADERDIR}/QtCore/qconfig.h <<- _EOF_ || die + + #if defined(QT_NO_${flag}) && defined(QT_${flag}) + # undef QT_NO_${flag} + #elif !defined(QT_NO_${flag}) && !defined(QT_${flag}) + # define QT_NO_${flag} + #endif + _EOF_ + done +} |