]> Dogcows Code - chaz/yoink/blobdiff - win32/tools/makedeps.sh
new win32 deps script; using pkgconfig for openal
[chaz/yoink] / win32 / tools / makedeps.sh
diff --git a/win32/tools/makedeps.sh b/win32/tools/makedeps.sh
new file mode 100755 (executable)
index 0000000..378272c
--- /dev/null
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+# Download and cross-compile dependencies for Yoink.  This script requires
+# bash, wget, unzip, tar, rsync, patch, make, install and sudo.  Have fun!
+
+HOST="i686-mingw32"
+PREFIX="/usr/$HOST/usr"
+
+MAKEOPTS="-j8"
+
+#####
+
+function die()
+{
+       echo "die:" $@
+       exit 1
+}
+
+function sync()
+{
+       # install the files from $DESTDIR to $PREFIX
+       echo "Installing to $PREFIX..."
+       sudo rsync -av $DESTDIR/$PREFIX/* $PREFIX/ || die "syncing dependencies"
+}
+
+DESTDIR="`pwd`/deps"
+mkdir -p $DESTDIR
+rm -f $DESTDIR/README
+
+PACKAGE="zlib123-dll"
+cd $DESTDIR
+[[ ! -f $PACKAGE.zip ]] && (wget "http://www.zlib.net/$PACKAGE.zip" || die "downloading $PACKAGE")
+rm -rf $PACKAGE
+unzip -d $PACKAGE $PACKAGE.zip || die "unpackaging $PACKAGE"
+cd $PACKAGE
+($HOST-dlltool -d lib/zlib.def -l 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="libogg-1.1.4"
+cd $DESTDIR
+[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/ogg/$PACKAGE.tar.gz" || die "downloading $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"
+
+# install dependencies thus built thus far
+sync
+
+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")
+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
+[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.libsdl.org/release/$PACKAGE.tar.gz" || die "downloading $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="libvorbis-1.2.3"
+cd $DESTDIR
+[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://downloads.xiph.org/releases/vorbis/$PACKAGE.tar.gz" || die "downloading $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="openal-soft-1.11.753-bin"
+cd $DESTDIR
+[[ ! -f $PACKAGE.zip ]] && (wget "http://kcat.strangesoft.net/$PACKAGE.zip" || die "downloading $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="libpng-1.4.1"
+cd $DESTDIR
+[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://prdownloads.sourceforge.net/libpng/$PACKAGE.tar.gz?download" || die "downloading $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="lua-5.1.4"
+cd $DESTDIR
+[[ ! -f $PACKAGE.tar.gz ]] && (wget "http://www.lua.org/ftp/$PACKAGE.tar.gz" || die "downloading $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
+ 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
+
+sync
+
+cd $DESTDIR/$PREFIX
+cat >README <<EOL
+
+Yoink Win32 Dependencies
+Created `date`
+
+These dependencies were generated automatically by makedeps.sh 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.
+
+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 COPYING file in the Yoink package.
+
+EOL
+tar cjf deps.tar.bz2 * || die "archiving dependencies"
+mv deps.tar.bz2 $DESTDIR/..
+
+echo "Done!"
+
This page took 0.021166 seconds and 4 git commands to generate.