#!/bin/sh
# -*- tab-width: 4; -*-
# ex:ts=4
#
# $FreeBSD$
#
if [ -f ${WRKDIRPREFIX}${CURDIR}/Makefile.inc ]; then
	exit
fi

if [ ! "${BATCH}" ]; then
	dialog --title "Backup your data NOW" \
	--msgbox "`sed -e \"s#%%PREFIX%%#${PREFIX}#\" < ${FILESDIR}/pre-install-notes`" \
	-1 -1
fi

if [ "${BATCH}" ]; then
	set \"MultiByte\" \"ODBC\" \"SSL\" \"TCL\" \"TCLTK\"
else
	/usr/bin/dialog --title "configuration options" --clear \
					--checklist "\n\
Please select desired options:" -1 -1 7 \
JDBC       "Java DataBase Connectivity" OFF \
MultiByte  "Multibyte for Multilingualism" ON \
ODBC       "Open Database Connectivity" ON \
TCL        "Tcl" ON \
TCLTK      "Tcl/Tk" ON \
SSL        "Secure Socket Layer" ON \
KRB5       "Kerberos 5" OFF \
2> /tmp/checklist.tmp.$$

	retval=$?

	if [ -s /tmp/checklist.tmp.$$ ]; then
		set `cat /tmp/checklist.tmp.$$`
	fi
	rm -f /tmp/checklist.tmp.$$

	case $retval in
		0)	if [ -z "$*" ]; then
				echo "Nothing selected"
			fi
			;;
		1)	echo "Cancel pressed."
			exit 1
			;;
	esac
fi

${MKDIR} ${WRKDIRPREFIX}${CURDIR}
exec > ${WRKDIRPREFIX}${CURDIR}/Makefile.inc

while [ "$1" ]; do
	case $1 in
		\"JDBC\")
			# We use JAVA_HOME if set correctly. If the user has
			# specified a JVM with JAVA_HOME or via the javavmwrapper,
			# we validate that it really exists. It is unnecessarily
			# complicated and error prone to try to figure out the
			# correct java version just to be able to determine a
			# BUILD_DEPEND in this case. Instead, assume that a set
			# JAVA_HOME together with simple sanity check mean we have
			# an installed JVM, and we don't bother setting
			# BUILD_DEPENDS.

			echo "# JDBC"
			# if JAVA_HOME is set and exists, use it
			if [ "${JAVA_HOME}" -a -x "${JAVA_HOME}/bin/javac" ]; then
				echo JAVA_HOME=${JAVA_HOME}
			else
				# No JAVA_HOME, check javavmwrapper's config file
				if [ -r "${LOCALBASE}/etc/javavms" ]; then
					VMS=`/usr/bin/sed 's|#.*||' < "${LOCALBASE}/etc/javavms" | uniq`
					for JAVAVM in ${VMS}; do
						if [ -x "${JAVAVM}" ]; then
							JAVA_HOME=`echo ${JAVAVM} | /usr/bin/sed 's|/bin/java$||`
							break
						fi
					done
				fi
				if [ "${JAVA_HOME}" -a -x "${JAVA_HOME}/bin/javac" ]; then
					# yep, wrapper was good
					echo JAVA_HOME=${JAVA_HOME}
				else
					# nothing, use our boring 1.1.8, the only native non-beta jdk :(
					echo BUILD_DEPENDS+=    \${LOCALBASE}/jdk1.1.8/bin/javac:\${PORTSDIR}/java/jdk
					echo JAVA_HOME=\${LOCALBASE}/jdk1.1.8
				fi
			fi
			cat <<-EOF
				BUILD_DEPENDS+=	\${LOCALBASE}/bin/ant:\${PORTSDIR}/devel/jakarta-ant
				CONFIGURE_ENV+= ANT=\${LOCALBASE}/bin/ant
				WITH_JDBC=YES
				MAKE_ENV+=	JAVA_HOME=\${JAVA_HOME}
				SCRIPTS_ENV+=	JAVA_HOME=\${JAVA_HOME}
				CONFIGURE_ARGS+=	--with-java

			EOF
			;;
		\"MultiByte\")
			MULTIBYTE=1
			;;
		\"ODBC\")
			cat <<-EOF
				# ODBC
				WITH_ODBC=YES
				CONFIGURE_ARGS+=  --with-odbc

			EOF
			;;
		\"TCL\")
			TCL=1
			;;
		\"TCLTK\")
			echo "#TCLTK"
			echo WITH_TK=YES
			echo
			TCL=1
			;;
		\"SSL\")
			cat <<-EOF
				# SSL
				USE_OPENSSL=    yes
				CFLAGS+=	-DUSE_SSL
				WITH_SSL=	yes
				CONFIGURE_ENV+=	LDFLAGS="-L\${OPENSSLLIB} -lssl -lcrypto"
				CONFIGURE_ARGS+=	--with-openssl

			EOF
			;;
		\"KRB5\")
			KRB5=1
			;;
		\"nothing\"|true)
			;;
		*)
			echo "Invalid option(s): $*" > /dev/stderr
			rm -f ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
			exit 1
			;;
	esac
    shift
done

exec > /dev/stderr

# if multibyte, determine charset
echo "# Multibyte" >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc

if [ ! "${MULTIBYTE}" ]; then
	echo "WITHOUT_MULTIBYTE=YES" >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
else
	if [ "${BATCH}" ]; then
		set "nothing"
	else
		/usr/bin/dialog --title "configuration options" --clear \
						--radiolist "\n\
Please select desired options:" -1 -1 16 \
nothing       "Default Encoding" ON \
SQL_ASCII     "SQL_ASCII" OFF \
LATIN1        "LATIN1" OFF \
LATIN2        "LATIN2" OFF \
LATIN3        "LATIN3" OFF \
LATIN4        "LATIN4" OFF \
LATIN5        "LATIN5" OFF \
EUC_JP        "EUC_JP" OFF \
EUC_CN        "EUC_CN" OFF \
EUC_KR        "EUC_KR" OFF \
EUC_TW        "EUC_TW" OFF \
KOI8          "KOI8" OFF \
UNICODE       "UNICODE" OFF \
MULE_INTERNAL "MULE_INTERNAL" OFF \
WIN           "WIN" OFF \
ALT           "ALT" OFF \
2> /tmp/checklist.tmp.$$

		retval=$?

		if [ -s /tmp/checklist.tmp.$$ ]; then
			set `cat /tmp/checklist.tmp.$$`
		fi
		rm -f /tmp/checklist.tmp.$$
		if [ $retval = 1 ]; then
			echo "Cancel pressed."
			rm ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
			exit 1
		fi
	fi

    if [ "$1" = "nothing" ]; then
		echo "CONFIGURE_ARGS+=	--enable-multibyte" \
			>> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	else
		echo "CONFIGURE_ARGS+=	--enable-multibyte=$1" \
			>> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	fi
fi
echo

if [ "${TCL}" ]; then
	echo "# TCL" >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	if [ "${BATCH}" ]; then
		echo WITH_TCL=8.3  >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	else
		dialog --title "TCL version" \
			   --inputbox "Please enter TCL version. Default is 8.3." -1 -1 "8.3" \
			2> /tmp/checklist.tmp.$$
		retval=$?
		if [ -s /tmp/checklist.tmp.$$ ]; then
			set `cat /tmp/checklist.tmp.$$`
		fi
		rm -f /tmp/checklist.tmp.$$
		case $retval in
			0)	if [ -z "$*" ]; then
					echo "Nothing selected"
				fi
				;;
			1)	echo "Cancel pressed."
				rm -f ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
				exit 1
				;;
		esac
		echo WITH_TCL=$1 >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	fi
	cat <<-EOF >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
		CONFIGURE_ARGS+= --with-tcl --with-tclconfig="\${TCLCONFIG}"
		TCLV=\${WITH_TCL:S/.//}
		TCL_INCDIR=		\${LOCALBASE}/include/tcl\${WITH_TCL}
		MAKE_ENV+=		TCL_INCDIR=\${TCL_INCDIR}
		LIB_DEPENDS+=	tcl\${TCLV}:\${PORTSDIR}/lang/tcl\${TCLV}
		TCLCONFIG=		"\${LOCALBASE}/lib/tcl\${WITH_TCL}"
		.if defined(WITH_TK)
		CONFIGURE_ARGS+= --with-tkconfig="\${TKCONFIG}"
		TK_INCDIR=		\${LOCALBASE}/include/tk\${WITH_TCL}
		CONFIGURE_ENV+=	WISH=\${LOCALBASE}/bin/wish\${WITH_TCL}
		LIB_DEPENDS+=	tk\${TCLV}:\${PORTSDIR}/x11-toolkits/tk\${TCLV}
		TKCONFIG=		"\${LOCALBASE}/lib/tk\${WITH_TCL}"
		TCLCONFIG+=		\${TKCONFIG}
		TCL_PLIST=     pkg-plist.tcl
		.else
		TCL_PLIST=     pkg-plist.notk
		CONFIGURE_ARGS+=        --without-tk
		.endif

	EOF
fi

if [ "${KRB5}" ]; then
	if [ "${BATCH}" ]; then
		# never gets here, but what the heck...
		echo KRB5_HOME=\${LOCALBASE} >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	else
		dialog --inputbox "Please enter the KRB5_HOME path" -1 -1 "${KRB_HOME:-${LOCALBASE}}" \
			2> /tmp/checklist.tmp.$$
		retval=$?
		if [ -s /tmp/checklist.tmp.$$ ]; then
			set `cat /tmp/checklist.tmp.$$`
		fi
		rm -f /tmp/checklist.tmp.$$
		case $retval in
			0)	if [ -z "$*" ]; then
					echo "No input"
				fi
				;;
			1)	echo "Cancel pressed."
				rm -f ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
				exit 1
				;;
		esac
		echo KRB5_HOME=\"$1\" >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
	fi
	cat <<-EOF >> ${WRKDIRPREFIX}${CURDIR}/Makefile.inc
		.if defined(KRB5_HOME) && exists(\${KRB5_HOME})
		CONFIGURE_KRB=	--with-krb5=\${KRB5_HOME}
		.endif

	EOF
fi