#!/bin/sh
#
######################################################
# Build script                                       #
#                                                    #
# See .info for details                              #
######################################################

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

SRCNAM=ffmpeg-2.7.1.tar.bz2
WRKDIR=ffmpeg-2.7.1
EXTNAM=ffmpeg
TMPDIR=/tmp/BUILD/ffmpeg
TMPXXX=/tmp/BUILD

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

# Remove dirs and files left from previous creation

rm -r -f $WRKDIR

rm -r -f $TMPDIR
rm -r -f $TMPDIR-dev
rm -r -f $TMPDIR-doc

# Crete temporary directory

mkdir -p $TMPDIR

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

# Export variables needed for compilation

export CFLAGS="-O2 -pipe -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"
export CXXFLAGS="-O2 -pipe -fno-exceptions -fno-rtti -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp"

# Unpack source in current directory

tar -xf $SRCNAM

cd $WRKDIR

# Configure it

./configure --prefix=/usr/local --enable-static --enable-shared \
--enable-gpl --enable-nonfree --enable-version3 \
--enable-fontconfig \
--enable-gnutls \
--enable-libmp3lame \
--enable-libass \
--enable-libcaca \
--enable-libcelt \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopenh264 \
--enable-libopus \
--enable-libschroedinger \
--enable-libspeex \
--enable-libtheora \
--enable-libtwolame \
--enable-libvorbis \
--enable-libvpx \
--enable-libwavpack \
--enable-libwebp \
--enable-libx264 \
--enable-libxvid \
--enable-openssl \
--enable-x11grab

# Compile

make -j4

# Install in base temp dir

make install DESTDIR=$TMPDIR

# Delete compilation work directory

cd ..
rm -r -f $WRKDIR

# 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 files to doc extension

mkdir -p $TMPDIR-doc/usr/local/share/ffmpeg
mv $TMPDIR/usr/local/share/doc $TMPDIR-doc/usr/local/share
mv $TMPDIR/usr/local/share/man $TMPDIR-doc/usr/local/share
mv $TMPDIR/usr/local/share/ffmpeg/examples $TMPDIR-doc/usr/local/share/ffmpeg

# Move files to dev extension

mkdir -p $TMPDIR-dev/usr/local/lib
mv $TMPDIR/usr/local/include $TMPDIR-dev/usr/local
mv $TMPDIR/usr/local/lib/*.a $TMPDIR-dev/usr/local/lib
mv $TMPDIR/usr/local/lib/pkgconfig $TMPDIR-dev/usr/local/lib

# Move files to libavcodec extension

mkdir -p $TMPXXX/libavcodec/usr/local/lib
mv $TMPDIR/usr/local/lib/libavcodec* $TMPXXX/libavcodec/usr/local/lib

# Move files to libavdevice extension

mkdir -p $TMPXXX/libavdevice/usr/local/lib
mv $TMPDIR/usr/local/lib/libavdevice* $TMPXXX/libavdevice/usr/local/lib

# Move files to libavfilter extension

mkdir -p $TMPXXX/libavfilter/usr/local/lib
mv $TMPDIR/usr/local/lib/libavfilter* $TMPXXX/libavfilter/usr/local/lib

# Move files to libavformat extension

mkdir -p $TMPXXX/libavformat/usr/local/lib
mv $TMPDIR/usr/local/lib/libavformat* $TMPXXX/libavformat/usr/local/lib

# Move files to libavutil extension

mkdir -p $TMPXXX/libavutil/usr/local/lib
mv $TMPDIR/usr/local/lib/libavutil* $TMPXXX/libavutil/usr/local/lib

# Move files to libpostproc extension

mkdir -p $TMPXXX/libpostproc/usr/local/lib
mv $TMPDIR/usr/local/lib/libpostproc* $TMPXXX/libpostproc/usr/local/lib

# Move files to libswresample extension

mkdir -p $TMPXXX/libswresample/usr/local/lib
mv $TMPDIR/usr/local/lib/libswresample* $TMPXXX/libswresample/usr/local/lib

# Move files to libswscale extension

mkdir -p $TMPXXX/libswscale/usr/local
mv $TMPDIR/usr/local/lib $TMPXXX/libswscale/usr/local

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

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

# Create md5 file

md5sum $EXTNAM.tcz > $EXTNAM.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr

###################################################
# Create doc extension in temp dir                #
###################################################

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

# Create md5 file

md5sum $EXTNAM-doc.tcz > $EXTNAM-doc.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr

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

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

# Create md5 file

md5sum $EXTNAM-dev.tcz > $EXTNAM-dev.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr

###################################################
# Create lib extensions in temp dir               #
###################################################

LIBXXX=libavcodec

cd $TMPXXX/LIBXXX
cd ..
mksquashfs $TMPXXX/$LIBXXX $LIBXXX.tcz
cd $TMPXXX/$LIBXXX
find usr -not -type d > $LIBXXX.tcz.list
mv ../$LIBXXX.tcz .

# Create md5 file

md5sum LIBXXX.tcz > $LIBXXX.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr

#---------------------------------------------------------

LIBXXX=libavfilter

cd $TMPXXX/LIBXXX
cd ..
mksquashfs $TMPXXX/$LIBXXX $LIBXXX.tcz
cd $TMPXXX/$LIBXXX
find usr -not -type d > $LIBXXX.tcz.list
mv ../$LIBXXX.tcz .

# Create md5 file

md5sum LIBXXX.tcz > $LIBXXX.tcz.md5.txt

# Cleanup temp directory

rm -r -f usr
