#!/bin/sh
#
# PHP/FI Install Script
#
# $Id: install,v 1.17 1996/09/22 23:30:04 rasmus Exp $
#
DEF_LOG_DIR=/usr/local/etc/httpd/cgi-data
DEF_ACC_DIR=/usr/local/etc/httpd/cgi-data

if echo '\c' | grep -s c >/dev/null 2>&1
then
	ECHO_N="echo -n"
	ECHO_C=""
else
	ECHO_N="echo"
	ECHO_C='\c'
fi

echo
echo "PHP/FI Installation"
echo
echo "If you do not understand any of the following questions,"
echo "then the default should be safe - simply hit 'Return'."
echo

$ECHO_N "Do you have mSQL installed on this system? [yN] $ECHO_C"
read a
if [ "$a" = "y" ] || [ "$a" = "Y" ]
then
$ECHO_N "Top of your mSQL install tree? [/usr/local/Minerva] $ECHO_C"
HLM=-DHAVE_LIBMSQL=1
read INST_TOP
if [ "$INST_TOP." = "." ]
then
	INST_TOP=/usr/local/Minerva
fi
else
	INST_TOP=
fi

$ECHO_N "Do you have Postgres95 installed in this system? [yN] $ECHO_C"
read a
if [ "$a" = "y" ] || [ "$a" = "Y" ]
then
$ECHO_N "Top of your Postgres95 install tree? [/usr/local/postgres95] $ECHO_C"
HLP=-DHAVE_LIBPQ=1
read PGINST_TOP
if [ "$PGINST_TOP." = "." ]
then
	PGINST_TOP=/usr/local/postgres95
fi
else
	PGINST_TOP=
fi

$ECHO_N "Would you like to compile PHP/FI as an Apache module? [yN] $ECHO_C"
read a
if [ "$a" = "y" ] || [ "$a" = "Y" ]
then
$ECHO_N "Are you compiling for an Apache 1.1 or later server? [Yn] $ECHO_C"
read APACHE_API
if [ "$APACHE_API." = "." ] || [ "$APACHE_API" = "y" ] || [ "$APACHE_API" = "Y" ]
then
	APACHE_API=-DAPACHE_NEWAPI=1
else
	APACHE_API=
fi

$ECHO_N "Does your Apache server support ELF dynamic loading? [yN] $ECHO_C"
read APACHE_ELF_DLOPEN
if [ "$APACHE_ELF_DLOPEN." = "." ] || [ "$APACHE_ELF_DLOPEN" = "n" ] || [ "$APACHE_ELF_DLOPEN" = "N" ]
then
    MODULE_TARGET=module_user_build
else
    MODULE_TARGET=module_auto_build
    if [ "$INST_TOP" != "" -o "$PGINST_TOP" != "" ]
    then
        $ECHO_N "Do you want to build the dynamic, static, or both modules? [dsB] $ECHO_C"
        read answer
	case .$answer in
	    .|.b|.B)
		MODULE_PHP="mod_php-dynamic.so mod_php-static.so"
		;;
	    .|.s|.S)
		MODULE_PHP="mod_php-static.so"
		;;
	    *)
		MODULE_PHP="mod_php-dynamic.so"
		;;
	esac
    fi
fi
if [ $MODULE_TARGET = module_auto_build ]
then
    apache_dir=/usr/local/include/apache
    $ECHO_N "Apache include directory (which has httpd.h)? [$apache_dir] $ECHO_C"
else
    apache_dir=/usr/local/etc/httpd/src
    $ECHO_N "Apache source directory (which has httpd.h)? [$apache_dir] $ECHO_C"
fi
APACHE=-DAPACHE=1
PRG=libphp.a
read APACHE_DIR
if [ "$APACHE_DIR." = "." ]
then
	APACHE_DIR=$apache_dir
fi
else
	APACHE=
	PRG=php.cgi
fi

if [ "$APACHE." = "." ]
then
$ECHO_N "Do you want to dynamically link utility libraries? [Yn] $ECHO_C"
read a
if [ "$a" = "" -o "$a" = y -o "$a" = Y ]
then
    USEDLIBS='$(LIBS)'
else
    USEDLIBS='$(STATICLIBS)'
fi

$ECHO_N "Would you like to compile PHP/FI with FastCGI support? [yN] $ECHO_C"
read a
if [ "$a" = "y" ] || [ "$a" = "Y" ]
then
$ECHO_N "FastCGI development kit source directory? [/usr/local/etc/httpd/fcgi-devel-kit] $ECHO_C"
PHPFASTCGI=-DPHPFASTCGI=1
PRG=php.cgi
read FCGI_DIR
if [ "$FCGI_DIR." = "." ]
then
	FCGI_DIR=/usr/local/etc/httpd/fcgi-devel-kit
fi
else
	PHPFASTCGI=
	PRG=php.cgi
fi
fi

$ECHO_N "Would you like to include access control support? [Ny] $ECHO_C"
read a
if [ "$a." = "." ] || [ "$a" = "n" ] || [ "$a" = "N" ]
then
	ACCESS_CONTROL=
	ACCESS_DIR=
else
	ACCESS_CONTROL=-DACCESS_CONTROL
	echo 
	echo "You need to choose an access control directory."
	echo "This directory must be readable and writable by the"
	echo "user id under which your http server runs."
	echo
	$ECHO_N "Access control directory? [$DEF_ACC_DIR] $ECHO_C"
	read b
	if [ "$b." = "." ]
	then
		b=$DEF_ACC_DIR
	fi
	ACCESS_DIR=-DACCESS_DIR=\\\\\"$b\\\\\"
fi

$ECHO_N "Would you like to include page logging support? [Yn] $ECHO_C"
read a
if [ "$a." = "." ] || [ "$a" = "y" ] || [ "$a" = "Y" ]
then
	if [ "$HLM" = "-DHAVE_LIBMSQL=1" ]
	then
		$ECHO_N "Would you like to store your log files in dbm or mSQL format? [dm] $ECHO_C"
		read a
		if [ "$a" = "d" ] || [ "$a" = "D" ]
		then	
			LOGGING=-DLOGGING=1
			echo 
			echo "You need to choose a page logging directory."
			echo "This directory must be readable and writable by the"
			echo "user id under which your http server runs."
			echo
			$ECHO_N "Page logging directory? [$DEF_LOG_DIR] $ECHO_C"
			read b
			if [ "$b." = "." ]
			then
				b=$DEF_LOG_DIR
			fi
			LOG_DIR=-DLOG_DIR=\\\\\"$b\\\\\"
		else
			LOGGING=-DMSQLLOGGING=1
			echo
			echo "mSQL Logging enabled.  Note that you will need to create a"
			echo "phpfi database and appropriate tables for each user id for"
			echo "which logging should be done.  See the documentation doc/doc.html"
			echo "for details."
			echo 
		fi
	else
		LOGGING=-DLOGGING=1
		echo 
		echo "You need to choose a page logging directory."
		echo "This directory must be readable and writable by the"
		echo "user id under which your http server runs."
		echo
		$ECHO_N "Page logging directory? [$DEF_LOG_DIR] $ECHO_C"
		read b
		if [ "$b." = "." ]
		then
			b=$DEF_LOG_DIR
		fi
		LOG_DIR=-DLOG_DIR=\\\\\"$b\\\\\"
	fi
else
	LOGGING=
	LOG_DIR=
fi

$ECHO_N "Would you like to include file upload support? [Yn] $ECHO_C"
read a
if [ "$a." = "." ] || [ "$a" = "y" ] || [ "$a" = "Y" ]
then
	FILE_UPLOAD=-DFILE_UPLOAD
else
	FILE_UPLOAD=
fi

OPT_CFLAGS=-O

$ECHO_N "Would you like to build an ELF shared library? [yN] $ECHO_C"
read a
if [ "$a" = "" -o "$a" = n -o "$a" = N ]
then
    :
    PHPLIB_TARGET=staticlib
else
    SYS_CFLAGS=-fPIC
    SHLIB_TARGET=sharedlib
    PHPLIB_TARGET=sharedlib
fi

$ECHO_N "Additional directories to search for .h files []: $ECHO_C"
read a
if [ "$a." = "." ]
then
	ADD_INC_DIRS=
else
	ADD_INC_DIRS=`echo "$a" | sed 's@  *@ @g; s@^\([^ ]\)@-I\1@; s@ \([^ ]\)@ -I\1@g'`
	INC_CFLAGS="$ADD_INC_DIRS"
fi

$ECHO_N "Additional directories to search for library files []: $ECHO_C"
read a
if [ "$a." = "." ]
then
	ADD_LIB_DIRS=
else
	ADD_LIB_DIRS=`echo "$a" | sed 's@  *@ @g; s@^\([^ ]\)@-L\1@; s@ \([^ ]\)@ -L\1@g'`
	LDFLAGS=$ADD_LIB_DIRS
	export LDFLAGS
fi

./configure

mv src/Makefile src/Makefile.$$

echo "$SED_MSQL"
# mSQL part of sed  command
if [ "$INST_TOP." = "." ]
then
SED_MSQL="      s,@MSQL_INCLUDE@,,
                s,@LIBMSQL@,,
		s,@STATICLIBMSQL@,,
                s,@MSQL_DEF@,,
                s,@MSQL_LIB@,,"
else
if [ -d "$INST_TOP/include/msql" ]
then
    MSQL_INCDIR=/msql
fi
if [ -d "$INST_TOP/lib/msql" ]
then
    MSQL_LIBDIR=/msql
fi
SED_MSQL="      s,@MSQL_INCLUDE@,-I$INST_TOP/include$MSQL_INCDIR,
                s,@LIBMSQL@,-lmsql,
		s,@STATICLIBMSQL@,$INST_TOP/lib$MSQL_LIBDIR/libmsql.a,
                s,@MSQL_DEF@,$HLM,
                s,@MSQL_LIB@,-L$INST_TOP/lib$MSQL_LIBDIR,"
fi

# Postgres95 part of sed command

if [ "$PGINST_TOP." = "." ]
then
SED_PG95="      s,@PQ_INCLUDE@,,
                s,@LIBPQ@,,
                s,@STATICLIBPQ@,,
                s,@PQ_DEF@,,
                s,@PQ_LIB@,,"
else
if [ -d "$PGINST_TOP/include/postgres95" ]
then
    PG95_INCDIR=/postgres95
fi
if [ -d "$PGINST_TOP/lib/postgres95" ]
then
    PG95_LIBDIR=/postgres95
fi
SED_PG95="      s,@PQ_INCLUDE@,-I$PGINST_TOP/include$PG95_INCDIR,
                s,@LIBPQ@,-lpq,
		s,@STATICLIBPQ@,$PGINST_TOP/lib$PG95_LIBDIR/libpq.a,
                s,@PQ_DEF@,$HLP,
                s,@PQ_LIB@,-L$PGINST_TOP/lib$PG95_LIBDIR,"
fi

# FastCGI substitutions
if [ "$PHPFASTCGI." = "." ]
then
SED_FCGI="      s,@FCGI_INCLUDE@,,
                s,@LIBFCGI@,,
                s,@STATICLIBFCGI@,,
                s,@FCGI_LIB@,,
                s,@FCGI_DEF@,,"
else
SED_FCGI="      s,@FCGI_INCLUDE@,-I$FCGI_DIR/include,
		s,@FCGI_DEF@,$PHPFASTCGI,
                s,@LIBFCGI@,-lfcgi,
                s,@STATICLIBFCGI@,$FCGI_DIR/lib/libfcgi.a,
                s,@FCGI_LIB@,-L$FCGI_DIR/libfcgi,"
fi

# Apache module section

if [ "$APACHE_DIR." = "." ]
then
SED_APACHE="      s,@APACHE_INCLUDE@,,"
else
SED_APACHE="      s,@APACHE_INCLUDE@,-I$APACHE_DIR,"
fi

if [ -f /etc/debian_version ]
then
    DEBIAN=-DDEBIAN
else
    DEBIAN=
fi

if grep "#define HAVE_REGCOMP 1" config.h >/dev/null 2>&1
then
	echo "Using your system's Posix regular expression library"
	echo ""
	LIBREGEX=
	STATICLIBREGEX=
	LIBREGEXDIR=
	REGEX_INCLUDE=
	OURREGEX=
else
	echo "Using the included Posix regular expression library"
	echo ""
	LIBREGEX=-lregex	
	LIBREGEXDIR=-L./regex
	REGEX_INCLUDE=-I./regex
	OURREGEX=regex/libregex.a
	STATICLIBREGEX=regex/libregex.a
fi

# sed commmand
sed "		$SED_MSQL
		$SED_PG95
		$SED_APACHE
		$SED_FCGI
		s,@USEDLIBS@,$USEDLIBS,
		s,@OPT_CFLAGS@,$OPT_CFLAGS,
		s,@INC_CFLAGS@,$INC_CFLAGS,
		s,@SYS_CFLAGS@,$SYS_CFLAGS,
		s,@HGD@,$HGD,
		s,@HLNK@,$HLNK,
		s,@ACCESS_CONTROL@,$ACCESS_CONTROL,
		s,@ACCESS_DIR@,$ACCESS_DIR,
		s,@LOGGING@,$LOGGING,
		s,@LOG_DIR@,$LOG_DIR,
		s,@FILE_UPLOAD@,$FILE_UPLOAD,
		s,@MODULE_PHP@,$MODULE_PHP,
		s,@APACHE@,$APACHE,
		s,@APACHE_DIR@,$APACHE_DIR,
		s,@APACHE_API@,$APACHE_API,
		s,@PRG@,$PRG,
		s,@DEBIAN@,$DEBIAN,
		s,@MODULE_TARGET@,$MODULE_TARGET,
		s,@SHLIB_TARGET@,$SHLIB_TARGET,
		s,@PHPLIB_TARGET@,$PHPLIB_TARGET,
		s,@LIBREGEX@,$LIBREGEX,
		s,@LIBREGEXDIR@,$LIBREGEXDIR,
		s,@REGEX_INCLUDE@,$REGEX_INCLUDE,
		s,@OURREGEX@,$OURREGEX,
		s,@STATICLIBREGEX@,$STATICLIBREGEX,
" < src/Makefile.$$ > src/Makefile
rm src/Makefile.$$

sed "s,HAVE_MMAP,PHP_HAVE_MMAP," < config.h >config.$$
mv config.$$ config.h

if [ -f src/main.o ]
then
rm -f src/*.o 
fi

if [ -f src/php.cgi ]
then
rm -f src/php.cgi
fi

if [ -f src/libphp.a ]
then
rm -f src/libphp.a
fi

echo "If none of -ldbm, -ldb nor -lgdbm were found, you should"
echo "probably get one of them.  It will work without these, but"
echo "but performance-wise you will gain a lot by installing"
echo "gdbm."
echo ""
echo "If the above item is ok, you are ready to compile"
if [ -f src/parse.c ]
then
echo "the package.  Type: cd src; make"
else
echo "the package.  Type: cd src; make parser; make"
fi
