#Optimize=true
#FC = gfortran
FC = myfor
CC = gcc
std_flags=-march=native -funroll-loops -pipe \
 -ftree-vectorize -floop-strip-mine  -floop-block -fimplicit-none \
 -finit-real=NAN -fopenmp  -Wall -Wextra -Wno-compare-reals
# -ffpe-trap=zero,overflow,invalid
ifdef Optimize
  FFLAGS=-O2 $(std_flags)
  FLFLAGS= -L/math/f77 -lmath77-myfor
#  FLFLAGS= -L/math/f77 -lmath77-myfor
else
  FFLAGS= -ggdb $(std_flags) -fcheck=bounds
  CFLAGS = -W -Wall $(std_cflags) -ggdb
#  FLFLAGS= -L/math/f77 -lmath77-myfor-g
#CLFLAGS= -L/math/c -lmathc90
endif
all: precision_m.o messy_m.o tmessy thrdtmessy messy.pdf messy_doc.pdf
.PHONY : all


precision_m.o : precision_m.f90
	$(FC) $(FFLAGS) -c -o precision_m.o precision_m.f90

messy_m.o: messy_m.f90 precision_m.o
	$(FC) -c $(FFLAGS) -o messy_m.o messy_m.f90

sample_m.o: sample_m.f90 messy_m.o
	$(FC) -c $(FFLAGS) -o sample_m.o sample_m.f90

tmessy.o: tmessy.f90 messy_m.o sample_m.o
	$(FC) -c $(FFLAGS) -o tmessy.o tmessy.f90 messy_m.o

thrdtmessy.o: thrdtmessy.f90 messy_m.o sample_m.o
	$(FC) -c $(FFLAGS) -o thrdtmessy.o thrdtmessy.f90

tmessy: tmessy.o messy_m.o sample_m.o sample_m.o
	$(FC) $(FFLAGS) -o tmessy tmessy.o messy_m.o sample_m.o

thrdtmessy: thrdtmessy.o messy_m.o sample_m.o sample_m.o
	$(FC) $(FFLAGS) -o thrdtmessy thrdtmessy.o messy_m.o sample_m.o

messy.pdf: messy.tex
	pdflatex messy.tex

messy_doc.pdf: messy_doc.tex messy_doc.bib
	pdflatex messy_doc.tex; bibtex messy_doc; \
  pdflatex messy_doc.tex; pdflatex messy_doc.tex

# Stuff below may become useful if C interoperability is ever done.
# Problem now has to do with optional arguments.

#C_Interop_Pre_29113.o: C_Interop_Pre_29113.f90
#	$(FC) -c $(FFLAGS) -o C_Interop_Pre_29113.o
#	C_Interop_Pre_29113.f90

#CFI_establish.o: CFI_establish.c
#	$(FC) -c $(FFLAGS) -o CFI_establish.o CFI_establish.c

#cmessy_m.o: cmessy_m.f90 C_Interop_Pre_29113.o
#	$(FC) -c $(FFLAGS) -o cmessy.o cmessy_m.f90 C_Interop_Pre_29113.o

#tcmessy.o: tcmessy.c cmessy_m.o cmessy.h messy_m.o
#	$(CC) -c  $(CFLAGS) -o tcmessy.o cmessy_m.o messy_m.o

#tcmessy: tcmessy.o
#	$(FC) $(FFLAGS) -o tcmessy tcmessy.o cmessy_m.o messy_m.o \
# C_Interop_Pre_29113.o CFI_establish.o

clean:
	rm -f *.o *.mod tmessy *.pdf
