:
#
#
# gennfgt generates nnfgt.o
# usage: gennfgt
# Looks for the existence of the libraries and builds the table file.
# generates .s file for SunOS 5, AIXRIOS, SVR4_386, NCR 
#           .c file for all others
#

if [ "$ORACLE_TRACE" ]; then
  set -x
fi

if [ -z "$TMPDIR" ] ; 
then

  TMPDIR=/var/tmp

fi

#
# Now begins the big divide between SunOS 5 and the rest of the world...
#

#
# Now begins the big divide between AIXRIOS and the rest of the world...
#

USE_AS=true
unset SRCHOME

	echo ""

if [ "x$1" = "x-32" ] ; then
        LIB=lib32
        CODE=.code32
        ALIGN=4
        PTRSIZE=4
else
        LIB=lib
        CODE=.code64
        ALIGN=8
        PTRSIZE=8
fi

USAGE="usage: $0"

# Each entry in nnfgtable is 4 pointers
ROWSIZE=`expr ${PTRSIZE} \* 4`
LIBHOME=$ORACLE_HOME/$LIB
TNSLIB=libntns12.a
NISLIB=libnnis12.a
CDSLIB=libncds12.a
LDAPLIB=libnldap12.a
HOSTLIB=libnhost12.a

NATIVELIBS="NISLIB|CDSLIB|LDAPLIB|TNSLIB|HOSTLIB"
  
# Check the existence of each library
for lib in `echo $NATIVELIBS | sed 's/|/ /g'`
do
	eval libname=$`echo $lib`

	eval NNFGUSE$lib=false
	if [ -f $LIBHOME/$libname ]
	then
           eval NNFGUSE$lib=true
	fi           
done

if [ "$USE_AS" = "true" ] && [ "$SRCHOME" = "" ]; then

	echo ""

    echo ""
# Header info and Entries for TNS and Oracle names adapters
count=0

echo '
	.file "nnfgt.c"
     '
echo "
	$CODE
     "
echo '
	.globl nnfgtent
	.local .L70
	.local .L75
	.local .L74
	.local .L73
	.local .L72
	.local .L71
	.local .L69
	.local .L68
	.local .L67
	.local .L66
	.local .L65
	.local .L64
	.local .L63
	.local .L62
	.local .L61
	.globl nnfgtable
     '
if [ "$NNFGUSETNSLIB" = "true" ]
then
count=`expr $count + 1`
echo '
	.globl nnftboot
	.type nnftboot, @function
     '
fi
if [ "$NNFGUSEHOSTLIB" = "true" ]
then
count=`expr $count + 2`
echo '
	.globl nnfhboot
	.type nnfhboot, @function
     '
fi
if [ "$NNFGUSENISLIB" = "true" ]
then
count=`expr $count + 1`
echo '
	.globl nnfyboot
	.type nnfyboot, @function
     '
fi
if [ "$NNFGUSELDAPLIB" = "true" ]
then
count=`expr $count + 1`
echo '
	.globl nnflboot
	.type nnflboot, @function
     '
fi

size=`expr $count \* $ROWSIZE`

echo '
	.section .text,"ax"
	.section .data,"aw"

Ddata.data: / Offset 0
	.section .bss,"aw"
Bbss.bss:
	.section .bssf,"aw"
	.section .rodata,"a"
	.align 4
nnfgtent: / Offset 0
	.type nnfgtent, @object
     '
echo "
	.size nnfgtent,4
	.4byte 0x$count
     "
echo '
Drodata.rodata: / Offset 4
	.section .picdata,"aw"
     '
echo "
	.align $ALIGN
     "
echo '
nnfgtable: / Offset 0
	.type nnfgtable, @object
     '
echo "
	.size nnfgtable, $size
     "

if [ "$NNFGUSETNSLIB" = "true" ]
then
echo "
	.${PTRSIZE}byte .L61
	.${PTRSIZE}byte nnftboot
	.${PTRSIZE}byte .L62
	.${PTRSIZE}byte .L63
     "
fi
if [ "$NNFGUSEHOSTLIB" = "true" ]
then
echo "
	.${PTRSIZE}byte .L64
	.${PTRSIZE}byte nnfhboot
	.${PTRSIZE}byte .L65
	.${PTRSIZE}byte .L66
	.${PTRSIZE}byte .L67
	.${PTRSIZE}byte nnfhboot
	.${PTRSIZE}byte .L68
	.${PTRSIZE}byte .L69
     "
fi
if [ "$NNFGUSENISLIB" = "true" ]
then
echo "
	.${PTRSIZE}byte .L70
	.${PTRSIZE}byte nnfyboot
	.${PTRSIZE}byte .L71
	.${PTRSIZE}byte .L72
     "
fi
if [ "$NNFGUSELDAPLIB" = "true" ]
then
echo "
	.${PTRSIZE}byte .L73
	.${PTRSIZE}byte nnflboot
	.${PTRSIZE}byte .L74
	.${PTRSIZE}byte .L75
     "
fi
echo "
	.zero ${ROWSIZE}
     "
echo '
Dpicdata.picdata: / Offset 192
	.section .rodata1,"a"
	.align 8
.L70: / Offset 0
	.type .L70, @object
	.size .L70, 4

	.4byte 0x53494e
	.align 8
.L75: / Offset 8
	.type .L75, @object
	.size .L75, 5

	.4byte 0x6c666e6e
	.zero 1
	.align 8
.L74: / Offset 16
	.type .L74, @object
	.size .L74, 10

	.4byte 0x666e6e5f
	.4byte 0x6f6f626c
	.2byte 0x74
	.align 8
.L73: / Offset 32
	.type .L73, @object
	.size .L73, 5

	.4byte 0x5041444c
	.zero 1
	.align 8
.L72: / Offset 40
	.type .L72, @object
	.size .L72, 5

	.4byte 0x79666e6e
	.zero 1
	.align 8
.L71: / Offset 48
	.type .L71, @object
	.size .L71, 10

	.4byte 0x666e6e5f
	.4byte 0x6f6f6279
	.2byte 0x74
	.align 8
.L69: / Offset 64
	.type .L69, @object
	.size .L69, 5

	.4byte 0x68666e6e
	.zero 1
	.align 8
.L68: / Offset 72
	.type .L68, @object
	.size .L68, 10

	.4byte 0x666e6e5f
	.4byte 0x6f6f6268
	.2byte 0x74
	.align 8
.L67: / Offset 88
	.type .L67, @object
	.size .L67, 10

	.4byte 0x4f435a45
	.4byte 0x43454e4e
	.2byte 0x54
	.align 8
.L66: / Offset 104
	.type .L66, @object
	.size .L66, 5

	.4byte 0x68666e6e
	.zero 1
	.align 8
.L65: / Offset 112
	.type .L65, @object
	.size .L65, 10

	.4byte 0x666e6e5f
	.4byte 0x6f6f6268
	.2byte 0x74
	.align 8
.L64: / Offset 128
	.type .L64, @object
	.size .L64, 9

	.4byte 0x54534f48
	.4byte 0x454d414e
	.zero 1
	.align 8
.L63: / Offset 144
	.type .L63, @object
	.size .L63, 5

	.4byte 0x74666e6e
	.zero 1
	.align 8
.L62: / Offset 152
	.type .L62, @object
	.size .L62, 10

	.4byte 0x666e6e5f
	.4byte 0x6f6f6274
	.2byte 0x74
	.align 8
.L61: / Offset 168
	.type .L61, @object
	.size .L61, 9

	.4byte 0x4e534e54
	.4byte 0x53454d41
	.zero 1
     '

else  # USE_AS

echo '/*'
echo '**'
echo '** This file is GENERATED by gennfgt'
echo '**'
echo '*/
'

echo "#include <sys/types.h>
"
# the following is taken from nnfgt.h and nnfg.h
echo '

struct nnfgtab {

   const char *name_nnfgtab;

   void (*init_nnfgtab)();

   const char *initname_nnfgtab;
   const char *initlib_nnfgtab;

};
typedef struct nnfgtab nnfgtab;
'
if [ "$NNFGUSETNSLIB" = "true" ]
then
echo "void nnftboot();"
fi
if [ "$NNFGUSECDSLIB" = "true" ]
then
echo "void nnfdboot();"
fi
if [ "$NNFGUSENISLIB" = "true" ]
then
echo "void nnfyboot();"
fi
if [ "$NNFGUSEHOSTLIB" = "true" ]
then
echo "void nnfhboot();"
fi
if [ "$NNFGUSELDAPLIB" = "true" ]
then
echo "void nnflboot();"
fi
# the protocol table

echo "const nnfgtab nnfgtable[] = {"

if [ "$NNFGUSETNSLIB" = "true" ]
then
echo '
 { (char *) "TNSNAMES"   , nnftboot, (char *) "_nnftboot", (char *) "nnft" },
'
fi
if [ "$NNFGUSEHOSTLIB" = "true" ]
then
echo '
 { (char *) "HOSTNAME", nnfhboot, (char *) "_nnfhboot", (char *) "nnfh" },
'
echo '
 { (char *) "EZCONNECT", nnfhboot, (char *) "_nnfhboot", (char *) "nnfh" },
'
fi
#Add the CDS adapter
if [ "$NNFGUSECDSLIB" = "true" ]
then
echo '
 { (char *) "DCE"   , nnfdboot, (char *) "_nnfdboot", (char *) "nnfd" },
'
echo '
 { (char *) "CDS"   , nnfdboot, (char *) "_nnfdboot", (char *) "nnfd" },
'
fi
# Add the NIS adapter
if [ "$NNFGUSENISLIB" = "true" ]
then
echo '
 { (char *) "NIS"   , nnfyboot, (char *) "_nnfyboot", (char *) "nnfy" },
'
fi
#Add LDAP Adapter
if [ "$NNFGUSELDAPLIB" = "true" ]
then
echo '
 { (char *) "LDAP"   , nnflboot, (char *) "_nnflboot", (char *) "nnfl" },
'
fi

echo ' { (char *) 0       , 0      , (char *) 0         , (char *) 0      }'
echo '};'

echo '/*'
echo '** no. of adapter table entries'
echo '*/
'
echo '

const int nnfgtent = sizeof(nnfgtable)/sizeof(nnfgtable[0]) - 1;

'

fi  # USE_AS

