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

echo

MT_V="3.11"
MT_DATE="2007-04-02"

MT_VERSION="mtPaint $MT_V"
MT_LANG=NO
MT_MAN=NO
MT_LANG_DEST=/usr/share/locale
MT_PO_DEST=$MT_LANG_DEST
MT_MAN_DEST=/usr/local/man/man1
LIN_BIN_INSTALL=/usr/local/bin
WIN_BIN_INSTALL="/c/Program Files/mtPaint/bin"
BIN_INSTALL=
MAKE_DIRS=src
ICON_SET=icons1

STATIC_PNG=
STATIC_JPEG=
STATIC_TIFF=
STATIC_GIF=
AS_NEEDED=
IMAGE_LIBDIR=

GTK_FILE=_conf.txt

CFLAG=
MARCH=
OPTS=YES
DEBUG=NO
HELP=1

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"
	GTK=2
	IS_LIB()
	{
		redir -e /dev/null ld -$1 -o ____3742.tmp -L/lib > /dev/null 2>&1
	}
else
	OS="GNU/Linux"
	if pkg-config gtk+-2.0 --cflags > /dev/null
	then
		GTK=2
	else
		GTK=1
	fi
	IS_LIB()
	{
		ld -$1 -o /dev/null -L/lib -L/usr/lib -L/usr/X11R6/lib -lX11 -lz -lm > /dev/null 2>&1
	}
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 "ltiff"
then
	NTIFF=YES
else
	NTIFF=NO
fi

for A in "$@"
do
	case "$A" in
		"flush" )	echo Clearing out directory to original state
				echo
				make clean
				echo
				rm _conf.txt
				rm po/mtpaint.pot
				rm src/graphics/*.xpm src/graphics/*.xbm
				rm -rf slack
				rm -f *.tgz
				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;;
		"tiff" )	NTIFF=YES;;
		"notiff" )	NTIFF=NO;;
		"statictiff" )	STATIC_TIFF=TIFF;;
		"--libdir="* )	IMAGE_LIBDIR="`echo "$A" | sed -e "s/--libdir=//"`";;
		"slow" )	OPTS=NO;;
		"asneeded" )	AS_NEEDED=-Wl,--as-needed;;
		"debug" )	DEBUG=YES;;
		"gtk1" )	GTK=1;;
		"gtk2" )	GTK=2;;
		"win" )		OS="MinGW/MSYS"
				GTK=2;;
		"intl" )	MT_LANG=YES;;
		"merge" )	xgettext src/*.c src/*.h --keyword=_ -o po/mtpaint.pot
				cd po
				NEW_DIR=trans_
				mkdir $NEW_DIR`date +%d-%m-%Y-%H-%M-%S`
				ls *.po | while read file
				do
					echo New file = $file-a
					mv $file $file-a
					msgmerge -N $file-a mtpaint.pot > $file-b
					perl xtend.pl $file-b $file
					mv $file-* $NEW_DIR*
				done
				rm mtpaint.pot
				mv $NEW_DIR* ../../old_trans
				exit;;
		"newpo" )	xgettext src/*.c src/*.h --keyword=_ -o po/mtpaint.pot
				exit;;
		"man" )		MT_MAN=YES;;
		"pod" )		MT_POD=YES;;
		"--help" )	HELP=0;;
		"--bindir="* )	LIN_BIN_INSTALL="`echo "$A" | sed -e "s/--bindir=//"`"
				WIN_BIN_INSTALL=$LIN_BIN_INSTALL;;
		"--locale="* )	MT_LANG_DEST="`echo "$A" | sed -e "s/--locale=//"`"
				MT_PO_DEST=$MT_LANG_DEST;;
		"--mandir="* )	MT_MAN_DEST="`echo "$A" | sed -e "s/--mandir=//"`";;
		"cflags" )	CFLAG=${CFLAGS};;
		"--cpu="* )	MARCH='-march='"`echo "$A" | sed -e "s/--cpu=//"`";;
		"icons"* )	ICON_SET=$A;;
		"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"
				MT_LANG_DEST="$MT_PREFIX/share/locale"
				MT_PO_DEST=$MT_LANG_DEST
				MT_MAN_DEST="$MT_PREFIX/man/man1";;
		"--po="* )	MT_PO_DEST="`echo "$A" | sed -e "s/--po=//"`";;
		"guada" )	MARCH='-march=i386'
				MT_LANG=YES
				MT_MAN=YES
				MT_POD=YES
				LIN_BIN_INSTALL=/usr/bin
				MT_CUSTOM=GUADALINEX;;
		"build" )	./configure flush
				I_DIR=/home/mark/sf
				cd ..
				zip -r $I_DIR/mtpaint-$MT_V.zip mtpaint-$MT_V*/
				tar cjvf $I_DIR/mtpaint-$MT_V.tar.bz2 mtpaint-$MT_V*/
				cd mtpaint-$MT_V*

				./configure --prefix=`pwd`/slack/usr --bindir=`pwd`/slack/usr/local/bin --po=/usr/share/locale intl man asneeded staticgif
				make
				mkdir -p slack/install/
				mkdir -p slack/usr/doc/mtpaint/
				cp -r ../docs-mtpaint3/mtpaint_*/docs/* slack/usr/doc/mtpaint/
				make install
				cp doc/slack-desc slack/install/
				cd slack
				GTK_V=gtk2
				makepkg --chown n $I_DIR/mtpaint-$MT_V$GTK_V-i486-1.tgz
				cd ..
				./configure flush

				./configure --prefix=`pwd`/slack/usr --bindir=`pwd`/slack/usr/local/bin --po=/usr/share/locale intl man gtk1 asneeded staticgif
				make
				mkdir -p slack/install/
				mkdir -p slack/usr/doc/mtpaint/
				cp -r ../docs-mtpaint3/mtpaint_*/docs/* slack/usr/doc/mtpaint/
				make install
				cp doc/slack-desc slack/install/
				cd slack
				GTK_V=gtk1
				makepkg --chown y $I_DIR/mtpaint-$MT_V$GTK_V-i486-1.tgz
				cd ..
				./configure flush

				./configure --prefix=`pwd`/slack/usr --bindir=`pwd`/slack/usr/bin --po=/usr/share/locale intl man GIF staticgif --libdir=$I_DIR/ubuntulib
				make
				mkdir -p slack/install/
				mkdir -p slack/usr/share/doc/mtpaint/
				cp -r ../docs-mtpaint3/mtpaint_*/docs/* slack/usr/share/doc/mtpaint/
				make install
				cp doc/slack-desc slack/install/
				cd slack
				makepkg --chown y $I_DIR/mtpaint-$MT_V.tgz
				cd ..
				./configure flush

				cp doc/alien-desc "$I_DIR"
				cd "$I_DIR"
				export EMAIL="mtpaint-user@lists.sourceforge.net"
				alien -d --version=$MT_V --description="`cat alien-desc`" mtpaint-$MT_V.tgz
				rename -2_all _i486 *.deb
				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 "gtk1 ............ Configure for GTK+1"
	echo "gtk2 ............ Configure for GTK+2"
	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 "tiff ............ Use libtiff"
	echo "notiff .......... Don't use libtiff"
	echo "statictiff ...... Statically link TIFF library"
	echo "--libdir=DIR .... DIR = location of image library files to use for cross-compilation"
	echo
	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
	echo "intl ............ Use internationalized po files"
	echo "newpo ........... Create ./po/mtpaint.pot"
	echo "merge ........... Update all po files with new strings - developers only"
	echo "--locale=DIR .... DIR = location of locale files to install, /usr/share/locale by default"
	echo
	echo "man ............. Install the mtPaint man page"
	echo "pod ............. Compile new man page - see ./doc/README for details"
	echo "--mandir=DIR .... DIR = location of man page to install, /usr/local/man/man1 by default"
	echo
	echo "--prefix=DIR .... DIR = prefix location of all installs, e.g. /usr or /usr/local"
	echo
	echo "icons ........... Compile with alternative icon set - see ./src/icons1/README for details"
	echo
	echo "Default settings: GNU/Linux system, O2 optimizations, English only version"
	echo "pkg-config gtk+-2.0 is checked to determine GTK+2 availability in GNU/Linux"
else
	cp src/$ICON_SET/*.xpm src/$ICON_SET/*.xbm src/graphics

	echo CC = gcc -Wall > $GTK_FILE
	echo "MT_VERSION=$MT_VERSION" >> $GTK_FILE
	echo "MT_DATE=$MT_DATE" >> $GTK_FILE

	if [ "$OS" = "GNU/Linux" ]
	then
		BIN_INSTALL=$LIN_BIN_INSTALL
		if [ "$GTK" = "1" ]
		then
			if gtk-config --cflags > /dev/null
			then
				GTK_INCLUDE=`gtk-config --cflags`
				GTK_LIB=`gtk-config --libs`
			else
				echo
				echo I have not been able to find gtk-config so I am assuming the following:
				echo
				GTK_INCLUDE="-I/opt/gnome/include/gtk-1.2 -I/opt/gnome/include/glib-1.2 -I/opt/gnome/lib/glib/include -I/usr/X11R6/include"
				GTK_LIB="-L/usr/lib -L/usr/X11R6/lib -L/opt/gnome/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm"
				echo GTK_INCLUDE = $GTK_INCLUDE
				echo GTK_LIB = $GTK_LIB
				echo
				echo If these values are not right for your system, edit the configure script
				echo
			fi
		else
			GTK_INCLUDE=`pkg-config gtk+-2.0 --cflags`
			GTK_LIB=`pkg-config gtk+-2.0 --libs`
		fi
	else
		BIN_INSTALL=$WIN_BIN_INSTALL
		MT_LANG_DEST=locale
		MT_PO_DEST=locale
		if [ "$GTK" = "1" ]
		then
			GTK_INCLUDE="-I/include -I/include/glib-2.0 -I/lib/gtk+/include -I/lib/glib-2.0/include -mms-bitfields"
			GTK_LIB="-L/lib -lgtk -lgdk -lglib-2.0 -lm -mwindows"
		else
			GTK_INCLUDE="-I/include/gtk-2.0 -I/lib/gtk-2.0/include -I/include/atk-1.0 -I/include/pango-1.0 -I/usr/include/freetype2 -I/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/include -mms-bitfields"
			GTK_LIB="-L/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -lpango-1.0 -lglib-2.0 -lgobject-2.0 -lgdk_pixbuf-2.0 -lm -mwindows"
		fi
	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 [ "$NTIFF" = "YES" ]
	then
		LIB_NAME tiff "$STATIC_TIFF"
		I_EX="$I_EX -DU_TIFF"
	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"
	fi

	if [ "$MT_CUSTOM" ]
	then
		I_EX="$I_EX -DU_$MT_CUSTOM"
	fi

	if [ "$MT_LANG" = YES ]
	then
		I_EX="$I_EX -DU_NLS -DMT_LANG_DEST=\"\\\"$MT_PO_DEST\"\\\""
		MAKE_DIRS="$MAKE_DIRS po"
		if [ "$OS" = "MinGW/MSYS" ]
		then
			L_EX="$L_EX -lintl"
			echo "MT_LANG_DEST=\"$BIN_INSTALL/$MT_LANG_DEST\"" >> $GTK_FILE
		else
			echo "MT_LANG_DEST=\"$MT_LANG_DEST\"" >> $GTK_FILE
		fi
	fi
	if [ "$MT_MAN" = YES ]
	then
		MAKE_DIRS="$MAKE_DIRS doc"
		echo "MT_MAN_DEST=\"$MT_MAN_DEST\"" >> $GTK_FILE
	fi

	I_EX="$I_EX -DVERSION=\"\\\"$MT_VERSION\"\\\""
	GTK_INCLUDE="$GTK_INCLUDE $I_EX"
	echo "LDFLAG = $L_EX $GTK_LIB" >> $GTK_FILE

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

	echo "subdirs = $MAKE_DIRS" >> $GTK_FILE
	echo "BIN_INSTALL=\"$BIN_INSTALL\"" >> $GTK_FILE


	if [ "$MT_POD" = "YES" ]
	then
		cd doc
		make pod
		cd ..
	fi

	if [ "$OSTYPE" = "msys" ]
	then
		rm ____3742.tmp
	fi

	echo
	echo
	echo --------------------------
	echo $MT_VERSION configuration
	echo --------------------------
	echo
	echo "System              $OS"
	echo
	echo "GTK+ version        $GTK"
	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 GIF             $NGIF"
	echo
	echo "Use JPEG            $NJPEG"
	echo
	echo "Use TIFF            $NTIFF"
	echo
	echo "Binary install      $BIN_INSTALL"
	echo
	echo "Internationalized   $MT_LANG"
	echo
if [ "$MT_LANG" = YES ]
then
	echo "Locale install      $MT_LANG_DEST"
	echo
	echo "Locale program      $MT_PO_DEST"
	echo
fi
	echo "Install man page    $MT_MAN"
	echo
if [ "$MT_MAN" = YES ]
then
	echo "Man page install    $MT_MAN_DEST"
	echo
fi
if [ "$MT_CUSTOM" ]
then
	echo "Customized for      $MT_CUSTOM"
	echo
fi
if [ "$STATIC_PNG" ] || [ "$STATIC_GIF" ] || [ "$STATIC_JPEG" ] || [ "$STATIC_TIFF" ]
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_TIFF" ]
	then
		echo -n "$STATIC_TIFF "
	fi
	echo
	echo
fi
	echo "Icon set            $ICON_SET"
	echo


fi

echo
