#!/bin/sh
# $Id: build-xterm,v 1.27 2019/01/13 22:06:54 tom Exp $
# vile:ts=4 sw=4

SRCDIR=.

with_srcdir() {
	for opt in "$@"
	do
		case x$opt in #(vi
		x--srcdir*)
			SRCDIR=`echo "x$opt"|sed -e 's/^[^=]*=//'`
			;;
		esac
	done
}

clean() {
	if test -f $SRCDIR/charproc.c
	then
		test -d BUILD && rm -rf BUILD
		setup-clean
	fi
}

old_build() {
	test -d bin   || mkdir bin
	test -d BUILD || mkdir BUILD
	test -d LOGS  || mkdir LOGS

	BIN=$1
	shift 1

	if xmkmf
	then
		if test -n "$CC"
		then
			make CC=$CC &&
			make install CC=$CC DESTDIR=BUILD && \
			cp xterm bin/$BIN && \
			make distclean
		else
			make &&
			make install DESTDIR=BUILD && \
			cp xterm bin/$BIN && \
			make distclean
		fi
	fi
	rm -f Makefile.bak
	rm -f Makefile
}

build() {
	test -d bin   || mkdir bin
	test -d BUILD || mkdir BUILD
	test -d LOGS  || mkdir LOGS

	TERMINFO=`pwd`/BUILD/terminfo
	test -d $TERMINFO || mkdir $TERMINFO
	export TERMINFO

	BIN=$1
	shift 1

	test -z "$CC" && BIN="$BIN"-cc
	test -n "$CC" && BIN="$BIN"-gcc

	CFG=$1
	shift 1

	OPT=
	case `partition` in
	*freebsd12*)
		case "${CC:-cc}" in
		c89|*/c89|c99|*/c99)
			OPT="$OPT --without-pkg-config"
			;;
		esac
		;;
	esac

	with_srcdir $*

	BUILD=`pwd`/BUILD
	echo "Building BIN=$BIN, $*"
	cfg-$CFG $* \
		--with-app-defaults=$BUILD/etc \
		--with-icondir=$BUILD/share/icons \
		--with-pixmapdir=$BUILD/share/pixmaps \
		--exec-prefix=$BUILD \
		--prefix=$BUILD $OPT "$@" && \
	make && \
	make install-full && \
		( find BUILD -type f -print |csort ) && \
		make uninstall-full && \
		cp xterm bin/$BIN &&
		save-xterm
	clean
}

savelog() {
	echo "..savelog $BUILD_LOG"
	sed -e s%`pwd`%SRCDIR%g -e s%$VER%-VER%g -e 's/\$\(XTermId:[^$]\+\)\$/@\1@/g' run.log >$BUILD_LOG
	rm -f run.log
}

if test -z "$BUILD_LOG" ; then
	with_srcdir $*

	clean

	test -d bin   && rm -rf bin 

	DESKTOP_FLAGS="$DESKTOP_FLAGS --dir=`pwd`/BUILD/lib"
	export DESKTOP_FLAGS

	VER=`pwd|sed -e 's,^.*xterm,,' -e 's/+//' -e 's/-[1-9]$//'`

	BUILD_LOG=LOGS/`partition`-${CC-cc}-run.log
	BUILD_LOG=$BUILD_LOG run-log $0 $*
	savelog

else
	old_build                xterm-imake $* --enable-imake
	build xterm-min          xterm-min $*
	build xterm-narrow       xterm-narrow $*
	build xterm-wide         xterm-wide $*
	build xterm-wide-noimake xterm-wide $* --disable-imake
	build xterm-wide-16bits  xterm-wide $* --enable-16bit-chars
	build xterm-wide-nofifo  xterm-wide $* --disable-fifo-lines
fi
