#//////////////////////////////////////////////////////////////////////////////
#   -- MAGMA (version 0.3) --
#      Univ. of Tennessee, Knoxville
#      Univ. of California, Berkeley
#      Univ. of Colorado, Denver
#      June 2010
#//////////////////////////////////////////////////////////////////////////////

	CC        = gcc
	NVCC      = nvcc
	FORT      = gfortran

	ARCH      = ar
	ARCHFLAGS = cr
	RANLIB    = ranlib

	OPTS      = -O3 -DADD_
	NVOPTS    = --compiler-options -fno-strict-aliasing  -arch sm_20 \
                    -DUNIX -O3
	LDOPTS    = -fPIC

	LIB       = -lcublas -lm

	CUDADIR   = /mnt/scratch/cuda-3.1/cuda/

	LIBDIR    = -L$(CUDADIR)/lib64
        INC       = -I../include -I$(CUDADIR)/include

	LIBMAGMABLAS = ./libmagmablas.a

	ALLSRC = fermi_dgemm.cu \
                 fermi_sgemm.cu \

   SRC = testing_dgemm.cpp \
         testing_sgemm.cpp \

   ALLOBJ = $(ALLSRC:.cu=.cu_o)
   OBJ = $(SRC:.cpp=.o)
   EXE = $(OBJ:.o=)

all: $(LIBMAGMABLAS) $(EXE)
#all: $(EXE)

$(LIBMAGMABLAS): $(ALLOBJ)
	$(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ)
	$(RANLIB) $@

$(EXE): $(OBJ)

%.cu_o: %.cu
	$(NVCC) $(NVOPTS) -gencode arch=compute_20,code=compute_20 -gencode arch=compute_13,code=compute_13 $(INC) -c $< -o $@

clean:
	rm -f $(OBJ) $(EXE) $(ALLOBJ) *.o *~

.cpp.o:
	$(CC) $(OPTS) $(INC) -c $< -o $@

.o:
	$(CC) $(LDOPTS) $< -o $@ -L. \
          -lcuda -lmagmablas $(LIBDIR) $(LIB)
