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

# Compilateur et editeur de liens
FC         = xlf90_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       = -qsmp=omp

# 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

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

# Options de listing
OLST       = -qlistopt -qreport=smplist -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      =
LIBSOPT   = -Wl,-framework -Wl,vecLib

# Option optimisation
LDLEV     = $(OLEV)

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

# Options memoire
LDMEM     =

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


# Includes Fortran
FHDRS      =

# objects Fortran
FOBJS      = \
		numerics.o \
		sub1.o \
		main.o

# sources Fortran
FSRCS      = \
		numerics.f90 \
		sub1.f90 \
		main.f90

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

# link Fortran
EXEC = test_f90.out
DEST = ../bin

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

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

###
numerics.o: numerics.f90
	$(FC) -c $(FFLAGS) numerics.f90
main.o: main.f90 numerics.o
	$(FC) -c $(FFLAGS) main.f90
sub1.o: sub1.f90 numerics.o cdim.h
	$(FC) -c $(FFLAGS) sub1.f90

