#flags = -r8 -i8 -msse3 -O3 -axT -m64 -fPIC -i_dynamic -openmp
#Neuman flags
#flags = -O3 -r8 -i8 -openmp -msse3 -axSSSE3 -m64 -fPIC -i_dynamic
#Cluster_2(16.161) flags 


BLOCKSIZE?=32

flags = -cpp -DBLOCKSIZE=$(BLOCKSIZE) -Wall -O3 -ffree-line-length-0 -fdefault-integer-8 -fdefault-double-8 -fdefault-real-8 -march=native

ifdef CHECK
flags += -fcheck=all
endif

ifdef DEBUG
flags += -g
endif

compiler = mpif90


# Modules
MODULES += \
    m_openmpi.o\
    Compact.o\
    m_parameters.o\
    m_calculate.o\
    m_arrays.o\
    m_terms.o\
    post.o

# Objects
OBJ     = test.o

Post_Cbar_FSD_Incomp : x-edge-cold-bc-uPrime-hybrid

x-edge-cold-bc-uPrime-hybrid : ${MODULES} ${OBJ}
	${compiler} -o x-edge-cold-bc-uPrime-hybrid ${flags} ${MODULES} ${OBJ}

${OBJ} : ${MODULES}

m_terms.f90 : code_gen/code_gen.py code_gen/terms.input code_gen/resources/m_template.f90
	cd code_gen && python code_gen.py > ../$@

%.o: %.f90
	${compiler} -c ${flags} $<

clean:
	rm -f *.o *.mod x-edge-cold-bc-uPrime-hybrid test_calculate

testc : test_calculate

test_calculate : m_openmpi.o m_parameters.o Compact.o m_calculate.o test_calculate.o
	${compiler} -o test_calculate ${flags} m_openmpi.o m_parameters.o Compact.o m_calculate.o test_calculate.o

test_calculate.o : m_openmpi.o m_parameters.o Compact.o m_calculate.o
