#!/bin/sh
# $Id: setup-savebuild,v 1.8 2019/03/12 23:41:44 tom Exp $
# vi:ts=4 sw=4
#
# save the built-stuff from configuring & building, to make it simpler
# to do rebuilds
#

# calling script must override this
PROG=

save_build() {
	SRC=`pwd`

	: ${PROG=unknown}
	: ${BUILD_DIR=$PROG}

	THIS=`basename $SRC`
	THAT=`echo $THIS|sed -e s/$BUILD_DIR//`
	if test "$THIS" = "$THAT"
	then
		THIS=`dirname $SRC`
		THIS=`basename $THIS`
		THAT=`echo $THIS|sed -e s/$BUILD_DIR//`
		if test "$THIS" = "$THAT"
		then
			echo '? cannot save '$SRC
			exit 1
		fi
	fi

	for f in config.status
	do
		if test ! -f $f
		then
			echo '? nothing to save: '$f
			exit 1
		fi
	done

	for dst in .. ../..
	do
		DST=$dst/save-$PROG
		test -d $DST && break
		test -w $dst && mkdir $DST && break
	done
	if test ! -d $DST
	then
		echo 'Cannot make save-directory'
		exit 1
	fi

	cd $SRC

	FILES="config.status"
	if ( egrep '^s%@prefix@%.*%g' config.status >/dev/null 2>/dev/null )
	then
		# autoconf 2.13
		GRPL='^s%@'
		GRPR='@%.*%g'
		SED1='s/s%@'
		SED2='@%//'
		SED3='s/%g//'
		FILES="$FILES config.cache"
	elif ( egrep '^s,@host_alias@,.*,;t' config.status >/dev/null 2>/dev/null )
	then
		# autoconf 2.52
		GRPL='^s,@'
		GRPR='@,.*,;t'
		SED1='s/s,@'
		SED2='@,//'
		SED3='s/,;t t//'
	elif ( egrep '^s,@host_alias@,.*,g' config.status >/dev/null 2>/dev/null )
	then
		# autoconf 2.61, used with PDCurses 3.4
		GRPL='^s,@'
		GRPR='@,.*,g'
		SED1='s/s,@'
		SED2='@,|#_!!_#|//'
		SED3='s/,g$//'
	elif ( egrep 'S\["host_alias"\]=".*"' config.status >/dev/null 2>/dev/null )
	then
		# autoconf 2.69
		GRPL='^S\["'
		GRPR='"\]=".*$'
		SED1='s/^S\["'
		SED2='"\]="//'
		SED3='s/"$//'
	else
		echo 'Cannot parse config.status'
		exit 1
	fi

	Host=`egrep "${GRPL}host_os${GRPR}" config.status | sed -e "${SED1}host_os${SED2}" -e "${SED3}" -e 's/ //g'`
	Comp=`egrep "${GRPL}CC${GRPR}"     config.status  | sed -e "${SED1}CC${SED2}"      -e "${SED3}" -e 's/ //g'`
	Opts=`egrep "${GRPL}CFLAGS${GRPR}" config.status  | sed -e "${SED1}CFLAGS${SED2}"  -e "${SED3}" -e 's/-[IUD][^ ]*//g' -e 's/-[Wf][a-z0-9-]*//g' -e 's/-g//' -e 's/-O[0-9]*//' -e 's/ //g'`

	if test -f /usr/local/bin/partition ; then
		Host=`partition`
	fi
	test -z "$Host" && Host=`uname`

	test -z "$Comp" && Comp=noarch

	set -- `egrep "${GRPL}LIBS${GRPR}" config.status  | sed -e "${SED1}LIBS${SED2}"    -e "${SED3}"`
	OUT=${Host}-${Comp}${Opts}

	echo Creating $DST/${OUT}.tgz

	chmod u+wx $DST
	rm -f $DST/${OUT}.tgz
	rm -rf $DST/$OUT

	mkdir $DST/$OUT
	for check in *.out config.log
	do
		[ -f "$check" ] && FILES="$FILES $check"
	done
	tar cvf - $FILES |(cd $DST/$OUT; tar xf -)

	cd $DST
	archive $OUT
	chmod -w .
}
