build-system: enable both 32 & 64 bit Windows builds

The 32bit build won't include libmtp and therefore won't support the Garmin
Descent Mk2/Mk2i.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-10-30 14:14:28 -07:00
parent f425bbbde3
commit 20d97f7bff
2 changed files with 43 additions and 23 deletions

View file

@ -5,13 +5,18 @@ cd /__w
[ ! -d mxe ] || ln -s /win/mxe .
# grab the version number
cd subsurface
VERSION=$(./scripts/get-version linux)
cd ..
# prep the container
bash subsurface/.github/workflows/scripts/windows-container-prep.sh
# remove artifact from prior builds
rm -f mdbtools/include/mdbver.h
# build the installer
# build the 64bit installer
rm -rf win64
mkdir win64
cd win64
@ -20,9 +25,20 @@ cd win64
export MXEBUILDTYPE=x86_64-w64-mingw32.shared
export PATH=/win/mxe/usr/bin:$PATH
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer
mv subsurface/subsurface-*.exe /__w
mv subsurface/subsurface-$VERSION.exe /__w
bash -ex ../subsurface/packaging/windows/smtk2ssrf-mxe-build.sh -a -i
mv smtk-import/smtk2ssrf*.exe /__w
mv smtk-import/smtk2ssrf-$VERSION.exe /__w
# build the 32bit installer
cd /__w
rm -rf win32
mkdir win32
cd win32
# build Subsurface and then smtk2ssrf
export MXEBUILDTYPE=i686-w64-mingw32.shared
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer
mv subsurface/subsurface-$VERSION.exe /__w/subsurface-32bit-$VERSION.exe

View file

@ -1,6 +1,6 @@
#!/bin/bash -e
# build Subsurface for Win32
# build Subsurface for Windows
#
# this file assumes that you have installed MXE on your system
# and installed a number of dependencies as well.
@ -153,26 +153,30 @@ if [ ! -f libdivecomputer/configure ] ; then
autoreconf --install
fi
# build libmtp as that isn't available via MXE
cd "$BUILDDIR"
if [[ ! -d libmtp || -f build.libmtp ]] ; then
rm -f build.libmtp
cd "$BASEDIR/libmtp"
export NOCONFIGURE=1
# crudely disable the interactive part of autogen.sh
sed --in-place=.bak 's/read IN/IN="N"/;s/echo "Auto/#echo "Auto/' autogen.sh
bash autogen.sh
mv autogen.sh.bak autogen.sh
# if this is a 64bit build then build libmtp as that isn't available via MXE
# for 32bit builds the library currently fails to build, so support for
# MTP devices (right now just the Garmin Descent Mk2/Mk2i) is not available on 32bit Windows
if [ "$MXEBUILDTYPE" = "x86_64-w64-mingw32.shared" ] ; then
cd "$BUILDDIR"
mkdir -p libmtp
cd libmtp
"$BASEDIR"/libmtp/configure \
CC="$MXEBUILDTYPE"-gcc \
--host="$MXEBUILDTYPE" \
--enable-shared \
--prefix="$BASEDIR"/"$MXEDIR"/usr/"$MXEBUILDTYPE"
make $JOBS
make install
if [[ ! -d libmtp || -f build.libmtp ]] ; then
rm -f build.libmtp
cd "$BASEDIR/libmtp"
export NOCONFIGURE=1
# crudely disable the interactive part of autogen.sh
sed --in-place=.bak 's/read IN/IN="N"/;s/echo "Auto/#echo "Auto/' autogen.sh
bash autogen.sh
mv autogen.sh.bak autogen.sh
cd "$BUILDDIR"
mkdir -p libmtp
cd libmtp
"$BASEDIR"/libmtp/configure \
CC="$MXEBUILDTYPE"-gcc \
--host="$MXEBUILDTYPE" \
--enable-shared \
--prefix="$BASEDIR"/"$MXEDIR"/usr/"$MXEBUILDTYPE"
make $JOBS
make install
fi
fi
cd "$BUILDDIR"