F90 = ifort
SRCDIR = src
OBJDIR = obj
# Feel free to change comment the following line and uncomment the line below
FFLAGS = -gen-interfaces -axCORE-AVX2 -xHost -r8 -openmp -ip -ipo -O3 -fp-model precise -mp1 -auto -module $(OBJDIR) -I$(MKL)/include
#FFLAGS = -openmp -traceback -g -check all -fpe0 -fp-stack-check -warn all -gen-interfaces -r8 -debug -fp-model strict -auto -module $(OBJDIR) -I$(MKL)/include
SRC = $(SRCDIR)/comm.f90 \
	$(SRCDIR)/fill.f90 \
	$(SRCDIR)/amf.f90 \
	$(SRCDIR)/readin.f90 \
	$(SRCDIR)/rwdata.f90 \
	$(SRCDIR)/setco.f90 \
	$(SRCDIR)/solve.f90 \
	$(SRCDIR)/zero.f90 \
	$(SRCDIR)/poiss.f90 \
	$(SRCDIR)/main.f90
OBJ = $(SRC:$(SRCDIR)/%.f90=$(OBJDIR)/%.o)

#######################################################

all : main

main : $(OBJ)
	$(F90) $(FFLAGS) -o $@ $(OBJ) -L$(MKL)/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lm

$(OBJDIR)/comm.o: $(SRCDIR)/comm.f90

$(OBJDIR)/fill.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/fill.f90

$(OBJDIR)/amf.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/amf.f90

$(OBJDIR)/readin.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/readin.f90

$(OBJDIR)/rwdata.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/rwdata.f90

$(OBJDIR)/setco.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/setco.f90

$(OBJDIR)/solve.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/solve.f90

$(OBJDIR)/zero.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/zero.f90

$(OBJDIR)/poiss.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/poiss.f90

$(OBJDIR)/main.o: $(OBJDIR)/comm.o \
	$(SRCDIR)/main.f90

$(OBJDIR)/%.o : $(SRCDIR)/%.f90
	$(F90) -c $(FFLAGS) -o $@ $< 

.PHONY : clean
clean :
	rm -f obj/*.*
	rm -f main
