# FORTRAN MAKEFILE (DEBUGGING) 
# NOTE: FORTRAN MODULES MUST BE COMPILED BEFORE INCLUDED IN SOURCE !!!!

INCDIR  = -I$(PVM_ROOT)/include
FFLAGS  = -g
LIBDIR  = -L$(PVM_ROOT)/lib/$(PVM_ARCH)
SHELL   = /bin/bash
XDIR    = $(PVM_ROOT)/bin/$(PVM_ARCH)/
WORKBENCH = $(HOME)/mac/src/workbench

#
# ----------------- COMPILERS ------------------ #
#

#LINUX INTEL (Portland Group Comp)
#CC      = pgcc
#F90     = pgf90
#PVMLIBS = -lfpvm3 -lpvm3
#INCMODS = -I$(WORKBENCH)

#LINUX INTEL (Intel Comp)
 CC      = gcc
 F90     = ifort
 PVMLIBS = -lfpvm3 -lpvm3
# INCMODS = -cl,mm.pcl
 INCMODS = -module $(WORKBENCH) 
#LINUXALPHA
#CC      = gcc
#F90     = fort
#PVMLIBS = -lfpvm3 -lpvm3
#INCMODS = -I$(WORKBENCH)

#X86S0L2
#CC      = pgcc
#F90     = pgf90
#PVMLIBS = -lfpvm3 -lpvm3 -lsocket -lnsl
#INCMODS = -I$(WORKBENCH)

#
# ----------------- SOURCE FILES ------------------ #
#
# Master source codes:
MSORS   =       gmm.f90 \
                mm.f90 \
                ttime.f90 \
                rdfile.f90 \
                mm_sdat_ms.f90 \
                grt.f90 \
                mm_rrt_ms.f90 \
                mm_srt_ct.f90 \
                mm_cdat_ms.f90  
# 
# ----------------- OBJECT FILES ---------------- #
#
# Master object codes:
MOBJS   =       gmm.o \
                mm.o \
                ttime.o \
                rdfile.o \
                mm_sdat_ms.o \
                grt.o \
                mm_rrt_ms.o \
                mm_srt_ct.o \
                mm_cdat_ms.o 

# Workbench object codes:
WBOBJS  =       $(WORKBENCH)/communicate.o \
                $(WORKBENCH)/stopwatch.o \
                $(WORKBENCH)/getcompname.o \
                $(WORKBENCH)/envarc.o \
                $(WORKBENCH)/fbuff.o 

#
# ----------------- EXECUTABLE FILES ------------- #
#
MASTER  =       mm

all: clean
	make exec
exec: $(MASTER) 

#
# ------- Master component compile ------------------ #
#

# -- Global Var.
gmm.o          : gmm.f90
	$(F90) $(FFLAGS) $(INCDIR) -c gmm.f90
grt.o          : grt.f90
	$(F90) $(FFLAGS) $(INCDIR) -c grt.f90
# -- Exe. Files
ttime.o        : ttime.f90
	$(F90) $(FFLAGS) $(INCDIR) -r8 -c ttime.f90
rdfile.o       : rdfile.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c rdfile.f90
mm_sdat_ms.o   : mm_sdat_ms.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c mm_sdat_ms.f90
mm_rrt_ms.o    : mm_rrt_ms.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c mm_rrt_ms.f90
mm_srt_ct.o    : mm_srt_ct.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c mm_srt_ct.f90
mm_cdat_ms.o   : mm_cdat_ms.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c mm_cdat_ms.f90


# -- Main Program
mm.o           : mm.f90
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c mm.f90

# ------------------------ LINKING OBJECT CODES ----------------------- #

$(MASTER): $(MOBJS)
	$(F90) $(FFLAGS) -o $(MASTER) $(MOBJS) $(WBOBJS) $(LIBDIR) $(PVMLIBS)
	cp $(MASTER) $(XDIR)

clean: 
	rm -f *.o *.x *.mod $(XDIR)$(MASTER)

rebuild: clean
	make all
