#950790 libqt5qml5: Do a double build with SSE2 enabled on i386

Package:
libqt5qml5
Source:
qtdeclarative-opensource-src
Description:
Qt 5 QML module
Submitter:
Lisandro Damián Nicanor Pérez Meyer
Date:
2021-04-20 13:57:08 UTC
Severity:
normal
#950790#5
Date:
2020-02-06 14:08:41 UTC
From:
To:
Lars pointed out [1] that QtQml (and so I guess this lib, will need to double
check) would really benefit from a i386 build with SSE2 enabled.

[1]
<https://lists.qt-project.org/pipermail/development/2020-February/038731.html>

#950790#10
Date:
2020-02-06 14:43:53 UTC
From:
To:
Already discussed on IRC, but for the record:

Actually Qt QML has a runtime requirement for SSE2, so I am not sure the
non-SSE2 build makes sense:

https://sources.debian.org/src/qtdeclarative-opensource-src/5.12.5-5/src/qml/qml/v8/qv8engine.cpp/#L143

I think we should just switch the default build to SSE2 by passing
CONFIG+=sse2 to qmake when DEB_HOST_ARCH_CPU = i386.

#950790#15
Date:
2021-04-20 13:54:07 UTC
From:
To:
Hello,

On Thu, 6 Feb 2020 17:43:53 +0300 Dmitry Shachnev wrote:

 > On Thu, Feb 06, 2020 at 11:08:41AM -0300, Lisandro Damián Nicanor
Pérez Meyer wrote:
 > > Lars pointed out [1] that QtQml (and so I guess this lib, will need
to double
 > > check) would really benefit from a i386 build with SSE2 enabled.
 > >
 > > [1]
 >
 > Already discussed on IRC, but for the record:
 >
 > Actually Qt QML has a runtime requirement for SSE2, so I am not sure the
 > non-SSE2 build makes sense:
 >
 >
https://sources.debian.org/src/qtdeclarative-opensource-src/5.12.5-5/src/qml/qml/v8/qv8engine.cpp/#L143
 >
 > I think we should just switch the default build to SSE2 by passing
 > CONFIG+=sse2 to qmake when DEB_HOST_ARCH_CPU = i386.


I doubt it. First, the line you reference (and any other reference to
SSE2) is missing from the current sources, second, it is alleged qml
should work without sse2 just with interpreted bytecode.

However, I tried the dual build and it is actually hard to compile it
with sse2 enabled:

CONFIG+=sse2

QMAKE_CxxxFLAGS+=-msse2

etc. all don't work. Either it does nothing, or it fails to enable the
jit in build. It seems this feature is hard coded in the file

/usr/lib/i386-linux-gnu/qt5/mkspecs/qmodule.pri

By editing that file I found out I needed to change
QT.global_private.enabled_features to make it work. Which is super ugly.

You can see the result here:
https://salsa.debian.org/jpalecek-guest/qtdeclarative

I still need to test the resulting binaries.

Regards

     Jiri Palecek