VERSION=3.1.6
LINUX_CFLAGS=-O2 -fp-model source -static-intel -nowarn -ip -xHost #-ipo
LINUX_DFLAGS=-O0 -fp-model source -check assume -check bounds -check pointers -check stack -check uninit -debug -traceback -nowarn #-openmp-report=1 -parallel-source-info=1 -par-report1 -gen-interfaces -warn interfaces -debug extended -debug parallel -g -fpe0
LINUX_MKL=$(MKLROOT)/lib/intel64/libmkl_blas95_lp64.a $(MKLROOT)/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_sequential.a $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl
LINUX_INTEL_INC=-I$(MKLROOT)/include -I$(MKLROOT)/include/intel64/lp64
WIN_CFLAGS=/O2 /fp:source /libs:static /Qip /nowarn #/QxHost
WIN_DFLAGS=/Od /fp:source /check:bounds /heap-arrays /traceback #/warn:interfaces /traceback /dbglibs
WIN_64_MKL=mkl_blas95_lp64.lib mkl_lapack95_lp64.lib mkl_intel_lp64.lib mkl_sequential.lib mkl_core.lib
WIN_32_MKL=mkl_blas95.lib mkl_lapack95.lib mkl_intel_c.lib mkl_sequential.lib mkl_core.lib
SOURCES=data.f90 ang_mom.f90 powder.f90 props.f90 cfftpack.f chisqr.f wavelet.f wavelet_sub.f90 fitting.f90 phi.f90
MAC_MKL=$(MKLROOT)/lib/libmkl_blas95_lp64.a $(MKLROOT)/lib/libmkl_lapack95_lp64.a $(MKLROOT)/lib/libmkl_intel_lp64.a $(MKLROOT)/lib/libmkl_sequential.a $(MKLROOT)/lib/libmkl_core.a -lpthread -lm
MAC_INTEL_INC=-I$(MKLROOT)/include -I$(MKLROOT)/include/intel64/lp64
NAG_ROOT=/opt/NAG/fll6a24d9l/lib/
NAG=$(NAG_ROOT)/libnag_acml.a $(NAG_ROOT)/libnag_nag.a 

omp:
	ifort $(LINUX_CFLAGS) -fpp -Domp -Dversionvar=\"$(VERSION)\" -qopenmp -o phi_v$(VERSION)_omp.x $(SOURCES) $(LINUX_MKL) $(LINUX_INTEL_INC); rm *.mod; mv phi_v$(VERSION)_omp.x ~/bin/

macomp:
	ifort $(LINUX_CFLAGS) -fpp -Domp -Dversionvar=\"$(VERSION)\" -qopenmp -o phi_v$(VERSION)_omp.x $(SOURCES) $(MAC_MKL) $(MAC_INTEL_INC); rm *.mod; mv phi_v$(VERSION)_omp.x ~/bin/

debug:
	ifort $(LINUX_DFLAGS) -fpp -Domp -Dversionvar=\"$(VERSION)\" -qopenmp -o phi_v$(VERSION)_debug.x $(SOURCES) $(LINUX_MKL) $(LINUX_INTEL_INC); rm *.mod; mv phi_v$(VERSION)_debug.x ~/bin/
	
win64:
	xcopy /y "Z:\Dropbox (The University of Manchester)\src\old_phi\winlibs\lib64\*" * & ifort $(WIN_CFLAGS) /fpp /Domp /Dversionvar=\"$(VERSION)\" /Qopenmp /threads /o phi_v$(VERSION)_windows64omp.exe $(SOURCES) $(WIN_64_MKL) & del *.obj & del *.mod & del *.lib

win32:
	xcopy /y "Z:\Dropbox (The University of Manchester)\src\old_phi\winlibs\lib32\*" * & ifort $(WIN_CFLAGS) /fpp /Domp /Dversionvar=\"$(VERSION)\" /Qopenmp /threads /o phi_v$(VERSION)_windows32omp.exe $(SOURCES) $(WIN_32_MKL) & del *.obj & del *.mod & del *.lib

mac:
	gfortran -Og -g -fcheck=all -fbacktrace -fno-range-check -ffree-line-length-3500 -fopenmp -cpp -Domp -Dversionvar=\"$(VERSION)\" -o phi_v$(VERSION)_mac64_gfortran.x $(SOURCES) -framework Accelerate; rm -rf *.dSYM; rm *.mod; mv phi_v$(VERSION)_mac64_gfortran.x ~/bin/

nag:
	nagfor -O0 -thread_safe -fpp -Domp -Dversionvar=\"$(VERSION)\" -openmp -o phi_v$(VERSION)_nag.x $(SOURCES) $(NAG); rm *.mod; mv phi_v$(VERSION)_nag.x ~/bin/

linux:
	ifort -O2 -fp-model source -static-intel -nowarn -ip -fpp -Domp -Dversionvar=\"$(VERSION)\" -fopenmp -o phi_v$(VERSION).x $(SOURCES) $(LINUX_MKL) $(LINUX_INTEL_INC)

mpi:
	mpif90 -O2 -fp-model source -nowarn -ip -fpp -Dmpi -Dversionvar=\"$(VERSION)\" -o phi_v$(VERSION)_mpi.x $(SOURCES) $(LINUX_MKL) $(LINUX_INTEL_INC); rm *.mod
