include make.inc

# -fPIC  ... warning: variable is never used
#FFLAGS=  -fPIC -fdefault-real-8  -w

## optimize for computations
FFLAGS=  -fPIC -fdefault-real-8 -fopenmp -O2 -w -ffpe-trap=invalid,zero,overflow

# for debugging of the code - PROBLEM WITH LAPACK SVD routine
#FFLAGS= -fPIC -fdefault-real-8 -g -fbacktrace -fbounds-check -w -Wall -finit-real=nan -finit-integer=-999999 -fno-align-commons -ffpe-trap=invalid,zero,overflow,denormal


#FFLAGS= -fPIC -fdefault-real-8 -O2 -w -g -fbacktrace -fbounds-check -w -Wall -fno-align-commons -ffpe-trap=invalid,zero,overflow,denormal

# BY FR?
#FFLAGS= -fPIC -fdefault-real-8 -g -fbacktrace -fbounds-check -w -Wall -finit-real=nan -finit-integer=-999999 -ffpe-trap=invalid -fno-align-commons -ffpe-trap=invalid,zero,overflow

# NEW because of problems with pointer association FILIP
#FFLAGS= -fPIC -fdefault-real-8 -g -fbacktrace -fbounds-check -w -Wall -finit-real=nan -finit-integer=-999999 -fno-align-commons

# CONTROL OF unused vartiables,...
#FFLAGS=-Og -fPIC -fdefault-real-8 -fimplicit-none -Wall  -Wextra  -Wunused-parameter  -fwhole-file  -fcheck=all -fbacktrace

# -Wuninitialized

#-debug -traceback -check -ftrapuv

#FFLAGS2=  -fPIC -fdefault-real-8 -g -fbacktrace -fbounds-check -w -Wall -finit-real=nan -finit-integer=-999999 -ffpe-trap=invalid -fno-align-commons

#-fdump-parse-tree
#-fdump-core
#-finit-local-zero
#-falign-commons
#-fno-align-commons
#-fcheck-array-temporaries
#-fimplicit-none

FFLAGS1=  -g -fbacktrace -fbounds-check -w
#FFLAGS1=   -O2 -w

#AGMG = ./AGMG_3.2.1-aca/
#AGMGLIB = $(AGMG)libagmg.a
AGMG =
AGMGLIB =

#LIBS=-llapack -lpgplot
#LIBS=-lblas

# without UMFPACK
LIBS= $(AGMGLIB) LAPACK/lapack_Linux.a LAPACK/blas_Linux.a


# NEW LAPACK-3.7.0
#LIBS= $(AGMGLIB) LAPACK/liblapack.a LAPACK/librefblas.a
#LIBS= $(AGMGLIB) LAPACK_BAK/lapack-3.7.0/liblapack.a LAPACK_BAK/lapack-3.7.0/librefblas.a
#LIBS= $(AGMGLIB) LAPACK_OLD/lapack_Linux.a LAPACK_OLD/blas_Linux.a

# with UMFPACK
#LIBS= LAPACK/lapack_Linux.a LAPACK/blas_Linux.a UMFPACK/UMFPACK/Lib/libumfpack.a UMFPACK/AMD/Lib/libamd.a -lblas -lgfortran -lgfortranbegin  -lm

##LIBS= LAPACK/lapack_Linux.a LAPACK/blas_Linux.a UMFPACK/UMFPACK/Lib/libumfpack.a UMFPACK/AMD/Lib/libamd.a -lblas -lgfortran -lgfortranbegin -lg2c  -lm


#LIBS=-llapack -L/usr/local/pgplot -lpgplot  -lX11
#-lpgplot

#FFLAGS=  -fPIC -r8
#FXX=g95
FXX=gfortran
#FXX=ifort

all: Adgfem dgfem2fvmx dgfem_range plotdgm  Setorderx gen_tisk_texAD gen_battery cfig #fvm2jpg 

#Debug: Adgfem AAdgfem ADGo dgfem2fvmx dgfem_range plotdgm  cfig Setorderx gen_tisk_texAD #fvm2jpg

Adgfem: $(TARGETS_O)
	$(FXX) $(FFLAGS) -o Adgfem $^ $(LIBS)

nonlinear: $(TARGETS_O)
	$(FXX) $(FFLAGS) -o Adgfem $^ $(LIBS)

#-L/usr/local/pgplot  -lpgplot
#-L/usr/local/lib -lslatec -lg2c

first: blaslib lapacklib agmglib Adgfem

agmglib:
	( cd $(AGMG); $(MAKE) )

blaslib:
	( cd LAPACK/BLAS/SRC; $(MAKE) )

lapacklib:
	( cd LAPACK/SRC; $(MAKE) )

plotdgm: plgeom.o plotdgm.o
	$(FXX) $(FFLAGS) -o plotdgm $^

dgfem2fvmx: plgeom.o dgfem2fvmx.o
	$(FXX) $(FFLAGS) -o dgfem2fvmx $^

dgfem_range:  plgeom.o dgfem_range.o
	$(FXX) $(FFLAGS) -o dgfem_range $^

#fvm2jpg: fvm2jpg.f
#	gfortran -o fvm2jpg fvm2jpg.f -L/usr/local/ -lpgplot -lX11


cfig   : GGG.o cfig.o
	$(FXX) $(FFLAGS1) -O -C -o cfig cfig.o GGG.o

GGG.o : GGG.f
	$(FXX) $(FFLAGS1) -O -C -c GGG.f

cfig.o : cfig.f90
	$(FXX) $(FFLAGS1) -O -C -c cfig.f90


# battery
gen_battery   : GGG.o gen_battery.o
	$(FXX) $(FFLAGS1) -O -C -o gen_battery gen_battery.o GGG.o

gen_battery.o : gen_battery.f90
	$(FXX) $(FFLAGS1) -O -C -c gen_battery.f90

Setorderx : Setorderx.o paramets.o
	$(FXX) $(FFLAGS) -O -C -o Setorderx paramets.o Setorderx.o

gen_tisk_texAD : gen_tisk_texAD.o paramets.o
	$(FXX) $(FFLAGS) -O -C -o gen_tisk_texAD paramets.o gen_tisk_texAD.o

MG:
	( $(MAKE) -f Makeown uncommentmg )
	( $(MAKE) -f Makeown AdgfemUMF AAdgfemUMF )

dir_solver_dummy.o: dir_solver_dummy.f90
	$(FXX) $(FFLAGS) -c $?

dir_solver.o: dir_solver.f90
	$(FXX) $(FFLAGS) -c $?

agmg_solver_dummy.o: agmg_solver_dummy.f90
	$(FXX) $(FFLAGS) -c $?

agmg_solver.o: agmg_solver.f90
	$(FXX) $(FFLAGS) -c $?


#cleanDebug:
#	-rm -f ADGo Adgfem AAdgfem dgfem2fvmx dgfem_range fvm2jpg  Setorderx gen_tisk_texAD *.o *.mod

clean:
	-rm -f Adgfem dgfem2fvmx dgfem_range fvm2jpg  Setorderx gen_tisk_texAD *.o *.mod gen_battery

#cleanSuperADGo:
#	-rm -f Adgfem *.o *.mod

cleanAdgfem:
	-rm -f Adgfem *.o *.mod
cleannonlinear:
	-rm -f Adgfem *.o *.mod

%.o:%.f90
	$(FXX) $(FFLAGS) -c $?

%.o:%.f95
	$(FXX) $(FFLAGS) -c $?

%.o:%.f
	$(FXX) $(FFLAGS) -c $?

igmres.o: igmres.for
	$(FXX) $(FFLAGS) -c igmres.for

fcolor.o: fcolor.f
	$(FXX) $(FFLAGS) -c fcolor.f

