#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# This version is for a hypothetical package that can build a kernel modules
# architecture-dependant package via make-kpkg, as well as an
# architecture-independent module source package, and other packages
# either dep/indep for things like common files or userspace components
# needed for the kernel modules.

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

WITH_DKMS ?= 1
MLXNUMC = $(shell grep ^processor /proc/cpuinfo | wc -l)
NJOBS ?= $(shell if [ $(MLXNUMC) -lt 16 ]; then echo $(MLXNUMC); else echo 16; fi)

pname:=knem
ifeq ($(WITH_DKMS),1)
pdkms:=$(pname)-dkms
else
pdkms:=$(pname)-modules
endif

pversion := $(shell dpkg-parsechangelog | sed -n 's/^Version: *\([^-]\+\)-.\+/\1/p')
prel := $(shell dpkg-parsechangelog | sed -n 's/^Version: *\([^-]\+\)-\(.\+\)/\2/p')

DIST_NAME := $(shell lsb_release -si)
DIST_RELEASE := $(DIST_NAME)/$(shell lsb_release -sc)

kernelver ?= $(shell uname -r)
kernelver1 = $(shell echo $(kernelver) | sed -e 's/_/-/g')
kernel_source_dir ?= "/lib/modules/$(kernelver)/build"
kernel_source_dir_soruce ?= "/lib/modules/$(kernelver)/source"

export KSRC := $(kernel_source_dir)
export KVERSION := $(kernelver)
export INSTALL_MOD_DIR := updates
export INSTALL_MOD_PATH := $(CURDIR)/debian/$(pdkms)
export MODULE_DESTDIR := /lib/modules/$(kernelver)/$(INSTALL_MOD_DIR)
export DESTDIR := $(CURDIR)/debian/$(pdkms)

%:
ifeq ($(WITH_DKMS),1)
	dh $@ --with dkms
else
	dh $@
endif

override_dh_auto_clean:

override_dh_auto_configure:
	@echo Building for $(kernelver)
	find . -type f -exec touch -t 200012201010 '{}' \; || true
ifeq ($(WITH_DKMS),1)
	$(CURDIR)/configure --with-linux-release=$(kernelver) --prefix=/opt/$(pname)-$(pversion)
else
	if [ -e "$(kernel_source_dir_soruce)" ]; then \
		$(CURDIR)/configure --with-linux-release=$(kernelver) --with-linux=$(kernel_source_dir_soruce) --with-linux-build=$(kernel_source_dir) --prefix=/opt/$(pname)-$(pversion); \
	else \
		$(CURDIR)/configure --with-linux-release=$(kernelver) --with-linux=$(kernel_source_dir) --with-linux-build=$(kernel_source_dir) --prefix=/opt/$(pname)-$(pversion); \
	fi
endif

override_dh_auto_build:
	make -j$(NJOBS)

override_dh_auto_test:

override_dh_auto_install:
ifneq ($(WITH_DKMS),1)
	dh_installdirs -p$(pdkms)  usr/lib/pkgconfig
	dh_installdirs -p$(pdkms)  etc/udev/rules.d
	make install DESTDIR=$(DESTDIR) INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) INSTALL_MOD_PATH=$(INSTALL_MOD_PATH) KERNELRELEASE=$(kernelver)
	MODULE_DESTDIR=$(MODULE_DESTDIR) DESTDIR=$(DESTDIR) KVERSION=$(kernelver) $(DESTDIR)/opt/$(pname)-$(pversion)/sbin/knem_local_install
	cp -f $(pname).pc 	debian/$(pdkms)/usr/lib/pkgconfig
	find $(INSTALL_MOD_PATH) \( -type f -a -name "modules.*" \) -delete
else
	find driver tools \( -type f -name "*.ko" -o -name "*.ko.cmd" \) -exec /bin/rm -f '{}' \;
	find driver tools \( -type f -name "*.o" -o -name "*.o.cmd" \) -exec /bin/rm -f '{}' \;

	# For dkms
	dh_installdirs -p$(pdkms)  usr/src/$(pname)-$(pversion)
	cp -a common 		debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a driver    	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a tools	     	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a doc               debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a autogen.sh  	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a aclocal.m4	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a config.guess	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a config.sub	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a configure		debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a configure.ac	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a depcomp		debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a install-sh	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a Makefile.in	debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a Makefile.am       debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a dkms.conf         debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a missing           debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a knem.pc.in        debian/$(pdkms)/usr/src/$(pname)-$(pversion)
	cp -a compile		debian/$(pdkms)/usr/src/$(pname)-$(pversion) || true
	cp -a test-driver	debian/$(pdkms)/usr/src/$(pname)-$(pversion) || true

	# For tools
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/bin
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/lib/pkgconfig
	install -m 0755 tools/knem_collectives        debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_collectives
	install -m 0755 tools/knem_cost               debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_cost
	install -m 0755 tools/knem_loopback           debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_loopback
	install -m 0755 tools/knem_multifd_test       debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_multifd_test
	install -m 0755 tools/knem_notify_fd_test     debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_notify_fd_test
	install -m 0755 tools/knem_pingpong           debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_pingpong
	install -m 0755 tools/knem_region_cost        debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_region_cost
	install -m 0755 tools/knem_status_test        debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_status_test
	install -m 0755 tools/knem_vect_test          debian/$(pname)/opt/$(pname)-$(pversion)/bin/knem_vect_test
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/etc
	install -m 0644 tools/10-knem.rules           debian/$(pname)/opt/$(pname)-$(pversion)/etc/10-knem.rules
	dh_installdirs -p$(pname)  etc/udev/rules.d/
	install -m 0644 tools/10-knem.rules           debian/$(pname)/etc/udev/rules.d/10-knem.rules
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/share/doc/knem
	install -m 0644 doc/knem-api.html             debian/$(pname)/opt/$(pname)-$(pversion)/share/doc/knem/knem-api.html
	install -m 0644 doc/knem.html                 debian/$(pname)/opt/$(pname)-$(pversion)/share/doc/knem/knem.html
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/sbin
	install -m 0755 tools/knem_local_install      debian/$(pname)/opt/$(pname)-$(pversion)/sbin/knem_local_install
	dh_installdirs -p$(pname)  opt/$(pname)-$(pversion)/include
	install -m 0644 common/knem_io.h              debian/$(pname)/opt/$(pname)-$(pversion)/include/knem_io.h
endif

override_dh_installinit:


ifneq ($(WITH_DKMS),1)
override_dh_gencontrol:
	dh_gencontrol -- -v$(pversion)-$(prel).kver.$(kernelver1)
endif
