#!/bin/sh

# genclntsh.sh	(for Solaris 2.x)	# prerelease version 0.1
# Script to create single shared client library for OCI, Pro*C, and XA

# Modification history
#
#	xx-Yyy-199z	user
#	Change, reason for change.
#
#	01-May-1995	dkozlows
#	File created.

#
# Explicit path to ensure that we're using the correct commands
PATH=/usr/bin:/usr/ccs/bin	export PATH

#
# Lists of required function (and data) symbols for each library;
# format requires one name per line; comments must be on separate lines

listf_null() { cat <<EOD ; }
# comment
EOD


listf_ocic() { cat <<EOD ; }
ocibra
ocibre
ocibrn
ocibrv
ocic32
ocican
ociclo
ocicof
ocicom
ocicon
ocidfn
ocidhe
ocidpr
ocidsc
ocidsp
ociefn
ocierr
ociexe
ociexn
ocifen
ocifet
ocilgi
ocilng
ocilof
ocilon
ocinam
ociope
ocir32
ocirlo
ocirol
ocisfe
ocisq3
ocisq7
ocistf
obndra
obndrn
obndrv
obreak
ocan
oclose
ocof
ocom
ocon
odefin
odescr
odessp
odsc
oerhms
oermsg
oexec
oexfet
oexn
ofen
ofetch
oflng
ologof
olon
oname
oopen
oopt
oparse
orlon
orol
osql3
sqlld2
sqllda
EOD


listf_sql() { cat <<EOD ; }
SQLAB1 
SQLAD1 
SQLADR 
SQLALD 
SQLBCC 
SQLBEX 
SQLBS1 
SQLBTE 
SQLCLS 
SQLCOM 
SQLEXE 
SQLFCC 
SQLFCH 
SQLGB1 
SQLGD1 
SQLGLM 
SQLGLS 
SQLGRI 
SQLGS2 
SQLGSS 
SQLLDA 
SQLLEN 
SQLLO1 
SQLNUL 
SQLOCA 
SQLOPN 
SQLORA 
SQLOS1 
SQLOSQ 
SQLPCS 
SQLPRC 
SQLROL 
SQLSCA 
SQLSCC 
SQLSCH 
SQLSQS 
SQLTFL 
SQLTOC 
SQLWNR 
getico 
getoer 
getrcd 
prialc 
prifre 
prisql 
prisqr 
prisqs 
sqgctx 
sqgrct 
sql1te 
sqlab1 
sqlab2 
sqlabn 
sqlad1 
sqlad2 
sqladf 
sqladr 
sqlagc 
sqlagt 
sqlahb 
sqlal1 
sqlalc 
sqlald 
sqlams 
sqlanc 
sqlarp 
sqlasa 
sqlasc 
sqlast 
sqlatc 
sqlbcc 
sqlbex 
sqlbf1 
sqlbf2 
sqlbn1 
sqlbn2 
sqlbs1 
sqlbs2 
sqlbte 
sqlbuf 
sqlcac 
sqlcal 
sqlcas 
sqlccc 
sqlcce 
sqlcch 
sqlccl 
sqlccs 
sqlcex 
sqlcin 
sqlcl1 
sqlcln 
sqlclo 
sqlcls 
sqlclu 
sqlcnc 
sqlcom 
sqlcpy 
sqlcte 
sqlcts 
sqldhb 
sqlech 
sqlexe 
sqlexp 
sqlfam 
sqlfbn 
sqlfcc 
sqlfch 
sqlfcn 
sqlfdf 
sqlfex 
sqlfin 
sqlfoc 
sqlfre 
sqlft6 
sqlft7 
sqlft8 
sqlft9 
sqlfx3 
sqlfx6 
sqlfx7 
sqlgb1 
sqlgb2 
sqlgch 
sqlgd1 
sqlgd2 
sqlgem 
sqlghp 
sqlglm 
sqlgls 
sqlgoe 
sqlgri 
sqlgs2 
sqlgsi 
sqlgss 
sqlgst 
sqlh2n 
sqlhce 
sqlhch 
sqlher 
sqliap 
sqliex 
sqlini 
sqllam 
sqlld2 
sqllda 
sqllen 
sqllkc 
sqllo1 
sqllo2 
sqllo3 
sqllon 
sqln2h 
sqlnst 
sqlnul 
sqloca 
sqlocc 
sqloer 
sqloew 
sqlopn 
sqlora 
sqlorc 
sqlos1 
sqlos2 
sqlosq 
sqlpcs 
sqlpex 
sqlpin 
sqlpr2 
sqlprc 
sqlprh 
sqlpsi 
sqlpte 
sqlrbd 
sqlrcn 
sqlrdb 
sqlrdf 
sqlrec 
sqlret 
sqlrex 
sqlrlc 
sqlrmf 
sqlrol 
sqlrst 
sqlrt2 
sqls2u 
sqlsap 
sqlsbk 
sqlsc2 
sqlsc3 
sqlsca 
sqlscc 
sqlsch 
sqlsen 
sqlsqd 
sqlsqs 
sqlstc 
sqltem 
sqltex 
sqltfl 
sqltmi 
sqltoc 
sqlu2s 
sqlual 
sqlufr 
sqlvcp 
sqlwnr 
sqlxac 
sqlxda 
sqlxdh 
sqlxds 
sqlxrc 
sqlxrs 
sqlxss 
sqrini 
EOD


listf_xa() { cat <<EOD ; }
xaoclose
xaocommit
xaocomplete
xaoend
xaoforget
xaolog
xaoopen
xaoprepare
xaorecover
xaorollback
xaosdf
xaostart
xaopga
xaosw
EOD

#
# Function used to convert lists of symbols to proper format for linker

fmt_syms() { awk '/[ \t]*#/	{next}\
				{printf " -u %s", $1}' ; }

#
# Library names and locations

CLNT_NAM=clntsh					# (short) library name
CLNT_VER=1.0					# library version number

CLNT_LNK=lib${CLNT_NAM}.so			# name of symlink to library
CLNT_LIB=${CLNT_LNK}.${CLNT_VER}		# actual library file name

LIB_DIR=${ORACLE_HOME}/lib			# lib. destination directory

#
# Linker command and options

LD="ld -G -z text -L${ORACLE_HOME}/lib"		# shared library link command
LD="ld -G  -L${ORACLE_HOME}/lib"		# shared library link command
LD="ld -z defs -G  -L${ORACLE_HOME}/lib"		# shared library link command
LD_OPT="-h ${CLNT_LIB}"				# name inserted into library
LD_OUT="-o ${LIB_DIR}/${CLNT_LIB}"		# output specification

#
# Oracle library dependencies

OLIBS="${ORACLE_HOME}/lib/osntab.o ${ORACLE_HOME}/lib/ntcontab.o -lsqlnet -lora -lsqlnet -lora -lnlsrtl3  -lc3v6 -lcore3 -lnlsrtl3 -lc3v6 -lcore3 -lora -lcore -lnlsrtl -lcore -lc" 

SYSLIBS=`cat ${ORACLE_HOME}/rdbms/lib/sysliblist` 

#
# Create lists of symbols to pass to ld

SYMS_OCIC="`listf_ocic | fmt_syms` -locic"
SYMS_SQL="`listf_sql | fmt_syms` -lsql"
SYMS_XA="`listf_xa | fmt_syms` -lxa"

#
# Check if libxa exists to detemine whether we should include its contents

if [ ! -f ${ORACLE_HOME}/lib/libxa.a ]; then
	SYMS_XA=""
fi

# Create library
${LD} ${LD_OPT} ${LD_OUT} \
${SYMS_SQL} ${SYMS_OCIC} ${SYMS_XA} ${OLIBS} ${SYSLIBS}


# Create ".so" link to library

cd ${LIB_DIR}
if [ -s ${CLNT_LIB} ]; then
	if [ -f ${CLNT_LNK} ]; then
		rm -f ${CLNT_LNK}
	fi
	ln -s ${CLNT_LIB} ${CLNT_LNK}
fi


# genclntsh.sh	xx-May-1995	- d.k.






#listf_sql	| nawk	'\
# BEGIN	{printf "ld -G -z defs -L$ORACLE_HOME/lib\t"}	\
#	{printf " -u %s", $1}	\
# END	{print "\t -lsql -lsqlnet -lora -lsqlnet -lora -lnlsrtl3 -lc3v6 -lcore3 -lnlsrtl3 -lc3v6 -lcore3		./libosntab.a -llu62 -lsocket -lnsl -lm -ldl -laio -lposix4 /opt/SUNWconn/lib/libappc_api.a /opt/SUNWconn/dni/lib/libdni.a /opt/SUNWconn/osinet/lib/libapli.a -lc"}'

# For libocic
# 
# listf_ocic	| awk	'\
# BEGIN	{printf "ld -G -z defs -L$ORACLE_HOME/lib $ORACLE_HOME/lib/libocic.a\t"}	\
#	{printf " -u %s", $1}	\
# END	{print "\t -locic -lora -lnlsrtl3 -lcore3 -lnlsrtl3 -lcore3  -lc -lm"}'


# OLIBS='${ORACLE_HOME}/lib/osntab.o ${ORACLE_HOME}/lib/ntcontab.o -ltcp -lasync -lntid -lnto -lnts -lntys -lnttcp -lnttli  -lsqlnet -lora -lsqlnet -lora -lnlsrtl3  -lc3v6 -lcore3 -lnlsrtl3 -lc3v6 -lcore3	-llu62 -lora -lsocket -lnsl -lm /opt/SUNWconn/lib/libappc_api.a /opt/SUNWconn/dni/lib/libdni.a /opt/SUNWconn/osinet/lib/libapli.a -lc'

#echo ${LD} ${LIBS}
#echo + ${SYMS_OCIC}
#echo + ${SYMS_SQL}
#echo + ${SYMS_XA}
