2016-02-03 20:42:14 +01:00
# Maintainer: Martchus <martchus@gmx.net>
# Contributor: ant32 <antreimer@gmail.com>
# Contributor: Filip Brcic <brcha@gna.org>
2016-03-25 21:43:59 +01:00
# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where
# you also find the URL of a binary repository.
2016-07-22 00:53:39 +02:00
# Includes dynamic and static versions; if only one version is requried, just
# set $NO_STATIC_LIBS or $NO_SHARED_LIBS.
# For QQuickWidgetPlugin, add mingw-w64-qt5-declarative to dependencies (already present by default)
# For QWebViewPlugin, add mingw-w64-qt5-webkit to dependencies
# For QAxWidgetPlugin, add mingw-w64-qt5-activeqt to dependencies
2016-09-19 22:18:45 +02:00
# All patches are managed at https://github.com/Martchus/qttools
2016-02-03 20:42:14 +01:00
_qt_module = qttools
pkgname = "mingw-w64-qt5-tools"
2019-06-14 19:09:09 +02:00
pkgver = 5.13.0
2019-02-02 18:18:25 +01:00
pkgrel = 1
2016-06-19 15:18:37 +02:00
arch = ( 'i686' 'x86_64' )
2016-02-03 20:42:14 +01:00
pkgdesc = "A cross-platform application and UI framework (Development Tools, QtHelp; mingw-w64)"
2016-04-25 23:52:10 +02:00
depends = ( 'mingw-w64-qt5-declarative' )
2019-06-14 19:09:09 +02:00
makedepends = ( 'mingw-w64-gcc' 'mingw-w64-pkg-config' 'mingw-w64-postgresql' 'mingw-w64-mariadb-connector-c' 'mingw-w64-vulkan-headers' )
2016-02-03 20:42:14 +01:00
options = ( '!strip' '!buildflags' 'staticlibs' )
2017-01-23 21:37:13 +01:00
groups = ( 'mingw-w64-qt5' )
2016-07-22 00:53:39 +02:00
license = ( 'GPL3' 'LGPL3' 'FDL' 'custom' )
2017-01-23 21:37:13 +01:00
url = 'https://www.qt.io/'
2017-12-08 19:49:53 +01:00
_pkgfqn = " ${ _qt_module } -everywhere-src- ${ pkgver } "
source = ( " https://download.qt.io/official_releases/qt/ ${ pkgver %.* } / ${ pkgver } /submodules/ ${ _pkgfqn } .tar.xz "
2019-03-16 16:58:50 +01:00
'0001-Fix-linguist-macro.patch' )
2019-06-14 19:09:09 +02:00
sha256sums = ( 'a7887a618dc6434c2567521990c2a7ca72ca6a8379c1d93c5aa6c1798d7a0819'
'49dfa10ed824ea1885f56ff999bd5cda8e88fc32c16d5646b2bd62fd4ff9ad2f' )
2016-07-22 00:53:39 +02:00
_architectures = 'i686-w64-mingw32 x86_64-w64-mingw32'
2019-02-02 18:18:25 +01:00
# can not use static MySQL and PostgreSQL plugin because mariadb-connector-c and posgresql come with their own pthread implementation
# which has conflicting symbols with the pthread library Qt uses, e.g. one would get the following error message:
#/usr/lib/gcc/i686-w64-mingw32/8.2.0/../../../../i686-w64-mingw32/bin/ld: /usr/i686-w64-mingw32/lib/libpthread.a(libwinpthread_la-mutex.o): in function `pthread_mutex_lock': /build/mingw-w64-winpthreads/src/mingw-w64-v6.0.0/mingw-w64-libraries/winpthreads/src/mutex.c:187: multiple definition of `pthread_mutex_lock'; /usr/i686-w64-mingw32/lib/libpq.a(pthread-win32.o):(.text+0x70): first defined here
2016-07-22 00:53:39 +02:00
[ [ $NO_STATIC_LIBS ] ] || \
makedepends += ( 'mingw-w64-qt5-base-static' ) \
optdepends += ( 'mingw-w64-qt5-base-static: use of static libraries' ) \
2019-02-02 18:18:25 +01:00
_configurations += ( 'CONFIG+=no_smart_library_merge QTPLUGIN.sqldrivers=qsqlite QTPLUGIN.sqldrivers+=qsqlodbc CONFIG+=static' )
2016-07-22 00:53:39 +02:00
[ [ $NO_SHARED_LIBS ] ] || \
2017-06-30 22:27:38 +02:00
_configurations += ( 'CONFIG+=actually_a_shared_build CONFIG+=shared' )
2016-07-22 00:53:39 +02:00
prepare( ) {
cd " ${ srcdir } / ${ _pkgfqn } "
2016-02-03 20:42:14 +01:00
2018-05-23 20:56:49 +02:00
# apply patches; further descriptions can be found in patch files itself
2016-09-19 22:18:45 +02:00
for patch in " $srcdir / " *.patch; do
patch -p1 -i " $patch "
done
2016-07-22 00:53:39 +02:00
}
2016-02-03 20:42:14 +01:00
2016-07-22 00:53:39 +02:00
build( ) {
2016-02-03 20:42:14 +01:00
cd " ${ srcdir } / ${ _pkgfqn } "
for _arch in ${ _architectures } ; do
2016-07-22 00:53:39 +02:00
for _config in " ${ _configurations [@] } " ; do
msg2 " Building ${ _config ##*= } version for ${ _arch } "
mkdir -p build-${ _arch } -${ _config ##*= } && pushd build-${ _arch } -${ _config ##*= }
${ _arch } -qmake-qt5 ../${ _qt_module } .pro ${ _config }
make
popd
done
2016-02-03 20:42:14 +01:00
done
}
package( ) {
cd " ${ srcdir } / ${ _pkgfqn } "
for _arch in ${ _architectures } ; do
2016-07-22 00:53:39 +02:00
for _config in " ${ _configurations [@] } " ; do
pushd build-${ _arch } -${ _config ##*= }
make INSTALL_ROOT = " $pkgdir " install
2018-02-15 00:14:36 +01:00
2018-05-23 20:56:49 +02:00
# use prl files from build directory since installed prl files seem to have incorrect QMAKE_PRL_LIBS_FOR_CMAKE
2018-02-15 00:14:36 +01:00
if [ [ -d 'lib' ] ] ; then
pushd 'lib'
find -iname '*.static.prl' -exec cp --target-directory " ${ pkgdir } /usr/ ${ _arch } /lib " --parents { } +
popd
fi
if [ [ -d 'plugins' ] ] ; then
pushd 'plugins'
find -iname '*.static.prl' -exec cp --target-directory " ${ pkgdir } /usr/ ${ _arch } /lib/qt/plugins " --parents { } +
popd
fi
2018-05-23 20:56:49 +02:00
# replace library path in *.prl files so it points to the installed location and not the build directory
find " ${ pkgdir } /usr/ ${ _arch } /lib " \( -type f -name '*.prl' -o -name '*.pc' \) -exec sed -i -e " s: $PWD /lib:/usr/ $_arch /lib:g " { } \;
# remove prl files for debug version
if ! [ [ $MINGW_W64_QT_DEBUG_BUILD ] ] ; then
for file in $( find " ${ pkgdir } /usr/ ${ _arch } " -name '*d.prl' -o -name '*d.static.prl' ) ; do
[ -f " ${ file %d* } ${ file ##*d } " ] && rm " ${ file } " ;
done
fi
find " ${ pkgdir } /usr/ ${ _arch } /lib " -maxdepth 1 -name '*.dll' -delete
2016-08-18 01:07:18 +02:00
[ " $NO_STATIC_EXECUTABLES " -a " ${ _config ##*= } " = static -o " $NO_EXECUTABLES " ] && \
2018-05-23 20:56:49 +02:00
find " ${ pkgdir } /usr/ ${ _arch } " -name '*.exe' -delete || \
find " ${ pkgdir } /usr/ ${ _arch } " -name '*.exe' -exec ${ _arch } -strip --strip-all { } \;
find " ${ pkgdir } /usr/ ${ _arch } " -name '*.dll' -exec ${ _arch } -strip --strip-unneeded { } \;
find " ${ pkgdir } /usr/ ${ _arch } " \( -name '*.a' -not -name 'libQt5QmlDevTools.a' -not -name 'libQt5Bootstrap.a' \) -exec ${ _arch } -strip -g { } \;
2016-08-18 01:07:18 +02:00
[ [ -d " ${ pkgdir } /usr/ ${ _arch } /lib/qt/bin/ " ] ] && \
find " ${ pkgdir } /usr/ ${ _arch } /lib/qt/bin/ " -exec strip --strip-all { } \;
2016-07-22 00:53:39 +02:00
find " ${ pkgdir } /usr/ ${ _arch } /lib/ " -iname " *.so. $pkgver " -exec strip --strip-unneeded { } \;
2018-05-23 20:56:49 +02:00
# create symlinks for tools
2016-07-22 00:53:39 +02:00
mkdir -p " ${ pkgdir } /usr/bin "
2018-03-18 00:53:16 +01:00
for tool in lconvert lupdate lrelease windeployqt; do
2016-07-22 00:53:39 +02:00
ln -sf " ../ ${ _arch } /lib/qt/bin/ ${ tool } " " ${ pkgdir } /usr/bin/ ${ _arch } - $tool -qt5 "
done
2018-05-23 20:56:49 +02:00
# remove phrasebooks
2016-07-22 00:53:39 +02:00
# Would save around 300 KiB on your floppy disk, I keep them by default because
# phrasebooks might be useful when using Linguist
#rm -r "${pkgdir}/usr/${_arch}/share"
popd
2016-02-03 20:42:14 +01:00
done
2018-02-15 00:14:36 +01:00
2018-05-23 20:56:49 +02:00
# drop QMAKE_PRL_BUILD_DIR because reference the build dir
2018-02-15 00:14:36 +01:00
find " ${ pkgdir } /usr/ ${ _arch } /lib " -type f -name '*.prl' -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' { } \;
2016-07-22 00:53:39 +02:00
done
2016-02-03 20:42:14 +01:00
2018-05-23 20:56:49 +02:00
# make sure the executables don't conflict with their mingw-qt4 counterpart
2016-07-22 00:53:39 +02:00
for _arch in ${ _architectures } ; do
for exe_file in " ${ pkgdir } /usr/ ${ _arch } /bin/ " *.exe; do
2016-08-18 01:07:18 +02:00
[ [ -f $exe_file ] ] && mv " ${ exe_file } " " ${ exe_file %.exe } -qt5.exe "
2016-02-03 20:42:14 +01:00
done
2017-02-24 21:22:33 +01:00
# Fix the path to executables in cmake config files
sed -i "s|lib/qt/bin/qcollectiongenerator|bin/qcollectiongenerator-qt5.exe|g" " ${ pkgdir } " /usr/${ _arch } /lib/cmake/Qt5Help/Qt5HelpConfigExtras.cmake
sed -i "s|lib/qt/bin/qhelpgenerator|bin/qhelpgenerator-qt5.exe|g" " ${ pkgdir } " /usr/${ _arch } /lib/cmake/Qt5Help/Qt5HelpConfigExtras.cmake
2016-02-03 20:42:14 +01:00
done
}