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