#!/bin/sh # A dirty script to create some windows binaries (shared, static, debug, ...) using the MSYS environment. # give build type as command line argument # x86 or x86_64-cross build_type=$1 test -z "$build_type" && build_type=x86 echo "build type: $build_type" case $build_type in x86) decoder=x86 strip=strip hostopt= ;; x86_64-cross) decoder=x86-64 strip=x86_64-w64-mingw32-strip hostopt="--host=x86_64-w64-mingw32 --build=i686-pc-mingw32" ;; *) echo "Unknown build type!" exit 1 ;; esac temp="$PWD/tmp" final="$PWD/releases" txt="README COPYING NEWS" # let's try with modules opts="" #opts="--with-audio=win32 --disable-modules" # Get the version for the build from configure.ac . version=`sed -n 's/^AC_INIT([^,]*, \[\([^,]*\)\], .*$/\1/p' < configure.ac` echo "Building binaries for version $version" prepare_dir() { test -e "$final" || mkdir "$final" } prepare_unix2dos() { echo "preparing unix2dos tool" # I'll include documentation in DOS-style, with the help of this little unix2dos variant. test -x "unix2dos" || echo " #include #include int main() { char buf[1000]; ssize_t got; while((got=read(0, buf, 1000))>0) { ssize_t end=0; ssize_t pos=0; for(end=0;end unix2dos.c && gcc -O -o unix2dos unix2dos.c } mpg123_build() { cpu=$1 stat=$2 debug=$3 myopts=$opts if test "$stat" = "y"; then echo "static build (stat=$stat)" && name=mpg123-$version-static-$cpu myopts="$myopts --disable-shared" else echo "dynamic build (stat=$stat)" && name=mpg123-$version-$cpu fi && if test "$debug" = "y"; then echo "Debugging build!" name=$name-debug myopts="$myopts --enable-debug" fi && tmp=$temp-$name && echo "REMOVING $tmp!" && sleep 5 && if test -e Makefile; then make clean; fi && rm -rvf $tmp && ./configure $hostopt --prefix=$tmp $myopts --with-cpu=$cpu && make && make install && rm -rf "$final/$name" && mkdir "$final/$name" && cp -v "$tmp/bin/mpg123.exe" "$final/$name" && if test "$debug" = y; then echo "Not stripping the debug build..." else $strip --strip-unneeded "$final/$name/"*.exe fi && if test "$stat" = "y"; then echo "No DLL there..." else cp -v "$tmp/bin/libmpg123"*.dll "$tmp/include/mpg123.h" "$final/$name" && cp -v "src/libmpg123/.libs/libmpg123"*.dll.def "$final/$name" && if test "$debug" = y; then echo "Not stripping the debug build..." else $strip --strip-unneeded "$final/$name/"*.dll || exit 1 fi for i in $tmp/lib/mpg123/*.la do if test -e "$i"; then plugdir="$final/$name/plugins" mkdir -p "$plugdir" && sed -e 's/libdir=.*$/libdir='"'.'/" < $i > "$plugdir/`basename $i`" && sofile=`echo $i | sed -e 's/\.la$/.dll/'` && if test "$debug" = y; then echo "not stripping debug module..." else $strip --strip-unneeded "$sofile" || exit 1 fi && cp -v "$sofile" "$plugdir" fi done fi && for i in $txt do echo "text file $i -> $final/$name/$i.txt" ./unix2dos < "$i" > "$final/$name/$i.txt" done } prepare_dir && prepare_unix2dos && mpg123_build $decoder y n && mpg123_build ${decoder}_dither y n && mpg123_build $decoder n n && mpg123_build ${decoder}_dither n n && mpg123_build $decoder n y && echo "Hurray! Note: Please do not forget to copy the libltdl DLL from MSYS to the dynamic build directories... " || echo "Bleh..."