[mingw-qt5-qtbase] Various fixes submitted by Yaakov Selkowitz (RHBZ #1048677)
Erik van Pienbroek
epienbro at fedoraproject.org
Mon Jan 6 17:22:01 UTC 2014
commit 72ed476691ecec0aa362e5f36240cc0d35b4b859
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date: Mon Jan 6 18:20:02 2014 +0100
Various fixes submitted by Yaakov Selkowitz (RHBZ #1048677)
- Fix qmake to use .dll.a extension for implibs (avoids renaming hacks
in all mingw-qt5-* packages)
- Force usage of system zlib in Qt5Bootstrap
- Install shared libQt5BootstrapDBus for qdbuscpp2xml and qdbusxml2cpp
- Fix QMAKE_LIBS_NETWORK for static linkage
mingw-qt5-qtbase.spec | 50 ++++++++++++++++++++----------
qt5-dont-build-host-libs-static.patch | 8 +++++
qt5-qmake-implib-dll-a.patch | 20 ++++++++++++
qt5-use-system-zlib-in-host-libs.patch | 11 +++++++
qt5-use-win32-g++-mkspecs-profile.patch | 3 +-
5 files changed, 74 insertions(+), 18 deletions(-)
---
diff --git a/mingw-qt5-qtbase.spec b/mingw-qt5-qtbase.spec
index cb087f4..20824ba 100644
--- a/mingw-qt5-qtbase.spec
+++ b/mingw-qt5-qtbase.spec
@@ -20,7 +20,7 @@
Name: mingw-qt5-qtbase
Version: 5.2.0
-Release: 1%{?pre:.%{pre}}%{?snapshot_date:.git%{snapshot_date}.%{snapshot_rev}}%{?dist}
+Release: 2%{?pre:.%{pre}}%{?snapshot_date:.git%{snapshot_date}.%{snapshot_rev}}%{?dist}
Summary: Qt5 for Windows - QtBase component
License: GPLv3 with exceptions or LGPLv2 with exceptions
@@ -72,6 +72,9 @@ Patch2: qt5-dont-add-resource-files-to-qmake-libs.patch
# files for the debug build an unique file name
Patch3: qt5-prevent-debug-library-names-in-pkgconfig-files.patch
+# Fix qmake to create implibs with .dll.a extension for MinGW
+Patch4: qt5-qmake-implib-dll-a.patch
+
###########################
# Fedora specific patches #
###########################
@@ -117,6 +120,10 @@ Patch106: qt5-dont-build-host-libs-static.patch
# want to avoid conflicts with the native qt5 packages
Patch107: qt5-enable-rpath-for-host-tools.patch
+# Build host libs with system zlib. This patch cannot be upstreamed as-is
+# due to the other host-libs patches.
+Patch108: qt5-use-system-zlib-in-host-libs.patch
+
BuildRequires: mingw32-filesystem >= 95
BuildRequires: mingw32-gcc
BuildRequires: mingw32-gcc-c++
@@ -126,7 +133,6 @@ BuildRequires: mingw32-zlib
BuildRequires: mingw32-win-iconv
BuildRequires: mingw32-libjpeg-turbo
BuildRequires: mingw32-libpng
-BuildRequires: mingw32-libtiff
BuildRequires: mingw32-sqlite
BuildRequires: mingw32-dbus
BuildRequires: mingw32-pkg-config
@@ -143,7 +149,6 @@ BuildRequires: mingw64-zlib
BuildRequires: mingw64-win-iconv
BuildRequires: mingw64-libjpeg-turbo
BuildRequires: mingw64-libpng
-BuildRequires: mingw64-libtiff
BuildRequires: mingw64-sqlite
BuildRequires: mingw64-dbus
BuildRequires: mingw64-pkg-config
@@ -158,6 +163,8 @@ BuildRequires: dos2unix
BuildRequires: flex
BuildRequires: bison
+# For Qt5Bootstrap
+BuildRequires: pkgconfig(zlib)
%description
This package contains the Qt software toolkit for developing
@@ -262,6 +269,7 @@ Static version of the mingw64-qt5-qtbase library.
%patch1 -p0 -b .pkgconfig
%patch2 -p1 -b .res
%patch3 -p1 -b .pkgconfig_debug
+%patch4 -p1 -b .qmake_implib
%patch100 -p0
%patch101 -p0
@@ -271,12 +279,13 @@ Static version of the mingw64-qt5-qtbase library.
%patch105 -p1 -b .pcre
%patch106 -p0
%patch107 -p1
+%patch108 -p1 -b .host_system_zlib
# Make sure the Qt5 build system uses our external ANGLE library
rm -rf src/3rdparty/angle include/QtANGLE/{EGL,GLES2,KHR}
-# As well as our external PCRE library
-rm -rf src/3rdparty/pcre
+# As well as our external PCRE library and zlib
+rm -rf src/3rdparty/{pcre,zlib}
%build
@@ -365,9 +374,9 @@ pushd ../build_release_static_win32
make %{?_smp_mflags}
popd
-# The LD_LIBRARY_PATH override is needed because libQt5Bootstrap is a shared
-# library which various compiled tools (like moc) use. As the libQt5Bootstrap
-# library isn't installed at this point yet, we have to workaround this
+# The LD_LIBRARY_PATH override is needed because libQt5Bootstrap* are shared
+# libraries which various compiled tools (like moc) use. As the libQt5Bootstrap*
+# libraries aren't installed at this point yet, we have to workaround this
rm -rf ../build_release_shared_win32
mkdir ../build_release_shared_win32
pushd ../build_release_shared_win32
@@ -420,15 +429,6 @@ make install -C ../build_release_static_win64$BUILDDIR INSTALL_ROOT=$RPM_BUILD_R
sed -i s@'"%{_prefix}/%{mingw32_target}/lib" '@@g $RPM_BUILD_ROOT%{mingw32_datadir}/qt5/mkspecs/qconfig.pri
sed -i s@'"%{_prefix}/%{mingw64_target}/lib" '@@g $RPM_BUILD_ROOT%{mingw64_datadir}/qt5/mkspecs/qconfig.pri
-# 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 $RPM_BUILD_ROOT%{mingw64_libdir}/*.a ; do
- # Ignore libqtmain*.a
- echo $FN | grep -q qtmain && continue
-
- FN_NEW=$(echo $FN | sed s/'.a$'/'.dll.a'/)
- mv $FN $FN_NEW
-done
-
# Drop the qtmain and libQt5Bootstrap static libraries from the static
# tree as they're already part of the main tree
rm -f $RPM_BUILD_ROOT/static/%{mingw32_libdir}/libqtmain*
@@ -460,10 +460,14 @@ rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/*.prl
# Remove various unneeded files belonging to the Qt5Bootstrap library
rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.la
rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.prl
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.la
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.prl
rm -rf $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/pkgconfig
rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.la
rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.prl
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.la
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.prl
rm -rf $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/pkgconfig
# Add qtchooser support
@@ -605,12 +609,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
%{_prefix}/%{mingw32_target}/bin/qt5/syncqt.pl
%{_prefix}/%{mingw32_target}/bin/qt5/uic
%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.so.5*
+%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.so.5*
%{mingw32_datadir}/qt5/
# not editable config files, so not using %%config here
%{_sysconfdir}/xdg/qtchooser/mingw32-qt5.conf
%files -n mingw32-qt5-qtbase-devel
%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.so
+%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.so
%files -n mingw32-qt5-qtbase-static
%{mingw32_libdir}/libQt5Concurrent.a
@@ -737,12 +743,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
%{_prefix}/%{mingw64_target}/bin/qt5/syncqt.pl
%{_prefix}/%{mingw64_target}/bin/qt5/uic
%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.so.5*
+%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.so.5*
%{mingw64_datadir}/qt5/
# not editable config files, so not using %%config here
%{_sysconfdir}/xdg/qtchooser/mingw64-qt5.conf
%files -n mingw64-qt5-qtbase-devel
%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.so
+%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.so
%files -n mingw64-qt5-qtbase-static
%{mingw64_libdir}/libQt5Concurrent.a
@@ -761,6 +769,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
%changelog
+* Sun Jan 5 2014 Yaakov Selkowitz <yselkowitz at users.sourceforge.net> - 5.2.0-2
+- Fix qmake to use .dll.a extension for implibs (avoids renaming hacks in
+ all mingw-qt5-* packages)
+- Force usage of system zlib in Qt5Bootstrap
+- Install shared libQt5BootstrapDBus for qdbuscpp2xml and qdbusxml2cpp
+- Fix QMAKE_LIBS_NETWORK for static linkage
+- Closes RHBZ #1048677
+
* Sun Jan 5 2014 Erik van Pienbroek <epienbro at fedoraproject.org> - 5.2.0-1
- Update to 5.2.0
- Use the generic win32-g++ mkspecs profile instead of win32-g++-cross
diff --git a/qt5-dont-build-host-libs-static.patch b/qt5-dont-build-host-libs-static.patch
index 4ea6262..9e430e4 100644
--- a/qt5-dont-build-host-libs-static.patch
+++ b/qt5-dont-build-host-libs-static.patch
@@ -9,3 +9,11 @@
host_build {
QT -= gui # no host module will ever use gui
+--- src/tools/bootstrap-dbus/bootstrap-dbus.pro.orig 2013-12-08 11:09:47.000000000 -0600
++++ src/tools/bootstrap-dbus/bootstrap-dbus.pro 2014-01-05 23:06:13.575543400 -0600
+@@ -30,4 +30,4 @@
+ ../../dbus/qdbusunixfiledescriptor.cpp
+
+ lib.CONFIG = dummy_install
+-INSTALLS = lib
++INSTALLS += lib
diff --git a/qt5-qmake-implib-dll-a.patch b/qt5-qmake-implib-dll-a.patch
new file mode 100644
index 0000000..23b6d70
--- /dev/null
+++ b/qt5-qmake-implib-dll-a.patch
@@ -0,0 +1,20 @@
+--- a/qmake/generators/win32/mingw_make.cpp 2013-08-25 13:04:06.000000000 -0500
++++ b/qmake/generators/win32/mingw_make.cpp 2014-01-02 01:24:31.640046700 -0600
+@@ -71,7 +71,7 @@ QString MingwMakefileGenerator::escapeDe
+
+ QString MingwMakefileGenerator::getLibTarget()
+ {
+- return QString("lib" + project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".a");
++ return QString("lib" + project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".dll.a");
+ }
+
+ bool MingwMakefileGenerator::findLibraries()
+@@ -274,7 +274,7 @@ void MingwMakefileGenerator::init()
+ if(!project->first("DESTDIR").isEmpty())
+ destDir = Option::fixPathToTargetOS(project->first("DESTDIR") + Option::dir_sep, false, false);
+ project->values("MINGW_IMPORT_LIB").prepend(destDir + "lib" + project->first("TARGET")
+- + project->first("TARGET_VERSION_EXT") + ".a");
++ + project->first("TARGET_VERSION_EXT") + ".dll.a");
+ project->values("QMAKE_LFLAGS").append(QString("-Wl,--out-implib,") + project->first("MINGW_IMPORT_LIB"));
+ }
+
diff --git a/qt5-use-system-zlib-in-host-libs.patch b/qt5-use-system-zlib-in-host-libs.patch
new file mode 100644
index 0000000..eccd9e4
--- /dev/null
+++ b/qt5-use-system-zlib-in-host-libs.patch
@@ -0,0 +1,11 @@
+--- a/src/tools/bootstrap/bootstrap.pro 2014-01-01 13:22:42.367935800 -0600
++++ b/src/tools/bootstrap/bootstrap.pro 2014-01-02 23:38:20.707687700 -0600
+@@ -148,7 +148,7 @@ macx {
+
+ *-g++*: QMAKE_CXXFLAGS += -ffunction-sections
+
+-if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri)
++if(contains(QT_CONFIG, zlib)):include(../../3rdparty/zlib.pri)
+ else:include(../../3rdparty/zlib_dependency.pri)
+
+ win32:LIBS += -luser32 -lole32 -ladvapi32
diff --git a/qt5-use-win32-g++-mkspecs-profile.patch b/qt5-use-win32-g++-mkspecs-profile.patch
index 8743e34..cef490f 100644
--- a/qt5-use-win32-g++-mkspecs-profile.patch
+++ b/qt5-use-win32-g++-mkspecs-profile.patch
@@ -28,9 +28,10 @@
QMAKE_LIBS =
-QMAKE_LIBS_CORE = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
-QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32
+-QMAKE_LIBS_NETWORK = -lws2_32
+QMAKE_LIBS_CORE = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lz -lpcre16
+QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 -ljpeg -lpng
- QMAKE_LIBS_NETWORK = -lws2_32
++QMAKE_LIBS_NETWORK = -lws2_32 -lcrypt32 -ldnsapi
QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32
-QMAKE_LIBS_OPENGL_ES2 = -llibEGL -llibGLESv2 -lgdi32 -luser32
-QMAKE_LIBS_OPENGL_ES2_DEBUG = -llibEGLd -llibGLESv2d -lgdi32 -luser32
More information about the scm-commits
mailing list