#!/bin/sh
# Mini configure script
# 1-10-2004

echo

MT_V="0.40"

MT_VERSION="libmtpixel $MT_V"
LIN_BIN_INSTALL=/usr/local/bin
WIN_BIN_INSTALL="/c/Program Files/libmtpixel/bin"
BIN_INSTALL=
MAKE_DIRS="src examples"
MAKE_BINS="micmp mifcon"
ICON_SET=icons1
LIB_INSTALL="/usr/lib"
HEADER_INSTALL="/usr/include"

STATIC_PNG=
STATIC_JPEG=
STATIC_JP2=
STATIC_TIFF=
STATIC_XPM=
STATIC_GIF=
STATIC_MPAC=
AS_NEEDED=
IMAGE_LIBDIR=

GTK_FILE=_conf.txt
LIBTOOL_TEMPLATE=src/mtlibtool
LIBTOOL_FILE=src/libtool

CFLAG=
MARCH=
OPTS=YES
DEBUG=NO
HELP=1
NSDL=NO
BUILD_BINS="helloworld magif mdtim micmp mifcon mife testcard"
BUILD_DOCS="micmp mifcon mife"

L_EX=
STATIC_LAST=
# Called with lib ID & static mode
LIB_NAME ()
{
	if [ "$IMAGE_LIBDIR" ]
	then
		L_EX="$L_EX ${IMAGE_LIBDIR}/lib$1"
		if [ "$2" ]
		then
			L_EX="${L_EX}.a"
		else
			L_EX="${L_EX}.so"
		fi
	else
		if [ "$2" ]
		then
			if [ -z "$STATIC_LAST" ]
			then
				L_EX="$L_EX -Wl,-dn"
			fi
		else
			if [ "$STATIC_LAST" ]
			then
				L_EX="$L_EX -Wl,-dy"
			fi
		fi
		L_EX="$L_EX -l$1"
	fi
	STATIC_LAST=$2
}

if [ "$OSTYPE" = "msys" ]
then
	OS="MinGW/MSYS"
	IS_LIB()
	{
		redir -e /dev/null ld -$1 -o _conf.tmp -L/lib > /dev/null 2>&1
	}
else
	BUILD_BINS="$BUILD_BINS mlinload"
	BUILD_DOCS="$BUILD_DOCS mlinload"
	MAKE_BINS="$MAKE_BINS mlinload"
	OS="GNU/Linux"
	IS_LIB()
	{
		ld -$1 -o _conf.tmp -L/lib -L/usr/lib -L/usr/X11R6/lib -lX11 -lz -lm > /dev/null 2>&1
	}
fi

if IS_LIB "sdl"
then
	NSDL=YES
	BUILD_BINS="$BUILD_BINS mtsiv"
	BUILD_DOCS="$BUILD_DOCS mtsiv"
	MAKE_BINS="$MAKE_BINS mtsiv"
fi

if IS_LIB "lgif"
then
	NGIF=GIF
else
	if IS_LIB "lungif"
	then
		NGIF=YES
	else
		NGIF=NO
	fi
fi

if IS_LIB "ljpeg"
then
	NJPEG=YES
else
	NJPEG=NO
fi

if IS_LIB "lopenjpeg"
then
	NJP2=YES
else
	NJP2=NO
fi

if IS_LIB "ltiff"
then
	NTIFF=YES
else
	NTIFF=NO
fi

if IS_LIB "lXpm"
then
	NXPM=YES
else
	NXPM=NO
fi

if IS_LIB "lmpac"
then
	NMPAC=YES
else
	NMPAC=NO
fi


if IS_LIB "lfreetype"
then
	NFT=YES
else
	NFT=NO
fi

rm _conf.tmp

for A in "$@"
do
	case "$A" in
		"flush" )	echo Clearing out directory to original state
				echo
				make clean
				echo
				rm $GTK_FILE
				rm $LIBTOOL_FILE
				exit;;
		"staticpng" )	STATIC_PNG=PNG;;
		"GIF" )		NGIF=GIF;;
		"gif" )		NGIF=YES;;
		"nogif" )	NGIF=NO;;
		"staticgif" )	STATIC_GIF=GIF;;
		"jpeg" )	NJPEG=YES;;
		"nojpeg" )	NJPEG=NO;;
		"staticjpeg" )	STATIC_JPEG=JPEG;;
		"jp2" )		NJP2=YES;;
		"nojp2" )	NJP2=NO;;
		"staticjp2" )	STATIC_JP2=JPEG2000;;
		"tiff" )	NTIFF=YES;;
		"notiff" )	NTIFF=NO;;
		"statictiff" )	STATIC_TIFF=TIFF;;
		"mpac" )	NMPAC=YES;;
		"nompac" )	NMPAC=NO;;
		"staticmpac" )	STATIC_MPAC=MPAC;;
		"xpm" )		NXPM=YES;;
		"noxpm" )	NXPM=NO;;
		"staticxpm" )	STATIC_XPM=XPM;;
		"noexam" )	MAKE_DIRS="src"
				BUILD_BINS=""
				MAKE_BINS=""
				;;
		"--libdir="* )	IMAGE_LIBDIR="`echo "$A" | sed -e "s/--libdir=//"`";;
		"slow" )	OPTS=NO;;
		"asneeded" )	AS_NEEDED=-Wl,--as-needed;;
		"debug" )	DEBUG=YES;;
		"win" )		OS="MinGW/MSYS";;
		"--help" )	HELP=0;;
		"--bindir="* )	LIN_BIN_INSTALL="`echo "$A" | sed -e "s/--bindir=//"`"
				WIN_BIN_INSTALL=$LIN_BIN_INSTALL;;
		"--libdir="* )	LIB_INSTALL="`echo "$A" | sed -e "s/--bindir=//"`"
				;;
		"--headdir="* )	HEADER_INSTALL="`echo "$A" | sed -e "s/--bindir=//"`"
				;;
		"cflags" )	CFLAG=${CFLAGS};;
		"--cpu="* )	MARCH='-march='"`echo "$A" | sed -e "s/--cpu=//"`";;
		"386" )		MARCH='-march=i386';;
		"486" )		MARCH='-march=i486';;
		"586" )		MARCH='-march=i586';;
		"686" )		MARCH='-march=i686';;
		"--prefix="* )	MT_PREFIX="`echo "$A" | sed -e "s/--prefix=//"`"
				WIN_BIN_INSTALL="$MT_PREFIX/bin"
				LIN_BIN_INSTALL="$MT_PREFIX/bin"
				LIB_INSTALL="$MT_PREFIX/lib"
				HEADER_INSTALL="$MT_PREFIX/include"
				;;
		"build" )	./configure flush
				./configure
				make
				make install
				make docs
				./configure flush

				I_DIR=/home/mark/sf
				cd ..
				tar cjvf $I_DIR/libmtpixel-$MT_V.tar.bz2 libmtpixel-$MT_V*/
				cd libmtpixel-$MT_V*

				./configure --prefix=`pwd`/slack/usr --bindir=`pwd`/slack/usr/local/bin asneeded staticgif nojp2 nompac
				make
				mkdir -p slack/install/
				mkdir -p slack/usr/doc/libmtpixel
				make install
				cp doc/slack-desc slack/install/
				cp doc/handbook/* slack/usr/doc/libmtpixel
				cd slack
				makepkg --chown n --linkadd y $I_DIR/libmtpixel-$MT_V-i486-1.tgz
				cd ..
				./configure flush
				rm -rf slack

				cd "$I_DIR"
				chown mark *
				chgrp users *

				exit
				;;
	esac
done


if [ "$HELP" = 0 ]
then
	echo "Usage: ./configure [OPTION] ... "
	echo
	echo "Options:"
	echo
	echo "win ............. Configure for Windows MinGW / MSYS"
	echo
	echo "cflags .......... Use CFLAGS environment variable"
	echo "--cpu= .......... Target a specific CPU, e.g. athlon-xp, x86-64"
	echo "686 ............. Target 686 machines"
	echo "586 ............. Target 586 machines"
	echo "486 ............. Target 486 machines"
	echo "386 ............. Target 386 machines"
	echo "slow ............ Don't use compiler optimizations"
	echo "asneeded ........ Use linker optimization --as-needed"
	echo
	echo "staticpng ....... Statically link PNG library"
	echo "GIF ............. Use libgif"
	echo "gif ............. Use libungif"
	echo "nogif ........... Don't use libgif and libungif"
	echo "staticgif ....... Statically link GIF library"
	echo "jpeg ............ Use libjpeg"
	echo "nojpeg .......... Don't use libjpeg"
	echo "staticjpeg ...... Statically link JPEG library"
	echo "jp2 ............. Use libopenjpeg"
	echo "nojp2 ........... Don't use libopenjpeg"
	echo "staticjp2 ....... Statically link JPEG 2000 library"
	echo "tiff ............ Use libtiff"
	echo "notiff .......... Don't use libtiff"
	echo "statictiff ...... Statically link TIFF library"
	echo "mpac ............ Use libmpac"
	echo "nompac .......... Don't use libmpac"
	echo "staticmpac ...... Statically link mPAC library"
	echo "xpm ............. Use libXpm"
	echo "noxpm ........... Don't use libXpm"
	echo "staticxpm ....... Statically link Xpm library"
	echo "--libdir=DIR .... DIR = location of image library files to use for cross-compilation"
	echo
	echo "noexam .......... Don't build example programs"
	echo "flush ........... Flush directories to initial state"
	echo "debug ........... Include debugging info in binary"
	echo "--bindir=DIR .... DIR = location of bin file to install, /usr/local/bin by default"
	echo "--libdir=DIR .... DIR = location of lib file to install, /usr/lib by default"
	echo "--headdir=DIR ... DIR = location of header file to install, /usr/include by default"
	echo "--prefix=DIR .... DIR = prefix location of all installs, e.g. /usr or /usr/local"
	echo
	echo "Default settings: GNU/Linux system, O2 optimizations"
else

	echo CC = gcc -Wall > $GTK_FILE
	echo CC=\"gcc -Wall\" > $LIBTOOL_FILE
	echo OS=\"$OS\" >> $LIBTOOL_FILE

#	echo "MT_VERSION=$MT_VERSION" >> $GTK_FILE
	echo "MT_VERSION=\"$MT_VERSION\"" >> $LIBTOOL_FILE

	if [ "$OS" = "GNU/Linux" ]
	then
		BIN_INSTALL=$LIN_BIN_INSTALL
		GTK_INCLUDE="-I/include"
		GTK_LIB="-L/lib -lm"
	else
		BIN_INSTALL=$WIN_BIN_INSTALL
		GTK_INCLUDE="-I/usr/include/freetype2 -I/include -mms-bitfields"
		GTK_LIB="-L/lib -lm -mwindows"
	fi

	if [ "$IMAGE_LIBDIR" ]
	then
		AS_NEEDED="-Wl,--as-needed -Wl,--unresolved-symbols=ignore-in-shared-libs"
	fi

	L_EX=$AS_NEEDED
	I_EX=
	if [ "$NGIF" != "NO" ]
	then
		if [ "$NGIF" = "GIF" ]
		then
			LIB_NAME gif "$STATIC_GIF"
		else
			LIB_NAME ungif "$STATIC_GIF"
		fi
		I_EX="$I_EX -DU_GIF"
	fi
	if [ "$NJPEG" = "YES" ]
	then
		LIB_NAME jpeg "$STATIC_JPEG"
		I_EX="$I_EX -DU_JPEG"
	fi
	if [ "$NJP2" = "YES" ]
	then
		LIB_NAME openjpeg "$STATIC_JP2"
		I_EX="$I_EX -DU_JP2"
		if [ "$STATIC_JP2" ] || [ "$OS" = "MinGW/MSYS" ]
		then
			I_EX="$I_EX -DOPJ_STATIC"
		fi
	fi
	if [ "$NTIFF" = "YES" ]
	then
		LIB_NAME tiff "$STATIC_TIFF"
		I_EX="$I_EX -DU_TIFF"
	fi
	if [ "$NXPM" = "YES" ]
	then
		L_EX="$L_EX -L/usr/X11R6/lib"
		LIB_NAME Xpm "$STATIC_XPM"
		I_EX="$I_EX -I/usr/include/X11 -DU_XPM"
	fi
	if [ "$NMPAC" = "YES" ]
	then
		LIB_NAME mpac "$STATIC_MPAC"
		I_EX="$I_EX -DU_MPAC"
	fi
	LIB_NAME png "$STATIC_PNG"
	LIB_NAME z "$STATIC_PNG"
	if [ "$STATIC_LAST" ] && [ -z "$IMAGE_LIBDIR" ]
	then
		L_EX="$L_EX -Wl,-dy"
	fi

	if [ "$DEBUG" = NO ]
	then
		GTK_LIB="$GTK_LIB -s"
	else
		I_EX="$I_EX -ggdb"
	fi

	if [ "$NFT" = YES ]
	then
		if [ "$OS" = "GNU/Linux" ]
		then
			I_EX="$I_EX -DU_FREETYPE `freetype-config --cflags`"
			L_EX="$L_EX `freetype-config --libs`"
		else
			I_EX="$I_EX -DU_FREETYPE"
			L_EX="$L_EX -lfreetype -liconv"
		fi
	fi

#	I_EX="$I_EX -DVERSION=\"\\\"$MT_VERSION\"\\\""
#	I_EX="$I_EX -DVERSION=\\\"$MT_VERSION\\\""
	GTK_INCLUDE="$GTK_INCLUDE $I_EX"
	echo "LDFLAG = $L_EX $GTK_LIB" >> $GTK_FILE
	echo "LDFLAG_BIN = $AS_NEEDED $GTK_LIB" >> $GTK_FILE
	echo "LDFLAG=\"$L_EX $GTK_LIB\"" >> $LIBTOOL_FILE

	if [ "$CFLAG" ]
	then
		echo "CFLAG = $CFLAG $GTK_INCLUDE -DVERSION=\"\\\"$MT_VERSION\"\\\"" >> $GTK_FILE
		echo "CFLAG=\"$CFLAG $GTK_INCLUDE -DVERSION=\\\"$MT_VERSION\\\"\"" >> $LIBTOOL_FILE
	else
		if [ "$OPTS" = "YES" ]
		then
			echo "CFLAG = -O2 $MARCH $GTK_INCLUDE -DVERSION=\"\\\"$MT_VERSION\"\\\"" >> $GTK_FILE
			echo "CFLAG=\"-O2 $MARCH $GTK_INCLUDE -DVERSION=\\\"$MT_VERSION\\\"\"" >> $LIBTOOL_FILE
		else
			echo "CFLAG = $MARCH $GTK_INCLUDE -DVERSION=\"\\\"$MT_VERSION\"\\\"" >> $GTK_FILE
			echo "CFLAG=\"$MARCH $GTK_INCLUDE -DVERSION=\\\"$MT_VERSION\\\"\"" >> $LIBTOOL_FILE
		fi
	fi

	echo "subdirs = $MAKE_DIRS" >> $GTK_FILE
	echo "binstdirs = $MAKE_BINS" >> $GTK_FILE

	echo "BUILD_BINS = $BUILD_BINS" >> $GTK_FILE
	echo "BUILD_DOCS = $BUILD_DOCS" >> $GTK_FILE

	echo "BIN_INSTALL=\"$BIN_INSTALL\"" >> $GTK_FILE
	echo "BIN_INSTALL=\"$BIN_INSTALL\"" >> $LIBTOOL_FILE

	echo "LIB_INSTALL=\"$LIB_INSTALL\"" >> $GTK_FILE
	echo "LIB_INSTALL=\"$LIB_INSTALL\"" >> $LIBTOOL_FILE

	echo "HEAD_INSTALL=\"$HEADER_INSTALL\"" >> $GTK_FILE
	echo "HEAD_INSTALL=\"$HEADER_INSTALL\"" >> $LIBTOOL_FILE


	cat $LIBTOOL_TEMPLATE >> $LIBTOOL_FILE
	chmod a+x $LIBTOOL_FILE

	echo
	echo
	echo -----------------------------
	echo $MT_VERSION configuration
	echo -----------------------------
	echo
	echo "System              $OS"
	echo
if [ "$CFLAG" ]
then
	echo "CFLAGS              $CFLAG"
else
if [ "$MARCH" ]
then
	echo "MARCH target        $MARCH"
	echo
fi
	echo "Optimizations       $OPTS $AS_NEEDED"
fi
	echo
	echo "Debug info          $DEBUG"
	echo
	echo "Use FreeType        $NFT"
	echo
	echo "Use GIF             $NGIF"
	echo
	echo "Use JPEG            $NJPEG"
	echo
	echo "Use JPEG 2000       $NJP2"
	echo
	echo "Use TIFF            $NTIFF"
	echo
	echo "Use mPAC            $NMPAC"
	echo
	echo "Use XPM             $NXPM"
	echo
	echo "Use SDL             $NSDL"
	echo
	echo "Make directories    $MAKE_DIRS"
	echo
	echo "Build binaries      $BUILD_BINS"
	echo
	echo "Install binaries    $MAKE_BINS"
	echo
	echo "Binary destination  $BIN_INSTALL"
	echo
	echo "Library destination $LIB_INSTALL"
	echo
	echo "Header destination  $HEADER_INSTALL"
	echo
if [ "$STATIC_PNG" ] || [ "$STATIC_GIF" ] || [ "$STATIC_JPEG" ] || [ "$STATIC_JP2" ] || [ "$STATIC_TIFF" ] || [ "$STATIC_XPM" ] || [ "$STATIC_MPAC" ]
then
	echo -n "Static libraries    "
	if [ "$STATIC_PNG" ]
	then
		echo -n "$STATIC_PNG "
	fi
	if [ "$STATIC_GIF" ]
	then
		echo -n "$STATIC_GIF "
	fi
	if [ "$STATIC_JPEG" ]
	then
		echo -n "$STATIC_JPEG "
	fi
	if [ "$STATIC_JP2" ]
	then
		echo -n "$STATIC_JP2 "
	fi
	if [ "$STATIC_TIFF" ]
	then
		echo -n "$STATIC_TIFF "
	fi
	if [ "$STATIC_XPM" ]
	then
		echo -n "$STATIC_XPM "
	fi
	echo
	echo
fi


fi

echo
