F90=gfortran
FC=gfortran
CC=gcc

# These three should be always set!
MPF90=mpif90 
MPF77=mpif77
MPCC=mpicc
NVCC=nvcc

F90LINK=$(MPF90) 
FLINK=$(MPF77)

LD=mpif90

CUDA_ROOT=/usr/local/cuda
CUDA_INCDIR=$(CUDA_ROOT)/include
CUDA_LIB=$(CUDA_ROOT)/lib64
CUDA_CUR=/usr/local/lib64

LIBS=-I$(CUDA_INCDIR) -L$(CUDA_LIB) -lcudart -g -L$(CUDA_CUR) -lcuda

OBJCUDA=cudaInterface.o

OBJ=sndrcv.o fortranCInterface.o test.o

test: 	${OBJCUDA} ${OBJ}
	${LD} ${OBJCUDA} ${OBJ} $(LIBS) -o test

# These should be portable rules, arent they?
%.o: 	%.f90
	$(MPF90) -c $<
%.o: 	%.c
	$(MPCC) -c $<
%.o: 	%.cu
	$(NVCC) -arch=sm_20 -c $<

clean:
	rm -rf *.o *.mod test
