@@ -16,26 +16,71 @@ DISTCLEAN=1 fi export CLEANONLY DISTCLEAN # Determine path to "tclConfig.sh" -TCLCONFIGDIR=$( - ( - echo "${LD_LIBRARY_PATH}" | tr ':' "\n" - cat /etc/ld.so.conf 2>/dev/null - crle 2>/dev/null | grep '^ *Default Library Path' | sed 's@^ *Default Library Path[^:]*:[^:]*/@/@' | tr ':' "\n" - ) | grep '^/' | while read chklibdir; do - if [ -f "${chklibdir}/tclConfig.sh" ]; then - echo "${chklibdir}" - break - fi - done -) -if [ -z "${TCLCONFIGDIR}" ]; then - TCLCONFIGDIR="/usr/lib" -fi -export TCLCONFIGDIR +rm -rf tcl/build +if [ "${DISTCLEAN}" = "1" ]; then + rm -rf tcl +fi + +if [ "${CLEANONLY}" = "0" ]; then + TCLVERS="8.4.19" + TCLPRIVATE="$(pwd)/tcl/build/tcl${TCLVERS}" + + mkdir tcl tcl/build >/dev/null 2>/dev/null + + if [ ! -f "tcl/src/tcl${TCLVERS}.tar.gz" ]; then + mkdir tcl/src >/dev/null 2>/dev/null + wget -o /dev/null -O "tcl/src/tcl${TCLVERS}.tar.gz" "http://prdownloads.sourceforge.net/tcl/tcl${TCLVERS}-src.tar.gz" + fi + + echo "Building Tcl ${TCLVERS}" + ( + mkdir tcl/build >/dev/null 2>/dev/null + cd tcl/build || exit 1 + gzip -dc "../src/tcl${TCLVERS}.tar.gz" | tar -xf - + + cd "${TCLPRIVATE}/unix" || exit 1 + + ./configure --enable-shared + + ${MAKE:-make} + ) > "tcl/build/build.log" 2>&1 + + if [ -d "${TCLPRIVATE}" -a -f "${TCLPRIVATE}/unix/tclConfig.sh" ]; then + TCLCONFIGDIR="${TCLPRIVATE}/unix" + else + unset TCLPRIVATE + + TCLCONFIGDIR=$( + ( + echo "${LD_LIBRARY_PATH}" | tr ':' "\n" + cat /etc/ld.so.conf 2>/dev/null + crle 2>/dev/null | grep '^ *Default Library Path' | sed 's@^ *Default Library Path[^:]*:[^:]*/@/@' | tr ':' "\n" + ) | grep '^/' | while read chklibdir; do + if [ -f "${chklibdir}/tclConfig.sh" ]; then + echo "${chklibdir}" + break + fi + done + ) + if [ -z "${TCLCONFIGDIR}" ]; then + TCLCONFIGDIR="/usr/lib" + fi + + TCLPRIVATE="${TCLCONFIGDIR}/../include/tcl-private" + fi + + ADDFLAGS="-I${TCLPRIVATE} -I${TCLPRIVATE}/generic -I${TCLPRIVATE}/unix" + CFLAGS="${ADDFLAGS} ${CFLAGS}" + CPPFLAGS="${ADDFLAGS} ${CPPFLAGS}" + + unset TCLVERS + unset ADDFLAGS + export TCLCONFIGDIR TCLPRIVATE CFLAGS CPPFLAGS +fi # Determine platform PLATFORM="$(./platform)" export PLATFORM