# 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      = gcc
#F90     = pgf90
#PVMLIBS = -lfpvm3 -lpvm3
#INCMODS = -I$(WORKBENCH)

#LINUX INTEL (Intel Comp)
 CC      = gcc
 F90     = ifort -w -cm
 PVMLIBS = -lfpvm3 -lpvm3
#INCMODS = -cl,ms.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 ------------------ #
#
# Slave source codes:
SSORS   =       mac_glb.f90 \
                gms.f90 \
                mac.f90 \
                ms_ridat_mm.f90 \
                ms_rdat_mm.f90 \
                ms_sdat_mm.f90 \
                ms_srt_mm.f90 \
                ms.f90
# 
# ----------------- OBJECT FILES ---------------- #
#
# Slave object codes:
SOBJS   =       mac_glb.o \
                gms.o \
                mac.o \
                ms_ridat_mm.o \
                ms_rdat_mm.o \
                ms_sdat_mm.o \
                ms_srt_mm.o \
                ms.o

# Workbench object codes:
WBOBJS  =       $(WORKBENCH)/communicate.o \
                $(WORKBENCH)/fbuff.o \
                $(WORKBENCH)/envarf.o \
                $(WORKBENCH)/envarc.o \
                $(WORKBENCH)/getcompname.o 
#
# ----------------- EXECUTABLE FILES ------------- #
#
SLAVE   =       ms

all: clean	
	make exec
exec: $(SLAVE)

# ------ Global Var -------------------------------- #

gms.o : gms.f90
	$(F90) $(FFLAGS) -c gms.f90
mac_glb.o : mac_glb.f90
	$(F90) $(FFLAGS) -c mac_glb.f90

#
# ------ Slave component compile ------------------- #
#
ms.o   : ms.f90
	$(F90) $(INCDIR) $(INCMODS) $(FFLAGS) -c ms.f90
ms_ridat_mm.o : ms_ridat_mm.f90
	$(F90) $(INCDIR) $(INCMODS) $(FFLAGS) -c ms_ridat_mm.f90
ms_rdat_mm.o : ms_rdat_mm.f90
	$(F90) $(INCDIR) $(INCMODS) $(FFLAGS) -c ms_rdat_mm.f90
ms_sdat_mm.o : ms_sdat_mm.f90
	$(F90) $(INCDIR) $(INCMODS) $(FFLAGS) -c ms_sdat_mm.f90
ms_srt_mm.o : ms_srt_mm.f90
	$(F90) $(INCDIR) $(INCMODS) $(FFLAGS) -c ms_srt_mm.f90

#
# ------ Atomic Kinetic Code ----------------------- #
#
mac.o : mac.f90
	$(F90) $(FFLAGS) -c mac.f90

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

$(SLAVE): $(SOBJS)
	$(F90) $(FFLAGS) -o $(SLAVE) $(SOBJS) $(WBOBJS) $(LIBDIR) $(PVMLIBS)
	cp $(SLAVE) $(XDIR)

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

rebuild: clean
	make all
