#!/bin/sh

# Get arg1 (if any)
ARG_1=$1

# Detect the Repository, we are running
# How to detect, the repository environment:
# ------------------------------------------
# 32_64
# 32
# 64
#
# 1. Pick a object that will be part of "ttsh" for eternity [eg). "xaondy.o"]
# 2. Check "file" type of "xaondy.o" under $(ORACLE_HOME)/lib
#    - Set B64=TRUE, if type is == "64-bit XCOFF"
#
#    - Set B32=TRUE, if type is == "RISC System/6000"
#
# 3. Check "file" type of "xaondy.o" under $(ORACLE_HOME)/lib32, provided B32
#    is == FALSE
#    - Set B32=TRUE, if type is == "RISC System/6000"

# "file" doesn't follow sym links. So make a local temporary copy
REPO_DETECT_FNAME_ORIG=xaondy.o
REPO_DETECT_FNAME=xaondy.o.tmp

cp ${ORACLE_HOME}/rdbms/lib/${REPO_DETECT_FNAME_ORIG} ${ORACLE_HOME}/lib/${REPO_DETECT_FNAME} 1>/dev/null 2>&1

# Added for Bug-5403089. (grep requires text in English below).  
export LANG_ORG=$LANG
export LANG=C

B64=`file ${ORACLE_HOME}/lib/${REPO_DETECT_FNAME} | grep "64-bit XCOFF"`
if [[ ${B64} != "" ]]
then
   B64="TRUE"
else
   B64="FALSE"
fi

B32=`file ${ORACLE_HOME}/lib/${REPO_DETECT_FNAME} | grep "RISC System\/6000"`
if [[ ${B32} != "" ]]
then
   B32="TRUE"
else
   B32="FALSE"
fi
rm -rf ${ORACLE_HOME}/lib/${REPO_DETECT_FNAME}

B32_64="FALSE"
if [[ ${B32} = FALSE ]]
then
   cp ${ORACLE_HOME}/rdbms/lib32/${REPO_DETECT_FNAME_ORIG} ${ORACLE_HOME}/lib32/${REPO_DETECT_FNAME} 1>/dev/null 2>&1
   B32=`file ${ORACLE_HOME}/lib32/${REPO_DETECT_FNAME} | grep "RISC System\/6000"`
   rm -rf ${ORACLE_HOME}/lib32/${REPO_DETECT_FNAME}
   if [[ ${B32} != "" ]]
   then
      B32="TRUE"
      B32_64="TRUE"
   else
      B32="FALSE"
   fi
fi

# Added for Bug-5403089. (grep required text in English above).
export LANG=$LANG_ORG

# Process arg_1
if [[ ${ARG_1} = "no32" ]]
then
   B32=FALSE
fi

if [[ ${ARG_1} = "no64" ]]
then
   B64=FALSE
fi

# Nothing to do
if [[ ${B32} = "FALSE" && ${B64} = "FALSE" ]]
then
   exit 0
fi

# Do processing, common for both Builds here
PATH=/usr/bin:/usr/ccs/bin:/bin
export PATH
RMF="rm -rf"

SHROBJ_PREFIX=shr_
CLNT_NAM=ttsh
CLNT_VER=11
MAJOR_VER=11

#unset LD_LIBRARY_PATH
#unset SHLIB_PATH
#echo "LD_LIBRARY_PATH: ${LD_LIBRARY_PATH}"
#echo "SHLIB_PATH: ${SHLIB_PATH}"



# Now do the Build

for build in 64
do
  do_build="FALSE"
  OBJECT_MODE=

  if [[ ${build} = 32 ]]
  then
     LIB_DIR_NAME=lib
     if [[ ${B32_64} = "TRUE" ]]
     then
        LIB_DIR_NAME=lib32
     fi
     OBJECT_MODE=32
     if [[ ${B32} = "TRUE" ]]
     then
        do_build="TRUE"
        echo "Building 32bit libttsh.so"
     fi
  fi

  if [[ ${build} = 64 ]]
  then
     LIB_DIR_NAME=lib
     OBJECT_MODE=64
     if [[ ${B64} = "TRUE" ]]
     then
        do_build="TRUE"
        echo "Building 64bit libttsh.so"
     fi
  fi

  export OBJECT_MODE

  if [[ ${do_build} = "TRUE" ]]
  then
     # the real stuff
     LIB_DIR=${ORACLE_HOME}/${LIB_DIR_NAME}
     if [ ! -z "${SRCHOME}" ]
     then
        LIB_DIR=${SRCHOME}/rdbms/${LIB_DIR_NAME}
     fi

     LIBNAME=${LIB_DIR}/lib${CLNT_NAM}${CLNT_VER}.so

     ${RMF} ${LIBNAME}

     OLIB=${ORACLE_HOME}/${LIB_DIR_NAME}
     RLIB=${ORACLE_HOME}/rdbms/${LIB_DIR_NAME}

     # RDBMS
     LMM="${OLIB}/libmm.a"
     [ -r ${OLIB}/libskgxp${MAJOR_VER}.a ] && LSKGXP="${OLIB}/libskgxp${MAJOR_VER}.a"
     [ -r ${OLIB}/libclient${MAJOR_VER}.a ] && LCLIENT="${OLIB}/libclient${MAJOR_VER}.a"
     [ -r ${OLIB}/libcommon${MAJOR_VER}.a ] && LCOMMON="${OLIB}/libcommon${MAJOR_VER}.a"
     [ -r ${OLIB}/libgeneric${MAJOR_VER}.a ] && LGENERIC="${OLIB}/libgeneric${MAJOR_VER}.a"
     [ -r ${OLIB}/libvsn${MAJOR_VER}.a ] && LVSN="${OLIB}/libvsn${MAJOR_VER}.a"
     [ -r ${OLIB}/libskgxp${MAJOR_VER}.a ] && LSKGXP="${OLIB}/libskgxp${MAJOR_VER}.a"

     # NLSRTL & CORE
     [ -r ${OLIB}/libnls${MAJOR_VER}.a ] && LNLSRTL="${OLIB}/libnls${MAJOR_VER}.a"
     [ -r ${OLIB}/libunls${MAJOR_VER}.a ] && LUNLSRTL="${OLIB}/libunls${MAJOR_VER}.a"
     [ -r ${OLIB}/libsnls${MAJOR_VER}.a ] && LSNLSRTL="${OLIB}/libsnls${MAJOR_VER}.a"
     [ -r ${OLIB}/libcore${MAJOR_VER}.a ] && LCORE="${OLIB}/libcore${MAJOR_VER}.a"
     [ -r ${OLIB}/libxml${MAJOR_VER}.a ] && LXDK="${OLIB}/libxml${MAJOR_VER}.a"
     [ -r ${OLIB}/libslax${MAJOR_VER}.a ] && LSLAX="${OLIB}/libslax${MAJOR_VER}.a"

     # PL/SQL
     [ -r ${OLIB}/libpls${MAJOR_VER}.a ] && LPLS="${OLIB}/libpls${MAJOR_VER}.a"
     [ -r ${OLIB}/libplp${MAJOR_VER}.a ] && LPLP="${OLIB}/libplp${MAJOR_VER}.a"

     # PRECOMP
     [ -r ${OLIB}/libsql${MAJOR_VER}.a ] && LSQL="${OLIB}/libsql${MAJOR_VER}.a"

     # NETWORK
     [ -r ${OLIB}/libnl${MAJOR_VER}.a ] && LNL="${OLIB}/libnl${MAJOR_VER}.a"
     [ -r ${OLIB}/libnnet${MAJOR_VER}.a ] && LNNET="${OLIB}/libnnet${MAJOR_VER}.a"
     [ -r ${OLIB}/libnnetd${MAJOR_VER}.a ] && LNNETD="${OLIB}/libnnetd${MAJOR_VER}.a"
     [ -r ${OLIB}/libnent${MAJOR_VER}.a ] && LNENT="${OLIB}/libnent${MAJOR_VER}.a"
     [ -r ${OLIB}/libnnz${MAJOR_VER}.a ] && LNNZ="${OLIB}/libnnz${MAJOR_VER}.a"
     [ -r ${OLIB}/libnro${MAJOR_VER}.a ] && LNRO="${OLIB}/libnro${MAJOR_VER}.a"
     [ -r ${OLIB}/libnsgr${MAJOR_VER}.a ] && LNSGR="${OLIB}/libnsgr${MAJOR_VER}.a"
     [ -r ${OLIB}/libnzjs${MAJOR_VER}.a ] && LNZJS="${OLIB}/libnzjs${MAJOR_VER}.a"
     [ -r ${OLIB}/libnsh${MAJOR_VER}.a ] && LNSH="${OLIB}/libnsh${MAJOR_VER}.a"
     [ -r ${OLIB}/libzt${MAJOR_VER}.a ] && LZT="${OLIB}/libzt${MAJOR_VER}.a"
     [ -r ${OLIB}/libztkg${MAJOR_VER}.a ] && LZTKG="${OLIB}/libztkg${MAJOR_VER}.a"
   
     LDFLAGSLIST=`cat ${ORACLE_HOME}/${LIB_DIR_NAME}/ldflags`
     LNCRYPT="-lncrypt${MAJOR_VER} -ln${MAJOR_VER} -lnl${MAJOR_VER} -lnro${MAJOR_VER} -lnsslb${MAJOR_VER}"
     [ -r ${OLIB}/libldapclnt${MAJOR_VER}.a ] && LDAPCLNT="${OLIB}/libldapclnt${MAJOR_VER}.a"

     NETLIBS="${LDFLAGSLIST} ${LNL} ${LNNET} ${LNNETD} ${LNENT} ${LNNZ} ${LNRO} ${LNCRYPT}"
     NETLIBS="${NETLIBS} ${LNSGR} ${LNZJS} ${LNSH} ${LZT} ${LZTKG} ${LDFLAGSLIST}"

    OLIBS="${LCLIENT}"
    OLIBS="${OLIBS} ${LSQL}"
    OLIBS="${OLIBS} ${LCLIENT}"
    OLIBS="${OLIBS} ${LCOMMON}"
    OLIBS="${OLIBS} ${LGENERIC}"
    OLIBS="${OLIBS} ${LMM}"
    OLIBS="${OLIBS} ${LSKGXP}"
    OLIBS="${OLIBS} ${LVSN}"
    OLIBS="${OLIBS} ${NETLIBS}"
    OLIBS="${OLIBS} ${LCLIENT}"
    OLIBS="${OLIBS} ${LCOMMON}"
    OLIBS="${OLIBS} ${LGENERIC}"
    OLIBS="${OLIBS} ${LPLS}"
    OLIBS="${OLIBS} ${LPLP}"
    OLIBS="${OLIBS} ${NETLIBS}"
    OLIBS="${OLIBS} ${LCLIENT}"
    OLIBS="${OLIBS} ${LCOMMON}"
    OLIBS="${OLIBS} ${LGENERIC}"
    OLIBS="${OLIBS} ${LPLS}"
    OLIBS="${OLIBS} ${LSNLSRTL}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LCORE}"
    OLIBS="${OLIBS} ${LSLAX}"
    OLIBS="${OLIBS} ${LSNLSRTL}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LCORE}"
    OLIBS="${OLIBS} ${LSNLSRTL}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LUNLSRTL}"
    OLIBS="${OLIBS} ${LXDK}"
    OLIBS="${OLIBS} ${LSNLSRTL}"
    OLIBS="${OLIBS} ${LNLSRTL}"
    OLIBS="${OLIBS} ${LUNLSRTL}"
    OLIBS="${OLIBS} ${LCORE}"

    OOBJS=
    OOBJS="${OOBJS} ${OLIB}/nautab.o"
    OOBJS="${OOBJS} ${OLIB}/naeet.o"
    OOBJS="${OOBJS} ${OLIB}/naect.o"
    OOBJS="${OOBJS} ${OLIB}/naedhs.o"
    OOBJS="${OOBJS} ${RLIB}/xaondy.o"
    OOBJS="${OOBJS} ${RLIB}/sllfls.o"

    SYSLIBS=`cat ${ORACLE_HOME}/${LIB_DIR_NAME}/sysliblist`" -lc"

    # Do the stuff

     rm -rf ${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.def 1>/dev/null 2>&1

    # 
    if [ ! -z "${SRCHOME}" ]
    then
     cp ${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.lst ${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.def
    else
     cp ${ORACLE_HOME}/rdbms/admin/ttsh.lst ${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.def
    fi

    LD_COMMAND="/bin/ld -bbigtoc -brtl -G -o ${LIBNAME} -bnoentry -bM:SRE -bexpall -bI:/usr/lib/aio.exp -bE:${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.def -L${ORACLE_HOME}/${LIB_DIR_NAME} ${OOBJS} ${OLIBS} ${SYSLIBS} -lpthread"
    echo $LD_COMMAND

    echo ""
     
    $LD_COMMAND

    rm -rf ${ORACLE_HOME}/${LIB_DIR_NAME}/ttsh.def 1>/dev/null 2>&1

    # Setup
    if [ ! -z "${SRCHOME}" ]
    then
       cd ${SRCHOME}/${LIB_DIR_NAME}
       ln -sf ${LIBNAME} .
    fi

# End of if (do_build)
  fi

# End of for loop
done

exit 0

