CC=gcc
FC=gfortran
FFLAGS=-O3 -mavx -march=ivybridge -mtune=ivybridge 
CFLAGS=-O3 -mavx -march=ivybridge -mtune=ivybridge 

MPIFC=mpif90
MPICC=mpicc

ATLASLOC=$(ATLASROOT)/lib
MKLLOC=$(MKLROOT)/lib/intel64
OBLASLOC=$(BLASROOT)/lib
LAPACKLOC=/apps/libraries/lapack/3.6.0/gnu/lib
SCALAPACKLOC=$(SCALAPACKROOT)
SMMLOC=$(LIBSMMROOT)/lib
FINALLIBSINTEL=-lifcore -lgfortran -lpthread -lm
FINALLIBS=-lgfortran -lpthread -lrt -lm
FFLAGSNONE=
FFLAGSO=-O
FFLAGSO3=-O3
FFLAGSAVX=-O3 -mavx -march=ivybridge -mtune=ivybridge 


default :  \
	   dgemm_code.None.x \
	   dgemm_code.O.x \
	   dgemm_code.O3.x \
 

.c.o:
	$(CC) -c $(CFLAGS) $<

.f.o:
	$(FC) -c $(FFLAGS) $<

dgemm_code.None.x : rand.o dgemm_master.o dgemm_compare.o csecond.o
	$(FC) $(FFLAGSNONE) -c dgemm_compare.f 
	$(CC) $(CFLAGS) -DMATMULCODE -c dgemm_master.c 
	$(CC) $(CFLAGS) dgemm_compare.o rand.o csecond.o dgemm_master.o  \
	-L${LAPACKLOC} -llapack -lrefblas \
	-o dgemm_code.None.x $(FINALLIBS)

dgemm_code.O.x : rand.o dgemm_master.o dgemm_compare.o csecond.o
	$(FC) $(FFLAGSO) -c dgemm_compare.f 
	$(CC) $(CFLAGS) -DMATMULCODE -c dgemm_master.c 
	$(CC) $(CFLAGS) dgemm_compare.o rand.o csecond.o dgemm_master.o  \
	-L${LAPACKLOC} -llapack -lrefblas \
	-o dgemm_code.O.x $(FINALLIBS)

dgemm_code.O3.x : rand.o dgemm_master.o dgemm_compare.o csecond.o
	$(FC) $(FFLAGSO3) -c dgemm_compare.f 
	$(CC) $(CFLAGS) -DMATMULCODE -c dgemm_master.c 
	$(CC) $(CFLAGS) dgemm_compare.o rand.o csecond.o dgemm_master.o  \
	-L${LAPACKLOC} -llapack -lrefblas \
	-o dgemm_code.O3.x $(FINALLIBS)

clean: 
	rm -f *.o *.x
