################################################################################
# 
#     Makefile for Eta Coordinate Model - Dummy MPI Version
#                                          Tuccillo Dec 1999
# 	
#	Updated for internal quilting version of the model
#					   Pyle July 2000
#
#     Use:
#     make         -  build the executable
#     make clean   -  start with a clean slate
#
#     The following macros will be of interest:
#
#         TARGET   - name of the executable
#         FC       - name of Fortran compiler
#         CPP      - name of CPP
#         CPPFLAGS - CPP flags
#         OPTS     - compiler code optimizations
#         LIST     - source listing
#         SMP      - threading
#         TRAPS    - runtime traps for floating point exceptions
#         PROFILE  - source code profiling ( -pg )
#         DEBUG    - -g
#         INCLUDE  - search location for include files
#         W3LIB    - w3lib
#         MPI      - dummy MPI library
#         SEARCH   - library search location
#
#################################################################################

.SUFFIXES: .F .f .o
# INC = ../include_mpi
INC=./
include ../configure/make.inc

#
# Define the name of the executable
#
TARGET = ../../exe/etafcst_kf.x

COMPILE.f = $(FC) -c $(FFLAGS) -I$(INC)
PREPROC.F = $(CC) -P $(CFLAGS)

CPP      = /lib/cpp -P
CPPFLAGS = 
OPTS= -O1
SMP      = 
TRAPS    =
PROFILE  =
DEBUG=
INCLUDE = ./
W3LIB= ../../../libraries/w3lib
# MPI=../../../libraries/dummyMPI/libmpi.a
# SEARCH   = -L../../../libraries/dummyMPI
#
# Assemble Options
#
# FFLAGS should be defined in make.inc
# FFLAGS   = $(OPTS) $(LIST) $(TRAPS) $(PROFILE) $(DEBUG) $(INCLUDE)
FFLAGST  = $(FFLAGS) $(SMP)
LDFLAGS  = $(SMP) $(PROFILE) $(FFLAGS)
LIBS     = $(MPI) $(W3LIB) -lmpi
#
# Non-threaded object files
#
OBJS=	module_EXCH_BUF_INTEGER.o module_EXCH_BUF_REAL.o module_EXCHM.o \
	BOCOV.o BOCOH.o BOCOHF.o CHKOUT.o CLTEND.o \
	CLO89.o COLLECT.o CONDLOAD.o CONRAD.o CUCNVC.o DDAMP.o \
	DIFCOF.o DIGFLT.o DIST.o DIVHOA.o DSTRB.o DTFRZ2.o E1E290.o E290.o \
	ENVIRTHT.o E2SPEC.o E3V88.o EBU.o EPS.o FILT25.o FST88.o \
	GFDLRD.o GOSSIP.o GRADFS.o GSMCOLUMN.o GSMCONST.o GSMDRIVE.o \
	HADZ.o HCONST.o \
	IDSTRB.o ILOC2GLB.o INIT.o KFDRIVE.o KFPARA.o KFTEND.o \
	LOC2GLB.o LUTAB.o LWR88.o \
	MIXLEN.o MPI_FIRST.o MPPINIT.o O3CLIM.o O3INT.o \
	OZON2D.o PARA_RANGE.o PDNEW.o PDTEDT.o \
	PGCOR.o PRODQ2.o PROF5.o \
	QUILT.o RADFS.o  RDTEMP.o READ_NHB.o  \
	READ_RESTRT.o READ_RESTRT2.o SETUP_SERVERS.o \
	SFCDIF.o SFLX.o SGETMO.o SLP.o SOLARD.o SPA88.o SURFCE.o SWR93.o \
	TABLE.o TPMIX2.o TPMIX2DD.o TTBLEX.o VDIFH.o VDIFQ.o VDIFV.o VTADV.o \
	VTADVF.o ZENITH.o ZERO2.o ZERO3.o ZERO3_T.o TWR.o timef_bog.o  \
	SLPSIG.o SLPSIGSPLINE.o UPDATE.o VADZ.o
#
# Threaded object files
#
OBJST=	HDIFF.o HZADV.o HZADV2.o RADTN.o TURBL.o 
#
# Includes
#
INCLUDES=  mpp.h parmeta
#
# Common Blocks
#
COMMS= 	ACMCLD.comm   CTLBLK.comm   MAPOT.comm    PHYS.comm     SEASO3.comm \
	ACMCLH.comm   BOCO.comm     DYNAM.comm    MAPOT1.comm   PHYS1.comm \
        SOIL.comm \
	ACMPRE.comm   CLDWTR.comm   DYNAMD.comm   MASKS.comm    PHYS2.comm \
        TABCOM.comm \
	ACMRDL.comm   CNVCLD.comm   HCON.comm     MSLP.comm     PRFHLD.comm \
        TEMPV.comm \
	ACMRDS.comm   CO2DTA.comm   INDX.comm     OPTIONS.comm  PVRBLS.comm \
        VRBLS.comm \
	ACMSFC.comm   CONTIN.comm   LOOPS.comm    OUTFIL.comm   RNDDTA.comm \
        Z0EFFT.comm \
	KFFDBK.comm   KFLUT.comm

DEPS= $(COMMS) $(INCLUDES)

.SUFFIXES: .F .f .o

.F.o:
#	echo "USING CPP STUFF"
	$(PREPROC.F) $< > $*.f
#	mv $(<:.F=.i)  $(<:.F=.f)
	echo "Compiling $(<:.F=.f)"
	$(COMPILE.f) $(<:.F=.f)
	rm $(<:.F=.f)

$(TARGET):	$(OBJS) $(OBJST)
	$(FC) $(LDFLAGS) -o $@ $(OBJS) $(OBJST) $(LIBS)
#	$(FC) $(LDFLAGS) $(LIBS) -o $@ $(OBJS) $(OBJST)

# $(OBJS):	$(DEPS)
#	$(COMPILE.f) $<

# $(OBJST):	$(DEPS)
#	$(FC) $(FFLAGST) -c $<

clean:	
	/bin/rm -f  *.lst *.o

exe: $(TARGET)
