#! /bin/sh

echo "autoconf is running ... (this could take up to a minute)"
echo

cat > Config.tmp << '@END'
#
#  Copyright (C) 1997 by Dirk Ohme (Dirk.Ohme@transtec.de)
#

#============ Default for all system ==============
OS      = UNX
SHELL   = /bin/sh
AR      = ar r
DLDAPI  = DLDAPI_SVR4_DLFCN
DLSUFFIX= so
INCDIR  = .
OBJX    =
RANLIB  = ranlib
@END

\rm -f Makefile.tmp
cat > Makefile.tmp <<'@END'
include ../Version.mk
include ../Config.mk
@END

#
# check for OS auto detection
#
OS=${1:-}
if [ "$OS" = "auto" ]
then

        #
        # get operating system
        #
        OS=`uname`
        case $OS in
                AIX)
                        OS=aix
                        ;;
                HP-UX)
                        if [ "`uname -a | grep '/7'`" -o "`uname -a | grep '/8'`" ]
                        then
                                OS=hp700
                        else
                                OS=hp300
                        fi
                        ;;
                SunOS)
                        if [ "`uname -r | sed 's/^\(.\).*$/\1/'`" = "4" ]
                        then
                                OS=sun4
                        else
                                OS=solaris
                        fi
                        ;;
                linux*|Linux*)
                        OS=linux
                        cd OS_TEST
                        gcc -fPIC elf_test.c -o elf_test 2>>/dev/null\
1>>/dev/null && (rm -f elf_test; OS=linux-elf)
                        cd ..
                        ;;
                *)
                        OS=`echo $OS | tr a-z A-Z`
                        ;;
        esac

        #
        # check for gcc
        #
        if [ "`gcc -v 2>&1`" ]
        then
                OS=`echo $OS-gcc`
        fi

        #
        # display summary
        #
        echo "  operating system:  "$OS

fi

#
# OS dependend code
#
case $OS in
 sun4)
        cat >> Config.tmp << '@END'

#============ SunOS 4.1.x =========================
PIC     = -pic
CC      = acc
LIBS    = -ldl
@END
        ;;

 sun4-gcc)
        cat >> Config.tmp << '@END'

#============ SunOS 4.1.x (with gcc) =========================
CC      = gcc
CFLAGSX = -fpic
LDFLAGS = -Bstatic
LDFLAGS2 = -assert pure-text
LIBS    =
@END
        ;;

 aix)
        cat >> Config.tmp << '@END'

#=========== AIX 3.x 4.x ==========================
DLDAPI  = DLDAPI_AIX_LOAD
ANSI    = -langlvl=ansi
LDFLAGS = -H512 -T512 -bE:shrsub.exp -bM:SRE
LIBS    = -lc
OBJX    = main.o
DLSUFFIX= s.o
CFLAGSX = -DCLI_NAME_PREFIX=\".SQL\"
@END
        ;;

 hp300 | hp400)
        cat >> Config.tmp << '@END'

#============ HP/UX (s300/s400) 9.x 10.x ==========
DLDAPI  = DLDAPI_HP_SHL
ANSI    = -Aa
PIC     = +z
LDFLAGS = -b
DLSUFFIX= sl
CFLAGSX = -D_INCLUDE_POSIX_SOURCE -DCLI_NAME_PREFIX=\"_SQL\"
@END
        ;;

 hp700 | hp800)
        cat >> Config.tmp << '@END'

#============ HP/UX 9000(s700/s800) 9.x 10.x ======
DLDAPI  = DLDAPI_HP_SHL
ANSI    = -Aa
PIC     = +z
LDFLAGS = -b
LIBS    = -lc -ldld
DLSUFFIX= sl
CFLAGSX = -D_INCLUDE_POSIX_SOURCE
@END
        ;;

 solaris)
        cat >> Config.tmp << '@END'

#======= Solaris 2.x, SunOS 5.x (Sparc/x86) =======
LDFLAGS = -G -z defs
#LIBS    = -lc -ldl -lnsl
LIBS    = -lc -ldl -lnsl -lsocket -lnsl -lgen
@END
        ;;

 solaris-gcc)
        cat >> Config.tmp << '@END'

#======= Solaris 2.x, SunOS 5.x with gcc (Sparc/x86) =======
CC      = gcc
LDFLAGS = -G -z defs
#LIBS    = -lc -ldl -lnsl
LIBS    = -lc -ldl -lnsl -lsocket -lnsl -lgen
@END
        ;;

 ncr |gis)
        cat >> Config.tmp << '@END'

#============= NCR SVR4 3.x =======================
PIC     = -KPIC
LDFLAGS = -G -z defs
LIBS    = -lc -ldl
@END
        ;;

 unixware)
        cat >> Config.tmp << '@END'

#========= UnixWare SVR4 1.x, 2.x =================
PIC     = -KPIC
LDFLAGS = -G -z defs
LIBS    = -lc -ldl
@END
        ;;

 maxos)
        cat >> Config.tmp << '@END'

#============ Concurrent Maxion MAX/OS 1.x ========
PIC     = -KPIC
LDFLAGS = -G -z defs
LIBS    = -lc -ldl
@END
        ;;

 sco-opensrv | sco-osr5 )
        cat >> Config.tmp << '@END'

#============ SCO OpenServer 5.x ==================
PIC     = -K PIC -b elf
LDFLAGS = -G -z defs
LIBS    = -lc -ldl
@END
        ;;

 dgux)
        cat >> Config.tmp << '@END'

#============ DG/UX 5.x ===========================
PIC     = -K PIC
LDFLAGS = -G -z defs
LIBS    = -lc -ldl
@END
        ;;

 freebsd)
        cat >> Config.tmp << '@END'

#============= FreeBSD 2.x ========================
PIC     = -fPIC
CFLAGSX = -DCLI_NAME_PREFIX=\"_SQL\"
LDFLAGS = -Bshareable
LIBS    = -lc
@END

        \rm -f Makefile.tmp
        cat > Makefile.tmp <<'@END'
.include "../Version.mk"
.include "../Config.mk"
@END
        ;;

 bsd-os)
        cat >> Config.tmp << '@END'

#============ BSDI BSD/OS 2.x =====================
#
#       ported by: Stuart Hayton <stuey@clic.co.uk>
#
CC      = gcc
LDFLAGS = -r
LDSUFFIX= o
LIBS    = -lc_s.2.0 -ldl
@END
        ;;

 linux|linux-gcc)
        cat >> Config.tmp << '@END'

#============= Linux without ELF =================
ANSI    = -ansi
CC      = gcc
LIBS    = -lgcc
@END

        #---| check for gcc installation path |---
        LIB_DIR=`gcc -v 2>&1 | grep "Reading specs from" | sed 's/^.* //g;s/\/[^\/]*$//;'`
        if [ -n "$LIB_DIR" ]
        then
                echo "LDFLAGS   = -L$LIB_DIR" >> Config.tmp
        else
                echo "LDFLAGS   =" >> Config.tmp
        fi
        ;;

 linux-elf|linux-elf-gcc)
        cat >> Config.tmp << '@END'

#============= Linux ELF =========================
#      Slackware 2.x,(kernel 1.3.x) on i386
#      Red Hat   2.x (kernel 1.2.x) on i486
#
ANSI    = -ansi
CC      = gcc
PIC     = -fPIC
LIBS    = -ldl
@END

        #---| check for gcc installation path |---
        LIB_DIR=`gcc -v 2>&1 | grep "Reading specs from" | sed 's/^.* //g;s/\/[^\/]*$//;'`
        if [ -n "$LIB_DIR" ]
        then
                echo "LDFLAGS   = -shared -L$LIB_DIR" >> Config.tmp
        else
                echo "LDFLAGS   = -shared" >> Config.tmp
        fi
        ;;

 irix5| irix6)
        cat >> Config.tmp << '@END'

#============= SGI IRIX 5.x, 6.x =================
LDFLAGS = -shared
LIBS    = -lc
@END
        ;;

 dec-osf1 | dec-unix)
        cat >> Config.tmp << '@END'

#============= DEC Unix(OSF/1) 3.x, 4.x ==========
LDFLAGS = -shared
LIBS    = -lc
@END
        ;;
 *)
        cat << '@END'

  Usage: autoconfig <platform_opt> <environment>

  platform_opt:

        auto            -- auto-detection
        sun4            -- SunOS 4.1.x
        aix             -- IBM AIX 3.x, 4.x
        hp300, hp400    -- HP/UX 9.x, 10.x on 9000 s300/s400
        hp700, hp800    -- HP/UX 9.x, 10.x on 9000 s700/s800
        solaris         -- Sun Solaris 2.x, SunOS 5.x
        solaris-gcc     -- Sun Solaris 2.x, SunOS 5.x with GCC
        ncr, gis        -- NCR(GIS) SVR4 3.x
        unixware        -- Novell UnixWare 1.x, 2.x
        maxos           -- Concurrent MAX/OS SVR4  1.x
        sco-osr5        -- SCO Open Server 5.x
        dgux            -- DG/UX 5.x
        freebsd         -- FreeBSD 2.x
        bsd-os          -- BSDI BSD/OS 2.x
        linux-elf       -- Linux ELF 1.2.x and up
        irix5, irix6    -- SGI Irix 5.x, 6.x
        dec-osf1        -- DEC Unix(OSF/1) 3.x, 4.x

  environment:

        auto            -- auto-detect (default)
        mSQL            -- build CLI for mSQL 1.x database
        mSQL2           -- build CLI for mSQL 2.x database
        ORACLE          -- build CLI for Oracle 7.x database

@END
        \rm -f Config.tmp
        \rm -f Makefile.tmp
        exit 1
        ;;
esac

#
# Java environment
#
JDK_ENV=`which java`
if [ "$?" -eq "0" -a "$JDK_ENV" ]
then
	JDK_VER=`$JDK_ENV -version 2>/dev/null | tail -1`
	if [ -z "$JDK_VER" ]
	then
		JDK_ENV=`which rjava 2>/dev/null`
		if [ "$?" -eq "0" -a "$JDK_ENV" ]
		then
			JDK_VER=`$JDK_ENV -version 2>/dev/null | tail -1`
			if [ "$JDK_VER" ]
			then
				JDK_VER="unknown-remote"
			else
				JDK_ENV=""
			fi
		fi
	fi
	if [ "$JDK_VER" ]
	then
		JDK_VER=`echo $JDK_VER | sed 's/^.*\"\(.*\)\".*$/\1/'`
	fi
fi
if [ "$JDK_ENV" ]
then
	JDK_PATH=`echo $JDK_ENV | sed 's/\/[^\/]*$//;s/\/[^\/]*$//'`
	JDK_INCLUDE=`find $JDK_PATH/include -type d -print`
	JDK_INCLUDE=`echo $JDK_INCLUDE | sed 's/^/-I/;s/ / -I/g'`
	JDK_LIBPATH=`find $JDK_PATH/lib -type d -print`
	JDK_LIBPATH=`echo $JDK_LIBPATH | sed 's/^/-L/;s/ / -L/g'`

	cat >> Config.tmp << !EOF!

#============ Java Development Kit (JDK) ===================
JAVA		= JDK-$JDK_VER
JDK_PATH	= $JDK_PATH
JDK_JAVA	= $JDK_ENV
JDK_INCLUDE	= $JDK_INCLUDE
JDK_LIBPATH	= $JDK_LIBPATH
JDK_LIBS	=
!EOF!
	echo "  Java Development:  JDK-$JDK_VER"

	JDK_PATH=
	JDK_INCLUDE=
	JDK_LIBPATH=
else
	echo "  Java Development:  no Java available"
	JDK_ENV=
fi


#
# database environment
#
echo "  database systems:"
DBENV=${2:-auto}
DBTMP=""
DBDIRS=""

#
# checking for mSQL 1.x
#
if [ "$DBENV" = "auto" -o "$DBENV" = "mSQL"  -o "$DBENV" = "msql" ]
then
        DBTMP=`find $HOME/* -name Minerva -o -name msql -o -name mSQL -type d -print`
        if [ -z "$DBTMP" -a  -d /usr/local/Minerva ]
	then
		DBTMP="/usr/local/Minerva"
	fi
        if [ -z "$DBTMP" -a  -d /usr/local/mSQL ]
	then
		DBTMP="/usr/local/mSQL"
	fi
        if [ -z "$DBTMP" -a  -d /usr/local/msql ]
	then
		DBTMP="/usr/local/msql"
	fi
        if [ -z "$DBTMP" ]
        then
		DBTMP=`pwd`
		while [ "$DBTMP" -a ! -d $DBTMP/mSQL -a ! -d $DBTMP/msql ]
		do
			DBTMP=`echo $DBTMP | sed 's/\/[^\/]*$//'`
		done
		if [ -d $DBTMP/mSQL ]
		then
			DBTMP=$DBTMP/mSQL
		fi
		if [ -d $DBTMP/msql ]
		then
			DBTMP=$DBTMP/msql
		fi
        fi
        if [ -n "$DBTMP" ]
        then
		cat >> Config.tmp << !EOF!

#============ Database settings for mSQL 1.x ===================
MSQL_ENV	= mSQL
MSQL_INCLUDE	= $DBTMP/include
MSQL_LIBPATH	= $DBTMP/lib
MSQL_LIBS	= -lmsql
!EOF!
		echo "                     mSQL 1.x"
		DBDIRS=$DBDIRS" mSQL"
        fi
fi

#
# checking for mSQL 2.x
#
if [ "$DBENV" = "auto" -o "$DBENV" = "mSQL2"  -o "$DBENV" = "msql2" ]
then
        DBTMP=`find $HOME/* -name msql2 -o -name mSQL2 -type d -print`
        if [ -z "$DBTMP" -a  -d /usr/local/mSQL2 ]
	then
		DBTMP="/usr/local/mSQL2"
	fi
        if [ -z "$DBTMP" -a  -d /usr/local/msql2 ]
	then
		DBTMP="/usr/local/msql2"
	fi
        if [ -z "$DBTMP" ]
        then
		DBTMP=`pwd`
		while [ "$DBTMP" -a ! -d $DBTMP/mSQL2 -a ! -d $DBTMP/msql2 ]
		do
			DBTMP=`echo $DBTMP | sed 's/\/[^\/]*$//'`
		done
		if [ -d $DBTMP/mSQL2 ]
		then
			DBTMP=$DBTMP/mSQL2
		fi
		if [ -d $DBTMP/msql2 ]
		then
			DBTMP=$DBTMP/msql2
		fi
        fi
        if [ -n "$DBTMP" ]
        then
		cat >> Config.tmp << !EOF!

#============ Database settings for mSQL 2.x ===================
MSQL_ENV	= mSQL2
MSQL_INCLUDE	= $DBTMP/include
MSQL_LIBPATH	= $DBTMP/lib
MSQL_LIBS	= -lmsql
!EOF!
		echo "                     mSQL 2.x"
		DBDIRS=$DBDIRS" mSQL"
        fi
fi


#
# checking for Oracle
#
if [ "$DBENV" = "auto" -o "$DBENV" = "ORACLE" -o "$DBENV" = "oracle" ]
then
        if [ -d /oracle ]
        then
		cat >> Config.tmp << !EOF!

#============ Database settings for Oracle database ===================
ORA_ENV		= oracle
ORA_INCLUDE	= /oracle/rdbms/demo
ORA_LIBPATH	= /oracle/lib
ORA_LIBS	= -locic -lsql /oracle/lib/osntab.o -lsqlnet -lora -lsqlnet -lcore -lnlsrtl -lcv6 -lcore -lm
!EOF!
		echo "                     Oracle 7.x DBS"
		DBDIRS=$DBDIRS" ORACLE"
        fi
fi

#
# checking for iODBC
#
if [ -d iODBC-* ]
then
	cat >> Config.tmp << !EOF!

#============ ODBC package ========================
ODBC		= iODBC
iODBC		= yes
ODBC_DLL	= ../LIB/libiodbc.\$(DLSUFFIX)
ODBC_INCLUDE	= ../INCLUDE
ODBC_LIBPATH	= ../LIB
ODBC_LIBS	= $(ODBC_DLL)
!EOF!
fi

#
# scan sub-directories and modify makefiles
#
	echo >> Config.tmp
	echo "#===| end of file 'Config.mk' |===" >> Config.tmp
        mv -f Config.tmp Config.mk

	echo
	echo "  updating Makefiles"

	cp Makefile.UNX Makefile
	for dir in DOC iODBC-2.12 SAMPLES
	do
		echo "   ... $dir/Makefile"
		cat Makefile.tmp > $dir/Makefile
		sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
//g' $dir/Makefile.UNX >> $dir/Makefile
	done

        cd DRIVER
	echo "   ... DRIVER/[$DBDIRS]/Makefile"
	echo "MAKE	= make"	> Makefile
        for action in all clean delete delete_all
        do
        	echo "$action:" >> Makefile
		for dir in $DBDIRS
		do
			if [ -d $dir ]
			then
				echo "	@cd $dir; \$(MAKE) $action; cd .." >> Makefile
				sed 's/\.\./\.\.\/\.\./' ../Makefile.tmp > $dir/Makefile
				sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
//g' $dir/Makefile.UNX >> $dir/Makefile
			fi
		done
		echo >> Makefile
        done

	cd ../JAVA
	echo "   ... JAVA/Makefile"
	if [ "$JDK_ENV" ]
	then
		cat ../Makefile.tmp > Makefile
		sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
//g' Makefile.UNX >> Makefile
		for dir in src/dll src/sql src/tools src/demo src/doc
		do
			echo "   ... JAVA/$dir/Makefile"
			cat ../Makefile.tmp > $dir/Makefile
			sed 's/\.\./\.\.\/\.\.\/\.\./' ../Makefile.tmp > $dir/Makefile
			sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
//g' $dir/Makefile.UNX >> $dir/Makefile
		done
	else
		cat > Makefile << !!!EOF!!!
# no JAVA environment ... dummy Makefile
all:
clean:
delete:
delete_all:
!!!EOF!!!
	fi

	cd ..
        \rm -f Makefile.tmp
	echo "   ... Makefile"
	sed 's/^        /	/g;s/
//g' Makefile.UNX > Makefile

        #
        # convert all files from DOS into UNIX format
        #
	echo
	echo "  converting files from DOS to Unix format (this will take a moment)"
        for file in `find . \( -name Version.mk -o -name \*.c -o -name \*.h -o -name \*.ci -o -name \*.exp -o -name \*.java \) -type f -print`
        do
#		echo "   ... $file"
                sed 's/
$//g' $file > $file.tmp && mv -f $file.tmp $file
        done

        echo
        echo "done."

        exit 0

#===| end of file 'autoconf' |===
