#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

nv_variant_Debian	+= tesla-440
nv_variant_Debian	+= tesla-418
nv_variant_Debian	+= legacy-390xx
nv_variant_Debian	+= legacy-340xx

nv_driver_Debian	+= nvidia-driver
nv_driver_Debian	+= $(foreach variant,$(nv_variant_Debian),nvidia-$(variant)-driver)
nv_driver_Debian	+= nvidia-driver-any
nv_driver_Debian	+= nvidia-kernel-dkms
nv_driver_Debian	+= $(foreach variant,$(nv_variant_Debian),nvidia-$(variant)-kernel-dkms)

nv_module_Debian	+= nvidia
nv_module_Debian	+= nvidia-current
nv_module_Debian	+= $(foreach variant,$(nv_variant_Debian),nvidia-$(variant))

nv_version_Ubuntu	+= 440
nv_version_Ubuntu	+= 435
nv_version_Ubuntu	+= 430
nv_version_Ubuntu	+= 418
nv_version_Ubuntu	+= 410
nv_version_Ubuntu	+= 390
nv_version_old_Ubuntu	+= 387 384 381 378 375 367 364 361 358 355 352 349 346 343 340 337 334 331 325 319 313 310 304

nv_driver_Ubuntu	+= nvidia
nv_driver_Ubuntu	+= nvidia-current
nv_driver_Ubuntu	+= nvidia-current-updates
nv_driver_Ubuntu	+= nvidia-driver-binary
nv_driver_Ubuntu	+= $(foreach version,$(nv_version_Ubuntu),nvidia-driver-$(version))
nv_driver_Ubuntu	+= $(foreach version,$(nv_version_old_Ubuntu),nvidia-$(version) nvidia-$(version)-updates nvidia-experimental-$(version))

nv_module_Ubuntu	+= $(filter-out nvidia-driver-binary,$(nv_driver_Ubuntu))


VENDOR	:= $(shell dpkg-vendor --derives-from Ubuntu && echo Ubuntu || echo Debian)

bbnv_depends_Debian	 = glx-alternative-nvidia (>= 0.6.92)
bbnv_depends_Ubuntu	 =

MAINTSCRIPTS_GENERATED		 = $(MAINTSCRIPTS_GENERATED.$(VENDOR))
MAINTSCRIPTS_GENERATED		+= debian/bumblebee.conf
MAINTSCRIPTS_GENERATED.Debian	+= debian/bumblebee-nvidia.postinst
MAINTSCRIPTS_GENERATED.Ubuntu	+= debian/bumblebee-nvidia.postinst
MAINTSCRIPTS_GENERATED.Ubuntu	+= debian/bumblebee-nvidia.postrm

DPKG_EXPORT_BUILDFLAGS = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
include /usr/share/dpkg/default.mk

%:
	dh $@

configure-for-Ubuntu:
	dh_auto_configure -- \
		CONF_DRIVER_MODULE_NVIDIA=nvidia \
		CONF_LDPATH_NVIDIA=/usr/lib/nvidia-current:/usr/lib32/nvidia-current:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu \
		CONF_MODPATH_NVIDIA=/usr/lib/nvidia-current/xorg,/usr/lib/xorg/modules \
		CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \
		CONF_XORG_BINARY=/usr/lib/xorg/Xorg

configure-for-Debian:
	dh_auto_configure -- \
		CONF_DRIVER_MODULE_NVIDIA=nvidia \
		CONF_LDPATH_NVIDIA=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu \
		CONF_MODPATH_NVIDIA=/usr/lib/nvidia,/usr/lib/xorg/modules \
		CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \
		CONF_XORG_BINARY=/usr/lib/xorg/Xorg

override_dh_auto_configure: $(MAINTSCRIPTS_GENERATED)
override_dh_auto_configure: configure-for-$(VENDOR)

override_dh_auto_install:
	dh_auto_install --destdir=debian/bumblebee/

override_dh_clean:
	dh_clean
	$(RM) $(MAINTSCRIPTS_GENERATED)

override_dh_install:
	dh_install

	# Install bash-completion file to non-obsolete directory
	mkdir -p debian/bumblebee/usr/share/bash-completion/completions/
	mv debian/bumblebee/etc/bash_completion.d/* \
	   debian/bumblebee/usr/share/bash-completion/completions/
	rm -rf debian/bumblebee/etc/bash_completion.d/

override_dh_installinit:
	dh_installinit --name=bumblebeed

override_dh_bugfiles:
	dh_bugfiles -A

override_dh_gencontrol:
	dh_gencontrol -- -V'nvidia:Depends=$(bbnv_depends_$(VENDOR)), $(foreach d,$(nv_driver_$(VENDOR)),$(d) |)'

debian/%: debian/%.$(VENDOR)
	cp -a $< $@

debian/bumblebee.conf: debian/rules
	$(RM) $@
	echo '# This file is installed by bumblebee, do NOT edit!' >> $@
	echo '# to be used by kmod / module-init-tools, and installed in /etc/modprobe.d/' >> $@
	echo '# or equivalent' >> $@
	echo '' >> $@
	echo '# do not automatically load nouveau as it may prevent nvidia from loading' >> $@
	echo 'blacklist nouveau' >> $@
	echo '' >> $@
	echo '# do not automatically load nvidia as it'"'"'s unloaded anyway when bumblebeed' >> $@
	echo '# starts and may fail bumblebeed to disable the card in a race condition.' >> $@
	for module in $(nv_module_$(VENDOR)) ; do echo "blacklist $$module" >> $@ ; done
