From 6c15647858e866d1366de57f49e52a4a2b69aa0f Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Sat, 2 Aug 2014 15:06:10 -0700 Subject: [PATCH] Allow cross-building 64 bit binaries for Windows This also makes sure that we package the Qt5 translations, not the Qt4 translations. There was an odd issue that somehow a 32bit search path ended up being used by win-dll which resulted in the wrong DLLs being packaged. Signed-off-by: Dirk Hohndel --- packaging/windows/mingw-make.sh | 22 ++++++++++++++++++++-- packaging/windows/subsurface.nsi.in | 4 ---- scripts/win-ldd.pl | 7 ++++++- subsurface-install.pri | 4 ++-- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/packaging/windows/mingw-make.sh b/packaging/windows/mingw-make.sh index 387620978..e9a55ba3a 100755 --- a/packaging/windows/mingw-make.sh +++ b/packaging/windows/mingw-make.sh @@ -14,10 +14,28 @@ BASEDIR=$(dirname $0) rm $BASEDIR/subsurface.nsi > /dev/null 2>&1 rm $BASEDIR/../../ssrf-version.h > /dev/null 2>&1 -export PATH=/usr/i686-w64-mingw32/sys-root/mingw/bin:$PATH +if [[ $1 == "Qt5-64" ]] ; then + export PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/bin:$PATH +else + export PATH=/usr/i686-w64-mingw32/sys-root/mingw/bin:$PATH +fi export objdump=mingw-objdump -if [[ $1 == "Qt5" ]] ; then +if [[ $1 == "Qt5-64" ]] ; then + shift + mingw64-qmake-qt5 \ + CROSS_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw \ + QMAKE_LRELEASE=/usr/x86_64-w64-mingw32/bin/qt5/lrelease \ + QMAKE_MOC=/usr/x86_64-w64-mingw32/bin/qt5/moc \ + QMAKE_UIC=/usr/x86_64-w64-mingw32/bin/qt5/uic \ + QMAKE_RCC=/usr/x86_64-w64-mingw32/bin/qt5/rcc \ + LIBDCDEVEL=../libdivecomputer \ + LIBMARBLEDEVEL=../marble \ + LIBGIT2DEVEL=../libgit2 CONFIG+=libgit21-api \ + QMAKE_LIBDIR+=../openssl \ + $BASEDIR/../../subsurface.pro + +elif [[ $1 == "Qt5" ]] ; then shift mingw32-qmake-qt5 \ CROSS_PATH=/usr/i686-w64-mingw32/sys-root/mingw \ diff --git a/packaging/windows/subsurface.nsi.in b/packaging/windows/subsurface.nsi.in index 9190c50e0..f1af9e9e5 100644 --- a/packaging/windows/subsurface.nsi.in +++ b/packaging/windows/subsurface.nsi.in @@ -4,10 +4,6 @@ # This installer creator needs to be run with: # makensis subsurface.nsi # -# It assumes that packaging/windows/dll is a symlink to -# the directory in which the required Windows DLLs are installed -# (in my case that's /usr/i686-w64-mingw32/sys-root/mingw/bin) -# #-------------------------------- # Include Modern UI diff --git a/scripts/win-ldd.pl b/scripts/win-ldd.pl index e3aa505de..9a303d325 100644 --- a/scripts/win-ldd.pl +++ b/scripts/win-ldd.pl @@ -3,7 +3,12 @@ use strict; my %deploy; my $objdump = $ENV{objdump} ? $ENV{objdump} : "objdump"; my @searchdirs; -my @systemdirs = (qr|^c:/windows|i, qr|^c:/winnt|i, qr|^/c/windows|i, qr|^/c/winnt|); +my @systemdirs; +if ($ENV{PATH} =~ "x86_64") { + @systemdirs = (qr|^c:/windows|i, qr|^c:/winnt|i, qr|^/c/windows|i, qr|^/c/winnt|, qr|^/usr/i686|); +} else { + @systemdirs = (qr|^c:/windows|i, qr|^c:/winnt|i, qr|^/c/windows|i, qr|^/c/winnt|); +} sub addDependenciesFor($) { open OBJDUMP, "-|", $objdump, "-p", $_[0] or die; diff --git a/subsurface-install.pri b/subsurface-install.pri index 0fec89d32..c06f5bd30 100644 --- a/subsurface-install.pri +++ b/subsurface-install.pri @@ -4,10 +4,10 @@ theme.files = $$THEME_FILES translation.files = $$replace(TRANSLATIONS, .ts, .qm) exists($$[QT_INSTALL_TRANSLATIONS]) { qt_translation_dir = $$[QT_INSTALL_TRANSLATIONS] -} else: exists(/usr/share/qt4/translations) { +} else: exists(/usr/share/qt5/translations) { # On some cross-compilation environments, the translations are either missing or not # where they're expected to be. In such cases, try copying from the system. - qt_translation_dir = /usr/share/qt4/translations + qt_translation_dir = /usr/share/qt5/translations } # Prepend the Qt translation dir so we can actually find the files