# ======================================================================
# Generic Makefile for the NOPP Nearshore Community Model
#   07/25/2004  contact: Fengyan Shi fyshi@coastal.udel.edu (302)831 2449
#   NOPP people: please send me your input - Fengyan
# ======================================================================
#
# Configuration file for Intel IFC compiler
#
.SUFFIXES: .f .o

.f.o:
	$(CFT) -c $(FFLAGS) $<


# CFT            Name of the fortran compiler to use
# FFLAGS         Flags to the fortran compiler
# LDR            Program to load the objects into an executable
# LDFLAGS        Flags to the loader
# RANLIB         Name of ranlib command
# MDEPFLAGS      Flags for sfmakedepend  (-s if you keep .f files)
#

              CFT = ifc
            CLEAN = ./cpp_clean
              LDR = ifc
           RANLIB = ranlib

          LDFLAGS = 
           FFLAGS = -O3 -w
        MDEPFLAGS = --cpp --fext=f90 --file=-

            SHELL = /bin/sh
               CC = cc

     STD_INCLUDES = StandardIncludes
      STD_DEFINES =
 EXTRA_LOAD_FLAGS = ExtraLoadFlags

     ICONFIGFILES = $(IRULESRC)/Imake.tmpl \
                    $(IRULESRC)/$(MACROFILE) $(EXTRA_ICONFIGFILES)

#==========================================================================
#  Start of Imakefile.
#==========================================================================

  BIN = master

# =========================================================================
# Users: choose ONE module from each module group, true for chosen
# if you choose FUNWAVE do not choose any wave module
# =========================================================================

# --- wave module group
REFDIFS = true
REFDIF1 = false
REFDIF_SNL = false
WAVE_KENNEDY = false
WAVE_HERBERS = false
WAVE_TUBA = false

# --- circulation module group
SHORECIRC = false
CURVCIRC = true
POM = false
FUNWAVE = false

# --- sediment module group
BBB = true
HH = false
RIB = false
WAT = false

# --- master program, always true
MASTSC = master.f

# ====================================================================
#   NOPP people: put your NOPP source codes here
#   SUFFIXES could be .f or .f90, but .f90 must be standard ifc 90 syntax
# ====================================================================

# --- wave module

ifeq ($(REFDIFS),true)
WAVESC = refdifsv13.f
endif

ifeq ($(REFDIF1),true)
WAVESC = refdif1v26.f
endif

ifeq ($(REFDIF_SNL),true)
WAVESC = refdif_snl.f
endif

ifeq ($(WAVE_KENNEDY),true)
WAVESC = andrew_input_here.f
endif

ifeq ($(WAVE_HERBERS),true)
WAVESC = tom_input_here.f
endif

ifeq ($(WAVE_OZKAN),true)
WAVESC = tuba_input_here.f
endif

# --- circulation module

ifeq ($(CURVCIRC),true)
CIRCSC = curvcirc.f arrays.f
endif

ifeq ($(SHORECIRC),true)
CIRCSC = kevin_input_here.f
endif

ifeq ($(POM),true)
CIRCSC = priscilla_input_here.f
endif

ifeq ($(FUNWAVE),true)
CIRCSC = wen_input_here.f
endif

# --- sediment module

ifeq ($(BBB),true)
SEDISC = sed.f
endif

ifeq ($(HH),true)
SEDISC = kevin_input_here.f
endif

ifeq ($(RIB),true)
SEDISC = kevin_input_here.f
endif

ifeq ($(WAT),true)
SEDISC = kevin_input_here.f
endif

SRCS = $(MASTSC) $(WAVESC) $(CIRCSC) $(SEDISC)

OBJS = $(SRCS:.f=.o)

#--------------------------------------------------------------------------
#  Target for model executable.
#--------------------------------------------------------------------------

$(BIN):		$(OBJS)
		$(LDR) $(LDFLAGS) -o $(BIN) $(OBJS) $(LIBS)

# ------------------------------------------------------------------------
# dependences: NOPP people should input this part
# ------------------------------------------------------------------------
master.o: master.f pass.h interp.h ini_logical.f
refdif1v26.o: refdif1v26.f param.h pass.h common.h
refdifsv13.o: refdifsv13.f param.h pass.h common.h
curvcirc.o: curvcirc.f arrays.f pass.h
# -------------------------------------------------------------------------
#  Clean up .o.
# -------------------------------------------------------------------------
clean:
	rm -f *.o

