#!/usr/bin/ksh

LOGFILE="build.log"

KIND="$1"
shift

# Add C++ compiler to path (BVD's build system doesn't do this).

PATH=/opt/CC/bin:$PATH

[[ -f $LOGFILE ]] && mv $LOGFILE $LOGFILE.old

touch $LOGFILE > /dev/null 2>&1
echo "********************************************" >> $LOGFILE 2>&1
echo "Build commencing at" >> $LOGFILE 2>&1
echo `date` >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1

[[ -d bin ]]   || mkdir bin >> $LOGFILE 2>&1
[[ -d lib ]]   || mkdir lib >> $LOGFILE 2>&1
[[ -d obj ]]   || mkdir obj >> $LOGFILE 2>&1
[[ -d oids ]]  || mkdir oids >> $LOGFILE 2>&1

if [[ "$KIND" = "scratch" ]]
then
   echo "********************************************" >> $LOGFILE 2>&1
   echo "Remove generated files" >> $LOGFILE 2>&1
   echo "********************************************" >> $LOGFILE 2>&1
   rm -rf build >> $LOGFILE 2>&1
   rm -rf lib/* >> $LOGFILE 2>&1
   rm -f obj/* >> $LOGFILE 2>&1
   rm -f bin/* >> $LOGFILE 2>&1
   rm -f oids/* >> $LOGFILE 2>&1

   rm -rf inc/dpo_if.h >> $LOGFILE 2>&1
   rm -rf inc/basicds.h >> $LOGFILE 2>&1
   rm -rf src/ns/basicds_cstub.c >> $LOGFILE 2>&1
   rm -rf src/ns/basicds_sstub.c >> $LOGFILE 2>&1
   rm -rf src/oid/external.db >> $LOGFILE 2>&1
   rm -rf src/oid/oid_con.cpp >> $LOGFILE 2>&1
   rm -rf src/oid/oidsbsd.cpp >> $LOGFILE 2>&1
   rm -rf src/oid/oidpsf6K.cpp >> $LOGFILE 2>&1
   rm -rf src/oid/ibmoid.cat >> $LOGFILE 2>&1
   rm -rf src/oid/oidpiobe.cpp >> $LOGFILE 2>&1
   rm -rf src/oid/ibmsbsd.cat >> $LOGFILE 2>&1
   rm -rf src/oid/oid_ut.cat >> $LOGFILE 2>&1
   rm -rf src/oid/ibmpsf6K.cat >> $LOGFILE 2>&1
   rm -rf inc/oid_con.h >> $LOGFILE 2>&1
   rm -rf inc/oidpsf6K.h >> $LOGFILE 2>&1
   rm -rf inc/oidsbsd.h >> $LOGFILE 2>&1
   rm -rf inc/oidpiobe.h >> $LOGFILE 2>&1
   rm -rf inc/oid_def.h >> $LOGFILE 2>&1

   rm -rf ts_dir >> $LOGFILE 2>&1
   mkdir ts_dir >> $LOGFILE 2>&1
fi

if [[ ! -d build ]]
then
   echo "********************************************" >> $LOGFILE 2>&1
   echo "Rebuild build tree" >> $LOGFILE 2>&1
   echo "********************************************" >> $LOGFILE 2>&1
   mkdir build >> $LOGFILE 2>&1
   ./tools/mkbuild >> $LOGFILE 2>&1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Generate DPA idl stubs" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ dpo >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of dpo failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Make odbgen" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ odbgen >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of odbgen failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Make catalogs and databases" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ oid >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of oid failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Make basicdsd (force generation of basicdsd idl stubs)" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ basicdsd >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of basicdsd failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Make the SNMP library" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
cd snmp
make >> $LOGFILE  2>&1
rtn_stat=$?
cd ..

if [[ $rtn_stat -ne 0 ]]
then
   print "bvd_mkpd: make of libsnmp failed, exiting."
   exit 1
fi

cp snmp/libsnmp.sl lib/
strip lib/libsnmp.sl

echo "********************************************" >> $LOGFILE 2>&1
echo "Make almost everything else" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ prod >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of prod failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Temporarily make pdlp separately" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
./tools/mk -v $@ pdlp >> $LOGFILE  2>&1

if [[ $? -ne 0 ]]
then
   print "bvd_mkpd: tools/mk of pdlp failed, exiting."
   exit 1
fi

echo "********************************************" >> $LOGFILE 2>&1
echo "Install Fulcrum" >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1

./tools/buildfulcrum >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1

echo "********************************************" >> $LOGFILE 2>&1
echo "Other last-minute chores." >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1

cd tools
sh ./hplogo.pcl.shar >> $LOGFILE 2>&1
cd ..

echo "Build finished at" >> $LOGFILE 2>&1
echo `date` >> $LOGFILE 2>&1
echo "********************************************" >> $LOGFILE 2>&1
