]> Dogcows Code - chaz/yoink/blobdiff - arch/win32/makepackage.sh
repository reorganizing
[chaz/yoink] / arch / win32 / makepackage.sh
diff --git a/arch/win32/makepackage.sh b/arch/win32/makepackage.sh
new file mode 100755 (executable)
index 0000000..793e435
--- /dev/null
@@ -0,0 +1,151 @@
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to create a win32 package.
+#
+# You should typically only run this through the "portable" and "installer"
+# makes targets in the package root directory.  The build system will take
+# care to pass the correct arguments.
+#
+
+showhelp()
+{
+       echo "Usage: $0 [-h] [-i makensis] [-s strip] -d assets -V version -p prefix"
+       echo "  Creates a portable win32 package or installer."
+       echo ""
+       echo "  -V  Specify the version of the program to be packaged"
+       echo "  -d  Specify the game assets to be included."
+       echo "  -h  Show this help an exit."
+       echo "  -i  To make an installer, specify the makensis program."
+       echo "  -p  Specify the path to your toolchain installation."
+       echo "  -s  To strip the binaries, specify the strip program."
+}
+
+while getopts ":V:hd:i:p:s:" opt
+do
+       case $opt in
+               V)
+                       VERSION="$OPTARG"
+                       ;;
+               d)
+                       ASSETS="$OPTARG"
+                       ;;
+               h)
+                       showhelp
+                       exit 0
+                       ;;
+               i)
+                       MAKENSIS="$OPTARG"
+                       ;;
+               p)
+                       PREFIX="$OPTARG"
+                       ;;
+               s)
+                       STRIP="$OPTARG"
+                       ;;
+               \?)
+                       echo "Invalid option: -$OPTARG" >&2
+                       showhelp
+                       exit 1
+                       ;;
+       esac
+done
+
+if test "x$ASSETS" = x || test "x$VERSION" = x || test "x$PREFIX" = x
+then
+       showhelp
+       exit 1
+fi
+
+die()
+{
+       rm -rf "$BUILD"
+       echo "die:" $@
+       exit 1
+}
+
+ROOT="$PWD"
+BUILD="$ROOT/tmp-$$"
+DIRECTORY="yoink-$VERSION"
+ARCHIVE="$BUILD/$DIRECTORY"
+
+MAN2HTML="lua $ROOT/doc/man2html.lua"
+UNIX2DOS="$ROOT/arch/win32/unix2dos.sh"
+
+DLLS="libogg-0 libpng14 libvorbis-0 libvorbisfile-3 lua51 OpenAL32 SDL zlib1"
+
+
+if test ! -f "src/version.c"
+then
+       echo "Run the script from the repository root directory."
+       exit 1
+fi
+
+if ! mkdir "$BUILD"
+then
+       "The temp directory $BUILD could not be created."
+       exit 1
+fi
+mkdir -p "$ARCHIVE"
+
+
+cp -f "$ROOT/src/yoink.exe" "$ARCHIVE" || die "copying yoink.exe"
+test "x$STRIP" != x && "$STRIP" "$ARCHIVE/yoink.exe"
+
+for dll in $DLLS
+do
+       cp -f "$PREFIX/bin/$dll.dll" "$ARCHIVE" || die "copying $dll"
+       test "x$STRIP" != x && "$STRIP" "$ARCHIVE/$dll.dll"
+done
+
+for asset in $ASSETS
+do
+       cp -f --parents "data/$asset" "$ARCHIVE"
+done
+
+for doc in AUTHORS ChangeLog COPYING README TODO
+do
+       "$UNIX2DOS" "$doc" "$ARCHIVE/$doc.txt" || die "unix2dos $doc"
+done
+
+$MAN2HTML -o "$ARCHIVE/Manual.html"
+$UNIX2DOS "$ARCHIVE/Manual.html"
+
+cp -rf "$ROOT/doc/licenses" "$ARCHIVE" || die "copying doc/licenses"
+cd "$ARCHIVE/licenses"
+for license in $(ls)
+do
+       (mv "$license" "$license.txt" && "$UNIX2DOS" "$license.txt") \
+               || die "moving and unix2dos $license"
+done
+cd "$ROOT"
+
+
+if test "x$MAKENSIS" = x
+then
+# build portable archive
+       echo "No valid makensis executable passed;"
+       echo "making portable package instead..."
+       NAME="$DIRECTORY.zip"
+       cd "$BUILD"
+       zip -r "$NAME" "$DIRECTORY" || die "zipping portable archive"
+       cd "$ROOT"
+       mv "$BUILD/$NAME" .
+       echo "Done! Package saved to $NAME."
+else
+# build an installer
+       NAME="yoinksetup-$VERSION.exe"
+       cd "$BUILD"
+       cp "$ROOT/arch/win32/yoink.nsi" .
+       "$MAKENSIS" -DROOTPATH="$ROOT" -DINSTALLFILES="$ARCHIVE" \
+               -DVERSION="$VERSION" -DOUTFILE="$NAME" yoink.nsi \
+               || die "running '$MAKENSIS'"
+       cd "$ROOT"
+       mv "$BUILD/$NAME" .
+       echo "Done! Installer saved to $NAME."
+fi
+
+
+rm -rf "$BUILD"
+
This page took 0.022599 seconds and 4 git commands to generate.