#!/bin/sh

#
## set default values
CLEAN="noclean"
COMP="prod"
BIT="32bit"
AVX="Y"

#
## parse arguments
for arg in "$@"
do
    case $arg in
        prod|repro|debug)
        COMP="${arg#*=}"
        shift # Remove AVX Y/N/y/n from processing
        ;;
        clean)
        CLEAN="clean"
        shift # Remove clean from processing
        ;;
        32bit|64bit)
        BIT="${arg#*=}"
        shift # Remove *bit from processing
        ;;
        Y|N|y|n)
        AVX="${arg#*=}"
        shift # Remove AVX Y/N/y/n from processing
        ;;
    esac
done

#
# clean out exec build area
if [ ${CLEAN} = "clean" ] ; then
  echo " cleaning build directory in 4 seconds "
  sleep 2
  (cd exec ; \rm -f *.f90 *.o *.mod test.x)
fi

#-- load the development environment
. ${BUILD_ROOT}/site/environment.sh
module list



# Denis #90
NCEPLIBS="../libFMS/${BIT}/libFMS.a ./libgfs.a -L../nceplibs_intel/  -lbacio_4  -lsp_d  -lw3emc_d  -lw3nco_d"



if [ ${COMP} = "debug" ] && [ ${BIT} = "32bit" ] ; then
  echo " debug w/ 32-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y DEBUG=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y DEBUG=Y AVX=${AVX} NETCDF=3 32BIT=Y NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
elif [ ${COMP} = "debug" ] && [ ${BIT} != "32bit" ] ; then
  echo " debug w/ 64-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y DEBUG=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y DEBUG=Y AVX=${AVX} NETCDF=3 NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
elif [ ${COMP} = "repro" ] && [ ${BIT} = "32bit" ] ; then
  echo " repro w/ 32-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y REPRO=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y REPRO=Y AVX=${AVX} NETCDF=3 32BIT=Y NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
elif [ ${COMP} = "repro" ] && [ ${BIT} != "32bit" ] ; then
  echo " repro w/ 64-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y REPRO=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y REPRO=Y AVX=${AVX} NETCDF=3 NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
elif [ ${COMP} = "prod" ] && [ ${BIT} = "32bit" ] ; then
  echo " prod w/ 32-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y AVX=${AVX} NETCDF=3 32BIT=Y NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
elif [ ${COMP} = "prod" ] && [ ${BIT} != "32bit" ] ; then
  echo " prod w/ 64-bit dy-core"
    (cd exec ; make -j 8 OPENMP=Y AVX=${AVX} -f Makefile_gfs)
    ifort -V
    (cd exec ; make -j 8 OPENMP=Y AVX=${AVX} NETCDF=3 NCEPLIBS="${NCEPLIBS}" -f Makefile_fv3)
fi

exit 0
