M           = mods



## ifort version
PRECISION = -r8           # IMPORTANT FLAG (DON'T CHANGE IT WITHOUT KNOWING THE CONSEQUENCES)
PREPROC   = -fpp #-save-temps
DEBUGGING = -g
LIBS = -mkl -lpthread -lz

# for gfortran
PRECISION = -fdefault-real-8 -fdefault-double-8 -ffree-line-length-none -march=corei7 -std=gnu 
LIBS = ${MKLLIBS} -lz
PREPROC   = -cpp #-save-temps
DEBUGGING = -g -fbounds-check -fbacktrace -fcheck=all -fimplicit-none -ffpe-trap=invalid,zero,overflow -finit-real=nan -fstack-protector


################################3
FFLAGS = $(DEBUGGING) $(WARNINGS) $(OPTIM) $(PROFILING) $(PRECISION) \
	      $(SVNDEF) $(MODULES) $(PREPROC) $(EXTRA)
FUFLAGS = 
LDFLAGS = -L$(ZLIB)/lib



# -------- add SLEPc & PETSc
# PETSc
FUFLAGS += -I${PETSC_DIR}/include -I${PETSC_DIR}/${PETSC_ARCH}/include
LDFLAGS += -L${PETSC_DIR}/${PETSC_ARCH}/lib
# SLEPc
FUFLAGS += -I${SLEPC_DIR}/include -I${SLEPC_DIR}/${PETSC_ARCH}/include
LDFLAGS += -L${SLEPC_DIR}/${PETSC_ARCH}/lib
LIBS += -lpetsc -lslepc


allreduce: allreduce.o
	mpif90 $(FFLAGS) $(LDFLAGS) $(LIBS) -o allreduce.x allreduce.o

allreduce.o: allreduce.f90
	mpif90 $(FFLAGS) $(FUFLAGS) $(LIBS) -o allreduce.o -c allreduce.f90

clean: 
	rm *.o
	rm *.x
	rm *~
