# FORTRAN MAKEFILE (DEBUGGING) : 

INCDIR  = -I$(PVM_ROOT)/include
FFLAGS  = -g
CLIBS   = -lm
LIBDIR  = -L$(PVM_ROOT)/lib/$(PVM_ARCH)
SHELL   = /bin/bash
XDIR    = $(PVM_ROOT)/bin/$(PVM_ARCH)/
WORKBENCH = $(HOME)/mac/src/workbench
PGA       = $(HOME)/mac/src/gq/pga
#
# ------------------- COMPILERS ------------------- #
#

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

#LINUX INTEL (Intel Comp)
 CC      = gcc
 F90     = ifc 
 PVMLIBS = -lfpvm3 -lpvm3
 INCMODS = -cl,gq.pcl

#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 ------------------ #
#
# Grand Que source codes:
FSORS   =       gq.f90 


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

# Grand Que object codes: 

FOBJS   =       gq.o 

COBJS   =       $(PGA)/super_xover.o \
                $(PGA)/eval.o \
                $(PGA)/gen.o \
                $(PGA)/init.o \
                $(PGA)/main.o \
                $(PGA)/rep.o \
                $(PGA)/stats.o \
                $(PGA)/random.o \
                $(PGA)/select.o \
                $(PGA)/utils.o \
                $(PGA)/halve.o \
                $(PGA)/scale.o

#
# ----------------- EXECUTABLE FILES ------------- #
#
PROGRAM  =       ga 

all : clean
	make exec
exec: $(PROGRAM)
#
# ------- Grand Que utility compile ----------------- #
#
$(FOBJS) :  $(FSORS) 
	$(F90) $(FFLAGS) $(INCMODS) $(INCDIR) -c $(FSORS) 

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

$(PROGRAM): $(FOBJS) $(COBJS)
	$(F90) $(FFLAGS) -o $(PROGRAM) $(COBJS) $(FOBJS) $(WBOBJS) $(LIBDIR) $(PVMLIBS) $(CLIBS)
	cp $(PROGRAM) ../../
clean: 
	rm -f *.o  $(PROGRAM) ../../$(PROGRAM)

rebuild: clean
	make all
