#!/bin/sh
#*************************************************************************
#
#   Program:    PostgreSQL customisation utility
#   File:       customise
#   
#   Version:    6.0
#   Date:       08.01.97
#   Function:   Write Makefile.custom for PostgreSQL
#   
#   Copyright:  (c) Dr. Andrew C. R. Martin 1997
#   Author:     Dr. Andrew C. R. Martin
#   Address:    Biomolecular Structure & Modelling Unit,
#               Department of Biochemistry & Molecular Biology,
#               University College,
#               Gower Street,
#               London.
#               WC1E 6BT.
#   EMail:      martin@biochem.ucl.ac.uk
#               andrew@stagleys.demon.co.uk
#               
#*************************************************************************
#
#   This program is distributed under the copyright for PostgreSQL
#
#*************************************************************************
#
#   Function:
#   =========
#   This program prompts the user to enter basic customisation options
#   for a local installation of PostgreSQL. From these answers it writes
#   a Makefile.custom
#
#   It is intended as a stop-gap measure until autoconf is implemeted.
#
#*************************************************************************
#
#   Revision History:
#   =================
#   V6.0  08.01.96 Original version for PostgreSQL V6.0
#
#*************************************************************************
# Customise the customisation! Set variables for default directories
# ------------------------------------------------------------------
libdir="/usr/local/lib"
incdir="/usr/local/include"

#*************************************************************************
# readln "prompt" "default"
# -------------------------
# Reads a line into $ans. 
# Based on code from the Linux Configure utility
#
# 08.01.96 Original   By: ACRM
readln () {
        echo -n "$1 "
	IFS='@' read ans </dev/tty || exit 1
	[ -z "$ans" ] && ans=$2
}

#*************************************************************************
# bool "question" "default"
# -------------------------
# Ask a yes or no question
# Based on code from the Linux Configure utility
#
# 08.01.96 Original   By: ACRM
bool () {
	ans=""
	def=$2
	while [ "$ans" != "y" -a "$ans" != "n" ]; do
		readln "$1 (y/n) [$def] " "$def"
	done
}

#*************************************************************************
# Start of main customise program
# -------------------------------
echo "Welcome to the PostgreSQL V6.0 cutomisation utility."
echo " "

echo "You may build PostgreSQL for one of the following systems"
echo "   aix            IBM on AIX 3.2.5"
echo "   alpha          DEC Alpha AXP on OSF/1 2.0"
echo "   BSD44_derived  OSs derived from 4.4-lite BSD (NetBSD, FreeBSD)"
echo "   bsdi           BSD/OS 2.0, 2.01, 2.1"
echo "   dgux           DG/UX 5.4R3.10"
echo "   hpux           HP PA-RISC on HP-UX 9.0"
echo "   i386_solaris   i386 Solaris"
echo "   irix5          SGI MIPS on IRIX 5.3 or better"
echo "   linux          Intel x86 on Linux 1.2 and Linux ELF"
echo "   nextstep       Motorola MC68K or Intel x86 on NeXTSTEP 3.2"
echo "   sparc_solaris  SUN SPARC on Solaris 2.4"
echo "   sunos4         SUN SPARC on SunOS 4.1.3"
echo "   svr4           Intel x86 on Intel SVR4"
echo "   ultrix4        DEC MIPS on Ultrix 4.4"

readln "Enter port name:" "UNKNOWN"
if [ "$ans" = "UNKNOWN" ] ; then
   echo "You must enter a port name from the list above."
   echo "Please start again!"
   exit 1
fi

portname=$ans
echo >Makefile.custom "PORTNAME= $portname"

if [ "$portname" = "linux" ] ; then
   bool "Is this an ELF system?" "y"
   if [ "$ans" = "n" ] ; then
      echo >>Makefile.custom "LINUX_ELF= "
   fi
fi

def="/usr/local/pgsql"
readln "Where do you wish to install Postgres [$def]?" "$def"
if [ "$ans" != "$def" ] ; then
   echo >>Makefile.custom "POSTGRESDIR= $ans"
fi

if [ "$portname" = "irix5" ] ; then
   echo >>Makefile.custom "IPCSDIR= /usr/sbin"
else
   def="/usr/bin"
   readln "Where are the IPCS utilities stored [$def]?" "$def"
   if [ "$ans" != "$def" ] ; then
      echo >>Makefile.custom "IPCSDIR= $ans"
   fi
fi

bool "Compile C++ library?" "n"
if [ "$ans" = "y" ] ; then
   echo >>Makefile.custom "HAVE_Cplusplus= true"
fi

bool "Compile Tcl utilities?" "n"
if [ "$ans" = "y" ] ; then
   echo >>Makefile.custom "USE_TCL= true"

   def=$incdir
   readln "Tcl include directory [$def]?" "$def"
   echo >>Makefile.custom "TCL_INCDIR= $ans"

   def=$libdir
   readln "Tcl library directory [$def]?" "$def"
   echo >>Makefile.custom "TCL_LIBDIR= $ans"

   def="7.5"
   readln "Tcl version [$def]?" "$def"
   echo >>Makefile.custom "TCL_LIB= -ltcl$ans"

   def=$incdir
   readln "Tk include directory [$def]?" "$def"
   echo >>Makefile.custom "TK_INCDIR= $ans"

   def=$libdir
   readln "Tk library directory [$def]?" "$def"
   echo >>Makefile.custom "TK_LIBDIR= $ans"

   def="4.1"
   readln "Tk version [$def]?" "$def"
   echo >>Makefile.custom "TK_LIB= -ltk$ans"

   def="/usr/include"
   readln "X11 include directory [$def]?" "$def"
   echo >>Makefile.custom "X11_INCDIR= $ans"

   def="/usr/lib"
   readln "X11 library directory [$def]?" "$def"
   echo >>Makefile.custom "X11_LIBDIR= $ans"

   echo " "
   echo "If you need to enter more than one library, the second"
   echo "and subsequent ones should be preceeded by -l"
   def="X11"
   readln "X11 library [$def]?" "$def"
   echo >>Makefile.custom "X11_LIB= -l$ans"
fi


echo " "
echo "Which BSD-compatible Install utility do you wish to use?"
echo "Under Irix the default will chown all your installed files"
echo "to root, so you are recommended to obtain ginstall"
readln "Enter program name: [system default]" "DEFAULT"
if [ "$ans" != "DEFAULT" ] ; then
   echo >>Makefile.custom "CUSTOM_INSTALL= $ans"
fi
echo " "

bool "Do you wish the psql program to use the GNU readline library?" "n"
if [ "$ans" = "y" ] ; then
   echo >>Makefile.custom "USE_READLINE= true"
   echo >>Makefile.custom "READLINE_INC+= -DHAVE_LIBREADLINE"
   echo >>Makefile.custom "# Remove the following line if you don't have <readline.h>"
   echo >>Makefile.custom "READLINE_INC+= -DHAVE_READLINE_H"
   echo >>Makefile.custom "# Remove the following line if you don't have <history.h>"
   echo >>Makefile.custom "READLINE_INC+= -DHAVE_HISTORY"
   echo " "
   echo "NOTE! Makefile.custom assumes you have <readline.h> and either"
   echo "<history.h> or <readline/history.h>. If you do not have these,"
   echo "please edit Makefile.custom and remove the appropriate line(s)"
   echo "(they are indicated in the file)."

   echo " "
   echo "If the include files for any of the following libraries are"
   echo "split across multiple directories, you should put a -I before"
   echo "the second and subsequent directories. For example:"
   echo "/usr/local/include -I/usr/local/include/readline"
   echo " "

### Readline library ###
   def=$incdir
   readln "Readline include directory [$def]" "$def"
   echo >>Makefile.custom "READLINE_INC+= -I$ans"

   rldirdef=$libdir
   readln "Readline library directory [$rldirdef]" "$rldirdef"
   rldir=$ans

   rllibdef="readline"
   readln "Name of the readline library [$rllibdef]" "$rllibdef"
   rllib=$ans

   echo >>Makefile.custom "READLINE_LIB+= -L$rldir -l$rllib"

### Curses library ###
   crdirdef=$libdir
   readln "Curses library directory [$crdirdef]" "$crdirdef"
   crdir=$ans

   crlibdef="curses"
   readln "Name of the curses library [$crlibdef]" "$crlibdef"
   crlib=$ans

   echo >>Makefile.custom "CURSES_LIB= -L$crdir -l$crlib"

### Separate history library ###
   bool "Does your readline have a separate history library?" "n"
   if [ "$ans" != "n" ] ; then
      def="$incdir -I$incdir/readline"
      readln "History include directory [$def]" "$def"
      echo >>Makefile.custom "READLINE_INC+= -DHAVE_LIBHISTORY"
      echo >>Makefile.custom "READLINE_INC+= -I$ans"

      histdirdef="$libdir"
      readln "History library directory [$histdirdef]" "$histdirdef"
      histdir=$ans

      histlibdef="history"
      readln "Name of the history library [$histlibdef]" "$histlibdef"
      histlib=$ans

      echo >>Makefile.custom "READLINE_LIB+= -L$histdir -l$histlib"
   fi
fi

echo " "
readln "Specify C compiler: [cc]" "DEFAULT"
if [ "$ans" != "DEFAULT" ] ; then
   echo >>Makefile.custom "CUSTOM_CC= $ans"
fi

readln "Specify any custom C compilation flags: [none]" "DEFAULT"
if [ "$ans" != "DEFAULT" ] ; then
   echo >>Makefile.custom "CUSTOM_COPT= $ans"
fi

echo " "
echo "You may choose to switch off assert checking. This will speed the"
echo "program up, but may miss some potentially fatal bugs!"
bool "Switch off assert checking" "n"
if [ "$ans" = "y" ] ; then
   echo >>Makefile.custom "CASSERT= "
fi
