X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=arch%2Fwin32%2Fmakepackage.sh;fp=arch%2Fwin32%2Fmakepackage.sh;h=793e43589f39bd699ba6bfecb2fbf0b4973afe5e;hp=0000000000000000000000000000000000000000;hb=cf4c819df08e2ab6c06532d8a4467fa58b2792ae;hpb=705fbbaf9a8064c034d23119e912da028af7fac7 diff --git a/arch/win32/makepackage.sh b/arch/win32/makepackage.sh new file mode 100755 index 0000000..793e435 --- /dev/null +++ b/arch/win32/makepackage.sh @@ -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" +