CXX = icpc
CC = icc
LD = $(CXX)
DEBUG = -g -O3 
MKL_SHARED = -L/opt/intel/compilers_and_libraries_2017/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -liomp5
METIS_INCLUDE = -I/octfs/apl/METIS/include
METIS_SHARED = -Xlinker -rpath=/octfs/apl/METIS/lib -L/octfs/apl/METIS/lib -lmetis

all: rci-GMRES-RAS rci-GMRES-ilu GMRES-RAS rci-CG-ASM

rci-CG-ASM.o: rci-CG-ASM.cpp
	$(CXX) $(DEBUG) $(METIS_INCLUDE) -I. -c rci-CG-ASM.cpp

rci-GMRES-RAS.o: rci-GMRES-RAS.cpp
	$(CXX) $(DEBUG) $(METIS_INCLUDE) -I. -c rci-GMRES-RAS.cpp

rci-GMRES-ilu.o: rci-GMRES-ilu.cpp
	$(CXX) $(DEBUG) -I. -c rci-GMRES-ilu.cpp

GMRES-RAS.o: GMRES-RAS.cpp
	$(CXX) $(DEBUG) $(METIS_INCLUDE) -I. -c GMRES-RAS.cpp

rci-GMRES-ilu: rci-GMRES-ilu.o
	$(LD) -o rci-GMRES-ilu rci-GMRES-ilu.o $(MKL_SHARED)

rci-CG-ASM: rci-CG-ASM.o
	$(LD) -o rci-CG-ASM rci-CG-ASM.o $(MKL_SHARED) $(METIS_SHARED)

rci-GMRES-RAS: rci-GMRES-RAS.o
	$(LD) -o rci-GMRES-RAS rci-GMRES-RAS.o $(MKL_SHARED) $(METIS_SHARED)

GMRES-RAS: GMRES-RAS.o
	$(LD) -o GMRES-RAS GMRES-RAS.o $(MKL_SHARED) $(METIS_SHARED)

clean:
	rm *.o rci-GMRES-RAS rci-GMRES-ilu GMRES-RAS rci-CG-ASM

tar:
	tar czvf src.tar.gz Makefile rci-GMRES-RAS.cpp rci-GMRES-ilu.cpp GMRES-RAS.cpp  rci-CG-ASM.cpp
