#! /bin/bash

# Define parameters
VERS=2.1.0
SRC="src/tclreadline-${VERS}.tar.gz"
SRCURL="http://downloads.sourceforge.net/project/tclreadline/tclreadline/tclreadline-${VERS}/tclreadline-${VERS}.tar.gz"
BUILDDIR="tclreadline-${VERS}"
export VERS SRC SRCURL BUILDDIR

# Load common functions
source ../common.sh

# Do not build if the "tcl" platform has been requested
not_platforms 'tcl'

# Download source
download_src

# Extract source
extract_src

# Apply appropriate patches
apply_patches

# Build package
(
	mkdir -p "${PLATDIR}" >/dev/null 2>/dev/null
	cd "build/${BUILDDIR}" || exit 1

	# TclReadLine doesn't know it should use stubs, force it.
	CFLAGS="${CFLAGS} -DUSE_TCL_STUBS=1"
	CPPFLAGS="${CPPFLAGS} -DUSE_TCL_STUBS=1"
	LDFLAGS="${LDFLAGS} $(source "${TCLCONFIGDIR}/tclConfig.sh" 2>/dev/null; eval echo "${TCL_STUB_LIB_SPEC}")" 
	export CFLAGS CPPFLAGS LDFLAGS

	need_gnu_readline='0'
	case "${PLATFORM}" in
		solaris2*)
			need_gnu_readline='1'
			;;
	esac

	if [ "${need_gnu_readline}" = '1' ]; then
		wget 'http://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz'
		gzip -dc readline-6.2.tar.gz | tar -xf -

		(
			cd readline-6.2
			mkdir INST INST/lib INST/include

			./configure --prefix=$(pwd)/INST --disable-shared --enable-static ${CONFIGUREEXTRA}

			${MAKE:-make} || exit 1
			${MAKE:-make} install || exit 1
		)

		if [ -d "$(pwd)/readline-6.2/INST/include" ]; then
			ln -s . "$(pwd)/readline-6.2/INST/include/readline/readline"

			CONFIGUREEXTRA="${CONFIGUREEXTRA} --with-readline-includes=\"$(pwd)/readline-6.2/INST/include/readline\" --with-readline-library=\"-L$(pwd)/readline-6.2/INST/lib -lreadline\""
		fi
	fi

	sed 's|@TCLRL_LIBDIR@|[file dirname [info script]]|g' tclreadlineInit.tcl.in > tclreadlineInit.tcl.in.new
	cat tclreadlineInit.tcl.in.new > tclreadlineInit.tcl.in
	rm -f tclreadlineInit.tcl.in.new

	echo "  * Running ./configure --enable-shared --with-tcl=\"${TCLCONFIGDIR}\" --with-tcl-includes=\"${TCLINSTDIR}/include\" --prefix=\"${PLATDIR}\" --libdir=\"${PLATDIR}\" --bindir=\"${PLATDIR}\" ${CONFIGUREEXTRA}"
	eval "bash ./configure --enable-shared --with-tcl=\"${TCLCONFIGDIR}\" --with-tcl-includes=\"${TCLINSTDIR}/include\" --prefix=\"${PLATDIR}\" --libdir=\"${PLATDIR}\" --bindir=\"${PLATDIR}\"" "${CONFIGUREEXTRA}"

	${MAKE:-make} || exit 1

	${MAKE:-make} install || exit 1

) || exit 1

# Re-write installation to match expectations
(
	cd "${PLATDIR}" || exit 1

	mv lib/tclreadline*/* .
	rm *.a *.la

	rm -rf lib/
	rm -rf include/
	rm -rf share/

	# Delete symlink
	rm -f libtclreadline.so

	# Rename actual file to symlink
	mv libtclreadline-*.so libtclreadline.so

	# Correct Tcl script
	sed 's@ /.*/tclreadline/out/[^/]*/lib@ [file dirname [info script]]@' tclreadlineInit.tcl > tclreadlineInit.tcl.new
	mv tclreadlineInit.tcl.new tclreadlineInit.tcl

	exit 0
) || exit 1


# Create metadata
../create_teapot "${PLATDIR}/teapot.txt" "tclreadline" "${VERS}" "${SRCURL}" "${PLATFORM}" "Tcl 8.4" "Readline package for Tcl"

exit 0
