diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec index 08f7bca..cf3d6e8 100644 --- a/qt5-qtdeclarative.spec +++ b/qt5-qtdeclarative.spec @@ -13,7 +13,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} Version: 5.4.1 -Release: 2%{?dist} +Release: 3%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details License: LGPLv2 with exceptions or GPLv3 with exceptions @@ -24,10 +24,9 @@ Source0: http://download.qt-project.org/development_releases/qt/5.4/%{version}-% Source0: http://download.qt-project.org/official_releases/qt/5.4/%{version}/submodules/%{qt_module}-opensource-src-%{version}.tar.xz %endif -# FIXME? now bases on whether qtbase supports sse2 (or not) # support no_sse2 CONFIG (fedora i686 builds cannot assume -march=pentium4 -msse2 -mfpmath=sse flags, or the JIT that needs them) # https://codereview.qt-project.org/#change,73710 -Patch1: qtdeclarative-opensource-src-5.2.0-no_sse2.patch +Patch1: qtdeclarative-opensource-src-5.4.1-no_sse2.patch Obsoletes: qt5-qtjsbackend < 5.2.0 @@ -78,7 +77,7 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %prep %setup -q -n %{qt_module}-opensource-src-%{version}%{?pre:-%{pre}} -#patch1 -p1 -b .no_sse2 +%patch1 -p1 -b .no_sse2 %build @@ -89,8 +88,7 @@ popd make %{?_smp_mflags} -C %{_target_platform} -#ifarch %{ix86} -%if 0 +%ifarch %{ix86} # build libQt5Qml with no_sse2 mkdir -p %{_target_platform}-no_sse2 pushd %{_target_platform}-no_sse2 @@ -108,8 +106,7 @@ make %{?_smp_mflags} docs -C %{_target_platform} %install make install INSTALL_ROOT=%{buildroot} -C %{_target_platform} -#ifarch %{ix86} -%if 0 +%ifarch %{ix86} mkdir -p %{buildroot}%{_qt5_libdir}/sse2 mv %{buildroot}%{_qt5_libdir}/libQt5Qml.so.5* %{buildroot}%{_qt5_libdir}/sse2/ make install INSTALL_ROOT=%{buildroot} -C %{_target_platform}-no_sse2/src/qml @@ -162,8 +159,7 @@ popd %doc LICENSE.GPL* LICENSE.LGPL* LGPL_EXCEPTION.txt %doc dist/changes* %{_qt5_libdir}/libQt5Qml.so.5* -#ifarch %{ix86} -%if 0 +%ifarch %{ix86} %{_qt5_libdir}/sse2/libQt5Qml.so.5* %endif %{_qt5_libdir}/libQt5Quick.so.5* @@ -209,6 +205,9 @@ popd %changelog +* Wed Apr 22 2015 Kevin Kofler - 5.4.1-3 +- fix non-sse2 support (kde#346244) and optimize sse2 binaries + * Fri Feb 27 2015 Rex Dieter - 5.4.1-2 - rebuild (gcc5) diff --git a/qtdeclarative-opensource-src-5.2.0-no_sse2.patch b/qtdeclarative-opensource-src-5.2.0-no_sse2.patch deleted file mode 100644 index 1a5f550..0000000 --- a/qtdeclarative-opensource-src-5.2.0-no_sse2.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/src/qml/jsruntime/jsruntime.pri b/src/qml/jsruntime/jsruntime.pri -index 72010d3..2bd5acb 100644 ---- a/src/qml/jsruntime/jsruntime.pri -+++ b/src/qml/jsruntime/jsruntime.pri -@@ -107,7 +107,7 @@ SOURCES += \ - - # Use SSE2 floating point math on 32 bit instead of the default - # 387 to make test results pass on 32 and on 64 bit builds. --linux-g++*:isEqual(QT_ARCH,i386) { -+linux-g++*:isEqual(QT_ARCH,i386):!no_sse2 { - QMAKE_CFLAGS += -march=pentium4 -msse2 -mfpmath=sse - QMAKE_CXXFLAGS += -march=pentium4 -msse2 -mfpmath=sse - } -diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h -index b5dc674..97e9ae6 100644 ---- a/src/qml/jsruntime/qv4global_p.h -+++ b/src/qml/jsruntime/qv4global_p.h -@@ -75,7 +75,7 @@ inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); } - - // White list architectures - --#if defined(Q_PROCESSOR_X86) -+#if defined(Q_PROCESSOR_X86) && defined(__SSE2__) - #define V4_ENABLE_JIT - #elif defined(Q_PROCESSOR_X86_64) - #define V4_ENABLE_JIT diff --git a/qtdeclarative-opensource-src-5.4.1-no_sse2.patch b/qtdeclarative-opensource-src-5.4.1-no_sse2.patch new file mode 100644 index 0000000..ee792c5 --- /dev/null +++ b/qtdeclarative-opensource-src-5.4.1-no_sse2.patch @@ -0,0 +1,39 @@ +diff -ur qtdeclarative-opensource-src-5.4.1/src/qml/jsruntime/jsruntime.pri qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/jsruntime/jsruntime.pri +--- qtdeclarative-opensource-src-5.4.1/src/qml/jsruntime/jsruntime.pri 2015-02-17 05:57:27.000000000 +0100 ++++ qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/jsruntime/jsruntime.pri 2015-04-22 03:28:32.000000000 +0200 +@@ -105,6 +105,11 @@ + $$PWD/qv4string.cpp \ + $$PWD/qv4value.cpp + ++linux-g++*:isEqual(QT_ARCH,i386):!no_sse2 { ++ QMAKE_CFLAGS += -msse2 -mfpmath=sse ++ QMAKE_CXXFLAGS += -msse2 -mfpmath=sse ++} ++ + valgrind { + DEFINES += V4_USE_VALGRIND + } +diff -ur qtdeclarative-opensource-src-5.4.1/src/qml/jsruntime/qv4global_p.h qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/jsruntime/qv4global_p.h +--- qtdeclarative-opensource-src-5.4.1/src/qml/jsruntime/qv4global_p.h 2015-02-17 05:57:27.000000000 +0100 ++++ qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/jsruntime/qv4global_p.h 2015-04-22 03:24:05.000000000 +0200 +@@ -69,7 +69,7 @@ + // + // NOTE: This should match the logic in qv4targetplatform_p.h! + +-#if defined(Q_PROCESSOR_X86) && (defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD)) ++#if defined(Q_PROCESSOR_X86) && defined(__SSE2__) && (defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_QNX) || defined(Q_OS_FREEBSD)) + #define V4_ENABLE_JIT + #elif defined(Q_PROCESSOR_X86_64) && (defined(Q_OS_WIN) || defined(Q_OS_LINUX) || defined(Q_OS_MAC) || defined(Q_OS_FREEBSD)) + #define V4_ENABLE_JIT +diff -ur qtdeclarative-opensource-src-5.4.1/src/qml/qml/v8/qv8engine.cpp qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/qml/v8/qv8engine.cpp +--- qtdeclarative-opensource-src-5.4.1/src/qml/qml/v8/qv8engine.cpp 2015-02-17 05:57:27.000000000 +0100 ++++ qtdeclarative-opensource-src-5.4.1-no_sse2/src/qml/qml/v8/qv8engine.cpp 2015-04-22 03:11:59.000000000 +0200 +@@ -121,7 +121,7 @@ + , m_xmlHttpRequestData(0) + , m_listModelData(0) + { +-#ifdef Q_PROCESSOR_X86_32 ++#if defined(Q_PROCESSOR_X86_32) && defined(__SSE2__) + if (!qCpuHasFeature(SSE2)) { + qFatal("This program requires an X86 processor that supports SSE2 extension, at least a Pentium 4 or newer"); + }