#!/usr/bin/env bash
set -u

plat=$1; mkdir -p ../exec

if [ $# -lt 1 ]; then
    echo '***ERROR*** must specify machine'
    echo ' Syntax: makes ( cray | dell | theia )'
    exit 1
fi

if [ $plat = cray ];then
 module load PrgEnv-intel/5.2.56
 module load intel
 module load sigio-intel/2.0.1
 module load bufr-intel/11.3.0
 module load bacio-intel/2.0.2  
 module load w3emc-intel/2.3.0  
 module load w3nco-intel/2.0.6  
 module load sfcio-intel/1.0.0  
 module load nemsio-intel/2.2.3 
 module load sp-intel/2.0.2     
 export FLAGS="-O3 -g -traceback"
 export FCMP="ftn"
elif [ $plat = hera ]; then
 module use /scratch2/NCEPDEV/nwprod/hpc-stack/libs/hpc-stack/modulefiles/stack
 module load  hpc/1.1.0  hpc-intel/2022.1.2  hpc-impi/2022.1.2
 module load netcdf/4.7.0
 module load bacio/2.4.1
 module load bufr/11.7.0
 module load nemsio/2.5.4
 module load sfcio/1.4.1
 module load sigio/2.3.2
 module load sp/2.3.3
 module load w3emc/2.9.2
 module load w3nco/2.4.1
 set -x
 export SFCIO_LIB4=$SFCIO_LIB
 export SFCIO_INC4=$SFCIO_INC
 export FLAGS="-O3 -g -traceback"
 export FCMP="mpiifort"
 export NETCDF_INCLUDE="-I $NETCDF/include"
 export NETCDF_LDFLAGS="-L$NETCDF/lib -lnetcdff" 
 export NEMSIO_LIB=$nemsio_ROOT/lib64/libnemsio.a
 set +x
elif [ $plat = dell ] ; then
 module purge
 module load EnvVars/1.0.3
 module load lsf/10.1
 module load ips/18.0.1.163
 module load impi/18.0.1
 module load sigio/2.1.0
 module load bufr/11.3.0
 module load bacio/2.0.2
 module load w3emc/2.3.0
 module load w3nco/2.0.6
 module load sfcio/1.0.0
 module load nemsio/2.2.3
 module load NetCDF/4.5.0 
 module load sp/2.0.2
 export FLAGS="-O3 -g -traceback"
 export FCMP="mpiifort"
elif [ $plat = orion ]; then
 module purge
 module load intel/2020.2
 module load impi/2020.2
 module load netcdf/4.7.4
 module use  /apps/contrib/NCEPLIBS/orion/modulefiles
 module load sigio/2.2.0
 module load bufr/11.3.0
 module load bacio/2.2.0
 module load w3emc/2.5.0
 module load w3nco/2.1.0
 module load sfcio/1.2.0
 module load nemsio/2.3.0
 module load sp/2.1.0
 export export NETCDF_INCLUDE="-I $NETCDF/include"
 export export NETCDF_LDFLAGS="-L $NETCDF/lib -lnetcdf -lnetcdff"
 export FLAGS="-O3 -g -traceback"
 export FCMP="mpiifort"
elif [ $plat = wcoss2 ]; then
 module purge
 module load envvar/1.0
 module load PrgEnv-intel/8.1.0
 module load craype/2.7.8
 module load intel/19.1.3.304
 module load cray-mpich/8.1.7
 module load bufr/11.5.0
 module load bacio/2.4.1
 module load w3emc/2.7.3
 module load sigio/2.3.2
 module load sfcio/1.4.1
 module load nemsio/2.5.2
 module load netcdf/4.7.4
 module load sp/2.3.3
 module list
 export export NETCDF_INCLUDE="-I $NETCDF/include"
 export export NETCDF_LDFLAGS="-L $NETCDF/lib -lnetcdf -lnetcdff"
 export SIGIO_LIB4=$SIGIO_LIB
 export SIGIO_INC4=$SIGIO_INC
 export SFCIO_LIB4=$SFCIO_LIB
 export SFCIO_INC4=$SFCIO_INC
 export FCMP="ftn"           
else
 echo no recognised platform
 exit 99
fi

module list

[[ $# = 2 ]] && dirs=$2           
[[ $# = 2 ]] || dirs="cfs_fit2obs.fd  cfs_postevent.fd  cfs_prevmpi.fd  ndate.fd"
echo $dirs

for sorc in  $dirs  
do
echo; echo "-------------------------------- making $sorc on $plat --------------------------------"; echo
(cd $sorc; ./makes $plat)      
done

