#!/bin/bash
# CWD: source dir
BFDIR="$1"
TARGET="$2"
TOP=`pwd`

VERSION=11.4
SDKVERSION=11.4
MEDIAVERSION=3.6

export CROSS_COMPILE="$BUILDROOT/opt/kerneldev/bin/"

# KERNELDIR fix
if [[ x"$KERNELDIR" == x ]]; then
	export KERNELDIR=/usr/src/linux
fi

# unpack the tarball: Desktop Software
if [[ x"$GNU_TARGET_MARCH" == x"x86-64" ]]; then
	tarball=Blackmagic_Desktop_Video_Linux_$VERSION
	sdkball=Blackmagic_DeckLink_SDK_$SDKVERSION
	cpu=x86_64
else # i386
	tarball=Blackmagic_Desktop_Video_Linux_$VERSION
	sdkball=Blackmagic_DeckLink_SDK_$SDKVERSION
	cpu=i386
fi

tar -xvJf $TOP/$tarball/$tarball.tar.xz || exit 1
rm -fv $TOP/$tarball/$tarball.tar.xz || exit 1

tar -xvJf $TOP/$sdkball/$sdkball.tar.xz || exit 1
rm -fv $TOP/$sdkball/$sdkball.tar.xz || exit 1

rmdir *

mv -vn "Blackmagic DeckLink SDK $SDKVERSION" "sdk" || exit 1
mv -vn "Blackmagic_Desktop_Video_Linux_$VERSION" "deskvideo" || exit 1

# get tarballs ready
mv -vn "deskvideo/other/$cpu/desktopvideo-$VERSION"*"a14-$cpu.tar.gz" "deskvideo.tar.gz" || exit 1
mv -vn "deskvideo/other/$cpu/mediaexpress-$MEDIAVERSION"*"a13-$cpu.tar.gz" "mediaexpress.tar.gz" || exit 1

# kernel driver
rm -Rfv deskvideo || exit 1
(tar -xvzf deskvideo.tar.gz && rm -v deskvideo.tar.gz) || exit 1
mv -vn "desktopvideo-$VERSION"*"a14-$cpu" deskvideo || exit 1

# provide a root compatible with VLC player
mkdir -p $TARGET/usr/blackmagic-decklink-sdi
ln -s /usr/include/blackmagic-decklink $TARGET/usr/blackmagic-decklink-sdi/include || exit 1
ln -s /usr/$LIBNAME $TARGET/usr/blackmagic-decklink-sdi/$LIBNAME || exit 1

# compile kernel driver
mkdir -p $TARGET/lib/modules/$KERNELVER/blackmagic || exit 1

cd "$TOP/deskvideo/usr/src/blackmagic-$VERSION"* || exit 1
make KERNELDIR=$KERNELDIR $JSW || exit 1
cp -v *.ko $TARGET/lib/modules/$KERNELVER/blackmagic/ || exit 1

cd "$TOP/deskvideo/usr/src/blackmagic-io-$VERSION"* || exit 1
make KERNELDIR=$KERNELDIR $JSW || exit 1
cp -v *.ko $TARGET/lib/modules/$KERNELVER/blackmagic/ || exit 1

# remove kernel driver, we're done
cd $TOP/deskvideo/usr || exit 1
rm -Rfv src || exit 1

# remove the "etc" directory
cd $TOP/deskvideo || exit 1
rm -Rfv etc || exit 1

# plop the rest into place
mkdir -p $TARGET/usr || exit 1
cd $TOP/deskvideo/usr/ || exit 1
mv -vn lib $LIBNAME 2>/dev/null
cp -Rfavl * $TARGET/usr/ || exit 1
cd $TOP || exit 1

# black magic SDK doc
cd "$TOP/sdk" || exit 1
mkdir -p $TARGET/usr/share/doc/blackmagic-decklink-SDK || exit 1
mv -vn *.pdf $TARGET/usr/share/doc/blackmagic-decklink-SDK || exit 1
rm -Rfv Win Mac *.rtf || exit 1

# black magic SDK headers
cd "$TOP/sdk" || exit 1
mkdir -p $TARGET/usr/include/blackmagic-decklink || exit 1
mv -vn Linux/include/* $TARGET/usr/include/blackmagic-decklink/ || exit 1

# the DeckLink SDK binaries
cd "$TOP/sdk" || exit 1
mkdir -p $TARGET/usr/share/blackmagic-decklink-test || exit 1
mv -vn Linux/Samples/bin/$cpu/* $TARGET/usr/share/blackmagic-decklink-test/ || exit 1

# done
cd $TOP || exit 1
rm -Rfv sdk

# mediaexpress. part of deskvideo.
cd $TARGET || exit 1
tar --strip-components=1 -xvzf "$TOP/mediaexpress.tar.gz" || exit 1
if [[ "$LIBNAME" != "lib" ]]; then
	cd $TARGET/usr/ || exit 1
#	mv -vn lib/blackmagic/me $LIBNAME/blackmagic/me || exit 1
	mv -vn lib/blackmagic/MediaExpress $LIBNAME/blackmagic/MediaExpress || exit 1
	rmdir lib || true
fi
cd $TOP || exit 1
rm -Rfv mediaexpress || exit 1

# done
cd $TOP || exit 1
rm -Rfv deskvideo || exit 1

# clean empty dirs
cd $TARGET || exit 1
find -type d -exec rmdir -p {} + >/dev/null 2>&1 || true
rmdir -p lib64 >/dev/null 2>&1 || true

# make their config util happy
mkdir -p $TARGET/etc/blackmagic || exit 1

# install this script for further steps
mkdir -p $TARGET/usr/share/castus/ || exit 1
cp -v $BFDIR/install-source $TARGET/usr/share/castus/blackmagic-install-source || exit 1

# fix symlinks
cd $TARGET/usr/bin || exit 1
for f in *; do
	if [ -L "$f" ]; then
		echo "Fixing symlink $f"
		os=`readlink $f`
		ns=`echo $os | sed -e 's/\/lib\//\/'$LIBNAME'\//'`
		echo "$os to $ns"
		ln -sf $ns $f || exit 1
	fi
done

