#!/usr/bin/make -f

# List of CUDA level according to CUDA version
# https://developer.nvidia.com/cuda-gpus
CUDA_VERSION := $(shell dpkg-query -W -f='$${Version}' nvidia-cuda-toolkit | cut -d. -f1,2)
# List of CUDA level according to CUDA version
ifeq ($(CUDA_VERSION),9.1)
  CUDA_CAP   := 35 37 50 52 53 60 61 70
else ifeq ($(CUDA_VERSION),9.0)
  CUDA_CAP   := 35 37 50 52 53 60 61 70
else ifeq ($(CUDA_VERSION),8.0)
  CUDA_CAP   := 35 37 50 52 53 60 61
else ifeq ($(CUDA_VERSION),7.5)
  CUDA_CAP   := 35 37 50 52 53
else
  $(error Unsupported CUDA $(CUDA_VERSION). Please fix debian/rules)
endif
NVCC_ARCH := $(foreach CAP,$(CUDA_CAP),-gencode=arch=compute_$(CAP),code=\\\"sm_$(CAP),compute_$(CAP)\\\")

# Get version from changelog as well as lsb_release
# to compute unique build version (useful for repo mirroring systems doing file pooling)
PKG_VERSION  := $(shell dpkg-parsechangelog | grep -E '^Version:' | cut -d' ' -f2)
DIST_NAME    := $(shell lsb_release -si)
DIST_RELEASE := $(shell lsb_release -sc)
DIST_VERSION := $(shell lsb_release -sr)
NULL  :=
SPACE := $(NULL) #
DOT   := .
CUDA_CAP_DOT_SEP := $(subst $(SPACE),$(DOT),$(CUDA_CAP))
PKG_VERSION_TAG := $(PKG_VERSION)+$(DIST_NAME).$(DIST_RELEASE).$(DIST_VERSION)+Cuda.$(CUDA_VERSION).Levels.$(CUDA_CAP_DOT_SEP)

# Inspired from configure.sh
CXXFLAGS    := -O3 -D_REENTRANT -falign-functions=16 -falign-jumps=16 -falign-labels=16
CUDA_CFLAGS := -O3 -lineno -Xcompiler -Wall -D_FORCE_INLINES
# Thanks to CUDA, I need really old GCC
ifeq ($(shell dpkg --compare-versions $(CUDA_VERSION) ge 9.0 && echo yes),yes)
  CC          := /usr/bin/gcc-6
  CXX         := /usr/bin/g++-6
else
  CC          := /usr/bin/gcc-4.9
  CXX         := /usr/bin/g++-4.9
endif
# C++11 compat fix for Ubuntu Xenial only
ifeq ($(DIST_RELEASE),xenial)
  CUDA_CFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0
endif

BUILD_VARIANTS = $(shell dh_listpackages)


%:
	dh $@ --with autoreconf --parallel

override_dh_auto_clean:
	sed -i 's|MIN_DEV_DONATE_PERCENT\s.*|MIN_DEV_DONATE_PERCENT 1|' donate.h
	dh_auto_clean
	rm -rf "$(CURDIR)/debian/build"

override_dh_auto_configure:
	sed -i 's|MIN_DEV_DONATE_PERCENT\s.*|MIN_DEV_DONATE_PERCENT 0|' donate.h
	dh_auto_configure -- CXXFLAGS="$(CXXFLAGS)" \
	                     CFLAGS="$(CXXFLAGS)" \
	                     CC="$(CC)" \
	                     CXX="$(CXX)" \
	                     CUDA_CFLAGS="$(CUDA_CFLAGS)" \
	                     --with-nvml=libnvidia-ml.so.1

override_dh_auto_build:
	dh_auto_build -- nvcc_ARCH="$(NVCC_ARCH)"

override_dh_installsystemd:
	dh_installsystemd --name=ccminer

override_dh_installinit:
	dh_installinit --name=ccminer

override_dh_systemd_enable:
	dh_systemd_enable --no-enable

override_dh_systemd_start:
	dh_systemd_start --no-start

override_dh_gencontrol:
	dh_gencontrol -- -v"$(PKG_VERSION_TAG)"
