]> Dogcows Code - chaz/yoink/blobdiff - arch/win32/makedeps.sh
repository reorganizing
[chaz/yoink] / arch / win32 / makedeps.sh
diff --git a/arch/win32/makedeps.sh b/arch/win32/makedeps.sh
new file mode 100755 (executable)
index 0000000..49a79e1
--- /dev/null
@@ -0,0 +1,363 @@
+#!/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 xjf 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
+#
+# This script requires a working mingw32 toolchain and other basic tools.
+# You also need zlib which may not have been included with your mingw32
+# installation; you're on your own for that one.  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.
+#
+
+showhelp()
+{
+       echo "Usage: $0 [-h] [-m makeopts] -H host -p prefix"
+       echo "  Downloads and cross-compiles dependencies for win32."
+       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."
+}
+
+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
+
+
+die()
+{
+       echo "die:" $@
+       exit 1
+}
+
+DESTDIR="`pwd`/deps"
+mkdir -p "$DESTDIR"
+rm -f "$DESTDIR/README"
+rm -rf "$DESTDIR/$PREFIX"
+
+
+PACKAGE="boost_1_42_0"
+VERSION="1.42.0"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xjf $PACKAGE.tar.bz2 || die "unpackaging $PACKAGE"
+(mkdir -p $DESTDIR/$PREFIX/include && \
+rm -rf $DESTDIR/$PREFIX/include/boost && \
+cp -r $PACKAGE/boost $DESTDIR/$PREFIX/include/boost) || die "installing $PACKAGE"
+
+
+PACKAGE="SDL-1.2.14"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xzf $PACKAGE.tar.gz || die "unpackaging $PACKAGE"
+cd $PACKAGE
+./configure --host=$HOST --prefix=$PREFIX --disable-stdio-redirect || die "configuring $PACKAGE"
+make $MAKEOPTS || die "making $PACKAGE"
+make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
+
+
+PACKAGE="libogg-1.1.4"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xzf $PACKAGE.tar.gz || die "unpackaging $PACKAGE"
+cd $PACKAGE
+./configure --host=$HOST --prefix=$PREFIX || die "configuring $PACKAGE"
+make $MAKEOPTS || die "making $PACKAGE"
+make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
+
+
+PACKAGE="libvorbis-1.2.3"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xzf $PACKAGE.tar.gz || die "unpackaging $PACKAGE"
+cd $PACKAGE
+./configure --host=$HOST --prefix=$PREFIX \
+CPPFLAGS="-I$DESTDIR/$PREFIX/include" \
+LDFLAGS="-L$DESTDIR/$PREFIX/lib" || die "configuring $PACKAGE"
+make $MAKEOPTS || die "making $PACKAGE"
+make DESTDIR=$DESTDIR install || die "installing $PACKAGE"
+
+
+PACKAGE="openal-soft-1.11.753-bin"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+unzip $PACKAGE.zip || die "unpackaging $PACKAGE"
+cd $PACKAGE
+(mkdir -p $DESTDIR/$PREFIX/{lib/pkgconfig,include/AL} && \
+install -p -m 0644 include/AL/* $DESTDIR/$PREFIX/include/AL/ && \
+install -p -m 0755 Win32/soft_oal.dll $DESTDIR/$PREFIX/bin/OpenAL32.dll && \
+install -p -m 0755 openal-info.exe $DESTDIR/$PREFIX/bin/ && \
+install -p -m 0755 lib/Win32/libOpenAL32.dll.a $DESTDIR/$PREFIX/lib/ && \
+cat >$DESTDIR/$PREFIX/lib/pkgconfig/openal.pc <<EOL
+prefix=$PREFIX
+exec_prefix=\${prefix}
+libdir=\${exec_prefix}/lib
+includedir=\${prefix}/include
+
+Name: OpenAL
+Description: OpenAL is a cross-platform 3D audio API
+Requires: 
+Version: 1.11.753
+Libs: -L\${libdir} -lOpenAL32
+Cflags: -I\${includedir}
+EOL
+) || die "installing $PACKAGE"
+
+
+#PACKAGE="zlib123-dll"
+#cd $DESTDIR
+#test ! -f $PACKAGE.zip && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+#(md5sum -c <<"EOL"
+#cc7fa97f9c19386bb701acc79d0abbca  zlib123-dll.zip
+#EOL
+#) || die "verifying $PACKAGE"
+#rm -rf $PACKAGE
+#unzip -d $PACKAGE $PACKAGE.zip || die "unpackaging $PACKAGE"
+#cd $PACKAGE
+#($HOST-dlltool -k -d lib/zlib.def -D zlib1.dll -l libzdll.a && \
+#$HOST-ranlib libzdll.a && \
+#mkdir -p $DESTDIR/$PREFIX/{lib,include} && \
+#install -p -m 0644 include/* $DESTDIR/$PREFIX/include/ && \
+#install -p -m 0755 zlib1.dll $DESTDIR/$PREFIX/bin/ && \
+#install -p -m 0755 libzdll.a $DESTDIR/$PREFIX/lib/ && \
+#cd $DESTDIR/$PREFIX/lib && \
+#ln -fs libzdll.a libz.dll.a) || die "installing $PACKAGE"
+
+
+PACKAGE="libpng-1.4.1"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xzf $PACKAGE.tar.gz || die "unpackaging $PACKAGE"
+cd $PACKAGE
+cp scripts/makefile.mingw Makefile && \
+make $MAKEOPTS prefix="$PREFIX" CC="$HOST-gcc" AR="$HOST-ar" RANLIB="$HOST-ranlib" \
+ZLIBINC="-I$DESTDIR/$PREFIX/include" \
+ZLIBLIB="-L$DESTDIR/$PREFIX/lib" libpng.a libpng14.dll || die "making $PACKAGE"
+make DESTDIR=$DESTDIR install prefix="$PREFIX" || die "installing $PACKAGE"
+
+
+PACKAGE="lua-5.1.4"
+cd $DESTDIR
+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
+) || die "verifying $PACKAGE"
+rm -rf $PACKAGE
+tar xzf $PACKAGE.tar.gz || die "unpackaging $PACKAGE"
+cd $PACKAGE
+patch -p1 <<"EOL"
+diff -ur lua-5.1.4.orig/Makefile lua-5.1.4/Makefile
+--- lua-5.1.4.orig/Makefile    2008-08-11 18:40:48.000000000 -0600
++++ lua-5.1.4/Makefile 2010-03-03 23:11:41.673472345 -0700
+@@ -13,7 +13,8 @@
+ INSTALL_BIN= $(INSTALL_TOP)/bin
+ INSTALL_INC= $(INSTALL_TOP)/include
+ INSTALL_LIB= $(INSTALL_TOP)/lib
+-INSTALL_MAN= $(INSTALL_TOP)/man/man1
++INSTALL_MAN= $(INSTALL_TOP)/share/man/man1
++INSTALL_PC=  $(INSTALL_LIB)/pkgconfig
+ #
+ # You probably want to make INSTALL_LMOD and INSTALL_CMOD consistent with
+ # LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h (and also with etc/lua.pc).
+@@ -41,10 +42,11 @@
+ PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
+ # What to install.
+-TO_BIN= lua luac
++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_MAN= lua.1 luac.1
++TO_PC=  lua.pc
+ # Lua version and release.
+ V= 5.1
+@@ -59,11 +61,12 @@
+       src/lua test/hello.lua
+ install: dummy
+-      cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
++      cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_PC) $(INSTALL_LMOD) $(INSTALL_CMOD)
+       cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
+       cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
+       cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
+       cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
++      cd etc && $(INSTALL_DATA) $(TO_PC)  $(INSTALL_PC)
+ ranlib:
+       cd src && cd $(INSTALL_LIB) && $(RANLIB) $(TO_LIB)
+diff -ur lua-5.1.4.orig/src/Makefile lua-5.1.4/src/Makefile
+--- lua-5.1.4.orig/src/Makefile        2008-01-19 12:37:58.000000000 -0700
++++ lua-5.1.4/src/Makefile     2010-03-03 22:45:47.101159854 -0700
+@@ -105,7 +105,7 @@
+ mingw:
+       $(MAKE) "LUA_A=lua51.dll" "LUA_T=lua.exe" \
+-      "AR=$(CC) -shared -o" "RANLIB=strip --strip-unneeded" \
++      "AR=$(CC) -shared -Wl,--out-implib,liblua.dll.a -o" "RANLIB=strip --strip-unneeded" \
+       "MYCFLAGS=-DLUA_BUILD_AS_DLL" "MYLIBS=" "MYLDFLAGS=-s" lua.exe
+       $(MAKE) "LUAC_T=luac.exe" luac.exe
+EOL
+patch -p1 <<EOL
+diff -ur lua-5.1.4.orig/etc/lua.pc lua-5.1.4/etc/lua.pc
+--- lua-5.1.4.orig/etc/lua.pc  2008-08-08 06:46:11.000000000 -0600
++++ lua-5.1.4/etc/lua.pc       2010-03-03 22:46:49.160471491 -0700
+@@ -8,7 +8,7 @@
+ R= 5.1.4
+ # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
+-prefix= /usr/local
++prefix= $PREFIX
+ INSTALL_BIN= \${prefix}/bin
+ INSTALL_INC= \${prefix}/include
+ INSTALL_LIB= \${prefix}/lib
+EOL
+make $MAKEOPTS CC="$HOST-gcc" RANLIB="$HOST-ranlib" mingw || die "making $PACKAGE"
+make INSTALL_TOP=$DESTDIR/$PREFIX install || die "installing $PACKAGE"
+chmod 755 $DESTDIR/$PREFIX/lib/liblua.dll.a
+
+
+# libopengl32 and libglu32 pc files
+mkdir -p $DESTDIR/$PREFIX/lib/pkgconfig
+cat >$DESTDIR/$PREFIX/lib/pkgconfig/gl.pc <<EOL
+prefix=$PREFIX
+exec_prefix=\${prefix}
+libdir=\${exec_prefix}/lib
+includedir=\${prefix}/include
+
+Name: gl
+Description: OpenGL library
+Requires: 
+Version: 
+Libs: -L\${libdir} -lopengl32
+Cflags: -I\${includedir} 
+EOL
+cat >$DESTDIR/$PREFIX/lib/pkgconfig/glu.pc <<EOL
+prefix=$PREFIX
+exec_prefix=\${prefix}
+libdir=\${exec_prefix}/lib
+includedir=\${prefix}/include
+
+Name: glu
+Description: OpenGL Utility library
+Requires: gl
+Version: 
+Libs: -L\${libdir} -lglu32
+Cflags: -I\${includedir} 
+EOL
+
+
+cd $DESTDIR/$PREFIX
+cat >README <<EOL
+
+Yoink Win32 Dependencies
+Created `date +"%d %b %Y"`
+
+These dependencies were generated automatically by makedeps.sh, a script
+available in the Yoink repository.  You should find here all the header
+files, DLL's, implibs, and pkgconfig files required to build Yoink that are
+not provided with the standard mingw32 toolchain.  Yoink itself can be
+built with mingw32 and these installed dependencies like this:
+
+./configure --host=$HOST --prefix=$PREFIX \\
+            PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
+make installer
+
+These files are licensed such that their general distribution under
+reasonable conditions is allowable.  The copyrights of these binaries go to
+their various respective owners.  Look up the specific library for specific
+terms and conditions, or see the file COPYING in the Yoink package.
+
+EOL
+tar cjf deps.tar.bz2 * || die "archiving dependencies"
+mv deps.tar.bz2 $DESTDIR/..
+
+echo "Done!"
+echo "The dependencies are packed into the archive deps.tar.bz2."
+
This page took 0.0224 seconds and 4 git commands to generate.