#!/usr/bin/make -f


# 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)
PKG_VERSION_TAG := $(PKG_VERSION)+$(DIST_NAME).$(DIST_RELEASE).$(DIST_VERSION)


# 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   := 30 35 37 50 52 53 60 61 70
else ifeq ($(CUDA_VERSION),9.0)
  CUDA_CAP   := 30 35 37 50 52 53 60 61 70
else ifeq ($(CUDA_VERSION),8.0)
  CUDA_CAP   := 30 35 37 50 52 53 60 61
else ifeq ($(CUDA_VERSION),7.5)
  CUDA_CAP   := 30 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)\\\")


# 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-
  CXX         := /usr/bin/g++-
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:
	dh_auto_clean
	rm -rf "$(CURDIR)/debian/build"

override_dh_auto_configure:
	dh_auto_configure CXXFLAGS="$(CXXFLAGS)" \
	                  CFLAGS="$(CXXFLAGS)" \
	                   CC="$(CC)" \
	                   CXX="$(CXX)" \
                           CUDA_CFLAGS="$(CUDA_CFLAGS)" ; \

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)"
