tibia-client/tools/make_snapshot.sh

183 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
# generates otclient zip package for win32
# by edubart :)
gitroot="git://github.com/edubart/otclient.git"
name="otclient"
workdir="$HOME/$name-builds"
mingwplatform="i486-mingw32"
mingwbin="/usr/$mingwplatform/bin"
makejobs=4
[ "$1" == "--replace" ] && replace=true || replace=false
# setup work directory
mkdir -p $workdir
cd $workdir
# update otclient
if [ -d otclient ]; then
cd otclient
git pull || exit
else
git clone $gitroot otclient || exit
fi
cd $workdir/otclient
revision=`git rev-list --all | wc -l`
commit=`git describe --dirty --always`
version=`cat CMakeLists.txt | grep "set(VERSION" | sed 's/.*"\([^"]*\)".*/\1/'`
# set flags
export CFLAGS="-march=i686 -m32"
export CXXFLAGS="-march=i686 -m32"
export LDFLAGS="-march=i686 -m32"
# compile for win32
rm -rf build.win32
mkdir build.win32
cd build.win32
cmake -DCMAKE_TOOLCHAIN_FILE=$workdir/otclient/src/framework/cmake/${mingwplatform}_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBOT_PROTECTION=OFF \
-DBUILD_REVISION=$revision \
-DBUILD_COMMIT=$commit \
.. || exit
make -j$makejobs || exit
cd ..
# compile for win32
rm -rf build.win32dx9
mkdir build.win32dx9
cd build.win32dx9
cmake -DCMAKE_TOOLCHAIN_FILE=$workdir/otclient/src/framework/cmake/${mingwplatform}_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBOT_PROTECTION=OFF \
-DOPENGLES=2.0 \
-DBUILD_REVISION=$revision \
-DBUILD_COMMIT=$commit \
.. || exit
make -j$makejobs || exit
cd ..
# compile for linux 64
rm -rf build.linux32
mkdir build.linux32
cd build.linux32
export CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
export LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
cmake -DCMAKE_BUILD_TYPE=Release \
-DBOT_PROTECTION=OFF \
-DBUILD_REVISION=$revision \
-DBUILD_COMMIT=$commit \
.. || exit
make -j$makejobs || exit
cd ..
##################################################
# create win32 package
pkg_suffix="-linux64-$version"
pkgname="$name$pkg_suffix"
pkgzip="$pkgname.tgz"
cd $workdir
rm -rf $pkgname
mkdir $pkgname
cd $pkgname
# copy otclient files
cp -R $workdir/otclient/mods .
cp -R $workdir/otclient/modules .
cp $workdir/otclient/build.linux64/otclient .
cp $workdir/otclient/build.linux64/otclient.map .
cp $workdir/otclient/init.lua .
cp $workdir/otclient/otclientrc.lua .
cp $workdir/otclient/BUGS .
cp $workdir/otclient/AUTHORS .
cp $workdir/otclient/LICENSE .
cp $workdir/otclient/README.md README
# remove git files
find -name '.git*' -exec rm -rf {} \;
find -name '*.spr' -exec rm -f {} \;
find -name '*.dat' -exec rm -f {} \;
cd $workdir
# determine zip name
if ! $replace; then
let i=1
while [ -e $pkgzip ]; do
pkgzip="$pkgname-$i.zip"
let i=i+1
done
fi
# compress to a zip file
rm -f $pkgzip
tar czf $pkgzip $pkgname
echo "Package generated to $pkgzip"
##################################################
# create win32 package
pkg_suffix="-win32-$version"
pkgname="$name$pkg_suffix"
pkgzip="$pkgname.zip"
cd $workdir
rm -rf $pkgname
mkdir $pkgname
cd $pkgname
# copy otclient files
cp -R $workdir/otclient/mods .
cp -R $workdir/otclient/modules .
cp -R $workdir/otclient/data .
cp $mingwbin/libEGL.dll .
cp $mingwbin/libGLESv2.dll .
cp $mingwbin/d3dcompiler_43.dll .
cp $mingwbin/d3dx9_43.dll .
cp $workdir/otclient/build.win32/otclient.exe .
cp $workdir/otclient/build.win32/otclient.map .
cp $workdir/otclient/build.win32dx9/otclient.exe otclient_dx9.exe
cp $workdir/otclient/build.win32dx9/otclient.map otclient_dx9.map
cp $workdir/otclient/init.lua .
cp $workdir/otclient/otclientrc.lua .
cp $workdir/otclient/AUTHORS AUTHORS.txt
cp $workdir/otclient/BUGS BUGS.txt
cp $workdir/otclient/LICENSE LICENSE.txt
cp $workdir/otclient/README.md README.txt
unix2dos LICENSE.txt README.txt BUGS.txt AUTHORS.txt
# remove git files
find -name '.git*' -exec rm -rf {} \;
find -name '*.spr' -exec rm -f {} \;
find -name '*.dat' -exec rm -f {} \;
cd $workdir
# determine zip name
if [ ! $replace ]; then
let i=1
while [ -e $pkgzip ]; do
pkgzip="$pkgname-$i.zip"
let i=i+1
done
fi
# compress to a zip file
rm -f $pkgzip
zip -9 -qr $pkgzip $pkgname
echo "Package generated to $pkgzip"
# test win32 otclient
mkdir otclient/modules/game_tibiafiles/860/
cp $workdir/Tibia/*.spr otclient/modules/game_tibiafiles/860/
cp $workdir/Tibia/*.dat otclient/modules/game_tibiafiles/860/
cd otclient
wine build.win32/otclient.exe
rm -f *.log