################################################################################
# 
#     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_parallel

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

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

CPP      = /usr/bin/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     = -L/usr/local/mpich2-1.0.5p4/lib -lmpich -lfmpich -lmpichf90 $(W3LIB)
LIBS     = $(W3LIB)
#
# Non-threaded object files
#
OBJS=	module_EXCH_BUF_INTEGER.o module_EXCH_BUF_REAL.o module_EXCHM.o \
	BOCOH.o BOCOHF.o BOCOV.o CHKOUT.o CLTEND.o \
	CLO89.o COLLECT.o CONRAD.o CUCNVC.o DDAMP.o \
	DIFCOF.o DIGFLT.o DIST.o DSTRB.o E1E290.o E290.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 LOC2GLB.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 \
	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 TTBLEX.o UPDATE.o VADZ.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 \
	imjm2ll.o imjm2ll_V.o ll2imjm.o DSTRBW.o
#
# Threaded object files
#
OBJST=	DIVHOA.o HDIFF.o HZADV.o HZADV2.o RADTN.o TURBL.o 
#
# Includes
#
INCLUDES=  mpp.h parmeta EXCHM.h parmbuf parmexch
#
# Common Blocks
#
COMMS= ACMCLD.comm CTLBLK.comm MAPOT.comm MAPOT1.comm PHYS.comm SEASO3.comm \
        ACMCLH.comm BOCO.comm DYNAM.comm MASKS.comm PHYS1.comm  SOIL.comm \
        ACMPRE.comm CLDWTR.comm DYNAMD.comm MSLP.comm PHYS2.comm TABCOM.comm \
        ACMRDL.comm CNVCLD.comm HCON.comm NHYDRO.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 \
        PARA.comm FCSTPAR.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)"
	echo $(COMPILE.f) $(<:.F=.f)
	$(COMPILE.f) $(<:.F=.f)
	rm $(<:.F=.f)

$(TARGET):	$(OBJS) $(OBJST)
	echo $(FC) $(LDFLAGS) -o $@ $(OBJS) $(OBJST) $(LIBS)
	$(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)
