#
# Declaration de l'extension
.SUFFIXES:.f90

# Compilateur et editeur de liens
FC         = mpxlf90_r
FLD        = $(FC)

RM         = /usr/bin/rm -f

#
# COMPILATION
#

# Options d'optimisation
OLEV       = -qhot -O3 -qtune=auto -qarch=auto -qcache=auto
FOPT       = -qstrict

FMAX       = -qipa
FMAX       = 

# Options de parallelisation
OPAR       = 

# Options de deboguage
ODEB       = -qnooptimize
FDEB       = -qcheck -qdbg -qextchk -qfullpath -qundef \
	-qflttrap=:ov:und:zero:inv:en -qinitauto=FF

# Options de portage
OPRT       = -qautodbl=dbl4 -qdpc=e
OPRT       = 

# Options d'entrees / sorties du compilateur
OES        = -qfree=f90 -qsuffix=f=f90

# Options de listing
OLST       = -qlistopt -qreport=hotlist -qsource
OLST       = 

# Options de profilage
PROF       = -pg -qfullpath -qdbg
PROF       = -qfullpath -qdbg

# Options compilation
FFLAGS     = $(OLEV) $(FOPT) $(FMAX) $(OPAR) $(OPRT) $(PROF) $(OES) $(OLST)

#
# EDITION DES LIENS
#

# Librairies Fortran
LIBS      = -lmass

# Option optimisation
LDLEV     = $(OLEV)

# Option de portage
LDREN     = -brename:.flush,.flush_ -brename:.etime,.etime_
LDREN     = 

# Options memoire
LDMEM     = -bmaxdata:0x80000000
LDMEM     = 

# Options editions des liens
LDFLAGS   = $(LDLEV) $(LDMEM) $(LDREN)


# Includes Fortran
FHDRS      =

# objects Fortran
FOBJS      = \
		modscal.o \
		prod_mpi.o

# sources Fortran
FSRCS      = \
		modscal.f90 \
		prod_mpi.f90

# compilation Fortran
.f90.o:
	$(FC) $(FFLAGS) $< -c

# link Fortran
EXEC = prod_mpi.exe
DEST = .

all: 	$(FOBJS)
	$(FLD) $(LDFLAGS) $(FOBJS) $(LIBS) -o $(EXEC)

# nettoyage
clean:
	$(RM) $(FOBJS) $(EXEC) *.mod

###
modscal.o: modscal.f90
	$(FC) -c $(FFLAGS) modscal.f90
prod_mpi.o: prod_mpi.f90 modscal.o
	$(FC) -c $(FFLAGS) prod_mpi.f90

