summaryrefslogtreecommitdiff
path: root/Tools/qt
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Tools/qt
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
downloadqtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Tools/qt')
-rwxr-xr-xTools/qt/generate-inspector-qrc.pl137
-rwxr-xr-xTools/qt/generate-version-script.pl63
-rwxr-xr-xTools/qt/install-dependencies104
-rw-r--r--Tools/qt/jhbuild-qt-5.4.modules79
-rw-r--r--Tools/qt/jhbuild-qt-5.6.modules85
-rw-r--r--Tools/qt/jhbuild.modules261
-rw-r--r--Tools/qt/jhbuildrc24
-rw-r--r--Tools/qt/manifest.txt132
-rw-r--r--Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch10
-rw-r--r--Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch39
-rw-r--r--Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch133
-rw-r--r--Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch146
-rw-r--r--Tools/qt/patches/icudata-stdlibs.patch15
-rw-r--r--Tools/qt/patches/openwebrtc-no-gtk-doc.patch60
-rw-r--r--Tools/qt/patches/qt-5.4-fontconfig-fix.patch56
-rw-r--r--Tools/qt/patches/qt-fontconfig-fix.patch56
16 files changed, 1400 insertions, 0 deletions
diff --git a/Tools/qt/generate-inspector-qrc.pl b/Tools/qt/generate-inspector-qrc.pl
new file mode 100755
index 000000000..f961757ac
--- /dev/null
+++ b/Tools/qt/generate-inspector-qrc.pl
@@ -0,0 +1,137 @@
+#!/usr/bin/perl
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+use File::Basename;
+use File::Copy;
+use File::Path qw(make_path);
+use File::Spec;
+use Getopt::Long qw(:config pass_through no_auto_abbrev);
+
+use v5.10;
+
+use strict;
+use warnings;
+
+my @sources;
+my @extraSources;
+my @qrcSources;
+my $baseDir;
+my $outDir;
+my $prefix;
+my $rccExecutable;
+my $resourceName;
+
+processArgs();
+copySources();
+addExtraSources();
+writeQrc();
+compileQrc();
+
+sub processArgs {
+ GetOptions (
+ "add=s" => \@extraSources,
+ "baseDir=s" => \$baseDir,
+ "outDir=s" => \$outDir,
+ "prefix=s" => \$prefix,
+ "rccExecutable=s" => \$rccExecutable,
+ "resourceName=s" => \$resourceName
+ );
+ @sources = map { glob } @ARGV;
+ checkDir($baseDir);
+ make_path($outDir);
+ -x $rccExecutable or die "File $rccExecutable is not executable";
+}
+
+sub checkDir {
+ my $dir = shift;
+ -e $dir or die "Directory $dir does not exist";
+ -d $dir or die "$dir is not a directory";
+}
+
+sub copySources {
+ for my $src (@sources) {
+ my $relSrc = getDstFile(File::Spec->abs2rel($src, $baseDir));
+ my $dst = File::Spec->catfile($outDir, $relSrc);
+ doCopy($src, $dst);
+ addToQrc($relSrc);
+ }
+}
+
+sub getDstFile {
+ my $path = shift;
+ my ($volume, $directories, $file) = File::Spec->splitpath($path);
+ my @dirs = File::Spec->splitdir($directories);
+
+ # Images/gtk/Something -> Images/Something
+ @dirs = grep { !/^gtk$/ } @dirs;
+
+ $directories = File::Spec->catdir(@dirs);
+ return File::Spec->catpath($volume, $directories, $file);
+}
+
+sub addExtraSources {
+ for my $src (@extraSources) {
+ addToQrc($src);
+ }
+}
+
+sub doCopy {
+ my ($src, $dst) = @_;
+ say "Copying $src -> $dst";
+ make_path(dirname($dst));
+ copy($src, $dst);
+}
+
+sub addToQrc {
+ my $src = shift;
+ push @qrcSources, $src;
+}
+
+sub writeQrc {
+ my $filename = File::Spec->catfile($outDir, "$resourceName.qrc");
+
+ open my $qrc, ">", $filename or die "Failed to open $filename for writing: $!";
+
+ say $qrc '<!DOCTYPE RCC><RCC version="1.0">';
+ if ($prefix) {
+ say $qrc qq%<qresource prefix="$prefix">%;
+ } else {
+ say $qrc '<qresource>';
+ }
+
+ for my $src (@qrcSources) {
+ say $qrc " <file>$src</file>";
+ }
+ say $qrc '</qresource>';
+ say $qrc '</RCC>';
+
+ close $qrc or die $!;
+}
+
+sub compileQrc {
+ chdir($outDir);
+ my $cmd = "$rccExecutable -name $resourceName -o qrc_$resourceName.cpp $resourceName.qrc";
+ say $cmd;
+ system($cmd) == 0 or die "rcc failed: $!";
+}
diff --git a/Tools/qt/generate-version-script.pl b/Tools/qt/generate-version-script.pl
new file mode 100755
index 000000000..49b1051cc
--- /dev/null
+++ b/Tools/qt/generate-version-script.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+use v5.10;
+
+use strict;
+use warnings;
+
+my $qtVer = shift @ARGV;
+my $qtNamespace = shift @ARGV;
+
+die "Usage: $0 <Qt version> [Qt namespace]\n" unless $qtVer;
+
+$qtVer =~ /^(\d+)\.(\d+)\.\d+$/ or die "$qtVer is not valid Qt version\n";
+my $major = $1;
+my $minor = $2;
+
+# Next code tries to mirror logic of mkspecs/features/qt_module.prf
+
+say
+"Qt_${major}_PRIVATE_API {
+ qt_private_api_tag*;
+};";
+
+
+my $current = "Qt_$major";
+my $previous;
+say "$current { *; };";
+
+my $tag_symbol = "qt_version_tag";
+if ($qtNamespace) {
+ $tag_symbol .= "_$qtNamespace";
+}
+
+for (my $i = 0; $i < $minor; ++$i) {
+ $previous = $current;
+ $current = "Qt_$major.$i";
+ say "$current {} $previous;";
+}
+
+$previous = $current;
+say "Qt_$major.$minor { $tag_symbol; } $previous;";
diff --git a/Tools/qt/install-dependencies b/Tools/qt/install-dependencies
new file mode 100755
index 000000000..a9cfffd8a
--- /dev/null
+++ b/Tools/qt/install-dependencies
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# This script needs to be run with root rights.
+if [ $UID -ne 0 ]; then
+ sudo $0
+ exit 0
+fi
+
+function printNotSupportedMessageAndExit() {
+ echo
+ echo "Currently this script only works for distributions supporting apt-get."
+ echo "Please add support for your distribution."
+ echo
+ exit 1
+}
+
+function checkInstaller {
+ # apt-get - Debian based distributions
+ apt-get --version &> /dev/null
+ if [ $? -eq 0 ]; then
+ installDependenciesWithApt
+ exit 0
+ fi
+
+ printNotSupportedMessageAndExit
+}
+
+function installDependenciesWithApt {
+ # These are dependencies necessary for building Qt and QtWebKit.
+ packages=" \
+ g++ \
+ binutils \
+ libc6-dev \
+ make \
+ cmake \
+ ninja-build \
+ bison \
+ flex \
+ gawk \
+ gperf \
+ perl \
+ python \
+ ruby \
+ libdbus-1-dev \
+ libenchant-dev \
+ libgl1-mesa-dev \
+ libglu1-mesa-dev \
+ libhyphen-dev \
+ libjpeg-dev \
+ libpng12-dev \
+ libsqlite3-dev \
+ libssl-dev \
+ libwebp-dev \
+ libx11-dev \
+ libx11-xcb-dev
+ libxcb-glx0-dev
+ libxcb1-dev \
+ libxcb-keysyms1-dev \
+ libxcb-image0-dev \
+ libxcb-shm0-dev \
+ libxcb-icccm4-dev \
+ libxcb-sync0-dev \
+ libxcb-xfixes0-dev \
+ libxcb-xinerama0-dev \
+ libxcb-shape0-dev \
+ libxcb-randr0-dev \
+ libxcb-render-util0-dev \
+ libxext-dev \
+ libxfixes-dev \
+ libxrender-dev \
+ zlib1g-dev
+ "
+
+ # These are dependencies necessary for running tests.
+ packages="$packages \
+ apache2 \
+ curl \
+ libapache2-mod-php5 \
+ xvfb"
+
+ # These are dependencies necessary for building GLib and GStreamer.
+ packages="$packages \
+ git-core \
+ gettext \
+ libtool-bin \
+ automake \
+ libfaad-dev \
+ libmpg123-dev \
+ libopus-dev \
+ libtheora-dev \
+ libvorbis-dev \
+ "
+
+ # These are dependencies necessary for building GLib and GStreamer.
+ packages="$packages \
+ libjson-glib-dev \
+ libpulse-dev \
+ "
+
+ apt-get install $packages
+}
+
+checkInstaller
+
diff --git a/Tools/qt/jhbuild-qt-5.4.modules b/Tools/qt/jhbuild-qt-5.4.modules
new file mode 100644
index 000000000..3e9c4f57c
--- /dev/null
+++ b/Tools/qt/jhbuild-qt-5.4.modules
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="tarball" name="download.qt.io"
+ href="http://download.qt.io"/>
+
+ <autotools id="qt"
+ makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'"
+ autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib"
+ autogen-sh="configure
+ -opensource
+ -confirm-license
+
+ -icu
+ -openssl
+ -openssl-linked
+
+ -nomake examples
+ -nomake tools
+ -nomake tests
+
+ -skip connectivity
+ -skip enginio
+ -skip graphicaleffects
+ -skip imageformats
+ -skip multimedia
+ -skip quickcontrols
+ -skip script
+ -skip serialport
+ -skip svg
+ -skip translations
+ -skip wayland
+ -skip webengine
+ -skip webkit
+ -skip x11extras
+ -skip xmlpatterns
+
+ -system-harfbuzz
+ -system-freetype
+ -system-libjpeg
+ -system-libpng
+ -system-sqlite
+ -system-zlib
+
+ -no-alsa
+ -no-cups
+ -no-eglfs
+ -no-evdev
+ -no-gtkstyle
+ -no-libudev
+ -no-linuxfb
+ -no-mtdev
+ -no-nis
+ -no-pulseaudio
+ -no-qml-debug
+ -no-tslib
+
+ -no-gif
+
+ -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds
+ -plugin-sql-sqlite
+ ">
+ <branch module="archive/qt/5.4/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.4.0"
+ repo="download.qt.io"
+ hash="sha256:b2d9df47b9fd2fcfa5ebd162e1373b7eddf4759e6ba148c4589f3d8b6628c39c">
+ <patch file="qt-5.4-fontconfig-fix.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="freetype6"/>
+ <dep package="icu"/>
+ <dep package="glib"/>
+ <dep package="harfbuzz"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuild-qt-5.6.modules b/Tools/qt/jhbuild-qt-5.6.modules
new file mode 100644
index 000000000..1ab29d97a
--- /dev/null
+++ b/Tools/qt/jhbuild-qt-5.6.modules
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="tarball" name="download.qt.io"
+ href="http://download.qt.io"/>
+
+ <autotools id="qt"
+ makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'"
+ autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib"
+ autogen-sh="configure
+ -opensource
+ -confirm-license
+
+ -icu
+ -openssl
+ -openssl-linked
+
+ -nomake examples
+ -nomake tools
+ -nomake tests
+
+ -skip 3d
+ -skip connectivity
+ -skip enginio
+ -skip graphicaleffects
+ -skip imageformats
+ -skip multimedia
+ -skip quickcontrols
+ -skip quickcontrols2
+ -skip script
+ -skip serialbus
+ -skip serialport
+ -skip svg
+ -skip translations
+ -skip wayland
+ -skip webengine
+ -skip webview
+ -skip x11extras
+ -skip xmlpatterns
+
+ -system-harfbuzz
+ -system-freetype
+ -system-libjpeg
+ -system-libpng
+ -system-sqlite
+ -system-zlib
+
+ -no-alsa
+ -no-cups
+ -no-eglfs
+ -no-evdev
+ -no-gbm
+ -no-gtkstyle
+ -no-libinput
+ -no-libudev
+ -no-linuxfb
+ -no-mtdev
+ -no-nis
+ -no-pulseaudio
+ -no-qml-debug
+ -no-tslib
+
+ -no-gif
+
+ -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds
+ -plugin-sql-sqlite
+ ">
+ <branch module="archive/qt/5.6/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.6.1-1"
+ repo="download.qt.io"
+ checkoutdir="qt-everywhere-opensource-src-5.6.1"
+ hash="sha256:ce08a7eb54661705f55fb283d895a089b267c688fabe017062bd71b9231736db">
+ <patch file="qt-fontconfig-fix.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="freetype6"/>
+ <dep package="icu"/>
+ <dep package="glib"/>
+ <dep package="harfbuzz"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuild.modules b/Tools/qt/jhbuild.modules
new file mode 100644
index 000000000..3053b1d2c
--- /dev/null
+++ b/Tools/qt/jhbuild.modules
@@ -0,0 +1,261 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <metamodule id="webkitqt-testing-dependencies">
+ <dependencies>
+ <!-- <dep package="fonts"/> -->
+ <dep package="dicts"/>
+ <dep package="fontconfig"/>
+ <dep package="icu"/>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="glib"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="gst-plugins-bad"/>
+ <dep package="gst-libav"/>
+ <dep package="openwebrtc"/>
+ <dep package="qt"/>
+ </dependencies>
+ </metamodule>
+
+ <include href="jhbuild-qt-5.4.modules"/>
+
+ <!-- Please use http/https to access repositories to be friendly to users stuck behind firewalls. -->
+ <repository type="git" name="github.com"
+ href="https://github.com"/>
+ <repository type="tarball" name="github.com-tarball"
+ href="https://github.com"/>
+ <repository type="tarball" name="sourceware.org-mirror"
+ href="http://mirrors.kernel.org/sources.redhat.com/"/>
+ <repository type="tarball" name="ftp.gnome.org"
+ href="http://ftp.gnome.org"/>
+ <repository type="tarball" name="freedesktop.org"
+ href="http://www.freedesktop.org"/>
+ <repository type="tarball" name="xmlsoft.org"
+ href="http://xmlsoft.org"/>
+ <repository type="tarball" name="gstreamer"
+ href="http://gstreamer.freedesktop.org/src/"/>
+ <repository type="tarball" name="savannah.gnu.org"
+ href="http://download.savannah.gnu.org/releases/"/>
+ <repository type="git" name="freedesktop-git"
+ href="http://anongit.freedesktop.org/git"/>
+ <repository type="tarball" name="webkitgtk-jhbuild-mirror"
+ href="http://webkitgtk.org/jhbuild_mirror/"/>
+ <repository type="tarball" name="nice.freedesktop.org"
+ href="http://nice.freedesktop.org/"/>
+
+ <autotools id="fonts" supports-non-srcdir-builds="no"
+ skip-autogen="true">
+ <branch repo="github.com" module="carewolf/qtwebkit-testfonts.git" checkoutdir="qtwebkitg-testfonts"/>
+ </autotools>
+
+ <autotools id="dicts" supports-non-srcdir-builds="no"
+ skip-autogen="true">
+ <branch repo="github.com" module="mrobinson/webkitgtk-test-dicts.git" checkoutdir="webkitgtk-test-dicts" tag="0.0.1"/>
+ </autotools>
+
+ <autotools id="freetype6" autogen-sh="configure">
+ <branch module="freetype/freetype-2.4.11.tar.bz2" version="2.4.11"
+ repo="savannah.gnu.org"
+ hash="sha256:ef9d0bcb64647d9e5125dc7534d7ca371c98310fec87677c410f397f71ffbe3f"
+ md5sum="b93435488942486c8d0ca22e8f768034">
+ <patch file="freetype6-2.4.11-truetype-font-height-fix.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="harfbuzz" autogen-sh="configure">
+ <dependencies>
+ <dep package="icu"/>
+ </dependencies>
+ <branch module="software/harfbuzz/release/harfbuzz-${version}.tar.bz2"
+ version="1.2.7"
+ repo="freedesktop.org"
+ hash="sha256:bba0600ae08b84384e6d2d7175bea10b5fc246c4583dc841498d01894d479026">
+ </branch>
+ </autotools>
+
+ <autotools id="libffi" autogen-sh="configure">
+ <branch module="libffi/libffi-3.1.tar.gz" version="3.1"
+ repo="sourceware.org-mirror"
+ hash="sha256:97feeeadca5e21870fa4433bc953d1b3af3f698d5df8a428f68b73cd60aef6eb"
+ md5sum="f5898b29bbfd70502831a212d9249d10"/>
+ </autotools>
+
+ <autotools id="glib"
+ autogen-sh="configure"
+ autogenargs="--disable-dtrace --disable-gtk-doc-html">
+ <dependencies>
+ <dep package="libffi"/>
+ </dependencies>
+ <branch module="/pub/GNOME/sources/glib/2.44/glib-2.44.1.tar.xz" version="2.44.1"
+ repo="ftp.gnome.org"
+ hash="sha256:8811deacaf8a503d0a9b701777ea079ca6a4277be10e3d730d2112735d5eca07">
+ </branch>
+ </autotools>
+
+ <autotools id="fontconfig"
+ autogen-sh="configure"
+ autogenargs="--enable-libxml2">
+ <dependencies>
+ <dep package="freetype6"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ <branch module="software/fontconfig/release/fontconfig-2.11.1.tar.gz" version="2.11.1"
+ repo="freedesktop.org"
+ hash="sha256:b6b066c7dce3f436fdc0dfbae9d36122b38094f4f53bd8dffd45e195b0540d8d"
+ md5sum="e75e303b4f7756c2b16203a57ac87eba">
+ <patch file="fontconfig-2.11.1-no-bitmaps.patch" strip="0"/>
+ </branch>
+ </autotools>
+
+
+ <autotools id="libxml2" supports-non-srcdir-builds="no"
+ autogen-sh="./autogen.sh; ./configure --with-python=no">
+ <branch module="/sources/libxml2-2.9.1.tar.gz" version="2.9.1"
+ repo="xmlsoft.org"
+ hash="sha256:fd3c64cb66f2c4ea27e934d275904d92cec494a8e8405613780cbc8a71680fdb"
+ md5sum="9c0cfef285d5c4a5c80d00904ddab380"/>
+ </autotools>
+
+ <autotools id="libxslt">
+ <branch module="/sources/libxslt-${version}.tar.gz" version="1.1.29"
+ repo="xmlsoft.org"
+ hash="sha256:b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="orc" autogenargs="--disable-gtk-doc" autogen-sh="configure">
+ <branch module="orc/orc-0.4.17.tar.gz" version="0.4.17"
+ repo="gstreamer"
+ hash="sha256:4fc7cca48c59fff23afee78fb642cdbde001f56401c8f47b95a16578d1d5d7e8"
+ md5sum="af1bf3dab9e69f3c36f389285e2a12a1"/>
+ </autotools>
+
+ <autotools id="gstreamer" autogenargs="--disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="orc"/>
+ </dependencies>
+ <branch module="gstreamer/gstreamer-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:947a314a212b5d94985d89b43440dbe66b696e12bbdf9a2f78967b98d74abedc"
+ md5sum="6846d7289ec323c38c49b818171e955a"/>
+ </autotools>
+
+ <autotools id="gst-plugins-base"
+ autogen-sh="autogen.sh"
+ autogenargs="--disable-examples --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gstreamer"/>
+ </dependencies>
+ <branch module="gst-plugins-base/gst-plugins-base-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:abc0acc1d15b4b9c97c65cd9689bd6400081853b9980ea428d3c8572dd791522"
+ md5sum="20cc8231609318310f2a55f64c86cbb4"/>
+ </autotools>
+
+ <autotools id="gst-plugins-good" autogenargs="--disable-examples --disable-soup --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+
+ <branch module="gst-plugins-good/gst-plugins-good-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:c20c134d47dbc238d921707a3b66da709c2b4dd89f9d267cec13d1ddf16e9f4d"
+ md5sum="91ed4649c7c2e43a61f731d144f6f6d0">
+ <patch file="gst-plugins-good-use-the-tfdt-decode-time.patch" strip="1"/>
+ <patch file="gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="gst-plugins-bad" autogenargs="--disable-examples --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error CXXFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ <branch module="gst-plugins-bad/gst-plugins-bad-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:116376dd1085082422e0b21b0ecd3d1cb345c469c58e32463167d4675f4ca90e"
+ md5sum="1c2d797bb96a81e9ef570c7a0a37203e"/>
+ </autotools>
+
+ <autotools id="gst-libav" autogenargs="--with-libav-extra-configure='--disable-yasm' --disable-gtk-doc">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ <branch module="gst-libav/gst-libav-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:5a1ce28876aee93cb4f3d090f0e807915a5d9bc1325e3480dd302b85aeb4291c"
+ md5sum="361638fa45466c5050bcde6bfe10fa46"/>
+ </autotools>
+
+ <autotools id="libusrsctp" supports-non-srcdir-builds="no" autogen-sh="./bootstrap; ./configure --disable-warnings-as-errors">
+ <branch repo="github.com" module="sctplab/usrsctp.git" checkoutdir="usrsctp" tag="078ff3252f73327e0ac11d6fd5eff62011f6646e"/>
+ </autotools>
+
+ <autotools id="gst-plugins-openwebrtc" supports-parallel-builds="no" supports-non-srcdir-builds="no" autogen-sh="./autogen.sh; ./configure">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ <dep package="libusrsctp"/>
+ </dependencies>
+ <branch repo="github.com" module="EricssonResearch/openwebrtc-gst-plugins.git" checkoutdir="gst-plugins-openwebrtc" tag="e359b67484af90f416ea35e301205d2b53c77a14"/>
+ </autotools>
+
+ <autotools id="libnice">
+ <dependencies>
+ <dep package="gstreamer"/>
+ </dependencies>
+ <branch repo="nice.freedesktop.org" module="releases/libnice-0.1.10.tar.gz" checkoutdir="libnice" version="0.1.10"
+ hash="sha256:1dbfb663b730889ae8cab13a2913fe557d581f70b513c918bbbd0b7d3eefebc9"
+ md5sum="27b62d0093ce29a39df1c6fcf0bb4396" size="903083">
+ </branch>
+ </autotools>
+
+ <autotools id="openwebrtc" autogenargs="--enable-bridge=no --enable-owr-gst=yes --disable-tests">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-openwebrtc"/>
+ <dep package="libnice"/>
+ </dependencies>
+ <branch repo="github.com-tarball" module="EricssonResearch/openwebrtc/archive/13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" checkoutdir="openwebrtc" version="13516c7f79a0c48bb411464f7613d4b426c70f5b"
+ hash="sha256:c849d36d97c17a198a5d9c180f13f14c7897c9236e2384ea11029e23b09b59ac"
+ md5sum="13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" size="258936">
+ <patch file="openwebrtc-no-gtk-doc.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="icu"
+ autogen-sh="./source/configure"
+ autogenargs="--disable-samples --enable-weak-threads">
+ <branch module="icu4c-55_1-src.tgz" version="55.1" checkoutdir="icu"
+ repo="webkitgtk-jhbuild-mirror"
+ hash="sha256:e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b">
+ <patch file="icudata-stdlibs.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuildrc b/Tools/qt/jhbuildrc
new file mode 100644
index 000000000..58dea347f
--- /dev/null
+++ b/Tools/qt/jhbuildrc
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import sys
+import platform
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../jhbuild") )
+import jhbuildrc_common
+
+jhbuildrc_common.init(globals(), "qt")
diff --git a/Tools/qt/manifest.txt b/Tools/qt/manifest.txt
new file mode 100644
index 000000000..bc4765030
--- /dev/null
+++ b/Tools/qt/manifest.txt
@@ -0,0 +1,132 @@
+# Global rules
+exclude #$
+exclude ChangeLog
+exclude CMakeLists.txt.user
+exclude Makefile
+exclude PlatformAppleWin.cmake
+exclude PlatformGTK.cmake
+exclude PlatformEfl.cmake
+exclude PlatformMac.cmake
+exclude PlatformWin.cmake
+exclude PlatformWinCairo.cmake
+exclude tags$
+exclude ~$
+exclude \.#$
+exclude \.bak$
+exclude \.cproject$
+exclude \.git$
+exclude \.gitattributes$
+exclude \.gitignore$
+exclude \.icns$
+exclude \.lproj$
+exclude \.m$
+exclude \.mm$
+exclude \.nib$
+exclude \.o$
+exclude \.order$
+exclude \.orig$
+exclude \.pdf$
+exclude \.plist$
+exclude \.project$
+exclude \.props$
+exclude \.pyc$
+exclude \.pyo$
+exclude \.rej$
+exclude \.rtf$
+exclude \.sb$
+exclude \.sb\.in$
+exclude \.settings$
+exclude \.svn$
+exclude \.sw[a-p]$
+exclude \.vcxproj$
+exclude \.xib$
+exclude \.xcconfig$
+exclude \.xcodeproj$
+
+# Exclude directories from other ports
+exclude .*\/(Configurations|mac|ios|cf|cg|cocoa|Cocoa|objc|avfoundation|ca|curl|efl|win|gtk|cairo|soup|gnutls)\/.*$
+
+directory Source
+exclude Source/JavaScriptCore/tests
+exclude Source/WebCore/platform/audio/resources
+exclude Source/WebCore/bindings/scripts/test
+exclude Source/WebCore/platform/efl/DefaultTheme
+exclude Source/WebCore/Resources
+exclude Source/cmake/EFLHelpers.cmake$
+exclude Source/cmake/OptionsWinCairo.cmake$
+exclude Source/cmake/OptionsWindows.cmake$
+exclude Source/cmake/OptionsAppleWin.cmake$
+exclude Source/cmake/OptionsEfl.cmake$
+exclude Source/cmake/OptionsGTK.cmake$
+exclude Source/cmake/eflsymbols.filter$
+exclude Source/WebInspectorUI/Tools
+exclude Source/WebInspectorUI/UserInterface/Images
+
+exclude Source/WebKit2/Resources
+
+file Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js
+
+# Windows-specific code
+file Source/WTF/wtf/win/GDIObject.h
+file Source/WebCore/platform/graphics/win/LocalWindowsContext.h
+file Source/WebCore/platform/graphics/win/TransformationMatrixWin.cpp
+file Source/WebCore/platform/win/BitmapInfo.cpp
+file Source/WebCore/platform/win/BitmapInfo.h
+file Source/WebCore/platform/win/SystemInfo.cpp
+file Source/WebCore/platform/win/SystemInfo.h
+file Source/WebCore/platform/win/WebCoreInstanceHandle.cpp
+file Source/WebCore/platform/win/WebCoreInstanceHandle.h
+
+# WK1 plugin code is in WebKit/win
+file Source/WebKit/win/Plugins
+
+# Version
+file Source/WebKit/mac/Configurations/Version.xcconfig
+
+directory Source/WebInspectorUI/UserInterface/Images
+exclude Source/WebInspectorUI/UserInterface/Images/.*
+file Source/WebInspectorUI/UserInterface/Images/gtk
+file Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
+
+# Resources
+file Source/WebCore/Resources/plugIns.js
+
+# WebCore.qrc
+file Source/WebCore/Resources/missingImage.png
+file Source/WebCore/Resources/nullPlugin.png
+file Source/WebCore/Resources/textAreaResizeCorner.png
+file Source/WebCore/Resources/urlIcon.png
+file Source/WebCore/Resources/zoomInCursor.png
+file Source/WebCore/Resources/zoomOutCursor.png
+file Source/WebCore/Resources/verticalTextCursor.png
+file Source/WebCore/Resources/cellCursor.png
+file Source/WebCore/Resources/contextMenuCursor.png
+file Source/WebCore/Resources/copyCursor.png
+file Source/WebCore/Resources/progressCursor.png
+file Source/WebCore/Resources/aliasCursor.png
+file Source/WebCore/platform/audio/resources/Composite.wav
+
+directory Tools/qt
+directory Tools/ImageDiff
+directory Tools/MiniBrowser
+directory Tools/TestWebKitAPI
+directory Tools/QtTestBrowser
+
+directory Tools/DumpRenderTree
+exclude Tools/DumpRenderTree/fonts
+
+directory Tools/WebKitTestRunner
+exclude Tools/WebKitTestRunner/fonts/
+
+file CMakeLists.txt
+file Tools/CMakeLists.txt
+file Tools/Scripts/VCSUtils.pm
+file Tools/Scripts/build-webkit
+file Tools/Scripts/run-gtk-tests
+file Tools/Scripts/update-qtwebkit-win-libs
+file Tools/Scripts/update-webkit-dependency
+file Tools/Scripts/webkit-build-directory
+file Tools/Scripts/webkitdirs.pm
+file Tools/Scripts/webkitperl/FeatureList.pm
+file Tools/jhbuild/jhbuildutils.py
+
diff --git a/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch
new file mode 100644
index 000000000..03babba2d
--- /dev/null
+++ b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch
@@ -0,0 +1,10 @@
+--- conf.d/Makefile.in.old 2016-06-23 19:00:01.309774583 +0300
++++ conf.d/Makefile.in 2016-06-23 19:00:23.542159140 +0300
+@@ -341,6 +341,7 @@
+ 65-fonts-persian.conf \
+ 65-nonlatin.conf \
+ 69-unifont.conf \
++ 70-no-bitmaps.conf \
+ 80-delicious.conf \
+ 90-synthetic.conf
+
diff --git a/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch
new file mode 100644
index 000000000..0ffe76b4e
--- /dev/null
+++ b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch
@@ -0,0 +1,39 @@
+From e0469372be3870a5ad60b2c4586e9c281357bd28 Mon Sep 17 00:00:00 2001
+From: Werner Lemberg <wl@gnu.org>
+Date: Tue, 22 Jan 2013 10:07:07 +0000
+Subject: [truetype] Fix font height.
+
+* src/truetype/ttobjs.c (tt_size_reset): The Windows rendering
+engine uses rounded values of the ascender and descender to compute
+the TrueType font height.
+---
+diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
+index c61b218..590b66c 100644
+--- a/src/truetype/ttobjs.c
++++ b/src/truetype/ttobjs.c
+@@ -4,7 +4,7 @@
+ /* */
+ /* Objects manager (body). */
+ /* */
+-/* Copyright 1996-2012 */
++/* Copyright 1996-2013 */
+ /* David Turner, Robert Wilhelm, and Werner Lemberg. */
+ /* */
+ /* This file is part of the FreeType project, and may only be used, */
+@@ -1177,11 +1177,12 @@
+ FT_PIX_ROUND( FT_MulFix( face->root.ascender, metrics->y_scale ) );
+ metrics->descender =
+ FT_PIX_ROUND( FT_MulFix( face->root.descender, metrics->y_scale ) );
+- metrics->height =
+- FT_PIX_ROUND( FT_MulFix( face->root.height, metrics->y_scale ) );
+ metrics->max_advance =
+ FT_PIX_ROUND( FT_MulFix( face->root.max_advance_width,
+ metrics->x_scale ) );
++
++ /* the height is derived from rounded values */
++ metrics->height = metrics->ascender - metrics->descender;
+ }
+
+ /* compute new transformation */
+--
+cgit v0.9.0.2
diff --git a/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch
new file mode 100644
index 000000000..3a60db477
--- /dev/null
+++ b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch
@@ -0,0 +1,133 @@
+From 1a81bd90d4a3e59d6669a0bbfa456f1ed4e5db48 Mon Sep 17 00:00:00 2001
+From: Xabier Rodriguez Calvar <calvaris@igalia.com>
+Date: Thu, 7 Apr 2016 13:57:16 +0200
+Subject: [PATCH] Revert "qtdemux: expose streams with first moof for
+ fragmented format"
+
+This reverts commit d8bb6687ea251570c331038279a43d448167d6ad.
+---
+ gst/isomp4/qtdemux.c | 54 ++++++++++++++++------------------------------------
+ gst/isomp4/qtdemux.h | 1 -
+ 2 files changed, 16 insertions(+), 39 deletions(-)
+
+diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
+index 39be163..9636b4b 100644
+--- a/gst/isomp4/qtdemux.c
++++ b/gst/isomp4/qtdemux.c
+@@ -609,7 +609,6 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
+ qtdemux->state = QTDEMUX_STATE_INITIAL;
+ qtdemux->pullbased = FALSE;
+ qtdemux->posted_redirect = FALSE;
+- qtdemux->pending_configure = FALSE;
+ qtdemux->neededbytes = 16;
+ qtdemux->todrop = 0;
+ qtdemux->adapter = gst_adapter_new ();
+@@ -2049,7 +2048,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
+ gst_caps_replace (&qtdemux->media_caps, NULL);
+ qtdemux->timescale = 0;
+ qtdemux->got_moov = FALSE;
+- qtdemux->pending_configure = FALSE;
+ } else if (qtdemux->mss_mode) {
+ gst_flow_combiner_reset (qtdemux->flowcombiner);
+ for (n = 0; n < qtdemux->n_streams; n++)
+@@ -6104,7 +6102,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ &fourcc);
+ if (fourcc == FOURCC_moov) {
+ gint n;
+- gboolean got_samples = FALSE;
+
+ /* in usual fragmented setup we could try to scan for more
+ * and end up at the the moov (after mdat) again */
+@@ -6136,27 +6133,19 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ qtdemux_node_dump (demux, demux->moov_node);
+ qtdemux_parse_tree (demux);
+ qtdemux_prepare_streams (demux);
++ if (!demux->got_moov)
++ qtdemux_expose_streams (demux);
++ else {
+
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- got_samples |= stream->stbl_index >= 0;
+- }
+- if (!demux->fragmented || got_samples) {
+- if (!demux->got_moov) {
+- qtdemux_expose_streams (demux);
+- } else {
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- gst_qtdemux_configure_stream (demux, stream);
+- }
++ for (n = 0; n < demux->n_streams; n++) {
++ QtDemuxStream *stream = demux->streams[n];
++
++ gst_qtdemux_configure_stream (demux, stream);
+ }
+- gst_qtdemux_check_send_pending_segment (demux);
+- demux->pending_configure = FALSE;
+- } else {
+- demux->pending_configure = TRUE;
+ }
+
+ demux->got_moov = TRUE;
++ gst_qtdemux_check_send_pending_segment (demux);
+
+ /* fragmented streams headers shouldn't contain edts atoms */
+ if (!demux->fragmented) {
+@@ -6175,7 +6164,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ guint64 dist = 0;
+ GstClockTime prev_pts;
+ guint64 prev_offset;
+- gint n;
+
+ GST_DEBUG_OBJECT (demux, "Parsing [moof]");
+
+@@ -6209,25 +6197,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ ret = GST_FLOW_ERROR;
+ goto done;
+ }
+- /* in MSS we need to expose the pads after the first moof as we won't get a moov
+- * Also, fragmented format need to be exposed if a moov have no valid sample data */
+- if (demux->mss_mode || demux->pending_configure) {
+- if (!demux->exposed) {
+- if (!demux->pending_newsegment) {
+- GstSegment segment;
+- gst_segment_init (&segment, GST_FORMAT_TIME);
+- GST_DEBUG_OBJECT (demux, "new pending_newsegment");
+- demux->pending_newsegment = gst_event_new_segment (&segment);
+- }
+- qtdemux_expose_streams (demux);
+- } else {
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- gst_qtdemux_configure_stream (demux, stream);
+- }
++ /* in MSS we need to expose the pads after the first moof as we won't get a moov */
++ if (demux->mss_mode && !demux->exposed) {
++ if (!demux->pending_newsegment) {
++ GstSegment segment;
++ gst_segment_init (&segment, GST_FORMAT_TIME);
++ GST_DEBUG_OBJECT (demux, "new pending_newsegment");
++ demux->pending_newsegment = gst_event_new_segment (&segment);
+ }
+- gst_qtdemux_check_send_pending_segment (demux);
+- demux->pending_configure = FALSE;
++ qtdemux_expose_streams (demux);
+ }
+ } else {
+ GST_DEBUG_OBJECT (demux, "Discarding [moof]");
+diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
+index 6061215..ecf0c63 100644
+--- a/gst/isomp4/qtdemux.h
++++ b/gst/isomp4/qtdemux.h
+@@ -89,7 +89,6 @@ struct _GstQTDemux {
+ gboolean posted_redirect;
+
+ /* push based variables */
+- gboolean pending_configure;
+ guint neededbytes;
+ guint todrop;
+ GstAdapter *adapter;
+--
+2.8.0.rc3
+
diff --git a/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch
new file mode 100644
index 000000000..1e9dd97f7
--- /dev/null
+++ b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch
@@ -0,0 +1,146 @@
+From 46d3e0faa922643094a5e46a32e4f82f774ae772 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 10 Nov 2015 13:09:00 +0100
+Subject: [PATCH] Use the tfdt decode time when it's significantly different
+ than the time in the last sample if always-honor-tfdt is enabled
+
+https://bugzilla.gnome.org/show_bug.cgi?id=754230
+---
+ gst/isomp4/qtdemux.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gst/isomp4/qtdemux.h | 1 +
+ 2 files changed, 73 insertions(+)
+
+diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
+index 880595e..d8b54f0 100644
+--- a/gst/isomp4/qtdemux.c
++++ b/gst/isomp4/qtdemux.c
+@@ -535,6 +535,11 @@ static void gst_qtdemux_append_protection_system_id (GstQTDemux * qtdemux,
+ const gchar * id);
+ static void qtdemux_gst_structure_free (GstStructure * gststructure);
+
++static void gst_qtdemux_set_property (GObject * object, guint prop_id,
++ const GValue * value, GParamSpec * spec);
++static void gst_qtdemux_get_property (GObject * object, guint prop_id,
++ GValue * value, GParamSpec * spec);
++
+ static void
+ gst_qtdemux_class_init (GstQTDemuxClass * klass)
+ {
+@@ -546,8 +551,21 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass)
+
+ parent_class = g_type_class_peek_parent (klass);
+
++ gobject_class->set_property = gst_qtdemux_set_property;
++ gobject_class->get_property = gst_qtdemux_get_property;
++
+ gobject_class->dispose = gst_qtdemux_dispose;
+
++ /**
++ * GstQtDemux::always-honor-tfdt:
++ *
++ * Requests the demuxer to respect what the TFDT atom says in order to produce presentation timestamps. Defaults to FALSE.
++ */
++ g_object_class_install_property (gobject_class, PROP_ALWAYS_HONOR_TFDT,
++ g_param_spec_boolean ("always-honor-tfdt", "Always honor TFDT",
++ "When enabled, TFDT atom will always be respected in order to produce presentation timestamps",
++ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
+ gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_qtdemux_change_state);
+ #if 0
+ gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_qtdemux_set_index);
+@@ -611,6 +629,7 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
+ qtdemux->cenc_aux_info_sizes = NULL;
+ qtdemux->cenc_aux_sample_count = 0;
+ qtdemux->protection_system_ids = NULL;
++ qtdemux->always_honor_tfdt = FALSE;
+ g_queue_init (&qtdemux->protection_event_queue);
+ gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME);
+ qtdemux->flowcombiner = gst_flow_combiner_new ();
+@@ -639,6 +658,42 @@ gst_qtdemux_dispose (GObject * object)
+ }
+
+ static void
++gst_qtdemux_set_property (GObject * object, guint prop_id,
++ const GValue * value, GParamSpec * pspec)
++{
++ GstQTDemux *qtdemux = GST_QTDEMUX (object);
++
++ switch (prop_id) {
++ case PROP_ALWAYS_HONOR_TFDT:
++ GST_OBJECT_LOCK (qtdemux);
++ qtdemux->always_honor_tfdt = g_value_get_boolean (value);
++ GST_OBJECT_UNLOCK (qtdemux);
++ break;
++ default:
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++ break;
++ }
++}
++
++static void
++gst_qtdemux_get_property (GObject * object, guint prop_id, GValue * value,
++ GParamSpec * pspec)
++{
++ GstQTDemux *qtdemux = GST_QTDEMUX (object);
++
++ switch (prop_id) {
++ case PROP_ALWAYS_HONOR_TFDT:
++ GST_OBJECT_LOCK (qtdemux);
++ g_value_set_boolean (value, qtdemux->always_honor_tfdt);
++ GST_OBJECT_UNLOCK (qtdemux);
++ break;
++ default:
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++ break;
++ }
++}
++
++static void
+ gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux)
+ {
+ if (qtdemux->posted_redirect) {
+@@ -2995,6 +3050,16 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
+ stream->samples[stream->n_samples - 1].timestamp +
+ stream->samples[stream->n_samples - 1].duration;
+
++ /* If we're always honoring TFDT and there's a significative difference
++ * between the decode_ts and the timestamp, prefer decode_ts */
++ if (qtdemux->always_honor_tfdt == TRUE
++ && abs (decode_ts - timestamp) >
++ stream->samples[stream->n_samples - 1].duration) {
++ GST_INFO_OBJECT (qtdemux,
++ "decode_ts is significantly different from timestamp, using decode_ts");
++ timestamp = decode_ts;
++ }
++
+ gst_ts = QTSTREAMTIME_TO_GSTTIME (stream, timestamp);
+ GST_INFO_OBJECT (qtdemux, "first sample ts %" GST_TIME_FORMAT
+ " (extends previous samples)", GST_TIME_ARGS (gst_ts));
+diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
+index 53bd071..ecf0c63 100644
+--- a/gst/isomp4/qtdemux.h
++++ b/gst/isomp4/qtdemux.h
+@@ -154,12 +154,20 @@ struct _GstQTDemux {
+ guint8 *cenc_aux_info_sizes;
+ guint32 cenc_aux_sample_count;
+
++ gboolean always_honor_tfdt;
+ };
+
+ struct _GstQTDemuxClass {
+ GstElementClass parent_class;
+ };
+
++/* props */
++enum
++{
++ PROP_0,
++ PROP_ALWAYS_HONOR_TFDT
++};
++
+ GType gst_qtdemux_get_type (void);
+
+ G_END_DECLS
+--
+2.6.1
+
diff --git a/Tools/qt/patches/icudata-stdlibs.patch b/Tools/qt/patches/icudata-stdlibs.patch
new file mode 100644
index 000000000..5e92bdec1
--- /dev/null
+++ b/Tools/qt/patches/icudata-stdlibs.patch
@@ -0,0 +1,15 @@
+Index: icu-52~m1/source/config/mh-linux
+===================================================================
+--- icu-52~m1.orig/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400
++++ icu-52~m1/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400
+@@ -21,7 +21,9 @@
+ LD_RPATH_PRE = -Wl,-rpath,
+
+ ## These are the library specific LDFLAGS
+-LDFLAGSICUDT=-nodefaultlibs -nostdlib
++#LDFLAGSICUDT=-nodefaultlibs -nostdlib
++# Debian change: linking icudata as data only causes too many problems.
++LDFLAGSICUDT=
+
+ ## Compiler switch to embed a library name
+ # The initial tab in the next line is to prevent icu-config from reading it.
diff --git a/Tools/qt/patches/openwebrtc-no-gtk-doc.patch b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch
new file mode 100644
index 000000000..fb665e7d2
--- /dev/null
+++ b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch
@@ -0,0 +1,60 @@
+diff --git a/autogen.sh b/autogen.sh
+index 2c45ea9..878cf05 100755
+--- a/autogen.sh
++++ b/autogen.sh
+@@ -6,27 +6,42 @@
+ srcdir=`dirname $0`
+ (test -d $srcdir/m4) || mkdir $srcdir/m4
+
+-pushd $srcdir > /dev/null
+-gtkdocize && \
+-autoreconf --verbose --force --install --make || {
+- echo 'autogen.sh failed';
+- exit 1;
+-}
+-
+-popd > /dev/null
+-
+-while test "x$@" != "x" ; do
+-optarg=`expr "x$@" : 'x[^=]*=\(.*\)'`
+-case "$@" in
++for ag_option in $@
++do
++case $ag_option in
+ --noconfigure)
+ NOCONFIGURE=defined
+ AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
+ echo "+ configure run disabled"
+- shift
++ ;;
++ --disable-gtk-doc)
++ enable_gtk_doc=no
++ echo "+ gtk-doc disabled"
+ ;;
+ esac
+ done
+
++pushd $srcdir > /dev/null
++
++if test x$enable_gtk_doc = xno; then
++ if test -f gtk-doc.make; then :; else
++ echo "EXTRA_DIST = missing-gtk-doc" > gtk-doc.make
++ fi
++ echo "WARNING: You have disabled gtk-doc."
++ echo " As a result, you will not be able to generate the API"
++ echo " documentation and 'make dist' will not work."
++ echo
++else
++ gtkdocize || exit $?
++fi
++
++autoreconf --verbose --force --install --make || {
++ echo 'autogen.sh failed';
++ exit 1;
++}
++
++popd > /dev/null
++
+ for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
+ if test ! -z "$CONFIGURE_EXT_OPT"
+ then
diff --git a/Tools/qt/patches/qt-5.4-fontconfig-fix.patch b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch
new file mode 100644
index 000000000..07395fe72
--- /dev/null
+++ b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch
@@ -0,0 +1,56 @@
+From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@digia.com>
+Date: Thu, 6 Nov 2014 12:14:41 +0100
+Subject: [PATCH 1/1] Do not force the default fontconfig configuration
+
+Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase
+has forced a full init to the default configuration breaking
+applications that set a custom fontconfig.
+
+Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a
+---
+ .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++-
+ .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 +
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+index 8ebabf3..194f66c 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern)
+
+ void QFontconfigDatabase::populateFontDatabase()
+ {
+- FcInitReinitialize();
++ FcInit();
+ FcFontSet *fonts;
+
+ {
+@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase()
+ // QApplication::setFont(font);
+ }
+
++void QFontconfigDatabase::invalidate()
++{
++ // Clear app fonts.
++ FcConfigAppFontClear(0);
++}
++
+ QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script)
+ {
+ return new QFontEngineMultiFontConfig(fontEngine, script);
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+index 2199f39..ab77fab 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase
+ {
+ public:
+ void populateFontDatabase();
++ void invalidate() Q_DECL_OVERRIDE;
+ QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script);
+ QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
+ QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
+--
+2.9.0
+
diff --git a/Tools/qt/patches/qt-fontconfig-fix.patch b/Tools/qt/patches/qt-fontconfig-fix.patch
new file mode 100644
index 000000000..066c1cb84
--- /dev/null
+++ b/Tools/qt/patches/qt-fontconfig-fix.patch
@@ -0,0 +1,56 @@
+From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@digia.com>
+Date: Thu, 6 Nov 2014 12:14:41 +0100
+Subject: [PATCH 1/1] Do not force the default fontconfig configuration
+
+Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase
+has forced a full init to the default configuration breaking
+applications that set a custom fontconfig.
+
+Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a
+---
+ .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++-
+ .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 +
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+index 8ebabf3..194f66c 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern)
+
+ void QFontconfigDatabase::populateFontDatabase()
+ {
+- FcInitReinitialize();
++ FcInit();
+ FcFontSet *fonts;
+
+ {
+@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase()
+ // QApplication::setFont(font);
+ }
+
++void QFontconfigDatabase::invalidate()
++{
++ // Clear app fonts.
++ FcConfigAppFontClear(0);
++}
++
+ QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script)
+ {
+ return new QFontEngineMultiFontConfig(fontEngine, script);
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+index 2199f39..ab77fab 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase
+ {
+ public:
+ void populateFontDatabase() Q_DECL_OVERRIDE;
++ void invalidate() Q_DECL_OVERRIDE;
+ QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) Q_DECL_OVERRIDE;
+ QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) Q_DECL_OVERRIDE;
+ QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) Q_DECL_OVERRIDE;
+--
+2.9.0
+