CUDA_DIR ?= /usr/local/cuda-11.2
CUDA_LIB_DIR := $(CUDA_DIR)/lib64
ifeq ($(shell uname -m), x86_64)
     ifeq ($(shell if test -d $(CUDA_DIR)/lib64; then echo T; else echo F; fi), T)
	   CUDA_LIB_DIR := $(CUDA_DIR)/lib64
     endif
endif

CC := nvcc
INCLUDE := $(CUDA_DIR)/include
GENCODE := -gencode arch=compute_60,code=sm_60 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80
OPTS := -O3 $(GENCODE) $(CUDA_CPPFLAGS) -DHAS_NANOSLEEP=$(HAS_NANOSLEEP)
OPTS_DEBUG := -G -g -O0 $(GENCODE) $(CUDA_CPPFLAGS) -DHAS_NANOSLEEP=$(HAS_NANOSLEEP)

SRC = gpu-2dgrid.cu

EXE = gpu-2dgrid

$(EXE): release

release: $(SRC)
	$(CC) $(OPTS) $(SRC) -o $(EXE) -I$(INCLUDE) -L$(CUDA_LIB_DIR) -lcudart

debug: $(SRC)
	$(CC) $(OPTS_DEBUG) $(SRC) -o $(EXE) -I$(INCLUDE) -L$(CUDA_LIB_DIR) -lcudart

clean: $(SRC)
	rm -f $(EXE) $(EXE).linkinfo *~
