Robin Gareus
233a82d5f9
This is mainly for the benefit of traxlive, which needs ffmpeg to encode mp3 or import encoded files, without support for video.
744 lines
24 KiB
Bash
Executable File
744 lines
24 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# we assume this script is <ardour-src>/tools/x-win/package.sh
|
|
pushd "`/usr/bin/dirname \"$0\"`" > /dev/null; this_script_dir="`pwd`"; popd > /dev/null
|
|
cd $this_script_dir
|
|
|
|
. ../define_versions.sh
|
|
|
|
cd $this_script_dir/../..
|
|
|
|
test -f gtk2_ardour/wscript || exit 1
|
|
|
|
# Defaults (overridden by environment)
|
|
: ${XARCH=i686} # or x86_64
|
|
: ${ROOT=/home/ardour}
|
|
: ${MAKEFLAGS=-j4}
|
|
: ${TMPDIR=/var/tmp}
|
|
: ${SRCCACHE=/var/tmp/winsrc} # source-code tgz cache
|
|
|
|
: ${HARRISONCHANNELSTRIP=harrison_channelstrip}
|
|
: ${HARRISONLV2=harrison_lv2s-n}
|
|
: ${HARRISONDSPURL=https://rsrc.harrisonconsoles.com/plugins/releases/public}
|
|
|
|
# see also wscript, video_tool_paths.cc, bundle_env_mingw.cc
|
|
# registry keys based on this are used there
|
|
PROGRAM_NAME=Ardour
|
|
PROGRAM_KEY=Ardour
|
|
PROGRAM_VERSION=${major_version}
|
|
|
|
PRODUCT_NAME=Ardour
|
|
PRODUCT_VERSION=${major_version}
|
|
|
|
WITH_HARRISON_LV2=1 ;
|
|
WITH_COMMERCIAL_X42_LV2=
|
|
WITH_GRATIS_X42_LV2=
|
|
WITH_GMSYNTH=1
|
|
WITH_HARVID=1
|
|
WITH_XJADEO=1
|
|
|
|
# TODO: grep from build/config.log instead
|
|
while [ $# -gt 0 ] ; do
|
|
echo "arg = $1"
|
|
case $1 in
|
|
--mixbus)
|
|
MIXBUS=1
|
|
WITH_HARRISON_LV2=1 ;
|
|
WITH_COMMERCIAL_X42_LV2=1
|
|
WITH_GRATIS_X42_LV2=1
|
|
PROGRAM_NAME=Mixbus
|
|
PROGRAM_KEY=Mixbus
|
|
PRODUCT_NAME=Mixbus
|
|
MANUAL_NAME="mixbus-live-manual"
|
|
shift ;;
|
|
--livetrax)
|
|
LIVETRAX=1 ;
|
|
WITH_XJADEO=
|
|
WITH_HARRISON_LV2="" ;
|
|
WITH_GMSYNTH="" ;
|
|
PROGRAM_NAME=LiveTrax
|
|
PROGRAM_KEY=LiveTrax
|
|
PRODUCT_NAME=LiveTrax
|
|
shift ;;
|
|
--chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
|
|
esac
|
|
done
|
|
|
|
|
|
LOWERCASE_DIRNAME=ardour${major_version}
|
|
STATEFILE_SUFFIX=ardour # see filename_extensions.cc
|
|
|
|
|
|
# derived variables
|
|
PRODUCT_ID=${PROGRAM_NAME}${PROGRAM_VERSION}
|
|
PRODUCT_EXE=${PRODUCT_NAME}.exe
|
|
PRODUCT_ICON=${PRODUCT_NAME}.ico
|
|
|
|
###############################################################################
|
|
|
|
echo "Packaging $PRODUCT_ID"
|
|
|
|
if test "$XARCH" = "x86_64" -o "$XARCH" = "amd64"; then
|
|
echo "Target: 64bit Windows (x86_64)"
|
|
XPREFIX=x86_64-w64-mingw32
|
|
WARCH=w64
|
|
else
|
|
echo "Target: 32 Windows (i686)"
|
|
XPREFIX=i686-w64-mingw32
|
|
WARCH=w32
|
|
fi
|
|
|
|
: ${PREFIX=${ROOT}/win-stack-$WARCH}
|
|
export SRCCACHE
|
|
|
|
if [ "$(id -u)" = "0" ]; then
|
|
apt-get -y install nsis curl wget ca-certificates rsync zip unzip
|
|
fi
|
|
|
|
|
|
function download {
|
|
echo "--- Downloading.. $2"
|
|
test -f ${SRCCACHE}/$1 || curl -k -L -o ${SRCCACHE}/$1 $2
|
|
}
|
|
|
|
################################################################################
|
|
set -e
|
|
|
|
ARDOURVERSION=${release_version}
|
|
ARDOURDATE=$(date -R)
|
|
if ! test -f build/gtk2_ardour/ardour-${ARDOURVERSION}.exe; then
|
|
echo "*** Please compile ardour-${ARDOURVERSION}.exe first."
|
|
exit 1
|
|
fi
|
|
|
|
echo " === bundle to $DESTDIR"
|
|
|
|
./waf install
|
|
|
|
################################################################################
|
|
|
|
if test -z "$DESTDIR"; then
|
|
DESTDIR=`mktemp -d`
|
|
trap 'rm -rf $DESTDIR' exit SIGINT SIGTERM
|
|
rm -rf $DESTDIR
|
|
fi
|
|
|
|
echo " === bundle to $DESTDIR"
|
|
|
|
ALIBDIR=$DESTDIR/lib/${LOWERCASE_DIRNAME}
|
|
|
|
mkdir -p $DESTDIR/bin
|
|
mkdir -p $DESTDIR/share/
|
|
mkdir -p $ALIBDIR/surfaces
|
|
mkdir -p $ALIBDIR/backends
|
|
mkdir -p $ALIBDIR/panners
|
|
mkdir -p $ALIBDIR/vamp
|
|
mkdir -p $ALIBDIR/suil
|
|
|
|
# cp $PREFIX/lib/ardour*/*-*.dll $DESTDIR/bin/
|
|
cp build/libs/gtkmm2ext/gtkmm2ext-*.dll $DESTDIR/bin/
|
|
cp build/libs/midi++2/midipp-*.dll $DESTDIR/bin/
|
|
cp build/libs/evoral/evoral-*.dll $DESTDIR/bin/
|
|
cp build/libs/ardour/ardour-*.dll $DESTDIR/bin/
|
|
cp build/libs/temporal/temporal-*.dll $DESTDIR/bin/
|
|
cp build/libs/aaf/aaf-*.dll $DESTDIR/bin/
|
|
cp build/libs/canvas/canvas-*.dll $DESTDIR/bin/
|
|
cp build/libs/widgets/widgets-*.dll $DESTDIR/bin/
|
|
cp build/libs/waveview/waveview-*.dll $DESTDIR/bin/
|
|
cp build/libs/pbd/pbd-*.dll $DESTDIR/bin/
|
|
cp build/libs/tk/ztk/ztk-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ydk/ydk-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ytk/ytk-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ytkmm/ytkmm-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ydkmm/ydkmm-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ztkmm/ztkmm-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/ydk-pixbuf/ydk-pixbuf-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/tk/suil/suil-*.dll $DESTDIR/bin/ || true
|
|
cp build/libs/ctrl-interface/midi_surface/ardour*.dll $DESTDIR/bin/
|
|
cp build/libs/ctrl-interface/control_protocol/ardour*.dll $DESTDIR/bin/
|
|
cp build/libs/ptformat/ptformat-*.dll $DESTDIR/bin/
|
|
cp build/libs/audiographer/audiographer-*.dll $DESTDIR/bin/
|
|
cp build/libs/fst/ardour-vst-scanner.exe $DESTDIR/bin/ || true
|
|
cp build/libs/fst/ardour-vst3-scanner.exe $DESTDIR/bin/ || true
|
|
cp build/session_utils/*-*.exe $DESTDIR/bin/ || true
|
|
cp build/luasession/ardour*-lua.exe $DESTDIR/bin/ || true
|
|
cp `ls -t build/gtk2_ardour/ardour-*.exe | head -n1` $DESTDIR/bin/${PRODUCT_EXE}
|
|
|
|
mkdir -p $DESTDIR/lib/gtk-2.0/engines
|
|
cp build/libs/clearlooks-newer/clearlooks.dll $DESTDIR/lib/gtk-2.0/engines/libclearlooks.la
|
|
|
|
cp $PREFIX/bin/*.dll $DESTDIR/bin/
|
|
cp $PREFIX/bin/*.yes $DESTDIR/bin/ || true
|
|
cp $PREFIX/lib/*.dll $DESTDIR/bin/
|
|
# special case libportaudio (wasapi), old stack has no wasapi and hence no .xp
|
|
cp $PREFIX/bin/libportaudio-2.xp $DESTDIR/bin/ || cp $PREFIX/bin/libportaudio-2.dll $DESTDIR/bin/libportaudio-2.xp
|
|
|
|
# prefer system-wide DLL
|
|
rm -rf $DESTDIR/bin/libjack*.dll
|
|
# Also for these (even though M$ recommends to bundle these [1],
|
|
# there is no single set that works on all target systems, particularly
|
|
# since some plugins also rely on it.
|
|
# [1] https://docs.microsoft.com/en-us/windows/win32/debug/calling-the-dbghelp-library
|
|
rm -rf $DESTDIR/bin/dbghelp*.dll
|
|
rm -rf $DESTDIR/bin/dbgcore*.dll
|
|
|
|
cp `find build/libs/surfaces/ -iname "*.dll"` $ALIBDIR/surfaces/
|
|
cp `find build/libs/backends/ -iname "*.dll"` $ALIBDIR/backends/
|
|
cp `find build/libs/panners/ -iname "*.dll"` $ALIBDIR/panners/
|
|
|
|
cp -r build/libs/LV2 $ALIBDIR/ || true
|
|
cp -r build/libs/vamp-plugins/*ardourvampplugins*.dll $ALIBDIR/vamp/libardourvampplugins.dll
|
|
cp -r build/libs/vamp-pyin/*ardourvamppyin*.dll $ALIBDIR/vamp/libardourvamppyin.dll
|
|
|
|
if test -d build/libs/tk/suil/; then
|
|
cp build/libs/tk/suil/suil_win_in_gtk2.dll $ALIBDIR/suil/
|
|
else
|
|
cp $PREFIX/lib/suil-*/*.dll $ALIBDIR/suil/ || true
|
|
fi
|
|
|
|
# lv2 core, classifications
|
|
for file in $PREFIX/lib/lv2/*.lv2; do
|
|
BN=$(basename $file)
|
|
mkdir -p $ALIBDIR/LV2/$BN
|
|
cp $PREFIX/lib/lv2/${BN}/*.ttl $ALIBDIR/LV2/${BN}/
|
|
done
|
|
|
|
# TODO use -static-libgcc -static-libstdc++ -- but for .exe files only
|
|
if update-alternatives --query ${XPREFIX}-gcc | grep Value: | grep -q win32; then
|
|
cp /usr/lib/gcc/${XPREFIX}/*-win32/libgcc_s_*.dll $DESTDIR/bin/
|
|
cp /usr/lib/gcc/${XPREFIX}/*-win32/libstdc++-6.dll $DESTDIR/bin/
|
|
elif update-alternatives --query ${XPREFIX}-gcc | grep Value: | grep -q posix; then
|
|
cp /usr/lib/gcc/${XPREFIX}/*-posix/libgcc_s_*.dll $DESTDIR/bin/
|
|
cp /usr/lib/gcc/${XPREFIX}/*-posix/libstdc++-6.dll $DESTDIR/bin/
|
|
else
|
|
cp /usr/lib/gcc/${XPREFIX}/*/libgcc_s_sjlj-1.dll $DESTDIR/bin/
|
|
cp /usr/lib/gcc/${XPREFIX}/*/libstdc++-6.dll $DESTDIR/bin/
|
|
fi
|
|
#Ubuntu's 14.04's mingw needs this one for the std libs above
|
|
if test -f /usr/${XPREFIX}/lib/libwinpthread-1.dll; then
|
|
cp /usr/${XPREFIX}/lib/libwinpthread-1.dll $DESTDIR/bin/
|
|
fi
|
|
|
|
cp -r $PREFIX/share/${LOWERCASE_DIRNAME} $DESTDIR/share/
|
|
cp -r $PREFIX/share/locale $DESTDIR/share/
|
|
cp -r $PREFIX/etc/${LOWERCASE_DIRNAME}/* $DESTDIR/share/${LOWERCASE_DIRNAME}/
|
|
|
|
cp COPYING $DESTDIR/share/
|
|
cp gtk2_ardour/icons/${PRODUCT_ICON} $DESTDIR/share/
|
|
cp gtk2_ardour/icons/ArdourBug.ico $DESTDIR/share/
|
|
|
|
# replace default cursor with square version (sans hotspot file)
|
|
cp gtk2_ardour/icons/cursor_square/* $DESTDIR/share/${LOWERCASE_DIRNAME}/icons/
|
|
|
|
# clean build-dir after depoyment
|
|
echo " === bundle completed, cleaning up"
|
|
./waf uninstall
|
|
find $DESTDIR -name "*.dll.a" -print0 | xargs -0 -r rm
|
|
echo " === complete"
|
|
du -sh $DESTDIR
|
|
|
|
################################################################################
|
|
### get video tools
|
|
|
|
if test -n "$WITH_HARVID"; then
|
|
echo " === Including harvid"
|
|
HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
|
|
|
|
rsync -a -q --partial \
|
|
rsync://ardour.org/video-tools/harvid_${WARCH}-${HARVID_VERSION}.tar.xz \
|
|
"${SRCCACHE}/harvid_${WARCH}-${HARVID_VERSION}.tar.xz"
|
|
|
|
mkdir -p $DESTDIR/video
|
|
tar -xf "${SRCCACHE}/harvid_${WARCH}-${HARVID_VERSION}.tar.xz" -C "$DESTDIR/video/"
|
|
fi
|
|
|
|
if test -n "$WITH_XJADEO"; then
|
|
echo " === Including video-monitor"
|
|
XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
|
|
|
|
rsync -a -q --partial \
|
|
rsync://ardour.org/video-tools/xjadeo_${WARCH}-${XJADEO_VERSION}.tar.xz \
|
|
"${SRCCACHE}/xjadeo_${WARCH}-${XJADEO_VERSION}.tar.xz"
|
|
|
|
mkdir -p $DESTDIR/video
|
|
tar -xf "${SRCCACHE}/xjadeo_${WARCH}-${XJADEO_VERSION}.tar.xz" -C "$DESTDIR/video/"
|
|
fi
|
|
|
|
################################################################################
|
|
BUILDTYPE=""
|
|
VERSIONINFO="Optimized Version."
|
|
|
|
if [ "$DEBUG" = "T" ]; then
|
|
BUILDTYPE="-dbg"
|
|
PACKAGE_GDB=1
|
|
VERSIONINFO="Debug Build."
|
|
fi
|
|
if [ "$FREEBI" = "T" ]; then
|
|
BUILDTYPE="-demo"
|
|
VERSIONINFO="Optimized Demo Version."
|
|
fi
|
|
if [ "$DEBUG$FREEBI" = "TT" ]; then
|
|
BUILDTYPE="-demo-dbg"
|
|
PACKAGE_GDB=1
|
|
VERSIONINFO="Demo Version."
|
|
fi
|
|
|
|
OUTFILE="${TMPDIR}/${PRODUCT_NAME}-${ARDOURVERSION}${BUILDTYPE}-${WARCH}-Setup.exe"
|
|
|
|
if test -n "$PACKAGE_GDB"; then
|
|
# re-packaged from https://packages.msys2.org/package/mingw-w64-x86_64-gdb
|
|
download gdb12-win64.tar.xz http://ardour.org/files/gdb/gdb12-win64.tar.xz
|
|
cd ${SRCCACHE}
|
|
tar xf gdb12-win64.tar.xz
|
|
cd - > /dev/null
|
|
|
|
echo " === Creating debug.bat"
|
|
cp -r ${SRCCACHE}/gdb12 $DESTDIR/gdb12
|
|
cat > $DESTDIR/debug.bat << EOF
|
|
set PYTHONPATH=%~dp0\gdb12\python3.10
|
|
cd bin
|
|
..\\gdb12\\gdb.exe -ex "set logging overwrite on" -ex "set height 0" -ex "set logging file %UserProfile%\\${PRODUCT_NAME}-debug.log" -ex "set logging enabled on" -ex "target exec ${PRODUCT_EXE}" -ex "run"
|
|
EOF
|
|
fi
|
|
|
|
################################################################################
|
|
### Mixbus plugins, etc
|
|
if test x$WITH_GMSYNYTH != x ; then
|
|
mkdir -p $ALIBDIR/LV2
|
|
|
|
echo "Adding General MIDI Synth LV2"
|
|
|
|
for proj in x42-gmsynth; do
|
|
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/win/${proj}.latest.txt)
|
|
rsync -a -q --partial \
|
|
rsync://x42-plugins.com/x42/win/${proj}-lv2-${WARCH}-${X42_VERSION}.zip \
|
|
"${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
unzip -q -d "$ALIBDIR/LV2/" "${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
done
|
|
fi
|
|
|
|
if test x$WITH_COMMERCIAL_X42_LV2 != x ; then
|
|
mkdir -p $ALIBDIR/LV2
|
|
|
|
echo "Adding commercial x42 Plugins"
|
|
|
|
for proj in x42-meters x42-eq x42-whirl; do
|
|
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/win/${proj}.latest.txt)
|
|
rsync -a -q --partial \
|
|
rsync://x42-plugins.com/x42/win/${proj}-lv2-${WARCH}-${X42_VERSION}.zip \
|
|
"${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
unzip -q -d "$ALIBDIR/LV2/" "${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
done
|
|
fi
|
|
|
|
|
|
if test x$WITH_GRATIS_X42_LV2 != x ; then
|
|
mkdir -p $ALIBDIR/LV2
|
|
|
|
echo "Adding gratis x42 Plugins"
|
|
|
|
for proj in x42-autotune x42-midifilter x42-stereoroute setBfree x42-avldrums x42-limiter x42-tuner; do
|
|
X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/win/${proj}.latest.txt)
|
|
rsync -a -q --partial \
|
|
rsync://x42-plugins.com/x42/win/${proj}-lv2-${WARCH}-${X42_VERSION}.zip \
|
|
"${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
unzip -q -d "$ALIBDIR/LV2/" "${SRCCACHE}/${proj}-lv2-${WARCH}-${X42_VERSION}.zip"
|
|
done
|
|
fi
|
|
|
|
if test x$WITH_HARRISON_LV2 != x ; then
|
|
mkdir -p $DESTDIR/LV2
|
|
|
|
echo "Including Harrison LV2s"
|
|
|
|
curl -s -S --fail -# \
|
|
-z "${SRCCACHE}/${HARRISONLV2}.${WARCH}.zip" \
|
|
-o "${SRCCACHE}/${HARRISONLV2}.${WARCH}.zip" \
|
|
"${HARRISONDSPURL}/${HARRISONLV2}.${WARCH}.zip"
|
|
unzip -q -d "$DESTDIR/LV2/" "${SRCCACHE}/${HARRISONLV2}.${WARCH}.zip"
|
|
fi
|
|
|
|
if test -n "$MIXBUS"; then
|
|
echo "Deploying Harrison Mixbus Channelstrip"
|
|
|
|
mkdir -p $ALIBDIR/ladspa/strip
|
|
curl -s -S --fail -# \
|
|
-z "${SRCCACHE}/${HARRISONCHANNELSTRIP}.${WARCH}.dll" \
|
|
-o "${SRCCACHE}/${HARRISONCHANNELSTRIP}.${WARCH}.dll" \
|
|
"${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${WARCH}.dll"
|
|
|
|
cp "${SRCCACHE}/${HARRISONCHANNELSTRIP}.${WARCH}.dll" \
|
|
"$ALIBDIR/ladspa/strip/${HARRISONCHANNELSTRIP}.dll"
|
|
|
|
echo "Deploying Harrison Vamp Plugins"
|
|
mkdir -p $ALIBDIR/vamp
|
|
curl -s -S --fail -# \
|
|
-z "${SRCCACHE}/harrison_vamp.${WARCH}.dll" \
|
|
-o "${SRCCACHE}/harrison_vamp.${WARCH}.dll" \
|
|
"${HARRISONDSPURL}/harrison_vamp.${WARCH}.dll"
|
|
|
|
cp "${SRCCACHE}/harrison_vamp.${WARCH}.dll" \
|
|
"$ALIBDIR/vamp/harrison_vamp.dll"
|
|
|
|
# Mixbus Bundled Media Content
|
|
curl -s -S --fail -# \
|
|
-z "${SRCCACHE}/MixbusBundledMedia.zip" \
|
|
-o "${SRCCACHE}/MixbusBundledMedia.zip" \
|
|
"http://builder.harrisonconsoles.com/pub/share/MixbusBundledMedia.zip"
|
|
|
|
if test -f "${SRCCACHE}/MixbusBundledMedia.zip"; then
|
|
echo "Adding Mixbus Bundled Content"
|
|
rm -f $DESTDIR/share/${LOWERCASE_DIRNAME}/media/*.*
|
|
unzip -q -o -d "$DESTDIR/share/${LOWERCASE_DIRNAME}/media/" "${SRCCACHE}/MixbusBundledMedia.zip"
|
|
fi
|
|
elif test -z "$LIVETRAX"; then
|
|
echo "Fetching Ardour bundled media"
|
|
curl -s -S --fail -# \
|
|
-z "${SRCCACHE}/ArdourBundledMedia.zip" \
|
|
-o "${SRCCACHE}/ArdourBundledMedia.zip" \
|
|
"http://stuff.ardour.org/loops/ArdourBundledMedia.zip"
|
|
|
|
if test -f "${SRCCACHE}/ArdourBundledMedia.zip"; then
|
|
echo "Adding Ardour Bundled Content"
|
|
rm -f $DESTDIR/share/${LOWERCASE_DIRNAME}/media/*.*
|
|
unzip -q -o -d "$DESTDIR/share/${LOWERCASE_DIRNAME}/media/" "${SRCCACHE}/ArdourBundledMedia.zip"
|
|
fi
|
|
fi
|
|
|
|
################################################################################
|
|
|
|
if test x$DEMO_SESSION_URL != x ; then
|
|
mkdir -p $DESTDIR/share/${LOWERCASE_DIRNAME}/sessions
|
|
DEMO_SESSIONS=$(curl -s -S --fail $DEMO_SESSION_URL/index.txt)
|
|
for demo in $DEMO_SESSIONS; do
|
|
curl -s -S --fail -# -o $DESTDIR/share/${LOWERCASE_DIRNAME}/sessions/$demo $DEMO_SESSION_URL/$demo
|
|
done
|
|
fi
|
|
|
|
################################################################################
|
|
|
|
( cd $DESTDIR ; find . ) > ${TMPDIR}/file_list.txt
|
|
|
|
################################################################################
|
|
echo " === Preparing Windows Installer"
|
|
NSISFILE=$DESTDIR/a3.nsis
|
|
|
|
if test "$WARCH" = "w64"; then
|
|
PGF=PROGRAMFILES64
|
|
SFX=
|
|
else
|
|
PGF=PROGRAMFILES
|
|
# TODO we should only add this for 32bit on 64bit windows!
|
|
SFX=" (x86)"
|
|
fi
|
|
|
|
if test -n "$QUICKZIP" ; then
|
|
cat > $NSISFILE << EOF
|
|
SetCompressor zlib
|
|
EOF
|
|
elif test -n "$PACKAGE_GDB"; then
|
|
# debug version is > 2.2 GB and causes issues with SOLID lzma
|
|
cat > $NSISFILE << EOF
|
|
SetCompressor lzma
|
|
EOF
|
|
else
|
|
cat > $NSISFILE << EOF
|
|
SetCompressor /SOLID lzma
|
|
SetCompressorDictSize 32
|
|
EOF
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
!addincludedir "${this_script_dir}\\nsis"
|
|
!include MUI2.nsh
|
|
!include FileAssociation.nsh
|
|
!include WinVer.nsh
|
|
|
|
Name "${PROGRAM_NAME}${PROGRAM_VERSION}"
|
|
OutFile "${OUTFILE}"
|
|
RequestExecutionLevel admin
|
|
InstallDir "\$${PGF}\\${PRODUCT_ID}"
|
|
InstallDirRegKey HKLM "Software\\${PRODUCT_NAME}\\${PRODUCT_ID}\\$WARCH" "Install_Dir"
|
|
!define MUI_ICON "share\\${PRODUCT_ICON}"
|
|
!define MUI_UNICON "share\\${PRODUCT_ICON}"
|
|
|
|
EOF
|
|
|
|
if test -n "$MIXBUS"; then
|
|
|
|
# TODO: proper welcome/finish text.
|
|
cat >> $NSISFILE << EOF
|
|
!define MUI_FINISHPAGE_TITLE "Welcome to Harrison ${PROGRAM_NAME}"
|
|
!define MUI_FINISHPAGE_TEXT "Thanks for your purchase of ${PROGRAM_NAME}!\$\\r\$\\nYou will find the ${PROGRAM_NAME} application in the Start Menu (or the All Apps panel for Windows 8) \$\\r\$\\nClick the link below to view the ${PROGRAM_NAME} manual, and learn ways to get involved with the Mixbus community."
|
|
!define MUI_FINISHPAGE_LINK "${PROGRAM_NAME} Manual"
|
|
!define MUI_FINISHPAGE_LINK_LOCATION "https://rsrc.harrisonconsoles.com/mixbus/${MANUAL_NAME}/"
|
|
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
|
EOF
|
|
|
|
else
|
|
|
|
cat >> $NSISFILE << EOF
|
|
!define MUI_FINISHPAGE_TITLE "Welcome to Ardour"
|
|
!define MUI_FINISHPAGE_TEXT "This Windows version of Ardour is provided as-is.\$\\r\$\\nThe Ardour community currently has no expertise in supporting Windows users, and there are no developers focusing on Windows-specific issues either.\$\\r\$\\nIf you like Ardour, please consider helping out."
|
|
!define MUI_FINISHPAGE_LINK "Ardour Manual"
|
|
!define MUI_FINISHPAGE_LINK_LOCATION "http://manual.ardour.org/"
|
|
#this would run as admin - see http://forums.winamp.com/showthread.php?t=353366
|
|
#!define MUI_FINISHPAGE_RUN "\$INSTDIR\\bin\\${PRODUCT_EXE}"
|
|
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
|
EOF
|
|
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
!define MUI_ABORTWARNING
|
|
!insertmacro MUI_PAGE_LICENSE "share\\COPYING"
|
|
!insertmacro MUI_PAGE_COMPONENTS
|
|
!insertmacro MUI_PAGE_DIRECTORY
|
|
!insertmacro MUI_PAGE_INSTFILES
|
|
!insertmacro MUI_PAGE_FINISH
|
|
!insertmacro MUI_UNPAGE_CONFIRM
|
|
!insertmacro MUI_UNPAGE_INSTFILES
|
|
!insertmacro MUI_LANGUAGE "English"
|
|
|
|
Section "${PROGRAM_NAME}${PROGRAM_VERSION} (required)" SecMainProg
|
|
SectionIn RO
|
|
SetOutPath \$INSTDIR
|
|
File /r bin
|
|
File /r lib
|
|
File /r share
|
|
File /nonfatal debug.bat
|
|
File /nonfatal /r gdb12
|
|
WriteRegStr HKLM "Software\\${PROGRAM_KEY}\\v${major_version}\\$WARCH" "Install_Dir" "\$INSTDIR"
|
|
WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" "DisplayName" "${PROGRAM_NAME}${PROGRAM_VERSION}"
|
|
WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" "UninstallString" '"\$INSTDIR\\uninstall.exe"'
|
|
WriteRegDWORD HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" "NoModify" 1
|
|
WriteRegDWORD HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" "NoRepair" 1
|
|
WriteUninstaller "\$INSTDIR\uninstall.exe"
|
|
CreateShortCut "\$INSTDIR\\${PROGRAM_NAME}${PROGRAM_VERSION}.lnk" "\$INSTDIR\\bin\\${PRODUCT_EXE}" "" "\$INSTDIR\\bin\\${PRODUCT_EXE}" 0
|
|
\${registerExtension} "\$INSTDIR\\bin\\${STATEFILE_SUFFIX}" ".${PRODUCT_NAME}" "${PROGRAM_NAME} Session"
|
|
SectionEnd
|
|
EOF
|
|
|
|
if test -n "$WITH_HARVID$WITH_XJADEO"; then
|
|
|
|
cat >> $NSISFILE << EOF
|
|
Section "A/V Tools (required)" SecVideo
|
|
WriteRegStr HKLM "Software\\${PROGRAM_KEY}\\v${major_version}\\video" "Install_Dir" "\$INSTDIR\\video"
|
|
SectionIn RO
|
|
SetOutPath \$INSTDIR
|
|
File /r video
|
|
SectionEnd
|
|
EOF
|
|
|
|
fi
|
|
|
|
if test x$WITH_HARRISON_LV2 != x ; then
|
|
if test -n "$MIXBUS"; then
|
|
cat >> $NSISFILE << EOF
|
|
Section "Harrison XT plugins (required)" SecXT
|
|
SectionIn RO
|
|
SetOutPath \$INSTDIR\\lib\\${LOWERCASE_DIRNAME}\\LV2
|
|
File LV2\\.harrison_version.txt
|
|
File /r LV2\\*.lv2
|
|
SectionEnd
|
|
EOF
|
|
else
|
|
cat >> $NSISFILE << EOF
|
|
Section "Harrison XT plugins and ACE plugin GUIs" SecXT
|
|
SetOutPath \$INSTDIR\\lib\\${LOWERCASE_DIRNAME}\\LV2
|
|
File LV2\\.harrison_version.txt
|
|
File /r LV2\\*.lv2
|
|
SectionEnd
|
|
EOF
|
|
fi
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
|
|
Section "WASAPI sound driver" SecWASAPI
|
|
SectionEnd
|
|
|
|
Section "Start Menu Shortcuts" SecMenu
|
|
SetShellVarContext all
|
|
SetOutPath \$INSTDIR
|
|
CreateDirectory "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}"
|
|
CreateShortCut "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}\\${PROGRAM_NAME}${PROGRAM_VERSION}.lnk" "\$INSTDIR\\bin\\${PRODUCT_EXE}" "" "\$INSTDIR\\bin\\${PRODUCT_EXE}" 0
|
|
EOF
|
|
|
|
if test -f "$DESTDIR/debug.bat"; then
|
|
cat >> $NSISFILE << EOF
|
|
CreateShortCut "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}\\${PROGRAM_NAME}${PROGRAM_VERSION} GDB.lnk" "\$INSTDIR\\debug.bat" "" "\$INSTDIR\\share\\ArdourBug.ico" 0
|
|
EOF
|
|
fi
|
|
|
|
if test -n "$WITH_XJADEO"; then
|
|
cat >> $NSISFILE << EOF
|
|
IfFileExists "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" 0 +2
|
|
CreateShortCut "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}\\Video Monitor.lnk" "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" "" "\$INSTDIR\\video\\xjadeo\\xjadeo.exe" 0
|
|
EOF
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
CreateShortCut "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}\\Uninstall.lnk" "\$INSTDIR\\uninstall.exe" "" "\$INSTDIR\\uninstall.exe" 0
|
|
SectionEnd
|
|
LangString DESC_SecMainProg \${LANG_ENGLISH} "${PROGRAM_NAME} ${ARDOURVERSION}\$\\r\$\\n${VERSIONINFO}\$\\r\$\\n${ARDOURDATE}"
|
|
LangString DESC_SecWASAPI \${LANG_ENGLISH} "WASAPI Audio Driver\$\\r\$\\nOnly works on Vista or later. Windows 10 Users may currently also experience issues if this is installed."
|
|
EOF
|
|
|
|
if test -n "$WITH_XJADEO" -a -n "$WITH_HARVID"; then
|
|
cat >> $NSISFILE << EOF
|
|
LangString DESC_SecVideo \${LANG_ENGLISH} "Video Tools\$\\r\$\\nxjadeo-${XJADEO_VERSION}\$\\r\$\\nharvid-${HARVID_VERSION}"
|
|
EOF
|
|
elif test -n "$WITH_HAVID"; then
|
|
cat >> $NSISFILE << EOF
|
|
LangString DESC_SecVideo \${LANG_ENGLISH} "Video Tools\$\\r\$\\nharvid-${HARVID_VERSION}"
|
|
EOF
|
|
elif test -n "$WITH_XJADEO"; then
|
|
cat >> $NSISFILE << EOF
|
|
LangString DESC_SecVideo \${LANG_ENGLISH} "Video Tools\$\\r\$\\nxjadeo-${XJADEO_VERSION}"
|
|
EOF
|
|
fi
|
|
|
|
if test x$WITH_HARRISON_LV2 != x ; then
|
|
cat >> $NSISFILE << EOF
|
|
LangString DESC_SecXT \${LANG_ENGLISH} "These are proprietary additions, but the DSP is not license encumbered. XT-plugin GUIs are commercial, the additional a-*/ACE plugin GUIs are free."
|
|
EOF
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
LangString DESC_SecMenu \${LANG_ENGLISH} "Create Start-Menu Shortcuts (recommended)."
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
|
!insertmacro MUI_DESCRIPTION_TEXT \${SecMainProg} \$(DESC_SecMainProg)
|
|
!insertmacro MUI_DESCRIPTION_TEXT \${SecWASAPI} \$(DESC_SecWASAPI)
|
|
EOF
|
|
|
|
if test -n "$WITH_XJADEO$WITH_HARVID"; then
|
|
cat >> $NSISFILE << EOF
|
|
!insertmacro MUI_DESCRIPTION_TEXT \${SecVideo} \$(DESC_SecVideo)
|
|
EOF
|
|
fi
|
|
|
|
if test x$WITH_HARRISON_LV2 != x ; then
|
|
cat >> $NSISFILE << EOF
|
|
!insertmacro MUI_DESCRIPTION_TEXT \${SecXT} \$(DESC_SecXT)
|
|
EOF
|
|
fi
|
|
|
|
cat >> $NSISFILE << EOF
|
|
!insertmacro MUI_DESCRIPTION_TEXT \${SecMenu} \$(DESC_SecMenu)
|
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
Section "Uninstall"
|
|
SetShellVarContext all
|
|
DeleteRegKey HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}"
|
|
DeleteRegKey HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}"
|
|
DeleteRegKey HKLM "Software\\${PROGRAM_KEY}\\v${major_version}"
|
|
RMDir /r "\$INSTDIR\\bin"
|
|
RMDir /r "\$INSTDIR\\lib"
|
|
RMDir /r "\$INSTDIR\\share"
|
|
RMDir /r "\$INSTDIR\\gdb12"
|
|
RMDir /r "\$INSTDIR\\video"
|
|
Delete "\$INSTDIR\\debug.bat"
|
|
Delete "\$INSTDIR\\uninstall.exe"
|
|
Delete "\$INSTDIR\\${PROGRAM_NAME}${PROGRAM_VERSION}.lnk"
|
|
RMDir "\$INSTDIR"
|
|
Delete "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}\\*.*"
|
|
RMDir "\$SMPROGRAMS\\${PRODUCT_ID}${SFX}"
|
|
\${unregisterExtension} ".${STATEFILE_SUFFIX}" "${PROGRAM_NAME} Session"
|
|
SectionEnd
|
|
|
|
|
|
Function .onInit
|
|
|
|
ReadRegStr \$R0 HKLM \
|
|
"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" \
|
|
"UninstallString"
|
|
StrCmp \$R0 "" done
|
|
|
|
IfSilent silentuninst
|
|
|
|
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
|
|
"${PROGRAM_NAME} is already installed. Click 'OK' to remove the previous version or 'Cancel' to cancel this upgrade." \
|
|
IDOK uninst
|
|
Abort
|
|
|
|
silentuninst:
|
|
ExecWait '\$R0 /S _?=\$INSTDIR'
|
|
|
|
ReadRegStr \$R1 HKLM \
|
|
"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" \
|
|
"UninstallString"
|
|
StrCmp \$R1 "" 0 done
|
|
|
|
Delete "\$INSTDIR\\uninstall.exe"
|
|
RMDir "\$INSTDIR"
|
|
goto done
|
|
|
|
uninst:
|
|
ClearErrors
|
|
ExecWait '\$R0 _?=\$INSTDIR'
|
|
IfErrors uninstall_error
|
|
|
|
ReadRegStr \$R1 HKLM \
|
|
"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${PRODUCT_ID}-${WARCH}" \
|
|
"UninstallString"
|
|
StrCmp \$R1 "" 0 done
|
|
|
|
Delete "\$INSTDIR\\uninstall.exe"
|
|
RMDir "\$INSTDIR"
|
|
goto done
|
|
|
|
uninstall_error:
|
|
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION \
|
|
"Uninstaller did not complete successfully. Continue at your own risk..." \
|
|
IDOK done
|
|
|
|
done:
|
|
|
|
\${If} \${AtMostWinXP}
|
|
SectionSetFlags \${SecWASAPI} \${SF_RO}
|
|
\${Else}
|
|
SectionSetFlags \${SecWASAPI} 0
|
|
\${EndIf}
|
|
|
|
FunctionEnd
|
|
|
|
Function .onInstSuccess
|
|
|
|
\${If} \${AtMostWinXP}
|
|
goto pa_no_wasapi
|
|
\${EndIf}
|
|
|
|
SectionGetFlags \${SecWASAPI} \$R0
|
|
|
|
IntOp \$R0 \$R0 & \${SF_SELECTED}
|
|
IntCmp \$R0 \${SF_SELECTED} pa_with_wasapi pa_no_wasapi
|
|
|
|
pa_with_wasapi:
|
|
; VISTA .. 9, libportaudio with WASAPI is good.
|
|
Delete "\$INSTDIR\\bin\\libportaudio-2.xp"
|
|
goto endportaudio
|
|
|
|
; Windows XP lacks support for WASAPI, Windows10 on some system has issues
|
|
; http://tracker.ardour.org/view.php?id=6507
|
|
pa_no_wasapi:
|
|
Delete "\$INSTDIR\\bin\\libportaudio-2.dll"
|
|
Rename "\$INSTDIR\\bin\\libportaudio-2.xp" "\$INSTDIR\\bin\\libportaudio-2.dll"
|
|
|
|
endportaudio:
|
|
|
|
FunctionEnd
|
|
EOF
|
|
|
|
rm -f ${OUTFILE}
|
|
echo " === OutFile: $OUTFILE"
|
|
|
|
if test -n "$QUICKZIP" ; then
|
|
echo " === Building Windows Installer (fast zip)"
|
|
else
|
|
echo " === Building Windows Installer (lzma compression takes ages)"
|
|
fi
|
|
time makensis -V2 $NSISFILE
|
|
rm -rf $DESTDIR
|
|
ls -lgGh "$OUTFILE"
|