[mingw-qt] Various fixes and improvements which have been collected in the testing repository

epienbro epienbro at fedoraproject.org
Fri Mar 9 19:58:06 UTC 2012


commit 40d973710de5cc410900cedc82d97e38562f0542
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date:   Fri Mar 9 20:56:27 2012 +0100

    Various fixes and improvements which have been collected in the testing repository
    
    - Provide an arch-specific mingw32-qt-qmake package which contains
      tools like qmake and moc which are required for compiling binaries
      against Qt with the correct environment automatically set
    - Bundle QtUiTools (required by kdelibs)
    - Fix a compilation issue with kdelibs
    - Make sure that Qt is built with IPC/shared memory support (required by kdelibs)
    - Added -static subpackages
    - Workaround a qmake issue which causes building against the debug binaries to fail:
      https://bugreports.qt.nokia.com/browse/QTBUG-14467
    - Make sure the various tools belonging to the Qt library are built
      and added them to the new tools subpackage. Thanks to Dominik Schmidt
      of the openSuSE mingw project
    - Make QSSL work (patch from Dominik Schmidt)
    - Added pkg-config files (patches from Hib Eris)
    - Enable javascript-jit
    - Add QMAKE_STREAM_EDITOR to the mkspecs files
    - Also install the Qt tools (qmake, moc, ...) to %{_prefix}/$target/bin
      so that CMake can find Qt more easily

 ...et-pkgconfig-dir-in-qmake-generated-Windo.patch |   31 ++
 ...cements-when-installing-.pc-files-for-win.patch |   49 ++
 ...placements-when-installing-.pc-files-for-.patch |   32 ++
 ...dd-TARGET_VERSION_EXT-to-pkgConfiglibName.patch |   27 ++
 mingw-qt.spec                                      |  458 ++++++++++++++++----
 qmake.conf                                         |    2 +
 qt-4.7.3-fix-loading-openssl.patch                 |   35 ++
 qt-4.8.0-build-qtuitools-dynamically.patch         |   21 +
 qt-4.8.0-fix-include-windows-h.patch               |   13 +
 qt-dont-perform-ipc-checks-for-win32.patch         |   11 +
 qt-fix-javascript-jit-on-mingw-x86_64.patch        |   22 +
 qt-merge-static-and-shared-library-trees.patch     |  248 +++++++++++
 qt-revert-commit-5be6cf.patch                      |   11 +
 13 files changed, 880 insertions(+), 80 deletions(-)
---
diff --git a/0001-Create-target-pkgconfig-dir-in-qmake-generated-Windo.patch b/0001-Create-target-pkgconfig-dir-in-qmake-generated-Windo.patch
new file mode 100644
index 0000000..60895b2
--- /dev/null
+++ b/0001-Create-target-pkgconfig-dir-in-qmake-generated-Windo.patch
@@ -0,0 +1,31 @@
+From ee897cb0710ed41e24fc33cb97e95c284dbe813b Mon Sep 17 00:00:00 2001
+From: Hib Eris <hib at hiberis.nl>
+Date: Tue, 7 Feb 2012 15:28:55 +0100
+Subject: [PATCH 1/5] Create target pkgconfig dir in qmake generated Windows
+ Makefiles
+
+Change-Id: Icea70987ee3c6040ca3ba278a578849cb74156f4
+---
+ qmake/generators/win32/winmakefile.cpp |    6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
+index 3cdabdb..e16afd6 100644
+--- a/qmake/generators/win32/winmakefile.cpp
++++ b/qmake/generators/win32/winmakefile.cpp
+@@ -845,6 +845,12 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
+             QString dst_pc = pkgConfigFileName(false);
+             if (!dst_pc.isEmpty()) {
+                 dst_pc = filePrefixRoot(root, targetdir + dst_pc);
++                const QString dst_pc_dir = fileInfo(dst_pc).path();
++                if(!dst_pc_dir.isEmpty()) {
++                    if(!ret.isEmpty())
++                        ret += "\n\t";
++                    ret += mkdir_p_asstring(dst_pc_dir, true);
++                }
+                 if(!ret.isEmpty())
+                     ret += "\n\t";
+                 ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
+-- 
+1.7.7
+
diff --git a/0002-Allow-replacements-when-installing-.pc-files-for-win.patch b/0002-Allow-replacements-when-installing-.pc-files-for-win.patch
new file mode 100644
index 0000000..4921e2d
--- /dev/null
+++ b/0002-Allow-replacements-when-installing-.pc-files-for-win.patch
@@ -0,0 +1,49 @@
+From d7d427209a54c8fe577ca7fd8323aafe41e2dc0e Mon Sep 17 00:00:00 2001
+From: Hib Eris <hib at hiberis.nl>
+Date: Wed, 8 Feb 2012 13:36:28 +0100
+Subject: [PATCH 2/5] Allow replacements when installing .pc files for win32
+
+Change-Id: Ie5de5d517eafaeaa2544f1e972aec3fe11d0a6f1
+---
+ qmake/generators/win32/winmakefile.cpp |   18 +++++++++++++++++-
+ 1 files changed, 17 insertions(+), 1 deletions(-)
+
+diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
+index e16afd6..562272a 100644
+--- a/qmake/generators/win32/winmakefile.cpp
++++ b/qmake/generators/win32/winmakefile.cpp
+@@ -650,6 +650,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t)
+     t << "DEF_FILE      = " << varList("DEF_FILE") << endl;
+     t << "RES_FILE      = " << varList("RES_FILE") << endl; // Not on mingw, can't see why not though...
+     t << "COPY          = " << var("QMAKE_COPY") << endl;
++    t << "SED           = " << var("QMAKE_STREAM_EDITOR") << endl;
+     t << "COPY_FILE     = " << var("QMAKE_COPY_FILE") << endl;
+     t << "COPY_DIR      = " << var("QMAKE_COPY_DIR") << endl;
+     t << "DEL_FILE      = " << var("QMAKE_DEL_FILE") << endl;
+@@ -853,7 +854,22 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t)
+                 }
+                 if(!ret.isEmpty())
+                     ret += "\n\t";
+-                ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
++                const QString replace_rule("QMAKE_PKGCONFIG_INSTALL_REPLACE");
++                if(project->isEmpty(replace_rule) ||
++                   project->isActiveConfig("no_sed_meta_install") ||
++                   project->isEmpty("QMAKE_STREAM_EDITOR")) {
++                    ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\"";
++                } else {
++                    ret += "-$(SED)";
++                    QStringList replace_rules = project->values(replace_rule);
++                    for(int r = 0; r < replace_rules.size(); ++r) {
++                        const QString match = project->first(replace_rules.at(r) + ".match"),
++                                    replace = project->first(replace_rules.at(r) + ".replace");
++                        if(!match.isEmpty() /*&& match != replace*/)
++                            ret += " -e \"s," + match + "," + replace + ",g\"";
++                    }
++                    ret += " \"" + pkgConfigFileName(true) + "\" >\"" + dst_pc + "\"";
++                }
+                 if(!uninst.isEmpty())
+                     uninst.append("\n\t");
+                 uninst.append("-$(DEL_FILE) \"" + dst_pc + "\"");
+-- 
+1.7.7
+
diff --git a/0003-Activate-replacements-when-installing-.pc-files-for-.patch b/0003-Activate-replacements-when-installing-.pc-files-for-.patch
new file mode 100644
index 0000000..e2d79fa
--- /dev/null
+++ b/0003-Activate-replacements-when-installing-.pc-files-for-.patch
@@ -0,0 +1,32 @@
+From 312a0c2807f2aa791df244144d1fe73cd1e69880 Mon Sep 17 00:00:00 2001
+From: Hib Eris <hib at hiberis.nl>
+Date: Wed, 8 Feb 2012 13:52:01 +0100
+Subject: [PATCH 3/5] Activate replacements when installing .pc files for
+ win32
+
+Change-Id: Iaacbe8528bdbe1c1fca60ae8c94625e951f14554
+---
+ src/qbase.pri |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/src/qbase.pri b/src/qbase.pri
+index 13d4adf..cfb0e83 100644
+--- a/src/qbase.pri
++++ b/src/qbase.pri
+@@ -160,6 +160,13 @@ win32-g++* {
+    QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS]/$$TARGET
+    QMAKE_PKGCONFIG_CFLAGS = -I$$[QT_INSTALL_HEADERS]
+    QMAKE_PKGCONFIG_DESTDIR = pkgconfig
++   include_replace.match = $$QMAKE_INCDIR_QT
++   include_replace.replace = $$[QT_INSTALL_HEADERS]
++   lib_replace.match = $$QMAKE_LIBDIR_QT
++   lib_replace.replace = $$[QT_INSTALL_LIBS]
++   prefix_replace.match = $$QT_BUILD_TREE
++   prefix_replace.replace = $$[QT_INSTALL_PREFIX]
++   QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace prefix_replace
+ }
+ 
+ contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE
+-- 
+1.7.7
+
diff --git a/0004-Add-TARGET_VERSION_EXT-to-pkgConfiglibName.patch b/0004-Add-TARGET_VERSION_EXT-to-pkgConfiglibName.patch
new file mode 100644
index 0000000..e67c8b4
--- /dev/null
+++ b/0004-Add-TARGET_VERSION_EXT-to-pkgConfiglibName.patch
@@ -0,0 +1,27 @@
+From 12a2216fd438d0c8bf8eda1e533cfefb98b92a2f Mon Sep 17 00:00:00 2001
+From: Hib Eris <hib at hiberis.nl>
+Date: Thu, 9 Feb 2012 10:03:15 +0100
+Subject: [PATCH 4/5] Add TARGET_VERSION_EXT to pkgConfiglibName
+
+Change-Id: I56f239e389f0ef926030e4c2376cadd92c4f673c
+---
+ qmake/generators/makefile.cpp |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
+index 6e3aa31..f616f80 100644
+--- a/qmake/generators/makefile.cpp
++++ b/qmake/generators/makefile.cpp
+@@ -3258,6 +3258,9 @@ MakefileGenerator::writePkgConfigFile()
+     } else {
+         pkgConfiglibDir = "-L${libdir}";
+         pkgConfiglibName = "-l" + lname.left(lname.length()-Option::libtool_ext.length());
++        if (!project->values("TARGET_VERSION_EXT").isEmpty()) {
++            pkgConfiglibName += project->first("TARGET_VERSION_EXT");
++        }
+     }
+     t << pkgConfiglibDir << " " << pkgConfiglibName << " " << endl;
+ 
+-- 
+1.7.7
+
diff --git a/mingw-qt.spec b/mingw-qt.spec
index 699a2af..8a0b479 100644
--- a/mingw-qt.spec
+++ b/mingw-qt.spec
@@ -2,13 +2,20 @@
 %global __objdump %{mingw32_objdump}
 %define __debug_install_post %{mingw32_debug_install_post}
 
+# Override the __debug_install_post argument as this package
+# contains both native as well as cross compiled binaries
+%global __debug_install_post %%{mingw_debug_install_post}; %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/%%{?buildsubdir}" %{nil}
+
 #%%global pre rc1
 
-%global platform win32-g++-cross
+%global platform_win32 win32-g++-cross
+
+# Helper macro to retrieve the name of the openssl library
+%global openssl_soname %(rpm -ql mingw32-openssl | grep -Eo 'libssl.*$' | grep -Eo '[0-9]+')
 
 Name:           mingw-qt
 Version:        4.8.0
-Release:        6%{?pre}%{?dist}
+Release:        7%{?pre}%{?dist}
 Summary:        Qt for Windows
 
 License:        GPLv3 with exceptions or LGPLv2 with exceptions
@@ -26,10 +33,36 @@ Source2:        qplatformdefs.h
 Patch10:        mingw32-qt-4.8.0-no-webkit-tests.patch
 # The debug build tries to link against libdbus-1d which doesn't exist
 Patch15:        qt-dbus-dont-link-to-dbus-1d.patch
+
+# Upstream commit http://qt.gitorious.org/qt/qt/commit/5be6cf0a6e306ed3a51ed5ba89317b1317544eea
+# causes a compile failure while building mingw-kdelibs. Revert the commit for now
+Patch16:        qt-revert-commit-5be6cf.patch
+
+# The configure script thinks that there is no IPC/shared memory support
+# for this platform, while there is support. Fix the configure script
+Patch17:        qt-dont-perform-ipc-checks-for-win32.patch
+
 # Fix compilation against gcc 4.7
-Patch16:        qt-everywhere-opensource-src-4.8.0-gcc-4.7.patch
+Patch18:        qt-everywhere-opensource-src-4.8.0-gcc-4.7.patch
 
-BuildArch:      noarch
+# Openssl is loaded at runtime
+Patch19:         qt-4.7.3-fix-loading-openssl.patch
+
+# Fix compilation of the designer tool
+Patch20:        qt-4.8.0-fix-include-windows-h.patch
+
+# Make sure the QtUiTools are built as a shared library
+# https://bugreports.qt.nokia.com/browse/QTBUG-20498
+Patch21:        qt-4.8.0-build-qtuitools-dynamically.patch
+
+# Javascript-JIT fails to link on mingw x86_64
+Patch22:        qt-fix-javascript-jit-on-mingw-x86_64.patch
+
+# Automatically generate pkg-config files
+Patch23:        0001-Create-target-pkgconfig-dir-in-qmake-generated-Windo.patch
+Patch24:        0002-Allow-replacements-when-installing-.pc-files-for-win.patch
+Patch25:        0003-Activate-replacements-when-installing-.pc-files-for-.patch
+Patch26:        0004-Add-TARGET_VERSION_EXT-to-pkgConfiglibName.patch
 
 BuildRequires:  mingw32-filesystem >= 68
 BuildRequires:  mingw32-gcc
@@ -48,9 +81,6 @@ BuildRequires:  mingw32-pkg-config
 BuildRequires:  zip
 BuildRequires:  dos2unix
 
-# This package contains the cross-compiler setup for qmake
-Requires:       mingw32-qt-qmake = %{version}
-
 
 %description
 This package contains the Qt software toolkit for developing
@@ -61,7 +91,10 @@ Fedora Windows cross-compiler.
 
 
 %package -n mingw32-qt
-Summary:         Qt for Windows
+Summary:        Qt for Windows
+# This package contains the cross-compiler setup for qmake
+Requires:       mingw32-qt-qmake = %{version}-%{release}
+BuildArch:      noarch
 
 %description -n mingw32-qt
 This package contains the Qt software toolkit for developing
@@ -70,6 +103,29 @@ cross-platform applications.
 This is the Windows version of Qt, for use in conjunction with the
 Fedora Windows cross-compiler.
 
+%package -n mingw32-qt-qmake
+Summary:       Qt for Windows Build Environment
+
+%description -n mingw32-qt-qmake
+This package contains the build environment for cross compiling
+applications with the Fedora Windows Qt Library and cross-compiler.
+
+%package -n mingw32-qt-tools
+Summary:       Various tools belonging to the mingw32-qt library
+Requires:      mingw32-qt = %{version}-%{release}
+BuildArch:     noarch
+
+%description -n mingw32-qt-tools
+Various tools belonging to the mingw32-qt library.
+
+%package -n mingw32-qt-static
+Summary:       Static version of the mingw32-qt library
+Requires:      mingw32-qt = %{version}-%{release}
+BuildArch:     noarch
+
+%description -n mingw32-qt-static
+Static version of the mingw32-qt library.
+
 
 %{?mingw32_debug_package}
 
@@ -80,29 +136,31 @@ Fedora Windows cross-compiler.
 %patch10 -p1 -b .no_webkit_tests
 %patch15 -p0
 %patch16 -p1
+%patch17 -p0
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+%patch22 -p1
+%patch23 -p1
+%patch24 -p1
+%patch25 -p1
+%patch26 -p1
+
+# Patch 19 (openssl) needs an additional change
+# qt loads openssl libraries (ssleay32, libeay32)  at runtime, but they are called libssl-OPENSSL_SONAME
+# and libcrypto-OPENSSL_SONAME in our cross build, so qt is patched to look for them additionally
+sed -i "s/OPENSSL_SONAME/%{openssl_soname}/" src/network/ssl/qsslsocket_openssl_symbols.cpp
 
 # Cross-compilation qmake target.
-mkdir mkspecs/%{platform}
-cp %{SOURCE1} %{SOURCE2} mkspecs/%{platform}
+mkdir mkspecs/%{platform_win32}
+cp %{SOURCE1} %{SOURCE2} mkspecs/%{platform_win32}
 
 
 %build
 # Generic configure arguments
 # Phonon is disabled for now because we lack the directx headers
-# The 'javascript-jit' argument causes a compile failure on the mingw32 toolchain
 qt_configure_args="\
-    -prefix %{mingw32_prefix} \
-    -bindir %{mingw32_bindir} \
-    -datadir %{mingw32_datadir}/qt4 \
-    -demosdir %{mingw32_datadir}/qt4/demos \
-    -docdir %{mingw32_docdir}/qt4 \
-    -examplesdir %{mingw32_datadir}/qt4/examples \
-    -headerdir %{mingw32_includedir} \
-    -libdir %{mingw32_libdir} \
-    -plugindir %{mingw32_libdir}/qt4/plugins \
-    -sysconfdir %{mingw32_sysconfdir} \
-    -translationdir %{mingw32_datadir}/qt4/translations \
-    -shared \
     -qt3support \
     -verbose \
     -opensource \
@@ -111,7 +169,6 @@ qt_configure_args="\
     -confirm-license \
     -force-pkg-config \
     -little-endian \
-    -xplatform %{platform} \
     -xmlpatterns \
     -multimedia \
     -audio-backend \
@@ -120,6 +177,7 @@ qt_configure_args="\
     -scripttools \
     -declarative \
     -no-phonon \
+    -javascript-jit \
     -qt-libmng \
     -system-zlib \
     -system-libtiff \
@@ -131,35 +189,108 @@ qt_configure_args="\
     -dbus-linked \
     -nomake demos,examples"
 
+qt_configure_args_win32="\
+    -prefix %{mingw32_prefix} \
+    -bindir %{mingw32_bindir} \
+    -datadir %{mingw32_datadir}/qt4 \
+    -demosdir %{mingw32_datadir}/qt4/demos \
+    -docdir %{mingw32_docdir}/qt4 \
+    -examplesdir %{mingw32_datadir}/qt4/examples \
+    -headerdir %{mingw32_includedir} \
+    -libdir %{mingw32_libdir} \
+    -plugindir %{mingw32_libdir}/qt4/plugins \
+    -sysconfdir %{mingw32_sysconfdir} \
+    -translationdir %{mingw32_datadir}/qt4/translations \
+    -xplatform %{platform_win32}"
+
 # RPM automatically sets the environment variable PKG_CONFIG_PATH
 # to point to the native pkg-config files, but while cross compiling
 # we don't want to have this environment variable set
 unset PKG_CONFIG_PATH
 
-# We have to build Qt twice, once for the release build and once for the debug build
+# We have to build Qt three times, once for the static release build, once
+# for the shared release build and once for the shared debug build
+#
 # Unfortunately Qt only supports out-of-source builds which are in ../some_folder
-rm -rf ../build_debug
-mkdir ../build_debug
-pushd ../build_debug
+rm -rf ../build_release_static_win32
+mkdir ../build_release_static_win32
+pushd ../build_release_static_win32
+../qt-everywhere-opensource-src-%{version}/configure \
+    -release \
+    -static \
+    $qt_configure_args_generic $qt_configure_args_win32
+make %{?_smp_mflags}
+popd
+
+rm -rf ../build_debug_win32
+mkdir ../build_debug_win32
+pushd ../build_debug_win32
 ../qt-everywhere-opensource-src-%{version}/configure \
     -debug \
-    $qt_configure_args
+    -shared \
+    -make tools \
+    $qt_configure_args_generic $qt_configure_args_win32
 make %{?_smp_mflags}
 popd
 
-rm -rf ../build_release
-mkdir ../build_release
-pushd ../build_release
+rm -rf ../build_release_win32
+mkdir ../build_release_win32
+pushd ../build_release_win32
 ../qt-everywhere-opensource-src-%{version}/configure \
     -release \
-    $qt_configure_args    
+    -shared \
+    -make tools \
+    $qt_configure_args_generic $qt_configure_args_win32
 make %{?_smp_mflags}
+
+%install
+make install -C ../build_debug_win32 INSTALL_ROOT=$RPM_BUILD_ROOT
+make install -C ../build_release_win32 INSTALL_ROOT=$RPM_BUILD_ROOT
+
+# Install the static libraries in a temporary prefix so we can merge everything together properly
+mkdir $RPM_BUILD_ROOT/static
+make install -C ../build_release_static_win32 INSTALL_ROOT=$RPM_BUILD_ROOT/static
+
+# Rename the .a files to .dll.a as they're actually import libraries and not static libraries
+for FN in $RPM_BUILD_ROOT%{mingw32_libdir}/*.a ; do
+    # Ignore libqtmain*.a
+    echo $FN | grep -q qtmain && continue
+
+    # Rename the file
+    FN_NEW=$(echo $FN | sed s/'.a$'/'.dll.a'/)
+    mv $FN $FN_NEW
+done
+
+# Apply a patch which incorporates all the differences between
+# the static and the shared library build while staying compatible
+pushd $RPM_BUILD_ROOT
+patch -Np0 -i %{PATCH0}
 popd
 
+# Drop the qtmain static library from the static tree as
+# it's already part of the main tree
+rm -f $RPM_BUILD_ROOT/static/%{mingw32_libdir}/libqtmain*
 
-%install
-make install -C ../build_debug INSTALL_ROOT=$RPM_BUILD_ROOT
-make install -C ../build_release INSTALL_ROOT=$RPM_BUILD_ROOT
+# Give the real static libraries the correct filename to avoid future conflicts with Qt5
+for FN in $RPM_BUILD_ROOT/static%{mingw32_libdir}/*.a ; do
+    FN_NEW=$(echo $FN | sed s/'.a$'/'4.a'/)
+    mv $FN $FN_NEW
+done
+
+# Move the static libraries from the static tree to the main tree
+mv $RPM_BUILD_ROOT/static%{mingw32_libdir}/*.a $RPM_BUILD_ROOT%{mingw32_libdir}
+
+# Clean up the static trees as we've now merged all interesting pieces
+rm -rf $RPM_BUILD_ROOT/static
+
+# Also install the lrelease tool
+make -C ../build_release_win32/tools/linguist/lrelease install INSTALL_ROOT=$RPM_BUILD_ROOT
+
+# move QtUiTools4.dll from lib/ to bin/
+mv $RPM_BUILD_ROOT%{mingw32_libdir}/QtUiTools4.dll $RPM_BUILD_ROOT%{mingw32_bindir}/
+
+# Drop the debug version of the tool qmlplugindumpd.exe
+rm -f $RPM_BUILD_ROOT%{mingw32_bindir}/qmlplugindumpd.exe
 
 # The .dll's are installed in both %%{mingw32_bindir} and %%{mingw32_libdir}
 # One copy of the .dll's is sufficient
@@ -169,35 +300,67 @@ rm -f $RPM_BUILD_ROOT%{mingw32_libdir}/*.dll
 ln -s libqtmain.a $RPM_BUILD_ROOT%{mingw32_libdir}/libqtmain4.a
 ln -s libqtmaind.a $RPM_BUILD_ROOT%{mingw32_libdir}/libqtmaind4.a
 
-# Drop all the prl files, the examples and the mkspecs files which are already part of mingw32-qt-qmake
+# Drop all the files which we don't need
 rm -f  $RPM_BUILD_ROOT%{mingw32_libdir}/*.prl
 rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/demos
 rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/examples
-rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs
-
-# Drop some tools which we already have in the native Qt package
-rm -f $RPM_BUILD_ROOT%{mingw32_bindir}/lrelease
-rm -f $RPM_BUILD_ROOT%{mingw32_bindir}/moc
-rm -f $RPM_BUILD_ROOT%{mingw32_bindir}/rcc
-rm -f $RPM_BUILD_ROOT%{mingw32_bindir}/uic
+rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/q3porting.xml
+rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/phrasebooks/
 
 # The Qt build system creates a folder called 'imports' but it isn't entirely sure
 # what it's purpose is. Drop it for now
 rm -rf $RPM_BUILD_ROOT%{mingw32_prefix}/imports
 
+# Manually install qmake and other native tools so we don't depend anymore on
+# the version of the native Fedora Qt and also fix issues as illustrated at
+# http://stackoverflow.com/questions/6592931/building-for-windows-under-linux-using-qt-creator
+#
+# Also make sure the tools can be found by CMake
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/bin
+
+install -m0755 ../build_release_win32/bin/qmake $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/bin/qmake-qt4
+ln -s ../%{mingw32_target}/bin/qmake-qt4 $RPM_BUILD_ROOT%{_bindir}/%{mingw32_target}-qmake-qt4
+ln -s %{mingw32_target}-qmake-qt4 $RPM_BUILD_ROOT%{_bindir}/mingw32-qmake-qt4
+
+for tool in lrelease moc rcc uic ; do
+    mv $RPM_BUILD_ROOT%{mingw32_bindir}/$tool $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/bin/$tool
+    ln -s ../%{mingw32_target}/bin/$tool $RPM_BUILD_ROOT%{_bindir}/%{mingw32_target}-$tool
+done
+
+# An argument in the mkspecs profile needs to be un-commented in order to be
+# useful for developers who wish to use the Qt libraries
+sed -i s@'#QT_LIBINFIX'@'QT_LIBINFIX'@ $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs/%{platform_win32}/qmake.conf
+
+# Remove some duplicate mkspecs data
+rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs/%{platform_win32}/default
+rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs/%{platform_win32}/%{platform_win32}
+
+# Workaround a bug where building against the debug binaries will always fail:
+# https://bugreports.qt.nokia.com/browse/QTBUG-14467
+sed -i s@'$${QT_LIBINFIX}d'@'d$${QT_LIBINFIX}'@ $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs/features/win32/windows.prf
+sed -i s@'$${QT_LIBINFIX}d'@'d$${QT_LIBINFIX}'@ $RPM_BUILD_ROOT%{mingw32_datadir}/qt4/mkspecs/features/qt_functions.prf
+
 
 %files -n mingw32-qt
-%doc LICENSE.GPL3 LICENSE.LGPL LGPL_EXCEPTION.txt README
 %{mingw32_bindir}/Qt3Support4.dll
 %{mingw32_bindir}/Qt3Supportd4.dll
+%{mingw32_bindir}/QtCLucene4.dll
+%{mingw32_bindir}/QtCLucened4.dll
 %{mingw32_bindir}/QtCore4.dll
 %{mingw32_bindir}/QtCored4.dll
 %{mingw32_bindir}/QtDBus4.dll
 %{mingw32_bindir}/QtDBusd4.dll
 %{mingw32_bindir}/QtDeclarative4.dll
 %{mingw32_bindir}/QtDeclaratived4.dll
+%{mingw32_bindir}/QtDesigner4.dll
+%{mingw32_bindir}/QtDesignerd4.dll
+%{mingw32_bindir}/QtDesignerComponents4.dll
+%{mingw32_bindir}/QtDesignerComponentsd4.dll
 %{mingw32_bindir}/QtGui4.dll
 %{mingw32_bindir}/QtGuid4.dll
+%{mingw32_bindir}/QtHelp4.dll
+%{mingw32_bindir}/QtHelpd4.dll
 %{mingw32_bindir}/QtNetwork4.dll
 %{mingw32_bindir}/QtNetworkd4.dll
 %{mingw32_bindir}/QtOpenGL4.dll
@@ -210,6 +373,7 @@ rm -rf $RPM_BUILD_ROOT%{mingw32_prefix}/imports
 %{mingw32_bindir}/QtSqld4.dll
 %{mingw32_bindir}/QtSvg4.dll
 %{mingw32_bindir}/QtSvgd4.dll
+%{mingw32_bindir}/QtUiTools4.dll
 %{mingw32_bindir}/QtXml4.dll
 %{mingw32_bindir}/QtXmld4.dll
 %{mingw32_bindir}/QtXmlPatterns4.dll
@@ -220,43 +384,93 @@ rm -rf $RPM_BUILD_ROOT%{mingw32_prefix}/imports
 %{mingw32_bindir}/QtTestd4.dll
 %{mingw32_bindir}/QtWebKit4.dll
 %{mingw32_bindir}/QtWebKitd4.dll
-%{mingw32_libdir}/libQt3Support4.a
-%{mingw32_libdir}/libQt3Supportd4.a
-%{mingw32_libdir}/libQtCore4.a
-%{mingw32_libdir}/libQtCored4.a
-%{mingw32_libdir}/libQtDBus4.a
-%{mingw32_libdir}/libQtDBusd4.a
-%{mingw32_libdir}/libQtDeclarative4.a
-%{mingw32_libdir}/libQtDeclaratived4.a
-%{mingw32_libdir}/libQtGui4.a
-%{mingw32_libdir}/libQtGuid4.a
+%{mingw32_libdir}/libQt3Support4.dll.a
+%{mingw32_libdir}/libQt3Supportd4.dll.a
+%{mingw32_libdir}/libQtCLucene4.dll.a
+%{mingw32_libdir}/libQtCLucened4.dll.a
+%{mingw32_libdir}/libQtCore4.dll.a
+%{mingw32_libdir}/libQtCored4.dll.a
+%{mingw32_libdir}/libQtDBus4.dll.a
+%{mingw32_libdir}/libQtDBusd4.dll.a
+%{mingw32_libdir}/libQtDeclarative4.dll.a
+%{mingw32_libdir}/libQtDeclaratived4.dll.a
+%{mingw32_libdir}/libQtDesigner4.dll.a
+%{mingw32_libdir}/libQtDesignerd4.dll.a
+%{mingw32_libdir}/libQtDesignerComponents4.dll.a
+%{mingw32_libdir}/libQtDesignerComponentsd4.dll.a
+%{mingw32_libdir}/libQtGui4.dll.a
+%{mingw32_libdir}/libQtGuid4.dll.a
+%{mingw32_libdir}/libQtHelp4.dll.a
+%{mingw32_libdir}/libQtHelpd4.dll.a
 %{mingw32_libdir}/libqtmain.a
 %{mingw32_libdir}/libqtmaind.a
 %{mingw32_libdir}/libqtmain4.a
 %{mingw32_libdir}/libqtmaind4.a
-%{mingw32_libdir}/libQtNetwork4.a
-%{mingw32_libdir}/libQtNetworkd4.a
-%{mingw32_libdir}/libQtOpenGL4.a
-%{mingw32_libdir}/libQtOpenGLd4.a
-%{mingw32_libdir}/libQtScript4.a
-%{mingw32_libdir}/libQtScriptd4.a
-%{mingw32_libdir}/libQtScriptTools4.a
-%{mingw32_libdir}/libQtScriptToolsd4.a
-%{mingw32_libdir}/libQtSql4.a
-%{mingw32_libdir}/libQtSqld4.a
-%{mingw32_libdir}/libQtSvg4.a
-%{mingw32_libdir}/libQtSvgd4.a
-%{mingw32_libdir}/libQtXml4.a
-%{mingw32_libdir}/libQtXmld4.a
-%{mingw32_libdir}/libQtXmlPatterns4.a
-%{mingw32_libdir}/libQtXmlPatternsd4.a
-%{mingw32_libdir}/libQtMultimedia4.a
-%{mingw32_libdir}/libQtMultimediad4.a
-%{mingw32_libdir}/libQtTest4.a
-%{mingw32_libdir}/libQtTestd4.a
-%{mingw32_libdir}/libQtWebKit4.a
-%{mingw32_libdir}/libQtWebKitd4.a
-%dir %{mingw32_libdir}/qt4
+%{mingw32_libdir}/libQtMultimedia4.dll.a
+%{mingw32_libdir}/libQtMultimediad4.dll.a
+%{mingw32_libdir}/libQtNetwork4.dll.a
+%{mingw32_libdir}/libQtNetworkd4.dll.a
+%{mingw32_libdir}/libQtOpenGL4.dll.a
+%{mingw32_libdir}/libQtOpenGLd4.dll.a
+%{mingw32_libdir}/libQtScript4.dll.a
+%{mingw32_libdir}/libQtScriptd4.dll.a
+%{mingw32_libdir}/libQtScriptTools4.dll.a
+%{mingw32_libdir}/libQtScriptToolsd4.dll.a
+%{mingw32_libdir}/libQtSql4.dll.a
+%{mingw32_libdir}/libQtSqld4.dll.a
+%{mingw32_libdir}/libQtSvg4.dll.a
+%{mingw32_libdir}/libQtSvgd4.dll.a
+%{mingw32_libdir}/libQtTest4.dll.a
+%{mingw32_libdir}/libQtTestd4.dll.a
+%{mingw32_libdir}/libQtUiTools4.dll.a
+%{mingw32_libdir}/libQtUiToolsd4.dll.a
+%{mingw32_libdir}/libQtWebKit4.dll.a
+%{mingw32_libdir}/libQtWebKitd4.dll.a
+%{mingw32_libdir}/libQtXml4.dll.a
+%{mingw32_libdir}/libQtXmld4.dll.a
+%{mingw32_libdir}/libQtXmlPatterns4.dll.a
+%{mingw32_libdir}/libQtXmlPatternsd4.dll.a
+%{mingw32_libdir}/pkgconfig/Qt3Support.pc
+%{mingw32_libdir}/pkgconfig/Qt3Supportd.pc
+%{mingw32_libdir}/pkgconfig/QtCLucene.pc
+%{mingw32_libdir}/pkgconfig/QtCLucened.pc
+%{mingw32_libdir}/pkgconfig/QtCore.pc
+%{mingw32_libdir}/pkgconfig/QtCored.pc
+%{mingw32_libdir}/pkgconfig/QtDBus.pc
+%{mingw32_libdir}/pkgconfig/QtDBusd.pc
+%{mingw32_libdir}/pkgconfig/QtDeclarative.pc
+%{mingw32_libdir}/pkgconfig/QtDeclaratived.pc
+%{mingw32_libdir}/pkgconfig/QtGui.pc
+%{mingw32_libdir}/pkgconfig/QtGuid.pc
+%{mingw32_libdir}/pkgconfig/QtHelp.pc
+%{mingw32_libdir}/pkgconfig/QtHelpd.pc
+%{mingw32_libdir}/pkgconfig/qtmain.pc
+%{mingw32_libdir}/pkgconfig/qtmaind.pc
+%{mingw32_libdir}/pkgconfig/QtMultimedia.pc
+%{mingw32_libdir}/pkgconfig/QtMultimediad.pc
+%{mingw32_libdir}/pkgconfig/QtNetwork.pc
+%{mingw32_libdir}/pkgconfig/QtNetworkd.pc
+%{mingw32_libdir}/pkgconfig/QtOpenGL.pc
+%{mingw32_libdir}/pkgconfig/QtOpenGLd.pc
+%{mingw32_libdir}/pkgconfig/QtScript.pc
+%{mingw32_libdir}/pkgconfig/QtScriptd.pc
+%{mingw32_libdir}/pkgconfig/QtScriptTools.pc
+%{mingw32_libdir}/pkgconfig/QtScriptToolsd.pc
+%{mingw32_libdir}/pkgconfig/QtSql.pc
+%{mingw32_libdir}/pkgconfig/QtSqld.pc
+%{mingw32_libdir}/pkgconfig/QtSvg.pc
+%{mingw32_libdir}/pkgconfig/QtSvgd.pc
+%{mingw32_libdir}/pkgconfig/QtTest.pc
+%{mingw32_libdir}/pkgconfig/QtTestd.pc
+%{mingw32_libdir}/pkgconfig/QtUiTools.pc
+%{mingw32_libdir}/pkgconfig/QtUiToolsd.pc
+%{mingw32_libdir}/pkgconfig/QtWebKit.pc
+%{mingw32_libdir}/pkgconfig/QtWebKitd.pc
+%{mingw32_libdir}/pkgconfig/QtXmlPatterns.pc
+%{mingw32_libdir}/pkgconfig/QtXmlPatternsd.pc
+%{mingw32_libdir}/pkgconfig/QtXml.pc
+%{mingw32_libdir}/pkgconfig/QtXmld.pc
+%dir %{mingw32_libdir}/qt4/
 %dir %{mingw32_libdir}/qt4/plugins
 %dir %{mingw32_libdir}/qt4/plugins/accessible
 %{mingw32_libdir}/qt4/plugins/accessible/qtaccessiblecompatwidgets4.dll
@@ -318,22 +532,106 @@ rm -rf $RPM_BUILD_ROOT%{mingw32_prefix}/imports
 %{mingw32_includedir}/QtCore/
 %{mingw32_includedir}/QtDBus/
 %{mingw32_includedir}/QtDeclarative/
+%{mingw32_includedir}/QtDesigner/
 %{mingw32_includedir}/QtGui/
+%{mingw32_includedir}/QtHelp/
+%{mingw32_includedir}/QtMultimedia/
 %{mingw32_includedir}/QtNetwork/
 %{mingw32_includedir}/QtOpenGL/
 %{mingw32_includedir}/QtScript/
 %{mingw32_includedir}/QtScriptTools/
 %{mingw32_includedir}/QtSql/
 %{mingw32_includedir}/QtSvg/
+%{mingw32_includedir}/QtTest/
+%{mingw32_includedir}/QtUiTools/
 %{mingw32_includedir}/QtWebKit/
 %{mingw32_includedir}/QtXml/
 %{mingw32_includedir}/QtXmlPatterns/
-%{mingw32_includedir}/QtMultimedia/
-%{mingw32_includedir}/QtTest/
 %{mingw32_datadir}/qt4/
 
+%files -n mingw32-qt-qmake
+%doc LICENSE.GPL3 LICENSE.LGPL LGPL_EXCEPTION.txt README
+%{_bindir}/%{mingw32_target}-lrelease
+%{_bindir}/%{mingw32_target}-moc
+%{_bindir}/%{mingw32_target}-qmake-qt4
+%{_bindir}/%{mingw32_target}-rcc
+%{_bindir}/%{mingw32_target}-uic
+%{_bindir}/mingw32-qmake-qt4
+%{_prefix}/%{mingw32_target}/bin/lrelease
+%{_prefix}/%{mingw32_target}/bin/moc
+%{_prefix}/%{mingw32_target}/bin/qmake-qt4
+%{_prefix}/%{mingw32_target}/bin/rcc
+%{_prefix}/%{mingw32_target}/bin/uic
+%{mingw32_datadir}/qt4/mkspecs/%{platform_win32}
+
+%files -n mingw32-qt-tools
+%{mingw32_bindir}/assistant.exe
+%{mingw32_bindir}/designer.exe
+%{mingw32_bindir}/lconvert.exe
+%{mingw32_bindir}/linguist.exe
+%{mingw32_bindir}/lupdate.exe
+%{mingw32_bindir}/pixeltool.exe
+%{mingw32_bindir}/qcollectiongenerator.exe
+%{mingw32_bindir}/qdbus.exe
+%{mingw32_bindir}/qdbuscpp2xml.exe
+%{mingw32_bindir}/qdbusviewer.exe
+%{mingw32_bindir}/qdbusxml2cpp.exe
+%{mingw32_bindir}/qhelpconverter.exe
+%{mingw32_bindir}/qhelpgenerator.exe
+%{mingw32_bindir}/qmlplugindump.exe
+%{mingw32_bindir}/qmlviewer.exe
+%{mingw32_bindir}/qt3to4.exe
+%{mingw32_bindir}/qttracereplay.exe
+%{mingw32_bindir}/xmlpatterns.exe
+%{mingw32_bindir}/xmlpatternsvalidator.exe
+%dir %{mingw32_libdir}/qt4/plugins/designer/
+%{mingw32_libdir}/qt4/plugins/designer/qdeclarativeview.dll
+%{mingw32_libdir}/qt4/plugins/designer/qdeclarativeviewd.dll
+%{mingw32_libdir}/qt4/plugins/designer/qt3supportwidgets.dll
+%{mingw32_libdir}/qt4/plugins/designer/qt3supportwidgetsd.dll
+%{mingw32_libdir}/qt4/plugins/designer/qwebview.dll
+%{mingw32_libdir}/qt4/plugins/designer/qwebviewd.dll
+
+%files -n mingw32-qt-static
+%{mingw32_libdir}/libQt3Support4.a
+%{mingw32_libdir}/libQtCore4.a
+%{mingw32_libdir}/libQtDBus4.a
+%{mingw32_libdir}/libQtDeclarative4.a
+%{mingw32_libdir}/libQtGui4.a
+%{mingw32_libdir}/libQtMultimedia4.a
+%{mingw32_libdir}/libQtNetwork4.a
+%{mingw32_libdir}/libQtOpenGL4.a
+%{mingw32_libdir}/libQtScript4.a
+%{mingw32_libdir}/libQtScriptTools4.a
+%{mingw32_libdir}/libQtSql4.a
+%{mingw32_libdir}/libQtSvg4.a
+%{mingw32_libdir}/libQtTest4.a
+#%{mingw32_libdir}/libQtWebKit4.a
+%{mingw32_libdir}/libQtXml4.a
+%{mingw32_libdir}/libQtXmlPatterns4.a
+
 
 %changelog
+* Fri Mar 09 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 4.8.0-7
+- Provide an arch-specific mingw32-qt-qmake package which contains
+  tools like qmake and moc which are required for compiling binaries
+  against Qt with the correct environment automatically set
+- Bundle QtUiTools (required by kdelibs)
+- Fix a compilation issue with kdelibs
+- Make sure that Qt is built with IPC/shared memory support (required by kdelibs)
+- Added -static subpackages
+- Workaround a qmake issue which causes building against the debug binaries to fail:
+  https://bugreports.qt.nokia.com/browse/QTBUG-14467
+- Make sure the various tools belonging to the Qt library are built
+  and added them to the new tools subpackage. Thanks to Dominik Schmidt
+  of the openSuSE mingw project
+- Make QSSL work (patch from Dominik Schmidt)
+- Added pkg-config files (patches from Hib Eris)
+- Enable javascript-jit
+- Add QMAKE_STREAM_EDITOR to the mkspecs files
+- Also install the Qt tools (qmake, moc, ...) to %%{_prefix}/$target/bin
+  so that CMake can find Qt more easily
+
 * Tue Mar 06 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 4.8.0-6
 - Renamed the source package to mingw-qt (RHBZ #800447)
 - Use mingw macros without leading underscore
diff --git a/qmake.conf b/qmake.conf
index 0f2a0ec..22a1d07 100644
--- a/qmake.conf
+++ b/qmake.conf
@@ -109,3 +109,5 @@ QMAKE_STRIP		= i686-w64-mingw32-strip
 QMAKE_STRIPFLAGS_LIB 	+= --strip-unneeded
 
 load(qt_config)
+
+#QT_LIBINFIX             = 4
diff --git a/qt-4.7.3-fix-loading-openssl.patch b/qt-4.7.3-fix-loading-openssl.patch
new file mode 100644
index 0000000..26fb386
--- /dev/null
+++ b/qt-4.7.3-fix-loading-openssl.patch
@@ -0,0 +1,35 @@
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index a4cc3c4..5e052ac 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -369,14 +369,27 @@ static QPair<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
+     if (!ssleay32->load(false)) {
+         // Cannot find ssleay32.dll
+         delete ssleay32;
+-        return pair;
++        ssleay32 = new QSystemLibrary(QLatin1String("libssl-OPENSSL_SONAME"));
++        if (!ssleay32->load(false)) {
++            // Cannot find libssl-OPENSSL_SONAME.dll
++            // in our cross-build that's the same as ssleay32.dll
++            delete ssleay32;
++            return pair;
++        }
+     }
+
+     QSystemLibrary *libeay32 = new QSystemLibrary(QLatin1String("libeay32"));
+     if (!libeay32->load(false)) {
+-        delete ssleay32;
++        // Cannot find libeay32.dll
+         delete libeay32;
+-        return pair;
++        libeay32 = new QSystemLibrary(QLatin1String("libcrypto-OPENSSL_SONAME"));
++        if (!libeay32->load(false)) {
++            // Cannot find libcrypto-OPENSSL_SONAME.dll
++            // in our cross-build that's the same as libeay32.dll
++            delete libeay32;
++            delete ssleay32;
++            return pair;
++        }
+     }
+
+     pair.first = ssleay32;
diff --git a/qt-4.8.0-build-qtuitools-dynamically.patch b/qt-4.8.0-build-qtuitools-dynamically.patch
new file mode 100644
index 0000000..4be0482
--- /dev/null
+++ b/qt-4.8.0-build-qtuitools-dynamically.patch
@@ -0,0 +1,21 @@
+diff --git a/tools/designer/src/uitools/uitools.pro b/tools/designer/src/uitools/uitools.pro
+index be46afc..b013942 100644
+--- a/tools/designer/src/uitools/uitools.pro
++++ b/tools/designer/src/uitools/uitools.pro
+@@ -1,7 +1,7 @@
+ TEMPLATE = lib
+ TARGET = QtUiTools
+ QT += xml
+-CONFIG += qt staticlib
++CONFIG += qt shared
+ DESTDIR = ../../../../lib
+ DLLDESTDIR = ../../../../bin
+ 
+@@ -10,7 +10,6 @@ symbian {
+     load(armcc_warnings)
+ }
+ 
+-win32|mac:!macx-xcode:CONFIG += debug_and_release build_all
+ 
+ DEFINES += QFORMINTERNAL_NAMESPACE QT_DESIGNER_STATIC QT_FORMBUILDER_NO_SCRIPT
+ isEmpty(QT_MAJOR_VERSION) {
diff --git a/qt-4.8.0-fix-include-windows-h.patch b/qt-4.8.0-fix-include-windows-h.patch
new file mode 100644
index 0000000..4e119f9
--- /dev/null
+++ b/qt-4.8.0-fix-include-windows-h.patch
@@ -0,0 +1,13 @@
+diff --git a/tools/linguist/shared/profileevaluator.cpp b/tools/linguist/shared/profileevaluator.cpp
+index 0539efa..f8767b7 100644
+--- a/tools/linguist/shared/profileevaluator.cpp
++++ b/tools/linguist/shared/profileevaluator.cpp
+@@ -65,7 +65,7 @@
+ #include <unistd.h>
+ #include <sys/utsname.h>
+ #else
+-#include <Windows.h>
++#include <windows.h>
+ #endif
+ #include <stdio.h>
+ #include <stdlib.h>
diff --git a/qt-dont-perform-ipc-checks-for-win32.patch b/qt-dont-perform-ipc-checks-for-win32.patch
new file mode 100644
index 0000000..b4ba3bc
--- /dev/null
+++ b/qt-dont-perform-ipc-checks-for-win32.patch
@@ -0,0 +1,11 @@
+--- configure.orig	2012-01-06 02:24:15.275264839 +0100
++++ configure	2012-01-06 02:25:00.946220996 +0100
+@@ -5157,7 +5157,7 @@
+ fi
+ 
+ # check IPC support
+-if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
++if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" -a "$XPLATFORM_MINGW" = "no" ]; then
+     # Raptor does not support configure tests.
+     if ! "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/ipc_sysv "ipc_sysv" $L_FLAGS $I_FLAGS $l_FLAGS ; then
+         # SYSV IPC is not supported - check POSIX IPC
diff --git a/qt-fix-javascript-jit-on-mingw-x86_64.patch b/qt-fix-javascript-jit-on-mingw-x86_64.patch
new file mode 100644
index 0000000..5171f18
--- /dev/null
+++ b/qt-fix-javascript-jit-on-mingw-x86_64.patch
@@ -0,0 +1,22 @@
+--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp.orig	2012-02-08 18:42:31.512669347 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp	2012-02-08 18:43:18.812512826 +0100
+@@ -68,7 +68,7 @@
+ 
+ namespace JSC {
+ 
+-#if OS(DARWIN) || OS(WINDOWS)
++#if OS(DARWIN) || (OS(WINDOWS) && CPU(X86))
+ #define SYMBOL_STRING(name) "_" #name
+ #else
+ #define SYMBOL_STRING(name) #name
+--- qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.orig	2012-02-08 18:56:13.967325973 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h	2012-02-08 18:58:18.977552112 +0100
+@@ -1120,7 +1120,7 @@
+ /* Pick which allocator to use; we only need an executable allocator if the assembler is compiled in.
+    On x86-64 we use a single fixed mmap, on other platforms we mmap on demand. */
+ #if ENABLE(ASSEMBLER)
+-#if CPU(X86_64)
++#if CPU(X86_64) && !OS(WINDOWS)
+ #define ENABLE_EXECUTABLE_ALLOCATOR_FIXED 1
+ #else
+ #define ENABLE_EXECUTABLE_ALLOCATOR_DEMAND 1
diff --git a/qt-merge-static-and-shared-library-trees.patch b/qt-merge-static-and-shared-library-trees.patch
new file mode 100644
index 0000000..c757293
--- /dev/null
+++ b/qt-merge-static-and-shared-library-trees.patch
@@ -0,0 +1,248 @@
+--- usr/i686-w64-mingw32/sys-root/mingw/include/QtCore/qconfig.h.orig	2011-12-25 21:03:37.022018831 +0100
++++ usr/i686-w64-mingw32/sys-root/mingw/include/QtCore/qconfig.h	2011-12-25 21:13:50.704976445 +0100
+@@ -26,6 +26,14 @@
+ 
+ #ifndef QT_BOOTSTRAPPED
+ 
++#if defined(QT_NODLL)
++#if defined(QT_BUILTIN_GIF_READER) && defined(QT_NO_BUILTIN_GIF_READER)
++# undef QT_BUILTIN_GIF_READER
++#elif !defined(QT_BUILTIN_GIF_READER) && !defined(QT_NO_BUILTIN_GIF_READER)
++# define QT_BUILTIN_GIF_READER 1
++#endif
++#endif
++
+ #if defined(QT_NO_ALSA) && defined(QT_ALSA)
+ # undef QT_NO_ALSA
+ #elif !defined(QT_NO_ALSA) && !defined(QT_ALSA)
+@@ -80,6 +88,7 @@
+ # define QT_NO_ICD
+ #endif
+ 
++#if !defined(QT_NODLL)
+ #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG)
+ # undef QT_NO_IMAGEFORMAT_JPEG
+ #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG)
+@@ -97,6 +106,7 @@
+ #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF)
+ # define QT_NO_IMAGEFORMAT_TIFF
+ #endif
++#endif
+ 
+ #if defined(QT_NO_INOTIFY) && defined(QT_INOTIFY)
+ # undef QT_NO_INOTIFY
+@@ -176,6 +186,14 @@
+ # define QT_NO_SYSTEMSEMAPHORE
+ #endif
+ 
++#if defined(QT_NODLL)
++#if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT)
++# undef QT_NO_WEBKIT
++#elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT)
++# define QT_NO_WEBKIT
++#endif
++#endif
++
+ #if defined(QT_NO_ZLIB) && defined(QT_ZLIB)
+ # undef QT_NO_ZLIB
+ #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB)
+--- usr/i686-w64-mingw32/sys-root/mingw/include/Qt/qconfig.h.orig	2011-12-25 21:03:13.349289762 +0100
++++ usr/i686-w64-mingw32/sys-root/mingw/include/Qt/qconfig.h	2011-12-25 21:06:37.386579371 +0100
+@@ -26,6 +26,14 @@
+ 
+ #ifndef QT_BOOTSTRAPPED
+ 
++#if defined(QT_NODLL)
++#if defined(QT_BUILTIN_GIF_READER) && defined(QT_NO_BUILTIN_GIF_READER)
++# undef QT_BUILTIN_GIF_READER
++#elif !defined(QT_BUILTIN_GIF_READER) && !defined(QT_NO_BUILTIN_GIF_READER)
++# define QT_BUILTIN_GIF_READER 1
++#endif
++#endif
++
+ #if defined(QT_NO_ALSA) && defined(QT_ALSA)
+ # undef QT_NO_ALSA
+ #elif !defined(QT_NO_ALSA) && !defined(QT_ALSA)
+@@ -80,6 +88,7 @@
+ # define QT_NO_ICD
+ #endif
+ 
++#if !defined(QT_NODLL)
+ #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG)
+ # undef QT_NO_IMAGEFORMAT_JPEG
+ #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG)
+@@ -97,6 +106,7 @@
+ #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF)
+ # define QT_NO_IMAGEFORMAT_TIFF
+ #endif
++#endif
+ 
+ #if defined(QT_NO_INOTIFY) && defined(QT_INOTIFY)
+ # undef QT_NO_INOTIFY
+@@ -176,6 +186,14 @@
+ # define QT_NO_SYSTEMSEMAPHORE
+ #endif
+ 
++#if defined(QT_NODLL)
++#if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT)
++# undef QT_NO_WEBKIT
++#elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT)
++# define QT_NO_WEBKIT
++#endif
++#endif
++
+ #if defined(QT_NO_ZLIB) && defined(QT_ZLIB)
+ # undef QT_NO_ZLIB
+ #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB)
+--- usr/i686-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/qconfig.pri.orig	2011-12-25 21:09:01.616032758 +0100
++++ usr/i686-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/qconfig.pri	2011-12-25 21:12:14.685003350 +0100
+@@ -2,7 +2,11 @@
+ CONFIG +=  def_files_disabled exceptions rtti no_mocdepend release stl qt_no_framework
+ QT_ARCH = windows
+ QT_EDITION = OpenSource
+-QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg system-png png system-tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++contains(CONFIG, static) {
++   QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg jpeg mng system-png png gif system-tiff tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++} else {
++   QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg system-png png system-tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++}
+ 
+ #versioning
+ QT_VERSION = 4.8.0
+--- usr/i686-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/features/win32/default_post.prf.orig	2011-12-26 02:29:56.365208473 +0100
++++ usr/i686-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/features/win32/default_post.prf	2011-12-26 02:31:03.650208601 +0100
+@@ -6,6 +6,10 @@
+     }
+ }
+ 
++contains(CONFIG, static) {
++    QMAKE_LFLAGS += -static
++}
++
+ # Now load the global default_post
+ load(default_post)
+ 
+--- usr/x86_64-w64-mingw32/sys-root/mingw/include/QtCore/qconfig.h.orig	2011-12-25 21:03:37.022018831 +0100
++++ usr/x86_64-w64-mingw32/sys-root/mingw/include/QtCore/qconfig.h	2011-12-25 21:13:50.704976445 +0100
+@@ -26,6 +26,14 @@
+ 
+ #ifndef QT_BOOTSTRAPPED
+ 
++#if defined(QT_NODLL)
++#if defined(QT_BUILTIN_GIF_READER) && defined(QT_NO_BUILTIN_GIF_READER)
++# undef QT_BUILTIN_GIF_READER
++#elif !defined(QT_BUILTIN_GIF_READER) && !defined(QT_NO_BUILTIN_GIF_READER)
++# define QT_BUILTIN_GIF_READER 1
++#endif
++#endif
++
+ #if defined(QT_NO_ALSA) && defined(QT_ALSA)
+ # undef QT_NO_ALSA
+ #elif !defined(QT_NO_ALSA) && !defined(QT_ALSA)
+@@ -80,6 +88,7 @@
+ # define QT_NO_ICD
+ #endif
+ 
++#if !defined(QT_NODLL)
+ #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG)
+ # undef QT_NO_IMAGEFORMAT_JPEG
+ #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG)
+@@ -97,6 +106,7 @@
+ #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF)
+ # define QT_NO_IMAGEFORMAT_TIFF
+ #endif
++#endif
+ 
+ #if defined(QT_NO_INOTIFY) && defined(QT_INOTIFY)
+ # undef QT_NO_INOTIFY
+@@ -176,6 +186,14 @@
+ # define QT_NO_SYSTEMSEMAPHORE
+ #endif
+ 
++#if defined(QT_NODLL)
++#if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT)
++# undef QT_NO_WEBKIT
++#elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT)
++# define QT_NO_WEBKIT
++#endif
++#endif
++
+ #if defined(QT_NO_ZLIB) && defined(QT_ZLIB)
+ # undef QT_NO_ZLIB
+ #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB)
+--- usr/x86_64-w64-mingw32/sys-root/mingw/include/Qt/qconfig.h.orig	2011-12-25 21:03:13.349289762 +0100
++++ usr/x86_64-w64-mingw32/sys-root/mingw/include/Qt/qconfig.h	2011-12-25 21:06:37.386579371 +0100
+@@ -26,6 +26,14 @@
+ 
+ #ifndef QT_BOOTSTRAPPED
+ 
++#if defined(QT_NODLL)
++#if defined(QT_BUILTIN_GIF_READER) && defined(QT_NO_BUILTIN_GIF_READER)
++# undef QT_BUILTIN_GIF_READER
++#elif !defined(QT_BUILTIN_GIF_READER) && !defined(QT_NO_BUILTIN_GIF_READER)
++# define QT_BUILTIN_GIF_READER 1
++#endif
++#endif
++
+ #if defined(QT_NO_ALSA) && defined(QT_ALSA)
+ # undef QT_NO_ALSA
+ #elif !defined(QT_NO_ALSA) && !defined(QT_ALSA)
+@@ -80,6 +88,7 @@
+ # define QT_NO_ICD
+ #endif
+ 
++#if !defined(QT_NODLL)
+ #if defined(QT_NO_IMAGEFORMAT_JPEG) && defined(QT_IMAGEFORMAT_JPEG)
+ # undef QT_NO_IMAGEFORMAT_JPEG
+ #elif !defined(QT_NO_IMAGEFORMAT_JPEG) && !defined(QT_IMAGEFORMAT_JPEG)
+@@ -97,6 +106,7 @@
+ #elif !defined(QT_NO_IMAGEFORMAT_TIFF) && !defined(QT_IMAGEFORMAT_TIFF)
+ # define QT_NO_IMAGEFORMAT_TIFF
+ #endif
++#endif
+ 
+ #if defined(QT_NO_INOTIFY) && defined(QT_INOTIFY)
+ # undef QT_NO_INOTIFY
+@@ -176,6 +186,14 @@
+ # define QT_NO_SYSTEMSEMAPHORE
+ #endif
+ 
++#if defined(QT_NODLL)
++#if defined(QT_NO_WEBKIT) && defined(QT_WEBKIT)
++# undef QT_NO_WEBKIT
++#elif !defined(QT_NO_WEBKIT) && !defined(QT_WEBKIT)
++# define QT_NO_WEBKIT
++#endif
++#endif
++
+ #if defined(QT_NO_ZLIB) && defined(QT_ZLIB)
+ # undef QT_NO_ZLIB
+ #elif !defined(QT_NO_ZLIB) && !defined(QT_ZLIB)
+--- usr/x86_64-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/qconfig.pri.orig	2011-12-25 21:09:01.616032758 +0100
++++ usr/x86_64-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/qconfig.pri	2011-12-25 21:12:14.685003350 +0100
+@@ -2,7 +2,11 @@
+ CONFIG +=  def_files_disabled exceptions rtti no_mocdepend release stl qt_no_framework
+ QT_ARCH = windows
+ QT_EDITION = OpenSource
+-QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg system-png png system-tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++contains(CONFIG, static) {
++   QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg jpeg mng system-png png gif system-tiff tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++} else {
++   QT_CONFIG +=  minimal-config small-config medium-config large-config full-config qt3support accessibility opengl reduce_exports ipv6 getaddrinfo system-jpeg system-png png system-tiff no-freetype system-zlib gnu-libiconv dbus dbus-linked openssl xmlpatterns multimedia audio-backend svg script scripttools declarative release
++}
+ 
+ #versioning
+ QT_VERSION = 4.8.0
+--- usr/x86_64-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/features/win32/default_post.prf.orig	2011-12-26 02:29:56.365208473 +0100
++++ usr/x86_64-w64-mingw32/sys-root/mingw/share/qt4/mkspecs/features/win32/default_post.prf	2011-12-26 02:31:03.650208601 +0100
+@@ -6,6 +6,10 @@
+     }
+ }
+ 
++contains(CONFIG, static) {
++    QMAKE_LFLAGS += -static
++}
++
+ # Now load the global default_post
+ load(default_post)
+ 
diff --git a/qt-revert-commit-5be6cf.patch b/qt-revert-commit-5be6cf.patch
new file mode 100644
index 0000000..82c8a3b
--- /dev/null
+++ b/qt-revert-commit-5be6cf.patch
@@ -0,0 +1,11 @@
+--- qt-everywhere-opensource-src-4.8.0/src/dbus/qdbusserver.h.orig	2012-01-03 21:31:44.886948738 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/dbus/qdbusserver.h	2012-01-03 21:32:00.057220489 +0100
+@@ -61,7 +61,7 @@
+ {
+     Q_OBJECT
+ public:
+-    QDBusServer(const QString &address = "unix:tmpdir=/tmp", QObject *parent = 0);
++    QDBusServer(const QString &address, QObject *parent = 0);
+     virtual ~QDBusServer();
+ 
+     bool isConnected() const;


More information about the scm-commits mailing list