#!/bin/bash

VERSION=`grep \<version\> exscalibar.kdevelop | grep -E [0-9]+\.[0-9]+\.[0-9]+ | sed s:\ *\</*version\>::g`

echo "/* config.h automatically generated by ./configure:" > ./config.h
echo " * Do not change this file directly." >> config.h
echo " */" >> config.h
echo >> config.h
echo "#define VERSION \"$VERSION\"" >> config.h

echo "# global.pro automatically generated by ./configure:" > ./global.pro
echo "# Do not change this file directly." >> ./global.pro
echo >> ./global.pro

echo OURVERSION = $VERSION >> ./global.pro

echo "Configuring in $PWD..."
echo "BUILD_ROOT = " $PWD >> ./global.pro

pkg-config --atleast-version 0.90.0 jack
if (( $? && ! "0$HAVE_JACK" )) ; then
	echo "Jack not detected."
	echo "If installed, please set \$HAVE_JACK to 1 and rerun."
	echo CONFIG -= jack >> global.pro
else
	echo "Jack detected. Jack interconnections enabled."
	echo CONFIG += jack >> global.pro
	echo JACK_CPPFLAGS = `pkg-config jack --cflags` >> ./global.pro
	echo JACK_LIBS = `pkg-config jack --libs` >> ./global.pro
fi

pkg-config --atleast-version 1.0.0 sndfile
if (( $? && ! "0$HAVE_SNDFILE" )) ; then
	echo "sndfile not detected."
	echo "If installed, please set \$HAVE_SNDFILE to 1 and rerun."
	echo CONFIG -= sndfile >> global.pro
else
	echo "sndfile detected. Sound file I/O functionality enabled."
	echo CONFIG += sndfile >> global.pro
	echo SNDFILE_CPPFLAGS = `pkg-config sndfile --cflags` >> ./global.pro
	echo SNDFILE_LIBS = `pkg-config sndfile --libs` >> ./global.pro
fi

pkg-config --atleast-version 0.9 alsa
if (( $? && ! "0$HAVE_ALSA" )) ; then
	echo "Alsa not detected."
	echo "If installed, please set \$HAVE_ALSA to 1 and rerun."
	echo CONFIG -= alsa >> global.pro
else
	echo "ALSA detected. ALSA soundcard I/O enabled."
	echo CONFIG += alsa >> global.pro
	echo ALSA_CPPFLAGS = `pkg-config alsa --cflags` >> ./global.pro
	echo ALSA_LIBS = `pkg-config alsa --libs` >> ./global.pro
fi

pkg-config --atleast-version 1.0.0 vorbisfile
if (( $? && ! "0$HAVE_VORBSIFILE" )) ; then
	echo "libvorbisfile not detected."
	echo "If installed, please set \$HAVE_VORBISFILE to 1 and rerun."
	echo CONFIG -= vorbisfile >> global.pro
else
	echo "libvorbisfile detected. Ogg Vorbis stream decoding enabled."
	echo CONFIG += vorbisfile >> global.pro
	echo VORBISFILE_CPPFLAGS = `pkg-config vorbisfile --cflags` >> ./global.pro
	echo VORBISFILE_LIBS = `pkg-config vorbisfile --libs` >> ./global.pro
fi

pkg-config --atleast-version 0.15 mad
if (( $? && ! "0$HAVE_MAD" )) ; then
	echo "libmad not detected."
	echo "If installed, please set \$HAVE_MAD to 1 and rerun."
	echo CONFIG -= mad >> global.pro
else
	echo "libmad detected. MPEG audio stream decoding enabled."
	echo CONFIG += mad >> global.pro
	echo MAD_CPPFLAGS = `pkg-config mad --cflags` >> ./global.pro
	echo MAD_LIBS = `pkg-config mad --libs` >> ./global.pro
fi

pkg-config --atleast-version 3.0.0 fftw3f
if (( $? && ! "0$HAVE_FFTW3" )) ; then
	echo "FFTW not detected."
	echo "If installed, please set \$HAVE_FFTW3 to 1 and rerun."
	echo CONFIG -= fftw >> global.pro
else
	echo "FFTW detected. Accellerated transforms enabled."
	echo CONFIG += fftw >> global.pro
	echo FFTW_CPPFLAGS = `pkg-config fftw3f --cflags` >> ./global.pro
	echo FFTW_LIBS = `pkg-config fftw3f --libs` >> ./global.pro
fi

if [ -z "$QTDIR" ]; then
	echo "Qt installation not detected."
	echo "Set \$QTDIR correctly and rerun."
	exit
fi

if [ -x $GAT_LOCATION/bin/gat-config ] ; then
	echo CONFIG += gat >> ./global.pro
	echo GAT_CPPFLAGS = `$GAT_LOCATION/bin/gat-cpp-config --cppflags` >> ./global.pro
	echo GAT_LIBS = `$GAT_LOCATION/bin/gat-cpp-config --libs | sed s:-luuid:$GAT_LOCATION/lib/libuuid.so:` >> ./global.pro
	echo "Found GAT at $GAT_LOCATION. Grid functionality enabled."
else
	echo CONFIG -= gat >> ./global.pro
	echo "Cannot find GAT. Grid functionality disabled."
fi

if [ -n "$EXSCALIBAR_LOCATION" ]; then
	PREFIX=$EXSCALIBAR_LOCATION
else
	PREFIX=$QTDIR
fi

echo "Using $PREFIX as the installation prefix."
echo "PREFIX = " $PREFIX >> ./global.pro

cat system/exscalibar.pc.tmpl > system/exscalibar.pc
echo "Version:" ${VERSION} >> system/exscalibar.pc
echo "Libs:" -L${EXSCALIBAR_LOCATION}/lib -lqtextra -lgeddei -lrgeddei >> system/exscalibar.pc
echo "Cflags:" -I${EXSCALIBAR_LOCATION}/include >> system/exscalibar.pc

cat global.tmpl >> ./global.pro

echo "Distilling Makefiles..."
for FILE in ./exscalibar.pro `find src | grep \\\.pro | grep -v \\\.~`; do
	if [[ $FILE != ./global*.pro ]]; then
	echo "Processing $FILE"
	FP=$(echo $FILE | sed s/\\/[a-z0-9]*\\.pro//)
	qmake -makefile -o "$FP/Makefile" "$FILE"
	perl -i -p -e "s/([^\\/]|^)global.pro/\$1/gc" "$FP/Makefile"
	perl -i -p -e "s/([^\\.]|^)\\.\\/global.pro/\$1/gc" "$FP/Makefile"
#	perl -i -p -e "s/^MOC\\s+=\\s+\\\$\\(QTDIR\\)\\/bin\\/moc$/MOC = moc/g" "$FP/Makefile"
#	perl -i -p -e "s/\\.[a-z]+: \\\$\\(MOC\\)/.moc:/g" "$FP/Makefile"
	fi
done

