#!/bin/sh

# configuration is being done in a script because starting with GCC-3.2
# the compiler flags are changing too much between minor releases to detect
# with Makefile scripts alone.  For now it just tells you if you have the
# prerequisite compilers.

ERROR=0

# test for nasm
OBJDIR=`arch`
TOPDIR=`pwd`

if [ `arch` == i686 ];
then

	if [ -x /usr/bin/nasm -o -x /usr/local/bin/nasm ]; then HAVE_NASM=y; else HAVE_NASM=n; fi

	if [ "$HAVE_NASM" == "n" ]; 
	then echo " *** Nasm is required.  Download it from nasm.sourceforge.net"; 
	ERROR=1
	fi

fi

if [ -x /usr/bin/yasm -o -x /usr/local/bin/yasm ]; then HAVE_YASM=y; else HAVE_YASM=n; fi

if [ $HAVE_YASM == n ]; 
then echo " *** Yasm is required.  Download it from www.tortall.net/projects/yasm/"; 
ERROR=1
fi


# test for videodev2.h

rm -f a.out
cat > conftest.c << EOF
#include <asm/types.h>
#include <sys/time.h>
#include <linux/videodev2.h>
int main()
{
	return 0;
}
EOF

gcc conftest.c >& /dev/null

if [ -x a.out ]; then HAVE_VIDEO4LINUX2=y; else HAVE_VIDEO4LINUX2=n; fi


# test for dvb

rm -f a.out
cat > conftest.c << EOF
#include <linux/dvb/dmx.h>
#include <linux/dvb/frontend.h>
int main()
{
	return 0;
}
EOF

gcc conftest.c >& /dev/null

if [ -x a.out ]; then HAVE_DVB=y; else HAVE_DVB=n; fi

rm -f a.out conftest.c




# test for -msse support

rm -f a.out
cat > conftest.c << EOF
int main()
{
	return 0;
}
EOF

gcc -msse conftest.c >& /dev/null

if [ -x a.out ]; then HAVE_GCC=y; else HAVE_GCC=n; fi

rm -f a.out conftest.c

if [ $HAVE_GCC == n ]; 
then echo " *** GCC 3.2.2 or greater is required.  Download it from gcc.gnu.org"; 
ERROR=1
fi




# test for OpenGL 2.0


rm -f a.out
cat > conftest.c << EOF
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glu.h>
int main()
{
	glUseProgram(0);
	return 0;
}
EOF

gcc conftest.c -lGL -lGLU >& /dev/null

if [ -x a.out ]; then HAVE_GL=y; else HAVE_GL=n; fi

rm -f a.out conftest.c








if [ $ERROR == 1 ];
then echo "Giving up and going to a movie."
exit 1
fi





# fix libraries
echo CONFIGURING QUICKTIME
cd quicktime* && ./configure && cd ..

echo CONFIGURING LIBMPEG3
cd libmpeg3* && ./configure && cd ..

echo CONFIGURING FFTW
cd fftw* && CFLAGS=-fPIC ./configure && cd ..

echo CONFIGURING MJPEGTOOLS
cd mjpegtools* && ./configure --enable-shared=no && cd ..



echo CONFIGURING SNDFILE
cd libsndfile* && chmod a+x ./configure && ./configure && cd ..

echo CONFIGURING RAW1394
cd libraw1394* && \
./configure --enable-shared=no && \
ln -sf src libraw1394 && \
cd ..

echo CONFIGURING AVC1394
cd libavc1394* && \
RAW1394_PATH=`expr $TOPDIR/libraw1394*` && \
PKG_CONFIG_PATH=$RAW1394_PATH CFLAGS=-I$RAW1394_PATH/ LDFLAGS=-L$RAW1394_PATH/src/.libs ./configure --enable-shared=no && \
cd ..

echo CONFIGURING IEC61883
cd libiec61883* && \
RAW1394_PATH=`expr $TOPDIR/libraw1394*` && \
PKG_CONFIG_PATH=$RAW1394_PATH CFLAGS=-I$RAW1394_PATH/ LDFLAGS=-L$RAW1394_PATH/src/.libs ./configure --enable-shared=no && \
cd ..

echo CONFIGURING THEORA
LIBOGG_PATH=`expr $TOPDIR/quicktime/libogg*` && \
LIBVORBIS_PATH=`expr $TOPDIR/quicktime/libvorbis*` && \
cd libtheora* && \
PKG_CONFIG_PATH=$LIBOGG_PATH:$LIBVORBIS_PATH CFLAGS="-I$LIBOGG_PATH/include -L$LIBOGG_PATH/src -I$LIBVORBIS_PATH/include -L$LIBVORBIS_PATH/lib" ./configure --enable-shared=no && \
cd ..



# write configuration header
echo "Writing hvirtual_config.h"
cat > hvirtual_config.h << EOF
// Configuration file made by configure.  Don't edit.
EOF

if [ "$HAVE_VIDEO4LINUX2" == "y" ];
then 
	echo "#define HAVE_VIDEO4LINUX2" >> hvirtual_config.h
	echo "Have Video4Linux 2"
else
	echo "Don't have Video4Linux 2"
fi

if [ "$HAVE_DVB" == "y" ];
then 
	echo "#define HAVE_DVB" >> hvirtual_config.h
	echo "Have DVB"
else
	echo "Don't have DVB"
fi


if [ "$HAVE_GL" == "y" ];
then 
cat >> hvirtual_config.h << EOF 
#ifndef HAVE_GL
#define HAVE_GL
#endif
EOF
	echo "Have OpenGL 2.0"
else
	echo "Don't have OpenGL 2.0"
fi




# success
if [ "$ERROR" == "0" ];
then echo "Configured successfully.  Type 'make' to build it.";
fi



