#/bin/bash
#-------------------------------------------------------------------------------
GuangZhou=1
# NOTE:
# To running this model in a new platform, one should change the options in the 
# following part started by "ifdef GFORTRAN" and end by "endif". Otherwise, you 
# can also define a new option (i.e."MYOPT") following the examples. And then 
# change "GFORTRAN=1" into "MYOPT=1".
# By Xunqiang Yin (yinxq@fio.org.cn), 2017-10-16
#-------------------------------------------------------------------------------
VPATH = ../src/shared:../src/wave:../src/mwmcom
EXE   = mwave
SRC   = time_mod.F90 netcdf_mod.F90 irrp_kernal_mod.F90 irrp_smpi_mod.F90      \
        irrp_package_mod.F90 irrp_split_mod.F90 partctl_mod.F90 mwmvar_mod.F90 \
        uomst6_mod.F90 wamint_mod.F90 wamfio_mod.F90 mwmpgt_mod.F90            \
        wamcpl_mod.F90  propagat_mod.F90 mwmcor_mod.F90        \
        wammdl_mod.F90 masnum_wave.F90 
#-------------------------------------------------------------------------------
all : objs
	cd ../../objs;pwd;make $(EXE); 
objs :
	mkdir -p ../../objs;cp Makefile ../../objs
install :
	mkdir -p ../../bin;cp ../../objs/$(EXE) ../../bin
OBJS = ${SRC:.F90=.o}
#OBJS = ${SRC:.F90=.o} mympi.o
.SUFFIXES:
.SUFFIXES: .F90 .f90 .c .o 
.f90.o:
	$(FC) $(FFLAGS) -c $<
.F90.o:
	$(FC) $(FFLAGS) -c $<
$(EXE)  : $(OBJS)
	$(FC) $(SLIBS) -o $@  $(OBJS) $(DFLAG)
clean:
	rm -rf $(EXE) ../../objs
#-------------------------------------------------------------------------------
wamcpl_mod.o: mwmvar_mod.o
wamcpl_mod.o: wamfio_mod.o
wamcpl_mod.o: partctl_mod.o
wamint_mod.o: mwmvar_mod.o
wamint_mod.o: mwmcor_mod.o
wamint_mod.o: mwmpgt_mod.o
wamint_mod.o: wamcpl_mod.o
wamint_mod.o: wamfio_mod.o
wamint_mod.o: partctl_mod.o
wamint_mod.o: partctl_mod.o
mwmpgt_mod.o: partctl_mod.o
mwmpgt_mod.o: mwmvar_mod.o
partctl_mod.o: netcdf_mod.o
mwmpgt_mod.o: netcdf_mod.o
mwmpgt_mod.o: netcdf_mod.o
mwmpgt_mod.o: netcdf_mod.o
mwmcor_mod.o: mwmvar_mod.o
wammdl_mod.o: time_mod.o
wammdl_mod.o: mwmvar_mod.o
wammdl_mod.o: mwmcor_mod.o
wammdl_mod.o: mwmpgt_mod.o
wammdl_mod.o: wamint_mod.o
wammdl_mod.o: wamcpl_mod.o
wammdl_mod.o: wamfio_mod.o
wammdl_mod.o: partctl_mod.o
masnum_wave.o: wammdl_mod.o
wamfio_mod.o: mwmvar_mod.o
wamfio_mod.o: partctl_mod.o
irrp_package_mod.o: irrp_smpi_mod.o
irrp_package_mod.o: irrp_kernal_mod.o
irrp_kernal_mod.o: irrp_smpi_mod.o
irrp_kernal_mod.o: irrp_split_mod.o
propagat_mod.o:partctl_mod.o
wammdl_mod.o:propagat_mod.o
#-------------------------------------------------------------------------------
ifdef HaiJJJJ
  CPP    = cpp
  FC     = mpif90
  CC     = mpicc
  NCDIR  = /vol7/home/haijun/FIOCOM/tools/deplibs/netcdf/4.3.2/01-CF-14
  ifdef PNETCDF
    PNCDIR=/vol7/home/haijun/FIOCOM/tools/pnetcdf
    PPPDFLAG  = -L$(PNCDIR)/lib -lpnetcdf 
    PPPFFLAG  = -I$(PNCDIR)/include
  else
    PPPDFLAG  = 
    PPPFFLAG  =
  endif
  #DFLAG  = -L$(NCDIR)/lib  -lnetcdf -lnetcdff
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf $(PPPDFLAG)
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -traceback -i4 -O2 -I$(NCDIR)/include $(PPPFFLAG) 
  #FFLAGS = -g -check all -I$(NCDIR)/include $(PPPFFLAG) 
  #FFLAGS = -check all -i4 -r8 -g -I$(NCDIR)/include 
  #FFLAGS = -g -I$(NCDIR)/include $(PPPFFLAG) 
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef WZQ_wave
  CPP    = cpp
  FC     = mpiifort
  CC     = mpiicc
  NCDIR  = /home/questw/need/netcdf-4.4.1
  MPIDIR = /opt/intel/2016/compilers_and_libraries_2016.4.258/linux/mpi/intel64
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf
  FFLAGS = -i4 -r8 -xHost -I$(NCDIR)/include -cpp
  #FFLAGS = -check all -g -i4 -r8 -I$(NCDIR)/include -cpp
  SLIBS  =
endif
ifdef WZQ_waveold
  CPP    = cpp
  FC     = mpiifort
  CC     = mpiicc
  NCDIR  = /home/questw/need/netcdf-4.4.1
  MPIDIR = /opt/intel/2016/compilers_and_libraries_2016.4.258/linux/mpi/intel64
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf
  FFLAGS = -I$(NCDIR)/include -cpp
  SLIBS  =
endif

ifdef GFORTRAN
  CPP    = cpp
  FC     = mpif90
  CC     = mpicc
  NCDIR  = /usr
  MPIDIR = 
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf 
  FFLAGS = -w -fallow-argument-mismatch -I$(NCDIR)/include -cpp
  SLIBS  = 
endif
#ifdef GFORTRAN
#  CPP    = cpp
#  FC     = mpif90
#  CC     = mpicc
#  NCDIR  = /usr/local
#  MPIDIR = 
#  FFLAGS = -I$(NCDIR)/include -cpp
#  ifdef PNETCDF
#    PPPDFLAG  = -lpnetcdf 
#  else
#    PPPDFLAG  = 
#  endif
#  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf $(PPPDFLAG)
#  #DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf 
#  #FFLAGS = -I$(NCDIR)/include -cpp
#  SLIBS  = 
#endif
ifdef GFORTRAN11
  CPP    = cpp
  FC     = gfortran -g
  CC     = gcc
  NCDIR  = /usr
  MPIDIR = /usr/lib/openmpi
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -lnetcdf -L$(MPIDIR)/lib -lmpi_mpifh -lmpi 
  FFLAGS = -I$(NCDIR)/include -L$(MPIDIR)/include
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef HPFIO
  CPP    = cpp
  FC     = mpiifort
  CC     = mpicc
  NCDIR  = /soa01/netcdf
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf
  #FFLAGS = -g -check all  -i4 -r8 -I$(NCDIR)/include
  FFLAGS =  -check all -i4 -r8 -I$(NCDIR)/include  -vec-report0
  SLIBS  = -lmpi
endif
#-------------------------------------------------------------------------------
ifdef QDNLpnetcdf
  CPP    = cpp
  FC     = mpiifort
  CC     = mpiicc
  NCDIR  = /home/PublicSoftware/intel2013-software/netcdf-4.3.2-serial
  PNCDIR = /home/yinxq/tools/PnetCDF
  DFLAG  = -L$(NCDIR)/lib  -L$(PNCDIR)/lib -lnetcdf -lnetcdff -lpnetcdf
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -i4 -I$(NCDIR)/include -I$(PNCDIR)/include  
  #FFLAGS = -i4 -O2 -I$(NCDIR)/include  
  #FFLAGS = -check all -i4 -r8  -I$(NCDIR)/include 
  SLIBS  = 
endif
ifdef QDNL
  CPP    = cpp
  FC     = mpiifort
  CC     = mpiicc
  NCDIR  = /home/PublicSoftware/intel2013-software/netcdf-4.3.2-serial
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf -lnetcdff
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  #FFLAGS = -i4 -I$(NCDIR)/include  
  #FFLAGS = -i4 -O2 -I$(NCDIR)/include  
  FFLAGS = -check all -i4 -r8  -I$(NCDIR)/include 
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef MYMAC
  CPP    = cpp
  #FC     = ifort
  FC     = mpif90
  CC     = icc
  NCDIR  = /usr/local/Cellar/netcdf/4.6.1_4
  CKS    = -g -O0 
  ifdef PNETCDF
    PNCDIR = /usr/local/pnetcdf
    DFLAG  = -L$(PNCDIR)/lib -lpnetcdf -L$(NCDIR)/lib -lnetcdff 
    FFLAGS = -I$(PNCDIR)/include -I$(NCDIR)/include $(CKS) 
  else
    DFLAG  = -L$(NCDIR)/lib -lnetcdff -lmpifort 
    FFLAGS = -I$(NCDIR)/include $(CKS)
  endif
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  SLIBS  = 
endif
#ifdef MYMAC
#  CPP    = cpp
#  FC     = ifort
#  CC     = icc
#  NCDIR  = /usr/local/Cellar/netcdf/4.6.1_4
#  DFLAG  = -L$(NCDIR)/lib -lnetcdff -lmpifort
#  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
#  FFLAGS = -I$(NCDIR)/include 
#  SLIBS  = 
#endif
ifdef MYMACold1
  CPP    = cpp
  FC     = mpif90 
  CC     = mpicc
  NCDIR  = /usr/local/homebrew
  DFLAG  = -L$(NCDIR)/lib  -lnetcdff -L/usr/lib 
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -I$(NCDIR)/include  -cpp 
  SLIBS  = -lmpi
endif
#-------------------------------------------------------------------------------
ifdef MYMACold
  CPP    = cpp
  FC     = gfortran
  CC     = gcc
  NCDIR  = /usr/local/netcdf
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf -L/usr/lib
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -I$(NCDIR)/include  
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef GuangZhou
  CPP    = cpp
  FC     = mpif90
  CC     = mpicc
  NCDIR  = /WORK/app/netcdf/4.3.2/01-CF-14
  #FFLAGS = -g -I$(NCDIR)/include $(PPPFFLAG)  -traceback
  FFLAGS = -O2 -I$(NCDIR)/include $(PPPFFLAG)  -traceback
  DFLAG  = -L$(NCDIR)/lib -lnetcdf -lnetcdff $(PPPDFLAG)
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef TianJin
  CPP    = cpp
  FC     = mpif90
  CC     = mpicc
  NCDIR  = /WORK/home/fio_climate1/tools/netcdf/netcdf-3.6.2
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf -lnetcdff
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -check all -i4 -r8  -I$(NCDIR)/include 
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef A4700
  CPP    = fpp
  FC     = ifort
  CC     = icc
  NCDIR  = /home/export/base/fiogrp/local_sz
  DFLAG  = -lnetcdf
  FFLAGS = -g -check all
  SLIBS  = -lmpi
endif
#-------------------------------------------------------------------------------
ifdef SW
  CPP    = cpp
  FC     = mpif90
  CC     = mpicc
  NCDIR  =/home/export/base/fiogrp/shuqi/local_sw/netcdf-4.1.2
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf -lnetcdff
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  FFLAGS = -check all -i4 -r8  -I$(NCDIR)/include 
  SLIBS  = 
endif
#-------------------------------------------------------------------------------
ifdef SZ
  CPP    = cpp
  FC     = mpiswf90
  CC     = mpiswcc
  CFLAGS = $(DFLAG) -DFORTRANUNDERSCORE
  NCDIR  = /home/export/base/fiogrp/local_sz
  DFLAG  = -DCP_SWF90 -L$(NCDIR)/lib  -lnetcdf
  #FFLAGS = -check_bounds -i4 -r8  -g -OPT:IEEE_arith=1 -I$(NCDIR)/include
  FFLAGS = -i4 -r8 -O2  -OPT:IEEE_arith=1 -I$(NCDIR)/include
  SLIBS  = -lsw
endif
#-------------------------------------------------------------------------------
ifdef A53
  CPP    = cpp
  FC     = mpiifort
  CC     = mpiicc
  NCDIR  = /soa01/app/netcdf-3.6.2
  DFLAG  = -L$(NCDIR)/lib  -lnetcdf
  #FFLAGS = -i4 -r8 -I$(NCDIR)/include -vec-report0 -g -check all
  FFLAGS = -i4 -r8 -I$(NCDIR)/include -vec-report0 -O2
  SLIBS  =
endif
#-------------------------------------------------------------------------------
