#! /bin/sh

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

cat > Config.tmp << '@END'
#
#  Copyright (C) 1996 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
LDFLAGS = -z
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
	ORACLE          -- build CLI for Oracle 7.x database

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

#
# database environment
#
DBENV=${2:-auto}
DB_DOCS=""
DB_INCLUDE=""
DB_LIBFILE=""
DB_LIBPATH=""
DB_LIBRARY=""
ODBC_ENV=""
ODBC_INCLUDE=""
ODBC_LIBPATH=""
ODBC_LIBS=""

#
# checking for mSQL
#
if [ "$DBENV" = "auto" -o "$DBENV" = "mSQL" -o "$DBENV" = "msql" ]
then
	DBENV=`pwd | sed 's/\/Minerva\/.*$/\/Minerva/;s/\/mSQL\/.*$/\/mSQL/;s/\/msql\/.*$/\/msql/;'`
	if [ -z "$DBENV" ]
	then
		DBENV=`find ~/* /usr/local/* -name Minerva -o -name msql -o -name mSQL -type d -print`
	fi
	if [ -n "$DBENV" ]
	then
		DB_DOCS=$DBENV/doc
		DB_INCLUDE=$DBENV/include
		DB_LIBFILE=$DBENV/lib/libmsql.a
		DB_LIBPATH=$DBENV/lib
		DB_LIBRARY="-lmsql"
		DBENV="mSQL"
	else
		DBENV="auto"
	fi
fi

#
# checking for Oracle
#
if [ "$DBENV" = "auto" -o "$DBENV" = "ORACLE" -o "$DBENV" = "oracle" ]
then
	if [ -d /oracle ]
	then
		DB_DOCS=/oracle/doc
		DB_INCLUDE=/oracle/rdbms/demo
		DB_LIBFILE=
		DB_LIBPATH=/oracle/lib
		DB_LIBRARY="-locic -lsql /oracle/lib/osntab.o -lsqlnet -lora -lsqlnet -lcore -lnlsrtl -lcv6 -lcore -lm"
		DBENV="ORACLE"
	fi
fi

#
# checking for iODBC
#
if [ -d iODBC-* ]
then
	ODBC_ENV=iODBC
	ODBC_INCLUDE=../../include
	ODBC_LIBPATH=../../lib
	ODBC_LIBS=$ODBC_LIBPATH/iodbc.so
else
	ODBC_INCLUDE=$DB_INCLUDE
	ODBC_LIBPATH=$DB_LIBPATH
	ODBC_LIBS=$DB_LIBRARY
fi

#
# display summary
#
echo "  database system:   "$DBENV
echo "  ODBC package:      "$ODBC_ENV

case $DBENV in
 mSQL|ORACLE)
	echo ""					>> Config.tmp
	echo "#============ Database settings ===================" >> Config.tmp
	echo "DBENV	= $DBENV"		>> Config.tmp
	echo "DBDOCDIR	= $DB_DOCS"		>> Config.tmp
	echo "DBINCLDIR	= $DB_INCLUDE"		>> Config.tmp
	echo "DBLIBFILE	= $DB_LIBFILE"		>> Config.tmp
	echo "DBLIBDIR	= $DB_LIBPATH"		>> Config.tmp
	echo "DBLIBS	= $DB_LIBRARY"		>> Config.tmp
	echo ""					>> Config.tmp
	echo "#============ ODBC package ========================" >> Config.tmp
	echo "ODBC	= $ODBC_ENV"		>> Config.tmp
	echo "$ODBC_ENV	= yes"			>> Config.tmp
	echo "ODBC_INCLUDE	= $ODBC_INCLUDE">> Config.tmp
	echo "ODBC_LIBPATH	= $ODBC_LIBPATH">> Config.tmp
	echo "ODBC_LIBS		= $ODBC_LIBS"	>> Config.tmp
	echo ""					>> Config.tmp
	sed "s/^##$DBENV#//;s/^##$ODBC_ENV#//;" CLI/Makefile.UNX > CLI/Makefile
	sed "s/^##$DBENV#//;s/^##$ODBC_ENV#//;" DOC/Makefile.UNX > DOC/Makefile
	sed "s/^##$DBENV#//;s/^##$ODBC_ENV#//;" iODBC-2.12/Makefile.UNX > iODBC-2.12/Makefile
	sed "s/^##$DBENV#//;s/^##$ODBC_ENV#//;" SAMPLES/Makefile.UNX > SAMPLES/Makefile
	;;
 *)
	cat << '@END'
  please specify a valid database environment to build the CLI for!
@END
	;;
esac

	\mv -f Config.tmp Config.mk

	cp Makefile.tmp CLI/Makefile.tmp
	sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
$//g' CLI/Makefile >> CLI/Makefile.tmp
	\rm -f CLI/Makefile
	\mv -f CLI/Makefile.tmp CLI/Makefile

	cp Makefile.tmp DOC/Makefile.tmp
	sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
$//g' DOC/Makefile >> DOC/Makefile.tmp
	\rm -f DOC/Makefile
	\mv -f DOC/Makefile.tmp DOC/Makefile

	cp Makefile.tmp iODBC-2.12/Makefile.tmp
	sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
$//g' iODBC-2.12/Makefile >> iODBC-2.12/Makefile.tmp
	\rm -f iODBC-2.12/Makefile
	\mv -f iODBC-2.12/Makefile.tmp iODBC-2.12/Makefile

	cp Makefile.tmp SAMPLES/Makefile.tmp
	sed 's/^\.include.*$//;s/^include.*$//;s/^        /	/g;s/
$//g' SAMPLES/Makefile >> SAMPLES/Makefile.tmp
	\rm -f SAMPLES/Makefile
	\mv -f SAMPLES/Makefile.tmp SAMPLES/Makefile

	\rm -f Makefile.tmp

	#
	# copy Makefile.UNX to Makefile
	#
	\rm -f Makefile
	sed 's/^        /	/g;' Makefile.UNX > Makefile

	#
	# convert all files from DOS into UNIX format
	#
	for file in `find . \( -name \*.c -o -name \*.h -o -name \*.ci -o -name \*.exp \) -type f -print`
	do
		sed 's/
$//g' $file > $file.tmp && mv -f $file.tmp $file
	done

	echo
	echo "done."

	exit 0
