#! /usr/sbin/smake
SHELL    = /usr/bin/sh
FC       = xlf90_r
LD       = $(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 -qsigtrap

# 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       =

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

#
# EDITION DES LIENS
#

# Librairies Fortran
LIBS      = -lmass -lmassv -lessl -lm

# Option optimisation
LDLEV     =

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

# Options memoire
LDMEM     = -bmaxdata:0x40000000 -blpdata

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

SRC1D = \
	numerics.f90 \
	modfft.f90 \
	ccfft1d.f90 \
	ccmain1d.f90
SRC2D = \
	numerics.f90 \
	modfft.f90 \
	ccfft2d.f90 \
	ccmain2d.f90

OBJ1D = \
	numerics.o \
	modfft.o \
	ccfft1d.o \
	ccmain1d.o
OBJ2D = \
	numerics.o \
	modfft.o \
	ccfft2d.o \
	ccmain2d.o

all: 1d 2d

EXEC1D = acc1d.out
EXEC2D = acc2d.out

1d: $(OBJ1D)
	$(FC) $(LDFLAGS) -o $(EXEC1D) $(OBJ1D) $(LIBS)

2d: $(OBJ2D)
	$(FC) $(LDFLAGS) -o $(EXEC2D) $(OBJ2D) $(LIBS)

clean:
	$(RM) $(EXEC1D) $(EXEC2D) $(OBJ1D) $(OBJ2D) *.mod

.SUFFIXES: $(SUFFIXES) .f90

.f90.o:
	$(FC) $(FFLAGS) -c $<
###
numerics.o: numerics.f90
modfft.o:   modfft.f90   numerics.o
ccfft1d.o:  ccfft1d.f90  numerics.o modfft.o
ccfft2d.o:  ccfft2d.f90  numerics.o modfft.o
ccmain1d.o: ccmain1d.f90 numerics.o i_ccfft1d.h
ccmain2d.o: ccmain2d.f90 numerics.o i_ccfft2d.h

