#! /bin/bash

if [ ! -x "./platform" ]; then
	echo 'ERROR: Platform script not found: ./platform' >&2

	exit 1
fi

CLEANONLY=0
DISTCLEAN=0
if [ "$1" = "clean" ]; then
	CLEANONLY=1
fi
if [ "$1" = "distclean" ]; then
	CLEANONLY=1
	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

# Build all appropriate directories
faileddirs=""
for dir in */; do
	export dir

	if [ ! -f "${dir}/build.sh" ]; then
		continue
	fi

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

		rm -f "build.log"
		rm -rf "build" "out"
		if [ "${DISTCLEAN}" = "1" ]; then
			rm -rf "src"
		fi
		if [ "${CLEANONLY}" = "1" ]; then
			exit 0
		fi

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

	if [ "${failed}" = "1" ]; then
		rm -rf "${dir}/out"
		faileddirs="${faileddirs} ${dir}"
	fi
done

# Cleanup is done at this point
if [ "${CLEANONLY}" = "1" ]; then
	exit 0
fi

# Let the user know what failed to build
if [ -n "${faileddirs}" ]; then
	echo "The following failed to build:${failddirs}"
fi

# Create tarfile of built packages
PLATFORM="$(./platform)"
DATECODE="$(date +%Y%m%d%H%M)"
OUTFILEBASE="tclpkgs-${PLATFORM}-${DATECODE}"
tar -cf - */out */build.log | bzip2 -9c > "${OUTFILEBASE}.tar.bz2"

exit 0
