]> Dogcows Code - chaz/yoink/commitdiff
now can create win32 portable packages
authorCharles McGarvey <chazmcgarvey@brokenzipper.com>
Fri, 5 Mar 2010 22:43:48 +0000 (15:43 -0700)
committerCharles McGarvey <chazmcgarvey@brokenzipper.com>
Fri, 5 Mar 2010 22:43:48 +0000 (15:43 -0700)
17 files changed:
COPYING
Makefile.am
README
configure.ac
doc/man2html.sh [new file with mode: 0755]
doc/yoink.6.in
extra/PKGBUILD [new file with mode: 0644]
src/Makefile.am
src/Moof/HashTools.cc [moved from src/Moof/Hash.cc with 95% similarity]
src/Moof/HashTools.hh [moved from src/Moof/Hash.hh with 87% similarity]
src/Moof/Manager.hh
win32/Makefile.am [deleted file]
win32/makedeps.sh [moved from win32/tools/makedeps.sh with 74% similarity]
win32/makepackage.sh [new file with mode: 0755]
win32/mkpackage.sh.in [deleted file]
win32/unix2dos.sh [moved from tools/unix2dos with 83% similarity]
win32/yoink.nsi [moved from win32/yoink.nsi.in with 95% similarity]

diff --git a/COPYING b/COPYING
index 1948e77123790d58a0335ca3f5d683c903759188..5b126c9cc81932174aa7d4b05325ab048c995817 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -55,7 +55,7 @@ Copyright: (c) 2000-2004 Unicode, Inc.
 Copyright: (c) 2002 Bob Pendleton
   License: LGPL-2.1
 
 Copyright: (c) 2002 Bob Pendleton
   License: LGPL-2.1
 
-  Portion: libpng-3.dll
+  Portion: libpng14-14.dll
    Source: http://www.libpng.org/pub/png/libpng.html
 Copyright: (c) 2004, 2006-2009 Glenn Randers-Pehrson
   License: libpng
    Source: http://www.libpng.org/pub/png/libpng.html
 Copyright: (c) 2004, 2006-2009 Glenn Randers-Pehrson
   License: libpng
index bb29cd0c02ce9bd61aa72f4363d499e3e4ad9329..f3c3773fa70b7f40aa70e45d32fa50c1e4aeaf1b 100644 (file)
@@ -3,24 +3,29 @@ ACLOCAL_AMFLAGS = -I m4
 
 SUBDIRS = data doc src
 
 
 SUBDIRS = data doc src
 
-EXTRA_DIST = autogen.sh extra
+EXTRA_DIST = autogen.sh extra win32
 
 
 
 
-.PHONY: run debug docs package
+.PHONY: run debug docs portable installer
 
 run: all
 
 run: all
-       @cd src && $(MAKE) run
+       @$(CD) src && $(MAKE) run
 
 debug: all
 
 debug: all
-       @cd src && $(MAKE) debug
+       @$(CD) src && $(MAKE) debug
 
 docs:
        $(DOXYGEN)
 
 if WIN32
 
 docs:
        $(DOXYGEN)
 
 if WIN32
-package: all
-       @cd win32 && $(MAKE) installer
-else
-package: dist-bzip2
+
+portable: all
+       $(SH) win32/makepackage.sh -p $(prefix) -d "$(DATA_FILES)" \
+               -s $(STRIP) -V $(VERSION)
+
+installer: all
+       $(SH) win32/makepackage.sh -p $(prefix) -d "$(DATA_FILES)" \
+               -s $(STRIP) -V $(VERSION) -i $(MAKENSIS)
+
 endif
 
 endif
 
diff --git a/README b/README
index 7994e6958c1f8c67f0c3aace1368d2c8e0118d3a..6c69f0a004bd68773487bca2793e216e4c37a488 100644 (file)
--- a/README
+++ b/README
@@ -13,7 +13,6 @@ II.  Developers
   b)   Sending patches
 III. Packagers
   a)   The build system
   b)   Sending patches
 III. Packagers
   a)   The build system
-  b)   Targeting Win32
 
 
 I. Users
 
 
 I. Users
@@ -69,7 +68,7 @@ library.  These classes and helper functions reside in the Mf namespace.
 Since I wrote this code alongside the Yoink-specific stuff, there is
 somewhat of a blurry line between the two categories, unfortunately.
 
 Since I wrote this code alongside the Yoink-specific stuff, there is
 somewhat of a blurry line between the two categories, unfortunately.
 
-3. 3rd-party code.
+3. Third-party code.
 
 This is made up of free code from other projects or libraries (aside from
 the explicit dependencies above), the licenses of which are also in the
 
 This is made up of free code from other projects or libraries (aside from
 the explicit dependencies above), the licenses of which are also in the
@@ -83,7 +82,7 @@ email me your stuff or tell me where to pull from (git).  If you're
 interested in that, please observe the following:
 
 *  Stick to the coding style of the source code files you edit.  Follow the
 interested in that, please observe the following:
 
 *  Stick to the coding style of the source code files you edit.  Follow the
-   general style of method and variable naming, as well as white spacing
+   general style of method and variable naming, as well as white space
    formatting.  In particular, use literal tabs with an assumed tabstop of
    4 characters.  Also, limit line lengths to 75 characters.
 
    formatting.  In particular, use literal tabs with an assumed tabstop of
    4 characters.  Also, limit line lengths to 75 characters.
 
@@ -92,7 +91,7 @@ interested in that, please observe the following:
    and conditions as the files you edit, usually the 2-clause BSD license.
 
 *  If you want your name and contact information in the file AUTHORS,
    and conditions as the files you edit, usually the 2-clause BSD license.
 
 *  If you want your name and contact information in the file AUTHORS,
-   please just add it in the patch you provide.
+   please make it so in the patch you provide.
 
 
 III. Packagers
 
 
 III. Packagers
@@ -101,25 +100,7 @@ III. Packagers
 a) The build system
 
 You can probably tell that the build system of this package is built from
 a) The build system
 
 You can probably tell that the build system of this package is built from
-autoconf and automake.  It should be fairly sane.  If you find any build
-system problems or code which doesn't compile cleanly on your platform,
-feel free to send back patches.
-
-b) Targeting Win32
-
-If you have a working mingw32 toolchain with all the dependencies, you can
-build a win32 binary using a command such as this:
-
-./configure --host=mingw32 --prefix=/usr/mingw32/usr
-
-where mingw32 is the correct name of your toolchain and the prefix points
-to the installation of your toolchain.  I maintain an archive of most of
-the dependencies.  The package is in the git repository; just unzip it onto
-your toolchain and configure/compile.  If everything goes smoothly, you
-should have a new, shiny yoink.exe.  You can then build a complete
-installer using "make package" if you have nsis installed.
-
-I haven't tried building with cygwin or mingw32 on an actual Windows
-machine, and I certainly haven't tried to do it with Visual Studio.  You're
-on your own if you go that route.
+autoconf and automake.  It should be fairly sane.  If you find any
+packaging-related problems or code which doesn't compile cleanly on your
+platform, feel free to send patches.
 
 
index a35b3a4879e7187b698f1fe411686bed5f20f46b..93319640e08f43f3ff1cdf99e5b1d3d54d7618bc 100644 (file)
@@ -343,12 +343,6 @@ AC_CONFIG_FILES([Makefile
                                 doc/yoink.6
                                 src/Makefile])
 
                                 doc/yoink.6
                                 src/Makefile])
 
-if test x$WIN32 = xyes
-then
-       AC_CONFIG_FILES([win32/Makefile win32/mkpackage.sh win32/yoink.nsi])
-fi
-
-
 AC_CONFIG_HEADERS([src/config.h])
 
 AC_OUTPUT
 AC_CONFIG_HEADERS([src/config.h])
 
 AC_OUTPUT
diff --git a/doc/man2html.sh b/doc/man2html.sh
new file mode 100755 (executable)
index 0000000..49f6c72
--- /dev/null
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to convert the manual page to html.
+#
+# Requires groff.
+# Have fun!
+#
+
+function showhelp()
+{
+       echo "Create an html manual page."
+       echo "Usage: $0 [-Hfh] [-i manpage] [-o htmlfile]"
+       echo ""
+       echo "  -H  Hide email addresses in the manual page."
+       echo "  -f  Force overwrite of output file."
+       echo "  -h  Show this help an exit."
+       echo "  -i  Specify the manual page to convert."
+       echo "  -o  Specify output path of html file."
+}
+
+INFILE="doc/yoink.6"
+OUTFILE="yoink.html"
+
+while getopts ":Hfhi:o:" opt
+do
+       case $opt in
+               H)
+                       HIDE_EMAIL=yes
+                       ;;
+               f)
+                       FORCE=yes
+                       ;;
+               h)
+                       showhelp
+                       exit 0
+                       ;;
+               i)
+                       INFILE="$OPTARG"
+                       ;;
+               o)
+                       OUTFILE="$OPTARG"
+                       ;;
+               \?)
+                       echo "Invalid option: -$OPTARG" >&2
+                       showhelp
+                       exit 1
+                       ;;
+       esac
+done
+
+if test x$FORCE != xyes && test -e "$OUTFILE"
+then
+       echo "Refusing to overwrite file: $OUTFILE.  Use -f to override." >&2
+       exit 1
+fi
+
+if test ! -f "$INFILE"
+then
+       echo "Can't open file: $INFILE" >&2
+       exit 1
+fi
+
+DATE=$(date +"%d %b %Y")
+
+# 1. Remove first two lines (comments about groff).
+# 2. Edit page title.
+# 3. Insert a footer before </body>.
+HTML=$(groff -t -e -mandoc -Thtml "$INFILE" | sed -e "1,2d" \
+-e "s|<title>.*</title>|<title>Yoink Manual</title>|" -e "s|</body>|\
+<p style=\"font-size: 9px; text-align: center;\">\\
+This manual page was generated on $DATE.\\
+For more information, go to the\\
+<a href=\"http://www.dogcows.com/yoink/\">Yoink website</a>.\\
+</p>\\
+</body>|")
+
+if test x$HIDE_EMAIL = xyes
+then
+# 4. Replace email addresses with a placeholder.
+       echo "$HTML" \
+       | sed -e "s|&lt;.*@.*&gt;|\&lt;email address not shown\&gt;|g" \
+       >"$OUTFILE"
+else
+       echo "$HTML" >"$OUTFILE"
+fi
+
index 4de435386dc7034f1233034c033e11ffd7b56ecf..01f14bd86a50cab556b488aa99304411010cbea1 100644 (file)
@@ -180,7 +180,7 @@ the \fBframerate\fP to a point such that the actual framerate is basically
 constant.  A constant 20fps or 30fps will look better than a sporadic
 40-60fps.  You can also decrease the \fBtimestep\fP at the expense of
 decreased simulation accuracy.  You'll have to experiment with this value
 constant.  A constant 20fps or 30fps will look better than a sporadic
 40-60fps.  You can also decrease the \fBtimestep\fP at the expense of
 decreased simulation accuracy.  You'll have to experiment with this value
-to find out acceptable levels.
+to determine acceptable levels.
 .PP
 If you are having audio problems, you may need to upgrade OpenAL.  Some
 systems still provide an old, busted version of OpenAL which may result in
 .PP
 If you are having audio problems, you may need to upgrade OpenAL.  Some
 systems still provide an old, busted version of OpenAL which may result in
@@ -189,12 +189,12 @@ of openal-soft, a high-quality software implementation that is still being
 maintained.
 .SH BUGS
 .IP \(bu 3
 maintained.
 .SH BUGS
 .IP \(bu 3
-The robots are currently lacking in intelligence.
+The robots aren't very bright.
 .IP \(bu
 Although the pixelated graphics are intentional, there are some unintended
 artifacts which are more obvious with certain video drivers.
 .PP
 .IP \(bu
 Although the pixelated graphics are intentional, there are some unintended
 artifacts which are more obvious with certain video drivers.
 .PP
-Send bug reports, patches, and love notes to:
+Send bug reports, patches and love notes to:
 .IP
 Charles McGarvey <@PACKAGE_BUGREPORT@>
 .SH AUTHOR
 .IP
 Charles McGarvey <@PACKAGE_BUGREPORT@>
 .SH AUTHOR
diff --git a/extra/PKGBUILD b/extra/PKGBUILD
new file mode 100644 (file)
index 0000000..fed4e99
--- /dev/null
@@ -0,0 +1,31 @@
+# Contributor: Charles McGarvey <onefriedrice@brokenzipper.com>
+pkgname=yoink
+pkgver=@VERSION@
+pkgrel=1
+pkgdesc="Alien-smashing action game"
+arch=('i686' 'x86_64')
+url="http://www.dogcows.com/yoink"
+license=('BSD')
+groups=()
+depends=('libgl' 'libpng' 'libvorbis' 'lua' 'openal' 'sdl')
+makedepends=('boost' 'pkgconfig')
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+source=(http://www.dogcows.com/yoink/$pkgname-$pkgver.tar.bz2)
+noextract=()
+md5sums=('@CHECKSUM@')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+
+  ./configure --prefix=/usr
+  make || return 1
+  make DESTDIR="$pkgdir/" install
+}
+
+# vim:set ts=2 sw=2 et:
index c87c4126ffdff48ae4c4b8085882c5e360c93028..9a7f5146e454789933ca73128d720488f1e5429d 100644 (file)
@@ -29,8 +29,8 @@ libmoof_a_SOURCES = \
                                        Moof/Event.hh \
                                        Moof/Frustum.cc \
                                        Moof/Frustum.hh \
                                        Moof/Event.hh \
                                        Moof/Frustum.cc \
                                        Moof/Frustum.hh \
-                                       Moof/Hash.cc \
-                                       Moof/Hash.hh \
+                                       Moof/HashTools.cc \
+                                       Moof/HashTools.hh \
                                        Moof/Image.cc \
                                        Moof/Image.hh \
                                        Moof/Interpolator.hh \
                                        Moof/Image.cc \
                                        Moof/Image.hh \
                                        Moof/Interpolator.hh \
similarity index 95%
rename from src/Moof/Hash.cc
rename to src/Moof/HashTools.cc
index 357b5318a3edb02fb2382fc3689b0f78b84bf1e9..9bcefe3c071489303ba5df4d8c6cbf3fa4d6b01d 100644 (file)
@@ -9,7 +9,7 @@
 *
 **************************************************************************/
 
 *
 **************************************************************************/
 
-#include "Hash.hh"
+#include "HashTools.hh"
 
 
 namespace Mf {
 
 
 namespace Mf {
@@ -31,7 +31,7 @@ namespace Mf {
 // 2. It will not produce the same results on little-endian and big-endian
 //    machines.
 
 // 2. It will not produce the same results on little-endian and big-endian
 //    machines.
 
-unsigned getHash::operator()(const void* key, int len,
+unsigned HashFunction::operator()(const void* key, int len,
                                                         unsigned int seed) const
 {
        // 'm' and 'r' are mixing constants generated offline.
                                                         unsigned int seed) const
 {
        // 'm' and 'r' are mixing constants generated offline.
similarity index 87%
rename from src/Moof/Hash.hh
rename to src/Moof/HashTools.hh
index e97ee254ec140fb04fdc8542bec83e754dddc9d8..5bed739d069f749c37f47c16bc0bd1c46e690c38 100644 (file)
@@ -9,8 +9,8 @@
 *
 **************************************************************************/
 
 *
 **************************************************************************/
 
-#ifndef _MOOF_HASH_HH_
-#define _MOOF_HASH_HH_
+#ifndef _MOOF_HASHTOOLS_HH_
+#define _MOOF_HASHTOOLS_HH_
 
 #include <string>
 
 
 #include <string>
 
@@ -20,7 +20,7 @@
 namespace Mf {
 
 
 namespace Mf {
 
 
-struct getHash
+struct HashFunction
 {
        // generic hash function
        unsigned operator()(const void* key, int len,
 {
        // generic hash function
        unsigned operator()(const void* key, int len,
@@ -40,5 +40,5 @@ struct getHash
 
 } // namespace Mf
 
 
 } // namespace Mf
 
-#endif // _MOOF_HASH_HH_
+#endif // _MOOF_HASHTOOLS_HH_
 
 
index 2773a593f5e081ce3ae710404d0d124e42ad5900..94f07ba4862bbca8f1938bad8d8181bafe0aaad7 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <boost/shared_ptr.hpp>
 
 
 #include <boost/shared_ptr.hpp>
 
-#include <Moof/Hash.hh>
+#include <Moof/HashTools.hh>
 
 
 namespace Mf {
 
 
 namespace Mf {
@@ -49,7 +49,7 @@ public:
 
 private:
 
 
 private:
 
-       typedef stlplus::hash<std::string,T*,getHash> PtrMap;
+       typedef stlplus::hash<std::string,T*,HashFunction> PtrMap;
 
        static PtrMap   mPtrMap;
        std::string             mName;
 
        static PtrMap   mPtrMap;
        std::string             mName;
@@ -88,7 +88,7 @@ private:
 };
 
 template <class T>
 };
 
 template <class T>
-stlplus::hash<std::string,T*,getHash> Manager<T>::mPtrMap;
+stlplus::hash<std::string,T*,HashFunction> Manager<T>::mPtrMap;
 
 
 } // namespace Mf
 
 
 } // namespace Mf
diff --git a/win32/Makefile.am b/win32/Makefile.am
deleted file mode 100644 (file)
index 016518b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-INSTALLER_NAME = yoinksetup-$(VERSION).exe
-
-.PHONY: installer
-installer:
-       @echo "Building win32 installer..."
-       @(sh mkpackage.sh $(INSTALLER_NAME) 2> installer.log 1>&2 && \
-         rm installer.log && echo "Done.") || \
-       (echo "Installer compilation failed!"; \
-        echo "Check installer.log for details."; exit 1)
-
similarity index 74%
rename from win32/tools/makedeps.sh
rename to win32/makedeps.sh
index f5988b1f3d195eca086fc69e3975094ace9eae70..e84fac07762343f0e0bec0b2725abb17c34f916c 100755 (executable)
@@ -1,14 +1,81 @@
-#!/bin/bash
-
-# Download and cross-compile dependencies for Yoink.  This script requires
-# bash, wget, md5sum, unzip, tar, patch, make and install.  Have fun!
-
-HOST="i686-mingw32"
-PREFIX="/usr/$HOST/usr"
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to download and cross-compile dependencies for win32.
+#
+# A directory named deps will be created and/or populated in the current
+# directory.  Upon successful completion (be patient), the compiled
+# dependencies will be packaged into an archive named deps.tar.bz2 in the
+# current directory.  To install the dependencies, execute this command:
+#
+# tar xf deps.tar.bz2 -C $PREFIX
+# 
+# where $PREFIX is the path to your mingw32 toolchain.  If problems occur,
+# check stdout and stderr for clues.  You may be able to easily determine
+# the problem and make the necessary corrections.  These packages will be
+# downloaded and built:
+#
+# SDL 1.2.14
+# boost 1.42.0 (headers only)
+# libogg 1.1.4
+# libpng 1.4.1
+# libvorbis 1.2.3
+# lua 5.1.4
+# openal-soft 1.11.753
+# zlib 1.2.3
+#
+# This script requires a working mingw32 toolchain and other basic tools.
+# Have fun!
+#
+# Example usage:
+#   ./makedeps.sh -H i486-mingw32 -p /usr/i486-mingw32 -m "-j8"
+#
+# Bugs: Each time the script is run, all of the dependencies will be
+# rebuilt, even the ones which were already built successfully.
+#
+
+function showhelp()
+{
+       echo "Download and cross-compile dependencies for win32."
+       echo "Usage: $0 [-h] [-m makeopts] -H host -p prefix"
+       echo ""
+       echo "  -H  Specify the name of your toolchain, like i486-mingw32."
+       echo "  -h  Show this help an exit."
+       echo "  -m  Specify options to be passed to make."
+       echo "  -p  Specify the path to your toolchain installation."
+}
 
 
-MAKEOPTS="-j8"
+while getopts ":H:hm:p:" opt
+do
+       case $opt in
+               H)
+                       HOST="$OPTARG"
+                       ;;
+               h)
+                       showhelp
+                       exit 0
+                       ;;
+               m)
+                       MAKEOPTS="$OPTARG"
+                       ;;
+               p)
+                       PREFIX="$OPTARG"
+                       ;;
+               \?)
+                       echo "Invalid option: -$OPTARG" >&2
+                       showhelp
+                       exit 1
+                       ;;
+       esac
+done
+
+if test x$HOST = x || test x$PREFIX = x
+then
+       showhelp
+       exit 1
+fi
 
 
-#####
 
 function die()
 {
 
 function die()
 {
@@ -24,7 +91,7 @@ rm -f $DESTDIR/README
 PACKAGE="boost_1_42_0"
 VERSION="1.42.0"
 cd $DESTDIR
 PACKAGE="boost_1_42_0"
 VERSION="1.42.0"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.bz2 ]] && (wget "http://sourceforge.net/projects/boost/files/boost/$VERSION/$PACKAGE.tar.bz2/download" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.bz2 && (wget "http://sourceforge.net/projects/boost/files/boost/$VERSION/$PACKAGE.tar.bz2/download" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 7bf3b4eb841b62ffb0ade2b82218ebe6  boost_1_42_0.tar.bz2
 EOL
 (md5sum -c <<"EOL"
 7bf3b4eb841b62ffb0ade2b82218ebe6  boost_1_42_0.tar.bz2
 EOL
@@ -38,7 +105,7 @@ cp -r $PACKAGE/boost $DESTDIR/$PREFIX/include/boost) || die "installing $PACKAGE
 
 PACKAGE="SDL-1.2.14"
 cd $DESTDIR
 
 PACKAGE="SDL-1.2.14"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.libsdl.org/release/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://www.libsdl.org/release/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 e52086d1b508fa0b76c52ee30b55bec4  SDL-1.2.14.tar.gz
 EOL
 (md5sum -c <<"EOL"
 e52086d1b508fa0b76c52ee30b55bec4  SDL-1.2.14.tar.gz
 EOL
@@ -53,7 +120,7 @@ make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
 
 PACKAGE="libogg-1.1.4"
 cd $DESTDIR
 
 PACKAGE="libogg-1.1.4"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/ogg/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://downloads.xiph.org/releases/ogg/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 10200ec22543841d9d1c23e0aed4e5e9  libogg-1.1.4.tar.gz
 EOL
 (md5sum -c <<"EOL"
 10200ec22543841d9d1c23e0aed4e5e9  libogg-1.1.4.tar.gz
 EOL
@@ -68,7 +135,7 @@ make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
 
 PACKAGE="libvorbis-1.2.3"
 cd $DESTDIR
 
 PACKAGE="libvorbis-1.2.3"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/vorbis/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://downloads.xiph.org/releases/vorbis/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 5aa77f55c0e0aab8eb8ed982335daac8  libvorbis-1.2.3.tar.gz
 EOL
 (md5sum -c <<"EOL"
 5aa77f55c0e0aab8eb8ed982335daac8  libvorbis-1.2.3.tar.gz
 EOL
@@ -85,7 +152,7 @@ make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
 
 PACKAGE="openal-soft-1.11.753-bin"
 cd $DESTDIR
 
 PACKAGE="openal-soft-1.11.753-bin"
 cd $DESTDIR
-[[ ! -f $PACKAGE.zip ]] && (wget "http://kcat.strangesoft.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.zip && (wget "http://kcat.strangesoft.net/$PACKAGE.zip" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 20747ce5ca0f902ae082fef15d7b41a5  openal-soft-1.11.753-bin.zip
 EOL
 (md5sum -c <<"EOL"
 20747ce5ca0f902ae082fef15d7b41a5  openal-soft-1.11.753-bin.zip
 EOL
@@ -116,7 +183,7 @@ EOL
 
 PACKAGE="zlib123-dll"
 cd $DESTDIR
 
 PACKAGE="zlib123-dll"
 cd $DESTDIR
-[[ ! -f $PACKAGE.zip ]] && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.zip && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 cc7fa97f9c19386bb701acc79d0abbca  zlib123-dll.zip
 EOL
 (md5sum -c <<"EOL"
 cc7fa97f9c19386bb701acc79d0abbca  zlib123-dll.zip
 EOL
@@ -135,7 +202,7 @@ ln -fs libzdll.a libz.dll.a) || die "installing $PACKAGE"
 
 PACKAGE="libpng-1.4.1"
 cd $DESTDIR
 
 PACKAGE="libpng-1.4.1"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://prdownloads.sourceforge.net/libpng/$PACKAGE.tar.gz?download" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://prdownloads.sourceforge.net/libpng/$PACKAGE.tar.gz?download" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 fa0b2a84733463f90d3ac9f43ccafabc  libpng-1.4.1.tar.gz
 EOL
 (md5sum -c <<"EOL"
 fa0b2a84733463f90d3ac9f43ccafabc  libpng-1.4.1.tar.gz
 EOL
@@ -152,7 +219,7 @@ make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
 
 PACKAGE="lua-5.1.4"
 cd $DESTDIR
 
 PACKAGE="lua-5.1.4"
 cd $DESTDIR
-[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.lua.org/ftp/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
+test ! -f $PACKAGE.tar.gz && (wget "http://www.lua.org/ftp/$PACKAGE.tar.gz" || die "downloading $PACKAGE")
 (md5sum -c <<"EOL"
 d0870f2de55d59c1c8419f36e8fac150  lua-5.1.4.tar.gz
 EOL
 (md5sum -c <<"EOL"
 d0870f2de55d59c1c8419f36e8fac150  lua-5.1.4.tar.gz
 EOL
@@ -179,7 +246,7 @@ diff -ur lua-5.1.4.orig/Makefile lua-5.1.4/Makefile
  
  # What to install.
 -TO_BIN= lua luac
  
  # What to install.
 -TO_BIN= lua luac
-+TO_BIN= lua.exe luac.exe
++TO_BIN= lua.exe luac.exe lua51.dll
  TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
 -TO_LIB= liblua.a
 +TO_LIB= liblua.a liblua.dll.a
  TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
 -TO_LIB= liblua.a
 +TO_LIB= liblua.a liblua.dll.a
diff --git a/win32/makepackage.sh b/win32/makepackage.sh
new file mode 100755 (executable)
index 0000000..6cb1afa
--- /dev/null
@@ -0,0 +1,143 @@
+#!/bin/sh
+
+#
+# Yoink
+# Run this script to create a portable win32 package.
+#
+
+function showhelp()
+{
+       echo "Create a portable win32 package or installer."
+       echo "Usage: $0 [-h] [-i makensis] [-s strip] -d assets -V version -p prefix"
+       echo ""
+       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 "  -V  Specify the version of the program to be packaged"
+       echo "  -s  To strip the binaries, specify the strip program."
+       echo "  -p  Specify the path to your toolchain installation."
+}
+
+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
+
+function die()
+{
+       rm -rf "$BUILD"
+       echo "die:" $@
+       exit 1
+}
+
+ROOT="$PWD"
+BUILD="$PWD/tmp-$$"
+NAME="yoink-$VERSION"
+ARCHIVE="$BUILD/$NAME"
+INSTALLER_SCRIPT="$ROOT/win32/yoink.nsi"
+
+MAN2HTML="$ROOT/doc/man2html.sh"
+UNIX2DOS="$ROOT/win32/unix2dos.sh"
+
+DLLS="libogg-0 libpng14-14 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" -f -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 the portable archive
+       cd "$BUILD"
+       zip -r $NAME.zip $NAME || die "zipping portable archive"
+       cd "$ROOT"
+       mv "$BUILD/$NAME.zip" .
+       echo "Done! Package saved to $NAME.zip."
+else
+# build an installer
+       cd "$BULID"
+       "$MAKENSIS" "$INSTALLER_SCRIPT" \
+               -DINSTALLFILES="$NAME" -DVERSION="$VERSION" \
+               || die "running '$MAKENSIS'"
+       cd "$ROOT"
+       mv "$BUILD/$NAME.exe" .
+       echo "Done! Installer saved to $NAME.exe."
+fi
+
+
+rm -rf "$BUILD"
+
diff --git a/win32/mkpackage.sh.in b/win32/mkpackage.sh.in
deleted file mode 100644 (file)
index 4a760d8..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-#
-# Yoink
-# Run this script to create a win32 installer.
-# This was blatantly yoinked and adapted from the Wormux Project.
-#
-
-# Paths
-SCRIPT="$PWD/yoink.nsi"
-BUILD_DIR="$PWD/build"
-ROOT_DIR="$PWD/.."
-
-# Programs
-MAKENSIS="@MAKENSIS@"
-STRIP="@STRIP@"
-UNIX2DOS="$ROOT_DIR/tools/unix2dos"
-
-# DLL dependencies
-DLLS="libogg-0 libpng14-14 libvorbis-0 libvorbisfile-3 lua51 OpenAL32 SDL zlib1"
-
-# Prepare
-rm -rf "$BUILD_DIR"
-mkdir -p "$BUILD_DIR"
-
-cp -f "$ROOT_DIR/src/yoink.exe" "$BUILD_DIR"
-#"${STRIP:-strip}" "$BUILD_DIR/yoink.exe"
-
-for dll in $DLLS
-do
-       cp -f "@prefix@/bin/$dll.dll" "$BUILD_DIR"
-       #"${STRIP:-strip}" "BUILD_DIR/$dll.dll"
-done
-
-cd "$ROOT_DIR"
-for asset in @DATA_FILES@
-do
-       cp -f --parents "data/$asset" "$BUILD_DIR"
-done
-
-cd "$ROOT_DIR"
-for doc in AUTHORS ChangeLog COPYING README TODO
-do
-       "$UNIX2DOS" "$doc" "$BUILD_DIR/$doc.txt"
-done
-
-cd "$ROOT_DIR/doc"
-cp -rf licenses "$BUILD_DIR"
-
-cd "$BUILD_DIR/licenses"
-for license in $(ls)
-do
-       mv "$license" "$license.txt"
-       "$UNIX2DOS" "$license.txt"
-done
-
-
-#
-# Compile the installer and cleanup.
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-if ! "${MAKENSIS:-makensis}" "$SCRIPT"
-then
-       echo "makensis failed, aborting..."
-       exit 1
-fi
-
-#rm -rf "$BUILD_DIR"
-
similarity index 83%
rename from tools/unix2dos
rename to win32/unix2dos.sh
index 3c171e55dc219d028fd6b6a7c85d6b21702934bb..c3ee7a8d336f5ef54c3a721c3fdb26198f8bf6a1 100755 (executable)
@@ -1,7 +1,9 @@
 #!/bin/sh
 
 #!/bin/sh
 
+#
+# Yoink
 # An implementation of unix2dos using sed.
 # An implementation of unix2dos using sed.
-# Written by Charles McGarvey; released into the public domain.
+#
 
 if [ -f "$1" ];
 then
 
 if [ -f "$1" ];
 then
similarity index 95%
rename from win32/yoink.nsi.in
rename to win32/yoink.nsi
index b1a1aed141d2c3432ddbacbe810e266101ee0280..7f1b635094714bf2bc3f56bf4e88d3acf8f8c28f 100644 (file)
@@ -12,7 +12,7 @@
 
   ;Name and file
   Name "Yoink"
 
   ;Name and file
   Name "Yoink"
-  OutFile "../yoinksetup-@VERSION@.exe"
+  OutFile "yoinksetup-$VERSION.exe"
   SetCompressor /SOLID lzma
 
   ;Default installation folder
   SetCompressor /SOLID lzma
 
   ;Default installation folder
@@ -64,7 +64,7 @@ Section "Install Yoink!" SecInstallYoink
   SetOutPath "$INSTDIR"
   
   ;ADD YOUR OWN FILES HERE...
   SetOutPath "$INSTDIR"
   
   ;ADD YOUR OWN FILES HERE...
-  File /r "build/*"
+  File /r "$INSTALLFILES/*"
   
   ;Store installation folder
   WriteRegStr HKCU "Software\Yoink" "" $INSTDIR
   
   ;Store installation folder
   WriteRegStr HKCU "Software\Yoink" "" $INSTDIR
@@ -78,9 +78,9 @@ Section "Install Yoink!" SecInstallYoink
   CreateShortCut "$SMPROGRAMS\Yoink\Uninstall.lnk" "$INSTDIR\uninstall.exe"
 
   WriteRegStr HKCU "Software\Games\Yoink" "" "$INSTDIR"
   CreateShortCut "$SMPROGRAMS\Yoink\Uninstall.lnk" "$INSTDIR\uninstall.exe"
 
   WriteRegStr HKCU "Software\Games\Yoink" "" "$INSTDIR"
-  WriteRegStr HKCU "Software\Games\Yoink" "Version" "@VERSION@"
+  WriteRegStr HKCU "Software\Games\Yoink" "Version" "$VERSION"
   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayName" "Yoink"
   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayName" "Yoink"
-  WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayVersion" "@VERSION@"
+  WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "DisplayVersion" "$VERSION"
   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "UninstallString" "$INSTDIR\uninstall.exe"
 
 SectionEnd
   WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Yoink" "UninstallString" "$INSTDIR\uninstall.exe"
 
 SectionEnd
This page took 0.051669 seconds and 4 git commands to generate.