

FC = gfortran
#OPT = -g -Wall -O -fbounds-check -Wuninitialized -fbacktrace
OPT = -O3
FFLAGS= -fopenmp -frecord-marker=4 $(OPT)
LFLAGS= -fopenmp


#FC = ifort
#OPT = -O3 -xCORE-AVX512 -mcmodel=medium
#FFLAGS= -qopenmp -assume byterecl -std $(OPT)
#LFLAGS= -qopenmp


INCLUDE = 


FRAME= \
prm_phconst.o \
com_dfs.o \
e_time.o \
legendre.o \
monit_spectrum.o \
monit_norm.o \
monit.o  \
grads.o  \
gmean_to_zero_dfs.o \
tridiagonal.o \
tridiagonal_cmplx.o \
pentadiagonal.o \
pentadiagonal_4.o \
pentadiagonal_cmplx.o \
ninediagonal_4.o \
helmholtz_dfs_old.o \
helmholtz_dfs.o \
helmholtz_dfs_cmplx_old.o \
helmholtz_dfs_cmplx.o \
hdiff4_dfs.o \
xderiv.o \
yderiv_dfs_old.o \
uv2divrot_dfs_old.o  \
uv2divrot_dfs.o  \
divrot2uv_dfs_old.o  \
divrot2uv_dfs.o  \
fft_y.o  \
fft.o

SW_DFS=$(FRAME) sw_dfs.o ../bihar/libbihar.a ../ispack-3.0.1/libispack3.a 

TEST=$(FRAME) test.o ../bihar/libbihar.a ../ispack-3.0.1/libispack3.a 

TEST_TRUNCATE=$(FRAME) test_truncate.o ../bihar/libbihar.a ../ispack-3.0.1/libispack3.a 

TEST_TRIDIAGONAL=tridiagonal.o tridiagonal_cmplx.o test_tridiagonal.o 

TEST_PENTADIAGONAL=pentadiagonal.o pentadiagonal_4.o pentadiagonal_cmplx.o test_pentadiagonal.o 

TEST_NINEDIAGONAL=ninediagonal_4.o ninediagonal.o test_ninediagonal.o 


all :  test_tridiagonal test_pentadiagonal test_ninediagonal sw_dfs test test_truncate
sw_dfs : $(SW_DFS)
	$(FC) $(SW_DFS) $(LFLAGS) -o sw_dfs

test : $(TEST)
	$(FC) $(TEST) $(LFLAGS) -o test

test_truncate : $(TEST_TRUNCATE)
	$(FC) $(TEST_TRUNCATE) $(LFLAGS) -o test_truncate

test_tridiagonal : $(TEST_TRIDIAGONAL)
	$(FC) $(TEST_TRIDIAGONAL) $(LFLAGS) -o test_tridiagonal

test_pentadiagonal : $(TEST_PENTADIAGONAL)
	$(FC) $(TEST_PENTADIAGONAL) $(LFLAGS) -o test_pentadiagonal

test_ninediagonal : $(TEST_NINEDIAGONAL)
	$(FC) $(TEST_NINEDIAGONAL) $(LFLAGS) -o test_ninediagonal

clean:
	rm -rf a.out sw_dfs test test_truncate test_*diagonal *.o *.mod

.SUFFIXES: 
.SUFFIXES:      .F90 .o
.F90.o:	
	$(FC) $(FFLAGS) $(INCLUDE) -c $*.F90 -o $*.o
