#!/bin/sh

######################################################
# Build script for FreeRDP                           #
######################################################

######################################################
# Configure extension creation parameters            #
######################################################

COMMIT=4c69c3e
WRKDIR=FreeRDP
EXTNAME=freerdp
TMPDIR=/tmp/$EXTNAME
PREFIX=/usr/local
SCRIPT_PATH=$(pwd)

######################################################
# Prepare extension creation                         #
######################################################

# Remove dirs and files left from previous creation
rm -r -f $TMPDIR
rm -r -f $TMPDIR-dev
rm -r -f $WRKDIR

# Create temp folders
mkdir -p $TMPDIR
mkdir -p $TMPDIR-dev

# Download build dependencies
tce-load -iw git cmake compiletc squashfs-tools zsync Xorg-7.7-dev zlib_base-dev openssl-dev alsa-dev pulseaudio-dev cups-dev pcsc-lite-dev ffmpeg-dev gst-plugins-base0.10-dev libjpeg-turbo-dev

# Download upstream source
git clone https://github.com/FreeRDP/FreeRDP.git
cd $WRKDIR
git checkout $COMMIT

######################################################
# Compile extension                                  #
######################################################

# Export variables needed for compilation
export CFLAGS="-march=i486 -mtune=i686 -Os -pipe"
export CXXFLAGS="-march=i486 -mtune=i686 -Os -pipe"
export LDFLAGS="-Wl,-O1"

mkdir build
cd build

# Configure
cmake -DCMAKE_C_FLAGS=$CFLAGS -DCMAKE_INSTALL_PREFIX=$PREFIX -DCMAKE_INSTALL_LIBDIR=$PREFIX/lib -DCMAKE_BUILD_TYPE=Release -DWITH_PULSE=ON -DWITH_CUPS=ON -DWITH_JPEG=ON -DWITH_GSTREAMER=ON -DWITH_FFMPEG=ON -DWITH_ALSA=ON -DWITH_PCSC=ON ../

# Compile
make

# Install in base temp dir
make install DESTDIR=$TMPDIR

# Adjust directory access rigths
find $TMPDIR/ -type d | xargs chmod -v 755;

# Strip executables
find $TMPDIR | xargs file | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded

# Move include files to dev extension
mkdir -p $TMPDIR-dev$PREFIX
mv $TMPDIR$PREFIX/include $TMPDIR-dev$PREFIX
# Move pkgconfig folder to dev extension
mkdir -p $TMPDIR-dev$PREFIX/lib
mv $TMPDIR$PREFIX/lib/pkgconfig $TMPDIR-dev$PREFIX/lib
# Move *.a files to dev extension
mv $TMPDIR$PREFIX/lib/*.a $TMPDIR-dev$PREFIX/lib

# Copy license file
mkdir -p $TMPDIR$PREFIX/share/doc/$EXTNAME
cp ../LICENSE $TMPDIR$PREFIX/share/doc/$EXTNAME

###################################################
# Create base extension in temp dir               #
###################################################

cd $TMPDIR
cd ..
mksquashfs $TMPDIR $EXTNAME.tcz
cd $TMPDIR
find usr -not -type d > $EXTNAME.tcz.list
mv ../$EXTNAME.tcz .

# Create md5 file
md5sum $EXTNAME.tcz > $EXTNAME.tcz.md5.txt

# Copy *.info and *.dep files
cp $SCRIPT_PATH/$EXTNAME.tcz.info $TMPDIR
cp $SCRIPT_PATH/$EXTNAME.tcz.dep $TMPDIR

# Update Size field in info file
SIZE=$(du -h $EXTNAME.tcz | cut -f 1)
sed -i "s/^Size.*/Size:\t\t$SIZE/" $EXTNAME.tcz.info

# Create zsync file
zsyncmake $EXTNAME.tcz > /dev/null 2>&1

# Create tarball
tar cvfz $EXTNAME.tar.gz $EXTNAME.tcz*

###################################################
# Create dev extension in temp dir                #
###################################################

cd $TMPDIR-dev
cd ..
mksquashfs $TMPDIR-dev $EXTNAME-dev.tcz
cd $TMPDIR-dev
find usr -not -type d > $EXTNAME-dev.tcz.list
mv ../$EXTNAME-dev.tcz .

# Create md5 file
md5sum $EXTNAME-dev.tcz > $EXTNAME-dev.tcz.md5.txt

# Copy *.info and *.dep files
cp $SCRIPT_PATH/$EXTNAME-dev.tcz.info $TMPDIR-dev
cp $SCRIPT_PATH/$EXTNAME-dev.tcz.dep $TMPDIR-dev

# Update Size field in info file
SIZE=$(du -h $EXTNAME-dev.tcz | cut -f 1)
sed -i "s/^Size.*/Size:\t\t$SIZE/" $EXTNAME-dev.tcz.info

# Create zsync file
zsyncmake $EXTNAME-dev.tcz > /dev/null 2>&1

# Create tarball
tar cvfz $EXTNAME-dev.tar.gz $EXTNAME-dev.tcz*
