#! /bin/bash

TCLVERS="8.4.19"
export TCLVERS

mode="build"
if [ "$1" = "clean" ]; then
	shift

	mode="clean"
fi
if [ "$1" = "distclean" ]; then
	shift

	mode="distclean"
fi

CONFIGUREEXTRA="$@"
export CONFIGUREEXTRA

failedpkgs=""
buildfailed="0"
for pkg in tcl tk itcl mk4tcl tclvfs kitsh; do
	if [ "${mode}" = "distclean" ]; then
		rm -rf "${pkg}/src"
	fi

	if [ "${mode}" = "clean" -o "${mode}" = "distclean" ]; then
		rm -f "${pkg}/build.log"
		rm -rf "${pkg}/out" "${pkg}/inst" "${pkg}/build"

		continue
	fi

	failed="0"
	(
		cd "${pkg}" || exit 1

		./build.sh > build.log 2>&1 || exit 1
	) || failed="1"

	if [ "${failed}" = "1" ]; then
		failedpkgs="${failedpkgs} ${pkg}"
	fi

	case "${pkg}" in
		tcl)
			TCLCONFIGDIR=$(find "$(pwd)/tcl/build" -name tclConfig.sh | head -1 | sed 's@/[^/]*$@@')
			export TCLCONFIGDIR
			;;
	esac

	if [ "${failed}" = "1" ]; then
		buildfailed="1"
	fi
done

if [ "${mode}" = "clean" -o "${mode}" = "distclean" ]; then
	rm -f tclkit-*

	exit 0
fi

if [ -n "${failedpkgs}" ]; then
	echo "Failed to build:${failedpkgs}"
fi

if [ "${buildfailed}" != "0" ]; then
	echo 'WARNING: Build is likely incomplete or failed.' >&2
fi

cp 'kitsh/build'/kitsh-*/kit "tclkit-${TCLVERS}"

exit "${buildfailed}"
