#! /bin/csh -f
#
# staden_install - version 2.4
#
#	This is a prototype installation program.
#
# 9 March 1992
#	Modified for installation on Sun, Alliant, etc
#	No longer install 2rs
#
# 20 November 1992
#	Now includes convert, cop, frog, getMCH and scf
#
# 25 November 1992
#	SGI supported
# 
# 19 May 1993
#	DEC Alpha, Solaris supported
# 
# Written by sd@uk.ac.cam.mrc-lmb
#

# prelim
set prog = $0 ; set prog = $prog:t

# Machines supported: al sun dec sgi alpha solaris
#set MACHINE = `echo $prog | sed 's/.*-//'`
set MACHINE = alpha

# For local (MRC-LMB) setup only
#set LOCAL = `echo $prog | awk '/local/{print "YES";exit;}{print "NO";}'`
set LOCAL = NO


echo ""
echo -n "Staden Package installation procedure - "
switch (${MACHINE})
	case "al":
		echo "Alliant FX/2800 Concentrix version"
		set MAKE = "make -sk"
		breaksw
	case "sun":
		echo "SunOS version"
		set MAKE = "make -sk"
		breaksw
	case "dec":
		echo "DEC Ultrix (mips) version"
		set MAKE = "gmake -sk"
		breaksw
	case "sgi":
		echo "Silicon Graphics Iris version"
		set MAKE = "gmake -sk"
		breaksw
	case "alpha":
		echo "DEC Alpha OSF/1 version"
		set MAKE = "gmake -sk"
		breaksw
	case "solaris":
		echo "Solaris version"
		set MAKE = "make -sk"
		breaksw
	default:
		echo "Panic. Unknown version"
		exit 1
endsw
echo ""
echo "* starting initialization...please wait."
echo ""

# Binary fork of source directory
if ($LOCAL == "YES") then
    set DIR_BINARIES = ${MACHINE}-binaries
    set DIR_PROGS = ${MACHINE}-bin
else
    set DIR_BINARIES = .
    set DIR_PROGS = bin
    set MAKE = "$MAKE -f makefile-${MACHINE}"
endif

init:
# Set useful shell variables
set YES="YES";
set NO="NO"

# set/unset some .cshrc envs.
unset noclobber
set noglob

# set interrupt trap
onintr end_failure

# Make dir command
set MKDIR = "mkdir"

# Copy command
set CP = "cp -p"

# Install command
#set INSTALL = "install"
#set INSTALL = "mv"
set INSTALL = "cp"

# Set up default responses
set DEF_STADEN_ROOT = `pwd`

set DEF_REQ_NONX = "$YES"
set DEF_REQ_X = "$YES"
set DEF_REQ_TED = "$YES"
set DEF_REQ_MISC = "$YES"

# directories
set DIR_SRC = $DEF_STADEN_ROOT/src
set DIR_BIN = $DEF_STADEN_ROOT/$DIR_PROGS
set DIR_MISC = $DIR_SRC/Misc
set DIR_STADEN = $DIR_SRC/staden
set DIR_TED = $DIR_SRC/ted
set DIR_ABI = $DIR_SRC/abi
set DIR_ALF = $DIR_SRC/alf
set DIR_BAP = $DIR_SRC/bap
set DIR_OSP = $DIR_SRC/bap/osp-bits
set DIR_CONVERT = $DIR_SRC/convert
set DIR_COP = $DIR_SRC/cop
set DIR_FROG = $DIR_SRC/frog
set DIR_GETMCH = $DIR_SRC/getMCH
set DIR_SCF = $DIR_SRC/scf


main:

	
preamble:
	echo ""
	echo ""
	echo "* Please answer the following questions."
	echo "  Default answers to questions are given in square brackets."
	echo "  If you require help at any stage respond with a ? to the question."
	echo ""

ask_staden_root:
	set ANS_STADEN_ROOT = $DEF_STADEN_ROOT

ask_require_nonx_progs: 
	echo -n "Compile all the non-X programs in the Staden Package [$DEF_REQ_NONX]? "
	set ANS_REQ_NONX = $<
	if ("$ANS_REQ_NONX" == "?") then
		echo "* If you do not have X windows on your system you will require"
		echo "  these.  However, you will require Tektronics terminal emulation."
		echo "  If you do not require all of the non-X programs, you should abort"
		echo "  and manually make the ones you require."
		echo ""
		goto ask_require_nonx_progs
	else if ("$ANS_REQ_NONX" != "") then
		if ("$ANS_REQ_NONX" =~ [yY]*) then
			set ANS_REQ_NONX=$YES
		else if ("$ANS_REQ_NONX" =~ [nN]*) then
			set ANS_REQ_NONX=$NO
		else
			goto ask_require_nonx_progs
		endif
	else
		set ANS_REQ_NONX=$DEF_REQ_NONX
	endif

ask_require_x_progs:
	echo -n "Compile all the X programs in the Staden Package [$DEF_REQ_X]? "
	set ANS_REQ_X = $<
	if ("$ANS_REQ_X" == "?") then
		echo "* These are the programs that require X windows."
		echo "  If you do not require all of the X programs, you should abort"
		echo "  and manually make the ones you require."

		echo ""
		goto ask_require_x_progs
	else if ("$ANS_REQ_X" != "") then
		if ("$ANS_REQ_X" =~ [yY]*) then
			set ANS_REQ_X=$YES
		else if ("$ANS_REQ_X" =~ [nN]*) then
			set ANS_REQ_X=$NO
		else
			goto ask_require_nonx_progs
		endif
	else
		set ANS_REQ_X=$DEF_REQ_X
	endif


ask_require_ted:
	echo -n "Compile the trace editing program ted [$DEF_REQ_TED]? "
	set ANS_REQ_TED = $<
	if ("$ANS_REQ_TED" == "?") then
		echo "* This is the trace editor program.  It allows you to look at"
		echo "  traces obtained from automated fluorescent sequencing machines."
		echo ""
		goto ask_require_ted
	else if ("$ANS_REQ_TED" != "") then
		if ("$ANS_REQ_TED" =~ [yY]*) then
			set ANS_REQ_TED=$YES
		else if ("$ANS_REQ_TED" =~ [nN]*) then
			set ANS_REQ_TED=$NO
		else
			goto ask_require_ted
		endif
	else
		set ANS_REQ_TED=$DEF_REQ_TED
	endif



ask_require_misc:
	echo -n "Compile other programs [$DEF_REQ_MISC]? "
	set ANS_REQ_MISC = $<
	if ("$ANS_REQ_MISC" == "?") then
		echo "* Other programs include:"
		echo "    alfsplit"
		echo "    getABISampleName"
		echo ""
		goto ask_require_misc
	else if ("$ANS_REQ_MISC" != "") then
		if ("$ANS_REQ_MISC" =~ [yY]*) then
			set ANS_REQ_MISC=$YES
		else if ("$ANS_REQ_MISC" =~ [nN]*) then
			set ANS_REQ_MISC=$NO
		else
			goto ask_require_misc
		endif
	else
		set ANS_REQ_MISC=$DEF_REQ_MISC
	endif



time_taken_warning:
	echo ""
	echo "The installation procedure is now ready to start."
	echo ""
	echo "**** Warning:"
	echo "    The installation will take considerable time to complete.  If you"
	echo "    are installing the whole Staden Package from scratch it could"
	echo "    take as long as an hour for all exectuables to be compiled and"
	echo "    installed."
	echo ""

ask_goahead:
	echo -n "Proceed with the installation [YES]? " 
	set ANSWER=$<
	if ("$ANSWER" == "?") then
		echo "* Final confirmation to proceed with the installation.  Answer"
		echo "  YES to proceed; otherwise, answer NO to abort the installation."
		echo ""
		goto ask_goahead
	else if ("$ANSWER" != "") then
		if ("$ANSWER" =~ [nN]*) then
			goto chickens_exit
		else if ("$ANSWER" !~ [yY]*) then
			goto ask_goahead
		endif
	endif

installation_proper:

# make binaries directory if it doesn't exist

	if (! -d $DIR_BIN) then
		$MKDIR $DIR_BIN
	endif

	if ("$ANS_REQ_MISC" == "$YES" || "$ANS_REQ_X" == "$YES" || "$ANS_REQ_NONX" == "$YES" ) then
		echo ""
		echo "+ Compiling miscellaneous library"

		pushd $DIR_MISC > /dev/null

		cd $DIR_BINARIES
	        $MAKE all

		popd > /dev/null

	endif

        if ("$ANS_REQ_NONX" == "$YES") then
		echo ""
		echo "+ Installing non X programs"

		pushd $DIR_STADEN > /dev/null
		cd $DIR_BINARIES
	        $MAKE nprogs lprogs
                $INSTALL mep $DIR_BIN
		$INSTALL nip $DIR_BIN
		$INSTALL pip $DIR_BIN
		$INSTALL sap $DIR_BIN
		$INSTALL sapf $DIR_BIN
		$INSTALL sip $DIR_BIN
		$INSTALL splitp1 $DIR_BIN
		$INSTALL splitp2 $DIR_BIN
		$INSTALL splitp3 $DIR_BIN
		$INSTALL sethelp $DIR_BIN
		$INSTALL gip $DIR_BIN
		$INSTALL nipl $DIR_BIN
		$INSTALL pipl $DIR_BIN
		$INSTALL sipl $DIR_BIN
		$INSTALL dap $DIR_BIN
		$INSTALL nipf $DIR_BIN
		$INSTALL vep $DIR_BIN
		$INSTALL rep $DIR_BIN
		$INSTALL lip $DIR_BIN
		#$INSTALL convert_project $DIR_BIN
		popd > /dev/null

		pushd $DIR_OSP > /dev/null
		cd $DIR_BINARIES
		$MAKE
		popd > /dev/null		

		pushd $DIR_BAP > /dev/null
		cd $DIR_BINARIES
	        $MAKE bap
                $INSTALL bap $DIR_BIN
		popd > /dev/null

	endif

	if ("$ANS_REQ_TED" == "$YES") then
		echo ""
		echo "+ Installing Trace editor"

		pushd $DIR_TED > /dev/null
		cd $DIR_BINARIES
                $MAKE ted
		$INSTALL ted $DIR_BIN
		popd > /dev/null
	endif

	if ("$ANS_REQ_X" == "$YES") then
		echo ""
		echo "+ Installing X programs"

		pushd $DIR_STADEN > /dev/null
		cd $DIR_BINARIES
                $MAKE xprogs
		$INSTALL xmep $DIR_BIN
		$INSTALL xnip $DIR_BIN
		$INSTALL xpip $DIR_BIN
		$INSTALL xsap $DIR_BIN
		$INSTALL xsip $DIR_BIN
		$INSTALL xdap $DIR_BIN
		popd > /dev/null

		pushd $DIR_OSP > /dev/null
		cd $DIR_BINARIES
		$MAKE
		popd > /dev/null		

		pushd $DIR_BAP > /dev/null
		cd $DIR_BINARIES
	        $MAKE xbap
                $INSTALL xbap $DIR_BIN
		popd > /dev/null


	endif

	if ("$ANS_REQ_MISC" == "$YES") then
		echo ""
		echo "+ Installing miscellaneous programs"

		pushd $DIR_ABI > /dev/null
		cd $DIR_BINARIES
                $MAKE all
		$INSTALL getABISampleName $DIR_BIN
		popd > /dev/null

		pushd $DIR_ALF > /dev/null
		cd $DIR_BINARIES
                $MAKE alfsplit
		$INSTALL alfsplit $DIR_BIN
		popd > /dev/null

		pushd $DIR_CONVERT > /dev/null
		cd $DIR_BINARIES
                $MAKE convert
		$INSTALL convert $DIR_BIN
		popd > /dev/null

		pushd $DIR_COP > /dev/null
		cd $DIR_BINARIES
                $MAKE all
		$INSTALL cop $DIR_BIN
		$INSTALL cop-bap $DIR_BIN
		popd > /dev/null

		pushd $DIR_FROG > /dev/null
		cd $DIR_BINARIES
                $MAKE frog
		$INSTALL frog $DIR_BIN
		popd > /dev/null

		pushd $DIR_GETMCH > /dev/null
		cd $DIR_BINARIES
                $MAKE trace2seq
		$INSTALL trace2seq $DIR_BIN
		popd > /dev/null

		pushd $DIR_SCF > /dev/null
		cd $DIR_BINARIES
                $MAKE makeSCF
		$INSTALL makeSCF $DIR_BIN
		popd > /dev/null



	endif


installation_done:
	echo ""
	echo "+ Installation completed"
	echo ""

	echo "  Some further initialisation is required in order to use the"
	echo "  package.  csh users should insert the following in their .login"
	echo "  files:"
	echo "  "
	echo "  	setenv STADENROOT $ANS_STADEN_ROOT"
	echo '  	source $STADENROOT/staden.login'
	echo "  "
	echo "  Users of the Bourne shell, sh, should insert the following in"
	echo "  their .profile:"
	echo "  "
	echo "  	STADENROOT=$ANS_STADEN_ROOT"
	echo "  	export STADENROOT"
	echo '  	. $STADENROOT/staden.profile'
	echo "  "
	echo "  These initialisations will alter the shell's search path so that"
	echo "  it can find the programs in the STADEN Package"
	echo "  "

normal_exit:
	exit 0

chickens_exit:
	echo ""
	echo "+ Installation cancelled"
	echo ""

	exit 0

end_failure:
	unset noglob
	echo ""
	echo "Aborted STADEN Package installation on `date`" 
	echo ""
	exit 1