#!/bin/sh

echo 'configuring spacenav library...'

PREFIX=/usr/local
OPT=yes
DBG=yes
X11=yes
VER=`git describe --tags 2>/dev/null`

if [ -z "$VER" ]; then
	VER=`git rev-parse --short HEAD 2>/dev/null`
	if [ -z "$VER" ]; then
		VER=v`pwd | grep 'libspnav-[0-9]\+\.' | sed 's/.*libspnav-\(\([0-9]\+\.\)\+[0-9]\+\).*$/\1/'`
		if [ $VER = v ]; then
			VER='<unknown version>'
		fi
	fi
fi

echo "configuring libspnav - $VER"

srcdir="`dirname "$0"`"
libdir=lib

#if [ "`uname -m`" = 'x86_64' ]; then
#	libdir=lib64
#fi

for arg; do
	case "$arg" in
	--prefix=*)
		value=`echo $arg | sed 's/--prefix=//'`
		PREFIX=${value:-$prefix}
		;;
	
	--enable-opt)
		OPT=yes;;
	--disable-opt)
		OPT=no;;

	--enable-debug)
		DBG=yes;;
	--disable-debug)
		DBG=no;;
	
	--enable-x11)
		X11=yes;;
	--disable-x11)
		X11=no;;

	--help)
		echo 'usage: ./configure [options]'
		echo 'options:'
		echo '  --prefix=<path>: installation path (default: /usr/local)'
		echo '  --enable-x11: enable X11 communication mode (default)'
		echo '  --disable-x11: disable X11 communication mode'
		echo '  --enable-opt: enable speed optimizations (default)'
		echo '  --disable-opt: disable speed optimizations'
		echo '  --enable-debug: include debugging symbols (default)'
		echo '  --disable-debug: do not include debugging symbols'
		echo 'all invalid options are silently ignored'
		exit 0
		;;
	esac
done

echo "  prefix: $PREFIX"
echo "  optimize for speed: $OPT"
echo "  include debugging symbols: $DBG"
echo "  x11 communication method: $X11"
if [ -n "$CFLAGS" ]; then
	echo "  cflags: $CFLAGS"
fi
if [ -n "$LDFLAGS" ]; then
	echo "  ldflags: $LDFLAGS"
fi
echo ""

if [ "$X11" = "no" ]; then
	echo "WARNING: you have disabled the X11 interface, the resulting library won't be compatible with the proprietary 3Dconnexion daemon (3dxserv)!"
	echo ""
fi

# create Makefile
echo 'creating Makefile ...'
echo "PREFIX = $PREFIX" >Makefile
echo "srcdir = $srcdir" >>Makefile
echo "libdir = $libdir" >>Makefile

if [ -n "$CFLAGS" ]; then
	echo "user_cflags = $CFLAGS" >>Makefile
fi
if [ -n "$LDFLAGS" ]; then
	echo "user_ldflags = $LDFLAGS" >>Makefile
fi

if [ "$DBG" = 'yes' ]; then
	echo 'dbg = -g' >>Makefile
fi

if [ "$OPT" = 'yes' ]; then
	echo 'opt = -O3' >>Makefile
fi

if [ "$X11" = 'yes' ]; then
	echo 'magellan_obj = src/spnav_magellan.o' >>Makefile
	echo 'xlib = -lX11' >>Makefile
fi

cat "$srcdir/Makefile.in" >>Makefile

# create spnav_config.h
echo 'creating spnav_config.h ...'
echo '#ifndef SPNAV_CONFIG_H_' >src/spnav_config.h
echo '#define SPNAV_CONFIG_H_' >>src/spnav_config.h
echo '' >>src/spnav_config.h
if [ "$X11" = 'yes' ]; then
	echo '#define SPNAV_USE_X11' >>src/spnav_config.h
	echo '' >>src/spnav_config.h
fi
echo '#endif	/* SPNAV_CONFIG_H_ */' >>src/spnav_config.h

# create pkgconfig file
echo 'creating spnav.pc ...'
pcver=`echo $VER | sed 's/^v//'`
echo "PREFIX=$PREFIX" >spnav.pc
cat spnav.pc.in | sed "s/@VERSION@/$pcver/; s/@LIBDIR@/$libdir/" >>spnav.pc

#done
echo ''
echo 'Done. You can now type make (or gmake) to compile libspnav.'
echo ''
