pgplus/bin/
pgplus/help_files/
pgplus/port_redirector/
pgplus/src/configure/makefiles/
##########################################################################
#
# Playground Plus configuration script
# copyright (c) Richard Lawrence 1999
#
# This script is distributed for and ONLY for the Playground Plus package. 
# It may not be used in any other distribution without the prior permission
# of the author. No reply to your request does NOT constitute permission.
#
##########################################################################

# setup
# script to work out your machine type and set up the makefile
# by Richard 'Silver' Lawrence

PG_VERSION=`egrep "\#define PG_VERSION" include/config.h | cut -d"\"" -f2`

clear

cat <<*END*

 Playground Plus v$PG_VERSION configuration
---------------------------------------------------------------------------

 MAKEFILE CONFIGURATION

 This configuration script will work out what type of UNIX you are
 running and create the appropriate makefile for you.

*END*

uname_system=`uname -s 2>/dev/null` || uname_system=unknown
uname_machine=`uname -m 2>/dev/null` || uname_system=unknown
uname_release=`uname -r 2>/dev/null` || uname_release=unknown

sleep 2

echo "    Host name              : `hostname`"
echo "    Host system            : $uname_system"
echo "    Host machine           : $uname_machine"
echo "    Host release           : $uname_release"

# convert slash to a dash
uname_system=`echo $uname_system | sed "s#/#-#g"`

makefile="unknown"

case $uname_system in
  SunOS )
    echo -n "    Specific OS            : "
    release_major=`echo $uname_release | cut -f 1 -d .`
    case $release_major in
      5 )
        release_minor=`echo $uname_release | cut -f 2 -d .`
        echo "Solaris 2.$release_minor";
        makefile="Solaris"
        ;;
      * )
        echo "SunOS $uname_release"
        makefile="SunOS"
        ;;
    esac
    ;;

  * )
    uname_system=`ls configure/makefiles | grep -i "^$uname_system"`
    if [ -f "configure/makefiles/$uname_system" ]
    then
      makefile="$uname_system"
    else
      echo -e "\n    No specific makefile for that system found"
      echo -e "    Please choose from one of the following:\n"

      ls -C configure/makefiles/ | sed "s/^/    /g"

      echo -e "\n    option> \c"

      read makefile
      echo
    fi
    ;;

esac

# check for a load of bits and bobs
echo -n "    Checking               : headers.."   
flags="-DNDEBUG"
egrep -h "#include <.*\.h>" *.c | sed "s/ *#/#/g" | sort | uniq > temp.c
gcc -E temp.c 1>temp.txt 2>/dev/null
if [ -n "`egrep -i "extern * int * scandir * \(__const" temp.txt`" ]
then
 flags="$flags -DNEED_CONST_DIRENT"
fi
if [ -n "`egrep -i "typedef * unsigned * int * socklen_t;" temp.txt`" ]
then
 flags="$flags -DHAVE_SOCKLEN_T"
fi
if [ -n "`egrep -i "extern * int * sigemptyset *" temp.txt`" ]
then
 flags="$flags -DHAVE_SIGEMPTYSET"
fi
if [ -z "`egrep -i "extern * int * bind *" temp.txt`" ]
then
 flags="$flags -DNEED_BIND_DECL"
fi
if [ -z "`egrep -i "extern * int * listen *" temp.txt`" ]
then
 flags="$flags -DNEED_LISTEN_DECL"
fi
if [ -z "`egrep -i "extern * int * getitimer *" temp.txt`" ]
then
 flags="$flags -DNEED_GETITIMER_DECL"
fi
if [ -z "`egrep -i "extern * int * getrlimit *" temp.txt`" ]
then
 flags="$flags -DNEED_GETRLIMIT_DECL"
fi
if [ -z "`egrep -i "extern * char * \*crypt *" temp.txt`" ]
then
 flags="$flags -DNEED_CRYPT_DECL"
fi
rm -f temp.txt temp.c

echo -n " crypt.."
# check for crypt (and timelocal, since testing for the inclusion
# of timelocal in the headers - like above - causes problems on
# slackware boxes)
libs=""
cat > temp.c << *END*
#include <time.h>
void main(void)
{
  timelocal(0);
  crypt(0,0);
}
*END*
gcc temp.c -o temp.exe 2>temp.output
if [ -n "`grep "crypt" temp.output`" ]
then
  libs="-lcrypt"
fi
if [ -n "`grep "timelocal" temp.output`" ]
then
  flags="$flags -DUSE_MKTIME"
fi
rm -f temp.c temp.exe temp.output
echo " ok"   

# allow for incorrect case
makefile=`ls configure/makefiles | grep -i "^$makefile\$"`

if [ ! -f configure/makefiles/$makefile ]
then
  echo "    Error: Unable to find makefile for that OS. Aborting."
  echo
  exit
fi

echo "    Using details from     : makefiles/$makefile"   
  
. configure/makefiles/$makefile

MF_OTHER_CFLAGS="$flags"
if [ -n "$libs" ]
then
  MF_LIBS="$MF_LIBS $libs"
fi

echo "    Makefile description   : `echo $MF_OS`"
echo "    Makefile o/s defines   : $MF_OS_CFLAGS"
echo "    Makefile o/s libraries : $MF_LIBS"

cat configure/Makefile.template | grep -v "^//" | sed -e "s/\*MF_DATE\*/$MF_DATE/g" \
                                          -e "s/\*MF_OS\*/$MF_OS/g" \
                                          -e "s/\*MF_AUTHOR\*/$MF_AUTHOR/g" \
                                          -e "s/\*MF_OS_CFLAGS\*/$MF_OS_CFLAGS/g" \
                                          -e "s/\*MF_OTHER_CFLAGS\*/$MF_OTHER_CFLAGS/g" \
                                          -e "s/\*MF_LIBS\*/$MF_LIBS/g" \
                                            >Makefile
echo
echo "    Makefile installed sucessfully"
echo
echo -n "    Press RETURN or ENTER to continue ... "
read response

if [ ! -f include/autoconfig.h ]
then
  bash configure/configure_code
  echo
  echo -n "    Press RETURN or ENTER to continue ... "
  read response
fi

touch .depend