.mod=.mod
.fh=.fh
.SUFFIXES: .f90 $(.mod) .F90 .F


#######################  Section 1 #######################
#  Define your compilers and compiler flags here         #
#  These seems to be valid as of XLF 10.1                #
##########################################################
F90=xlf95 -qsuffix=f=f90:cpp=F90
FC=xlf  -qsuffix=cpp=F
F77=$(FC)
CC=xlc
F90COPT= -O3 
FCOPT=-O3 
CCOPT=-O3 
#
# Which flag does your compiler use  for module inclusion?
# Most compilers use -I  but Sun uses -M 
# FIFLAG is for INCLUDE 
FMFLAG=-I
FIFLAG=-I


#######################  Section 2 #######################
#  Define your linker and linker flags here              #
#  Does your MPI provide mpi.mod or mpif.h?              #
#   MPI_FINC=-DMPI_H  or MPI_FINC=-DMPI_MOD              #
#  If necessary add MPIINCDIR                            #
##########################################################
MPF90=mpxlf95 -qsuffix=f=f90:cpp=F90
F90LINK=$(MPF90)
FLINK=$(MPF90)
MPF77=mpxlf95 -qfixed
MPCC=mpcc
MPI_FINC=-WF,-DMPI_MOD
#$(FIFLAG)/opt/SUNWhpc/include

#######################  Section 3 #######################
#  Specify paths to libraries                            #
##########################################################
BLAS=-lessl
BLACS=-lblacssmp


#######################  Section 4 #######################
#  Other useful tools&defines                            #
#  SLU and UMF need only be set when using MLD2P4        #
##########################################################
#SLUDIR=/usr/local/SuperLU_3.0
#SLU=-lslu -L$(SLUDIR)
#SLUDistDIR=/usr/local/SLUDist_2.0
#SLUDist=-lslud -L$(SLUDistDIR) -L $(HOME)/LIB
#SLUDEF=-DHave_SLU_ -I$(SLUDIR) -DHave_SLUDist_ -I$(SLUDistDIR)

#UMFDIR=$(HOME)/LIB/Umfpack
#UMF=-lumfpack -lamd -L$(UMFDIR)
#UMFDEF=-DHave_UMF_ -I$(UMFDIR)
#
#  We are using the public domain tool METIS from U. Minnesota. To get it
#  check URL http://www.cs.umn.edu:~karypis
#  
METIS_LIB = -L$(HOME)/NUMERICAL/metis-4.0 -lmetis 
LDLIBS=$(BLACS) $(SLU) $(UMF) $(BLAS) $(METIS_LIB)

#  Add -DLargeFptr for 64-bit addresses
CDEFINES=-DNoChange $(SLUDEF) $(UMFDEF) -DLargeFptr
FDEFINES=-WF,-DESSL_BLACS  $(MPI_FINC)
# There's no MOVE_ALLOC yet in XLF 10.1.
#-WF,-DHAVE_MOVE_ALLOC 


AR=ar -cur
RANLIB=ranlib



#######################  Section 5 #######################
#  Do not edit this                                      #
##########################################################
LIBDIR=lib
BASELIBNAME=libpsb_base.a
PRECLIBNAME=libpsb_prec.a
METHDLIBNAME=libpsb_krylov.a
UTILLIBNAME=libpsb_util.a

# Under Linux/gmake there is a rule interpreting .mod as Modula source! 
$(.mod).o:
	
.c.o:
	$(CC) $(CCOPT) $(CINCLUDES) $(CDEFINES) -c $<
.f.o:
	$(FC) $(FCOPT) $(FINCLUDES)  -c $<
.f$(.mod):
	$(FC) $(FCOPT) $(FINCLUDES) -c $<
.f90$(.mod):
	$(F90) $(F90COPT) $(FINCLUDES) -c $<
.f90.o:
	$(F90) $(F90COPT) $(FINCLUDES) -c $<
.F.o:
	$(FC) $(F90COPT) $(FINCLUDES) $(FDEFINES) -c $<
.F90.o:
	$(F90) $(F90COPT) $(FINCLUDES) $(FDEFINES) -c $<
.F90$(.mod):
	$(F90) $(F90COPT) $(FINCLUDES) $(FDEFINES) -c $<