#!/bin/sh
compile_all=1
DEBUG=YES
#DEBUG=NO
source ./module-setup.sh
module purge
module use $( pwd -P )
if [ $DEBUG == 'YES' ]; then
   module load modules.stoch_gnu_dbg
else
   module load modules.stoch_gnu
fi

rm standalone_stochy.x
FC=mpif90
FMS_INC=${FMS_ROOT}/include_r4
FMS_LIB=${FMS_ROOT}/lib
INCS="-I. -I${FMS_INC} -I${NETCDF}/include"
if [ $DEBUG == 'YES' ]; then
   FLAGS="-DDEBUG -ggdb -fbacktrace -cpp -fcray-pointer -ffree-line-length-none -fno-range-check -fdefault-real-8 -fdefault-double-8 -g -O0 -fno-unsafe-math-optimizations -frounding-math -fsignaling-nans -ffpe-trap=invalid,zero,overflow -fbounds-check -I. -fopenmp -c "$INCS
else
   FLAGS="-ggdb -fbacktrace -cpp -fcray-pointer -ffree-line-length-none -fno-range-check -O2 -fdefault-real-8 -O2 -fPIC -fopenmp -c "$INCS
fi
cd ..
if [ $compile_all -eq 1 ];then
   rm -f *.i90 *.i *.o *.mod lib*a
   $FC ${FLAGS} kinddef.F90
   $FC ${FLAGS} mpi_wrapper.F90
   $FC ${FLAGS} unit_tests/fv_arrays_stub.F90
   $FC ${FLAGS} unit_tests/fv_mp_stub_mod.F90
   $FC ${FLAGS} unit_tests/fv_control_stub.F90
   $FC ${FLAGS} unit_tests/atmosphere_stub.F90
   $FC ${FLAGS} mersenne_twister.F90
   $FC ${FLAGS} stochy_internal_state_mod.F90
   $FC ${FLAGS} stochy_namelist_def.F90
   $FC ${FLAGS} spectral_transforms.F90
   $FC ${FLAGS} compns_stochy.F90
   $FC ${FLAGS} stochy_patterngenerator.F90
   $FC ${FLAGS} stochy_data_mod.F90
   $FC ${FLAGS} get_stochy_pattern.F90
   $FC ${FLAGS} lndp_apply_perts.F90
   $FC ${FLAGS} stochastic_physics.F90
fi
   ar rv libstochastic_physics.a *.o
if [ $DEBUG == 'YES' ]; then
   $FC -fdec -ggdb -fbacktrace -cpp -fcray-pointer -ffree-line-length-none -fno-range-check -fdefault-real-8 -fdefault-double-8 -g -O0 -fno-unsafe-math-optimizations -frounding-math -fsignaling-nans -ffpe-trap=invalid,zero,overflow -fbounds-check -I. -fopenmp -o unit_tests/standalone_stochy.x unit_tests/standalone_stochy.F90 ${INCS} -I${NETCDF}/include -L. -lstochastic_physics -L${FMS_LIB} -lfms_r4 -L${ESMF_LIB} -Wl,-rpath,${ESMF_LIB} -lesmf -L${NETCDF}/lib -lnetcdff -lnetcdf -L${HDF5_LIBRARIES} -lhdf5_hl -lhdf5 \
-L${ZLIB_LIBRARIES} -lz -ldl
else
   $FC -fdec -fbacktrace -cpp -fcray-pointer -ffree-line-length-none -fno-range-check -fdefault-real-8 -fdefault-double-8 -g -O2 -I. -fopenmp -o unit_tests/standalone_stochy.x unit_tests/standalone_stochy.F90 ${INCS} -I${NETCDF}/include -L. -lstochastic_physics -L${FMS_LIB} -lfms_r4 -L${ESMF_LIB} -Wl,-rpath,${ESMF_LIB} -lesmf -L${NETCDF}/lib -lnetcdff -lnetcdf -L${HDF5_LIBRARIES} -lhdf5_hl -lhdf5 \
-L${ZLIB_LIBRARIES} -lz -ldl
fi
