Note that almost all the patch size increase is from the v8_sse2.gyp
file that is automatically generated from v8.gyp using a small script I
wrote, which is also included in the patch.
In the long run, we may end up doing this manually because we will need
to handle V8 specially in the QMake stuff anyway (install it, ensure we
only link the x87 version and let the SSE2 version magically act as a
drop-in replacement, add an rpath), but try like this for now.
* Mon Jan 18 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.14.beta.nosse2.1
- Build V8 as a shared library on i686 to allow for swappable backends
This is the first prerequisite step towards building both the x87 and
SSE2 backends.
* Revert the change to force the BFD ld, that was not the issue.
* Make some fixes to my blink_sse2 target in blink_platform.gyp:
- add missing dependencies to get the needed feature_defines,
- add missing target defines,
- add -mfpmath=sse in addition to -msse2 because this is
floating-point math and we should definitely not do x87 in
the SSE2-optimized versions of the functions.
I am getting undefined references to symbols that should be defined by
an archive linked with -Wl,--whole-archive from gold, which really
should not happen.
Also the unnecessary hard_dependency in blink_platform.gyp.
That file is not really used in QtWebEngine anyway, but simply
defaulting disable_sse2 to 1 is the right thing. The variable is ignored
on everything other than ia32 (i686) anyway, even on x64 (x86_64). And
setting conditional defaults might not work as expected in gyp.
* Fix src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/
SincResampler.cpp and VectorMath.cpp to not require SSE2 on x86
(including runtime detection).
* Also add runtime detection for DirectConvolver.cpp.
* Remove the -ffloat-store workaround: The media player issue that
caused problems with x87 floating point (and ultimately made upstream
require SSE2) should already be fixed / worked around by:
https://crrev.com/d2c745b13c93ecff5108bed57d8e052126715492
So I will only readd -ffloat-store if people request it, and even
then, only to specific parts of code and not everything.
* Fix src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/
DirectConvolver.cpp to not require SSE2 on x86. (No runtime detection,
sorry.)
* Update the changelog date in the specfile.
See https://bugzilla.redhat.com/show_bug.cgi?id=1244196#c22 for the
history of the patch. Compared to the last revision there (v5):
* I fixed WebGLImageConversion.cpp to not assume SSE2 on x86.
Unfortunately, it would be really hard to make runtime detection work
there, because it uses intrinsics in inline templates, and GCC only
supports intrinsics when building the whole code for the vector
instruction set. So I had to turn off that SSE2 code entirely when
__SSE2__ is not defined at compile time.
* I fixed webrtc to check for SSE2 at runtime (using the runtime
checking code that webrtc already has and uses in several places)
before attempting to use OpenMAX on x86. OpenMAX requires SSE2.
So we just fall back to the Ooura implementation of FFTs when needed.
TODO: build V8 shared and twice (once for x87, once for SSE2)
* Thu Jan 14 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.13.beta
- Drop nss321 backport (and the related nss-headers patch), it did not help
- Do an NSS/BoringSSL "chimera build" as will be the default in Chromium 47
- Update License accordingly (add "OpenSSL")
- Fix the "chimera build" to call EnsureNSSHttpIOInit (backport from Chromium)
* Wed Jan 13 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.12.beta
- Update forked NSS SSL code to 3.21, match system NSS (backport from Chromium)
* Tue Jan 12 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.11.beta
- Add an (optimistic) ExclusiveArch list because of V8 (tracking bug: #1298011)
The clean way to do this would probably be to call pkg-config or
nspr-config to get a -I flag and use just #include <prtime.h>, but this
should work for now.
* Tue Jan 12 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.10.beta
- Unbundle prtime.cc, use the system NSPR instead (which is already required)
- Unbundle icu_utf.cc, use the system ICU instead (which is already required)
* Mon Jan 11 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.8.beta
- Build against the system libvpx also on F23 (1.4.0), worked in Copr
It turns out the 1.5.0 requirement
(https://code.google.com/p/chromium/issues/detail?id=494939) is only for
portions of Chromium that QtWebEngine does not build.
* Mon Jan 11 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.7.beta
- Use the system libvpx on F24+ (1.5.0)
- Fixes to Provides: bundled(*): libwebp if bundled, x86inc only on x86
Let's see if this works.
Also remove an unused #include of a file we do not ship from an ARM
file. (fft_init_arm.c wants synth_filter.h, but does not actually use
anything from it. We ship neither synth_filter.h nor synth_filter.c.)
Mention the change in the qt5-qtwebengine.spec %changelog.
* Sat Jan 09 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.5.beta
- Bump Release for official Rawhide build (to distinguish it from Copr builds)
* Sat Jan 09 2016 Kevin Kofler <Kevin@tigcc.ticalc.org> - 5.6.0-0.4.beta1.1
- Use more specific BuildRequires for docs (thanks to rdieter)
- Fix FTBFS against ICU 54 (F22/F23), thanks to spot for the Chromium fix