#!/bin/sh # # $Id: genclntsh.sh /stpl_db_11.2.0_aix.ppc64/3 2011/10/03 09:59:17 sksamudr Exp $ # Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. # # genclntsh.sh (for Solaris 2.x) # Script to create single shared client library for OCI, Pro*C, and XA # # MODIFIED (MM/DD/YY) # sksamudr 09/30/11 - bug 12916349: Reverting back the fix # sksamudr 08/30/11 - bug 12916349 # akaimale 09/11/09 - Generate shared archive on AIX # akaimale 02/23/09 - Remove 32bit related stuff. # spattnay 12/05/08 - Clean up 32bit Refernece # rakkayaj 05/18/07 - Bug 5858821: resolving undefined symbols in # Precompiler applications # jboyce 02/13/07 - 10->11 # rpingte 03/01/07 - export everything from CORE and NLS # spattnay 03/08/07 - Bugz#21162 # tnallath 08/31/06 - add gssapi library # ppallapo 05/09/06 - Use OBJECT_MODE to set ld options # ppallapo 04/19/06 - Use libnnz10.a for now. # tnallath 03/15/06 - Remove libnsslb # chesrini 03/23/06 - bugz/10939 # tnallath 12/22/05 - new library libzt10 # slahoran 10/15/05 - Use libnnz.so for bugs 4417594 & 4417542 # ppallapo 06/23/05 - Add roptr specific linker options. # slahoran 06/20/05 - Add version number to libclntsh.so name # ppallapo 08/11/04 - Add xdk symbols to export # mosulliv 11/12/03 - merges for 031111 # mkrohan 10/28/03 - Do not auto generate static client library # ajgupta 07/24/03 - # jboyce 06/27/03 - remove xsd dependency (3024453) # jtao 02/27/03 - # jboyce 11/20/02 - remove reference to $(SRCHOME)/lib/libcore9.a # mkrohan 11/14/02 - Use 10 libraries where available # mkrohan 11/21/02 - Remove wtc # vsridhar 12/05/02 - build ttsh as part of clntsh # jboyce 11/20/02 - remove reference to $(SRCHOME)/lib/libcore9.a # mkrohan 11/14/02 - Use 10 libraries where available # tkarren 11/07/02 - Make LNZ a lib.a file # jtao 10/29/02 - # jciminsk 10/09/02 - refine native net linking # ycao 09/12/02 - Add LSNLSRTL into the shared lib # jtao 09/26/02 - # juli 09/06/02 - # jtao 05/23/02 - # jciminsk 04/03/02 - add native net/skgxp # sawadhwa 12/19/01 - Disable post-wait kernel extension in AIX5L # sichandr 07/11/01 - add XDK # mkrohan 03/05/01 - Remove echo # mkrohan 03/05/01 - Drop libnent9 # mkrohan 12/13/00 - Fix symlinking # mkrohan 12/07/00 - Final cleanup # mkrohan 11/27/00 - Add support static library map file # mkrohan 11/08/00 - Search for product 9 libraries # mkrohan 10/26/00 - Update to version 9 # rachacos 11/25/98 - use naming adapter libraries # rachacos 07/30/98 - use GS LDAP package # hpiao 11/12/97 - Make libcommon$$.a writable # jweisz 06/30/97 - ADE support: if lib is symlink, copy it # mluong 05/30/97 - Read entry points from $PRODUCT/admin/shrept.lst # hpiao 04/04/97 - Modify for 803 # dkozlows 05/01/95 - File created # #Below has been commented to clean up 32bit reference #if [ "$1" = "-32" ] ; then # LIB=lib32 # LOOP="DONE" # OBJECT_MODE=32 #else # LIB=lib # # Set object mode in customer environment # [ -z "${SRCHOME}" ] && OBJECT_MODE=64 #fi LIB=lib # Set object mode in customer environment [ -z "${SRCHOME}" ] && OBJECT_MODE=64 export OBJECT_MODE # # List the required symbols from a product's shrept.lst file listf () { product=$1 entryList=$ORACLE_HOME/$product/admin/shrept.lst grep -v '#' $entryList | \ grep $product | \ awk '{ printf ("%s\n", $3); }' } # # Main line starts here # # Print archive table of contents ARPRINT="/usr/bin/ar t" # # Explicit path to ensure that we're using the correct commands PATH=/usr/bin:/usr/ccs/bin export PATH EXPORT_LIST=${ORACLE_HOME}/${LIB}/clntsh.exp SHARED_OBJ=${ORACLE_HOME}/${LIB}/shr.o /bin/rm -f $EXPORT_LIST $SHARED_OBJ # # each product _must_ provide a $PRODUCT/admin/shrept.lst ErrFiles= for product in rdbms precomp plsql ldap network do SHREPT=$ORACLE_HOME/$product/admin/shrept.lst if [ ! -f $SHREPT ] then ErrFiles="$ErrFiles $SHREPT" fi done if [ ! -z "$ErrFiles" ] then echo "genclntsh: Could not locate $ErrFiles" 1>&2 echo "genclntsh: exiting ..." 1>&2 exit 1 fi # # library definitions # OLIB: temp variable for v9 checking OLIB=${ORACLE_HOME}/${LIB} LIBVER="11" # Precomp LSQL="-lsql$LIBVER" # PL/SQL LPLSQL="-lpls$LIBVER" # RDBMS LMM="-lmm" LCLIENT="-lclient$LIBVER" LCOMMON="-lcommon$LIBVER" LGENERIC="-lgeneric$LIBVER" # NLSRTL & CORE LNLSRTL="-lnls$LIBVER" LUNLSRTL="-lunls$LIBVER" LSNLSRTL="-lsnls$LIBVER" LCORE="-lcore$LIBVER" LXDK="-lxml$LIBVER" # OTrace #LTRACE="-ltrace9" #[ -r ${OLIB}/libtrace10.a ] && LTRACE="-ltrace10" # LDAP LLDAP="-lldapclnt$LIBVER" # Native Net LNNET_ON="-lnnet$LIBVER" LNNET_OFF="-lnnetd$LIBVER" LSKGXP="-lskgxp$LIBVER" # Network LDFLAGS="`cat ${ORACLE_HOME}/lib/ldflags`" LNENT= [ -r ${OLIB}/libnent$LIBVER.a ] && LNENT="-lnent$LIBVER" # NZ LNZ= [ -r ${OLIB}/libnnz$LIBVER.so ] && LNZ="${OLIB}/libnnz$LIBVER.a ${OLIB}/libzt$LIBVER.a" LNCRYPT="-lncrypt$LIBVER -ln$LIBVER -lnl$LIBVER -lnro$LIBVER" LZTGSS="-lztkg$LIBVER" LNETWORK="${LDFLAGS} ${LNENT} ${LNZ} ${LNCRYPT} ${LZTGSS} ${LDFLAGS}" OSV=`/usr/bin/uname -v` if [ "$OSV" = "4" ]; then AIXIMP="-bI:${ORACLE_HOME}/lib/pw-syscall.exp" fi # # Create lists of symbols to pass to ld SYMS_NLS="-bkeepfile:${OLIB}/libnls$LIBVER.a -bkeepfile:${OLIB}/libunls$LIBVER.a -bkeepfile:${OLIB}/libsnls$LIBVER.a" SYMS_CORE="-bkeepfile:${OLIB}/libcore$LIBVER.a" listf rdbms >> $EXPORT_LIST || exit 5 listf precomp >> $EXPORT_LIST || exit 6 listf plsql >> $EXPORT_LIST || exit 7 listf ldap >> $EXPORT_LIST || exit 8 listf network >> $EXPORT_LIST || exit 9 listf xdk >> $EXPORT_LIST || exit 10 if [ -r ${ORACLE_HOME}/lib/ocs.exp ]; then cat ${ORACLE_HOME}/lib/ocs.exp >> $EXPORT_LIST fi # # Library names and locations CLNT_NAM=clntsh # (short) library name CLNT_VER=$LIBVER.1 # library version number CLNT_LIB=lib${CLNT_NAM}.a # actual library file name CLNT_LNK=lib${CLNT_NAM}.so CLNT_SOLIB=${CLNT_LNK} # the new libclntsh.so # LIB_DIR=${ORACLE_HOME}/${LIB} if [ ! -z "$SRCHOME" ] then TEMP_DIR="`ls -l ${SRCHOME}/${LIB}/${CLNT_LIB} 2>/dev/null | cut -f2 -d\> | cut -f3-4 -d/ `" if [ ! -z "$TEMP_DIR" ] then LIB_DIR=$SRCHOME/${TEMP_DIR} else LIB_DIR=${SRCHOME}/rdbms/${LIB} # lib. destination directory fi fi # # If in ADE, the library may be a symlink to the label server. If so, # pull it over... if [ -h ${LIB_DIR}/${CLNT_LIB} ] then echo "Copying ${CLNT_LIB} to local disk" cp -p ${LIB_DIR}/${CLNT_LIB} ${LIB_DIR}/${CLNT_LIB}.tmp rm -f ${LIB_DIR}/${CLNT_LIB} mv ${LIB_DIR}/${CLNT_LIB}.tmp ${LIB_DIR}/${CLNT_LIB} chmod +w ${LIB_DIR}/${CLNT_LIB} fi # Define the name of the map file MAPFILE=${LIB_DIR}/${CLNT_NAM}.map # # Linker command and options LD="ld -m -bnoentry -bhalt:5 -L$ORACLE_HOME/${LIB} -L/usr/lib -L/lib -bnoipath" if [ "${OBJECT_MODE}" = "32" ] ; then LD_OPT="-bpT:0x10000000 -bpD:0x20000000 -bforceimprw -bE:$EXPORT_LIST \ $AIXIMP -bM:SRE -bexpall" # shared object flags else LD_OPT="-bpT:0x100000000 -bpD:0x110000000 -bforceimprw -bE:$EXPORT_LIST \ $AIXIMP -bM:SRE -bexpall" # shared object flags fi LD_OUT="-o ${SHARED_OBJ}" # output specification LD_SELF_CONTAINED= # # Oracle library dependencies NAUTAB="${ORACLE_HOME}/${LIB}/nautab.o" NAETAB="${ORACLE_HOME}/${LIB}/naeet.o ${ORACLE_HOME}/${LIB}/naect.o" NAEDHS="${ORACLE_HOME}/${LIB}/naedhs.o" XAONDY="-bI:${ORACLE_HOME}/rdbms/lib/xa.imp ${ORACLE_HOME}/rdbms/${LIB}/xaondy.o" OLIBS="${LCLIENT}" OLIBS="${OLIBS} ${LSQL}" OLIBS="${OLIBS} ${LNETWORK}" OLIBS="${OLIBS} ${LCLIENT}" OLIBS="${OLIBS} ${LCOMMON}" OLIBS="${OLIBS} ${LGENERIC}" OLIBS="${OLIBS} ${LMM}" OLIBS="${OLIBS} ${XAONDY}" OLIBS="${OLIBS} ${LNETWORK}" OLIBS="${OLIBS} ${LCLIENT}" OLIBS="${OLIBS} ${LCOMMON}" OLIBS="${OLIBS} ${LGENERIC}" OLIBS="${OLIBS} ${LTRACE}" OLIBS="${OLIBS} ${LXDK}" # # Native net. During a from-scratch build, when genclntsh.sh is first called, # (before p2icd is linked) neither libnnet10.a nor libskgxp10.a # exist. Therefore pull in libnnetd10.a (native net disabled). # Also, if called in a customer install (in which case libnnete10.a does not # exist), pull in libnnetd10.a. # Otherwise, pull in libnnet10.a. This file is just a copy of either # libnnete10.a or libnnetd10.a, depending on whether native net is enabled # or disabled. If it's the disabled version, don't pull in libskgxp, otherwise # do pull it in. # if [ ! -r ${OLIB}/libnnet$LIBVER.a ] || [ ! -r ${OLIB}/libnnete$LIBVER.a ] then OLIBS="${OLIBS} ${LNNET_OFF}" else OLIBS="${OLIBS} ${LNNET_ON}" if ${ARPRINT} ${OLIB}/libnnet$LIBVER.a|grep kpf_stubs > /dev/null 2>&1 then : else [ -r ${OLIB}/libskgxp$LIBVER.so ] && OLIBS="${OLIBS} ${LSKGXP}" fi fi SYSLIBS=`cat ${ORACLE_HOME}/${LIB}/sysliblist` # Create shared object /bin/rm -f ${LIB_DIR}/${CLNT_LIB} ${LIB_DIR}/${CLNT_SOLIB} ${MAPFILE} \ ${SHARED_OBJ} ${LD} ${LD_OPT} ${LD_OUT} ${LD_SELF_CONTAINED} \ ${NAUTAB} ${NAETAB} ${NAEDHS} ${LPLSQL} ${LLDAP} \ ${SYMS_NLS} ${SYMS_CORE} ${OLIBS} ${SYSLIBS} ${USRLIBS} > ${MAPFILE} # Create library cd ${LIB_DIR} ar crl $CLNT_LIB $SHARED_OBJ mv $SHARED_OBJ $CLNT_SOLIB /bin/rm -f $SHARED_OBJ #Below has been commented to clean up 32bit reference # Create 32bit library and call genclntst #if [ -z "${SRCHOME}" -a -d ${ORACLE_HOME}/lib32 -a "$LOOP" != "DONE" ] #then # ${ORACLE_HOME}/bin/genclntsh -32 #fi # generate two-task shared library ${ORACLE_HOME}/bin/genttsh exit 0