#!/bin/ksh
set -x
mac=$(hostname | cut -c1-1)
mac2=$(hostname | cut -c1-2)
if [ $mac2 = cu ] ; then mac=g ; fi
#mac=$(echo $HOSTNAME | cut -c1-1)
#
if [ $mac2 = ga ] ; then
 machine=gaea
 center=${center:-ncep}
 BASEDIR=/lustre/ltfs/scratch/$center/$LOGNAME
 ptmp=$BASEDIR/ptmp
 export LIBDIR=$BASEDIR/para/lib
 export ESMFDIR=$BASEDIR/ESMF/esmf
elif [ $mac = z -o $mac = h -o $mac = f ] ; then
 machine=zeus
 ptmp=/scratch2/portfolios/NCEPDEV/ptmp/$LOGNAME
#export LIBDIR=/scratch2/portfolios/BMC/nesccmgmt/Raghu.Reddy/NCEPLIBS
 export LIBDIR=/scratch2/portfolios/NCEPDEV/global/save/Shrinivas.Moorthi/para/lib_test2
 export ESMFDIR=${ESMF_DIR:-$LIBDIR}
elif [ $mac = t -o $mac = e -o $mac = g ] ; then
 machine=wcoss
 ptmp="/ptmp/$LOGNAME"
 export LIBDIR=/nwprod/lib
 export ESMFDIR=/usrx/local/esmf-3.1.0rp5
else
 machine=IBMP6
 ptmp="/ptmp/$LOGNAME"
 export LIBDIR=/nwprod/lib
#export ESMFDIR=/lustre/ltfs/scratch/Shrinivas.Moorthi/ESMF/esmf
fi
#
#  WARNING!!! The default endianness is local to the machine.
#   If your initial conditions are bigendian and want to compile on littleendian
#   machine, you must set NATIVE_ENDIAN=NO
#
if [ $machine = IBMP6 ] ; then
 NATIVE_ENDIAN=${NATIVE_ENDIAN:-YES}
else
 NATIVE_ENDIAN=${NATIVE_ENDIAN:-NO}
fi
NATIVE_ENDIAN=${NATIVE_ENDIAN:-YES}
#
sorc_dir=$(pwd)
exec_dir=$(pwd)
mkdir -p $exec_dir
#
export LIBDIR=${LIBDIR:-../../lib}
#
make_dir=$ptmp/branch/sorc/$(basename $sorc_dir)

#####################################################################
if [ $make_dir = $(pwd) ] ; then
  echo "The make_dir is the current directory - compilation aborted"
  echo "To continue compiling, comment out this if loop and rerun"
  exit
fi
#####################################################################

mkdir -p $make_dir
cd $make_dir || exit 99
[ $? -ne 0 ] && exit 8

 rm $make_dir/*.o
 rm $make_dir/*.mod

tar -cf- -C$sorc_dir .|tar -xf-

if [ $NATIVE_ENDIAN = YES ] ; then
 cp $sorc_dir/sigio_r_module_native.f sigio_r_module.f
 cp $sorc_dir/bafrio_native.f         bafrio.f
fi

#
#export EXECM=$exec_dir/cfs_cdas_atmos_fcst
 export EXECM=$exec_dir/cfs_cdas_atmos_fcst
#
if [ $machine = gaea -o $machine = zeus -o $machine = wcoss ] ; then
 export W3LIB=w3lib-2.0_d
 export CFLAGS="-DLINUX"
 export FINCM=-I$LIBDIR/incmod/w31ib-2.0_d
#export FINCG=-I$LIBDIR/incmod/gfsio_d
#export FINCG=
 export ARCHM=
 export PGSZM=
 export FRRM=-FR
 export FXXM=
#export OPTSB="-g -O0 -check all -ftrapuv -convert big_endian -fp-stack-check -fstack-protector -heap-arrays -recursive -traceback"  #raghu.reddy
#export OPTSB="-g -O3 -xHost -convert big_endian -fp-model strict -fp-stack-check -fstack-protector -heap-arrays -recursive"  #raghu.reddy

#export OPTSB="-g -O3 -convert big_endian -fp-model strict -heap-arrays -xHost"  #raghu.reddy:prod
#export OPTSB="-O3 -convert big_endian -fp-model precise -xAVX -heap-arrays -xHost"  

 export OPTSB="-O3 -convert big_endian -fp-model precise "  

#export OPTSB="-g -O3 -convert big_endian -fp-model strict -heap-arrays -xHost" # -check all -ftrapuv" # -fp-stack-check -fstack-protector"  #raghu.reddy

#export OPTSBT="$OPTSB -traceback"
 export OPTSBT=$OPTSB
#export OPTSM="$OPTSBT -r8    # -openmp"    # raghu.reddy
 export OPTSIOM="$OPTSBT -r8 "
 export OPTSM="$OPTSBT -r8 -openmp"
#export OPTSIOM="-O2 -xHOST  -convert big_endian -r8 -g"
 export OPTS_SERM="$OPTSBT -r8 $ARCHM"
 export OPTS90M="$OPTSBT   -r8 "
 export OPTS90AM="$OPTSBT  -r8 "
 export LDFLAGSM=$PGSZM
 if [ $machine = gaea ] ; then
   export F77M=ftn
   export F90M=ftn
   export F77B=$F77M
   export FCC=cc
   export LDRM=ftn
   export FINC=-I$ESMFDIR/mod/mod0/Unicos.intel.64.mpi.default
#export LIBSM="/lustre/ltfs/scratch/Shrinivas.Moorthi/ESMF/esmf/lib/lib0/Unicos.intel.64.mpi.default/libesmf.a /lustre/ltfs/scratch/George.Vandenberghe/t/moorthi/para/lib/libbacio.intel_4.a -L$LIBDIR -l$W3LIB -lrt -lstdc++"
   export LIBSM="$ESMFDIR/lib/lib0/Unicos.intel.64.mpi.default/libesmf.a  -L$LIBDIR -lbacio_4 -lsp_d -l$W3LIB -lrt -lstdc++"
#export LIBSM="/lustre/ltfs/scratch/Shrinivas.Moorthi/ESMF/esmf/lib/lib0/Unicos.intel.64.mpi.default/libesmf.a  -L$LIBDIR -lbacio_4 -l$W3LIB -lgfsio_d -lstd -lrt -lC"
 elif [ $machine = wcoss ] ; then
#  export F77M="mpfort -openmp -compiler ifort"
#  export F90M="mpfort -openmp -compiler ifort"
#  export F77M="mpfort -compiler ifort"
#  export F90M="mpfort -compiler ifort"
#  export F77M="mpiifort -g -traceback"
#  export F90M="mpiifort -g -traceback"
   export F77M=mpiifort
   export F90M=mpiifort
   export F77B=$F77M
   export FCC=mpcc
#  export LDRM="mpfort -compiler ifort"
   export LDRM=mpiifort
   export LDFLAGSM="$PGSZM -openmp -mkl"
   export FINC=-I$ESMFDIR/mod/modO/Linux.intel.64.intelmpi.default
   export FINCM="-I$LIBDIR/incmod/w3emc_v2.0.3_d -I$LIBDIR/incmod/w3nco_v2.0.3_d"
#  export FINC=-I$ESMFDIR/incmod/esmf_3_1_0rp5
#  export LIBSM="-L$LIBDIR -lbacio_4 -lnemsio -lsp_d -l$W3LIB -lrt -lstdc++ -L/u/wx15gv/nwprod/api/esmf310rp5/lib/libg/Linux.intel.64.poe.default -lesmf_3_1_0rp5"
#  export LIBSM="-L$LIBDIR -lbacio_4 -lnemsio -lsp_d -l$W3LIB -lrt -lstdc++ -L$ESMFDIR -lesmf_3_1_0rp5"
   export LIBSM="-L$LIBDIR -lbacio_4 -lnemsio -lsp_d -lw3emc_v2.0.3_d -lw3nco_v2.0.3_d -lrt -lstdc++ -L$ESMFDIR/lib/libO/Linux.intel.64.intelmpi.default -lesmf"
 else
   export F77M="ifort -openmp"  #-recursive"
   export F90M="ifort -openmp"  #-recursive"
   export F77B="ifort "         #-recursive" #-openmp"  #-recursive"
   export F90B="ifort "         #-recursive" #-openmp"  #-recursive"
   export LDRM="ifort -lmpi"
#  export F77M=mpif90
#  export F90M=mpif90
#  export LDRM=mpif90
   export FCC=cc
   export LDFLAGSM="$PGSZM -openmp -mkl"            #raghu.reddy
#  export FINC=-I$LIBDIR/incmod/esmf_3_1_0rp5
   export FINC=-I$ESMFDIR/incmod/esmf_3_1_0rp5      #raghu.reddy
#  export FINC=-I$ESMF_MOD
#  export FINC=-I$ESMFDIR/incmod/esmf310rp5
#  export LIBSM=" -L$LIBDIR -lesmf_3_1_0rp5 -lbacio_4 -lsp_d -l$W3LIB -lrt -lstdc++"
   export LIBSM="-L$LIBDIR -lbacio_4 -lnemsio -lsp_d -l$W3LIB -lrt -lstdc++ -L$ESMFDIR -lesmf_3_1_0rp5"
#  export LIBSM="-L$LIBDIR -lbacio_4          -lsp_d -l$W3LIB -lrt -lstdc++ -L$ESMF_LIB -lesmf" #raghu.reddy
#  export LIBSM="-L$LIBDIR -lbacio_4 -lsp_d -l$W3LIB -lrt -lstdc++ -L$ESMFDIR -lesmf"
 fi
elif [ $machine = IBMP6 ] ; then
 export F77M=mpxlf95_r
 export F90M=mpxlf95_r
 export F77B=$F77M
 export FCC=mpcc
 export CFLAGS=
 export LIBDIR=${LIBDIR:-/global/save/wx23sm/GFS/f2010/trunk/para/lib}
#export ESMFDIR=$LIBDIR
 export FINC=-I$LIBDIR/incmod/esmf_3_1_0rp2
 export FINCM=-I$LIBDIR/incmod/w3_d
#export FINCM=-I/global/save/wx23sm/GFS/f2010/trunk/para/lib/incmod/w3_d
#export ESMFLIBM=$ESMFDIR/lib/libO/AIX.default.64.mpi.default
 export ARCHM="-qarch=pwr6 -qtune=pwr6 -qcache=auto -qnohot"
 export PGSZM="-bdatapsize:64K -bstackpsize:64K -btextpsize:4K"
 export FRRM=
 export FXXM=-qfixed
 export OPTSB="-g -O3 -qsuffix=cpp=f -qstrict -qxlf77=leadzero -qmaxmem=-1 -qnolm -qsmp=noauto -qnosave $(ARCHM)"
 export OPTSBT=$OPTSB
 export OPTSM="$OPTSBT -qrealsize=8"
 export OPTSIOM="$OPTSBT -qrealsize=8"
 export OPTS_SERM="$OPTSBT -qrealsize=8 $ARCHM"
 export OPTS90M="$OPTSBT   -qrealsize=8 $FRRM"
 export OPTS90AM="$OPTSBT  -qrealsize=8 $FRRM"
 export LDRM=$F77M
#export LDFLAGSM=$PGSZ
#export LDFLAGSM="-lessl_r -lmass -qsmp=noauto $PGSZM"
#export LDFLAGSM="-lessl_r -qsmp=noauto $PGSZM"
#export LDFLAGSM="-lessl_r -qsmp=noauto $PGSZM -bloadmap:lmap -bmap:map"
#export LDFLAGSM="-qsmp=noauto $PGSZM -bloadmap:lmap -bmap:map"
 export LDFLAGSM="-lessl_r -lmass -qsmp=noauto $PGSZM -bloadmap:lmap -bmap:map"
 export LIBSM="-lC -L $LIBDIR -lesmf_3_1_0rp2 -l bacio_4 -l w3_d -lsp_d"
#export LIBSM="-L /global/save/wx23sm/GFS/f2010/trunk/para/lib -lesmf_3_1_0rp2 -l bacio_4 -l w3_d -lsp_d"

else
 echo 'machine not supported at this time'
 exit
fi
echo $F77M
make -f Makefile