#! /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