#!/bin/sh
#
#       Output a Rules file for debian package
#

PKG_NAME="intel-i915-prerelease"
PKG_VER="1.0"
REL_NAME="1"
REL_TYPE=""
PKG_TYPE=""
KREL=""
KLIB_BUILD=""
KLIB_BUILD_BASE=""
KLIB_BUILD_DIR=""
KLIB_BUILD_DIR_BASE=""
BUILD_TYPE=""
UTS_RELEASE=""

NP=`nproc`
NPC=$(( $NP > 64 ? 64 : $NP ))

helpFunction()
{
	echo ""
	echo "Usage: $0 -n packagename -v packageversion -r releaseversion -p prerelease/opensource -z Package Type -k KLIB_BUILD -a uts release -s buildversion -t custom kernel id"
	echo -e "\t-n packagename"
	echo -e "\t-v packageversion"
	echo -e "\t-r releaseversion"
	echo -e "\t-p Release Type : prerelease/opensource"
	echo -e "\t-z Package Type : binary/dkms"
	echo -e "\t-k KLIB_BUILD Path"
	echo -e "\t-a UTS RELEASE"
	echo -e "\t-s buildversion"
	echo -e "\t-t custom kernel id"
	exit 1
}

while getopts "n:v:r:p:z:k:s:a:t:" opt
do
	case "$opt" in
		n ) PKG_NAME="$OPTARG" ;;
		v ) PKG_VER="$OPTARG" ;;
		r ) REL_NAME="$OPTARG" ;;
		p ) REL_TYPE="$OPTARG" ;;
		z )
			PKG_TYPE="$OPTARG"
			if [ "$PKG_TYPE" = "binary" ]; then
				DKMS=DEL
				BIN=
			else
				DKMS=
				BIN=DEL
			fi
			;;
		k )
			 KLIB_BUILD="$OPTARG"
			 KLIB_BUILD_BASE=`basename $KLIB_BUILD`
			 KLIB_BUILD_DIR=`dirname $KLIB_BUILD`
			 KLIB_BUILD_DIR_BASE=`basename $KLIB_BUILD_DIR`
			 ;;
		s) BUILD_TYPE="$OPTARG" ;;
		a ) UTS_RELEASE="$OPTARG" ;;
		t ) CUSTOM_KERN_ID="$OPTARG" ;;
		?) helpFunction ;; # Print helpFunction
	esac
done

if [ "$KLIB_BUILD_BASE" = "build" ]; then
	KREL=$KLIB_BUILD_DIR_BASE
	ST_HDR=
	LC_HDR=DEL
else
	KREL=$UTS_RELEASE
	ST_HDR=DEL
	LC_HDR=
fi

sed -e '/^DEL/d' -e 's/^\t//' <<EOF
	#!/usr/bin/make -f

	# export DH_VERBOSE = 1
	include /usr/share/dpkg/pkg-info.mk

	_krel=$KREL
	tmpdir=debian/$PKG_NAME

	BACKPORT_PACKAGE_NAME=$PKG_NAME
	BACKPORT_PACKAGE_VERSION=$PKG_VER
	GENERATED_PKG_FILES= \\
$BIN	    debian/$PKG_NAME.install
$DKMS	    debian/$PKG_NAME.install \\
$DKMS	    debian/$PKG_NAME.dkms

	%:
$DKMS		dh \$@ --with dkms
$BIN		dh \$@

$BIN	build:
$BIN		cp defconfigs/i915_only .config;
$BIN$ST_HDR		\$(MAKE) -j$NPC BUILD_CONFIG=$BUILD_TYPE KLIB=/lib/modules/\$(_krel) olddefconfig;
$BIN$ST_HDR		\$(MAKE) -j$NPC KLIB=/lib/modules/\$(_krel) BUILD_CONFIG=$BUILD_TYPE CUSTOM_KERN_ID=$CUSTOM_KERN_ID
$BIN$LC_HDR		\$(MAKE) -j$NPC BUILD_CONFIG=$BUILD_TYPE KLIB=$KLIB_BUILD KLIB_BUILD=$KLIB_BUILD olddefconfig
$BIN$LC_HDR		\$(MAKE) -j$NPC KLIB=$KLIB_BUILD KLIB_BUILD=$KLIB_BUILD BUILD_CONFIG=$BUILD_TYPE CUSTOM_KERN_ID=$CUSTOM_KERN_ID

$BIN	clean:
$BIN		\$(MAKE) mrproper
$BIN	binary:
$BIN		mkdir -p \$(tmpdir)/lib/modules/\$(_krel)/updates/
$BIN		find ./ -name '*.ko' -exec cp -prv '{}' '\$(tmpdir)/lib/modules/\$(_krel)/updates/' ';'
$BIN		sed '1d' debian/package.postinst.in > debian/$PKG_NAME.postinst
$BIN		sed '1d' debian/package.postrm.in > debian/$PKG_NAME.postrm
$BIN		dh_gencontrol
$BIN		dh_installdeb
$BIN		dh_builddeb

$DKMS	override_dh_auto_configure:
$DKMS	override_dh_auto_build:
$DKMS	override_dh_auto_test:
$DKMS	override_dh_auto_install:
$DKMS	override_dh_auto_clean:
$DKMS
$DKMS	override_dh_clean:
$DKMS		rm -f \$(GENERATED_PKG_FILES)
$DKMS		dh_clean

$DKMS	# Be careful with these names, they must match the pkg name or you'll get an empty .deb
$DKMS	override_dh_install: debian/$PKG_NAME.install
$DKMS		dh_install --exclude=.gitignore

$DKMS	override_dh_dkms: debian/$PKG_NAME.dkms
$DKMS		dh_dkms -V \$(BACKPORT_PACKAGE_VERSION)
$DKMS		sed '1d' debian/package.postinst.in >> debian/$PKG_NAME.postinst.debhelper
$DKMS		sed '1d' debian/package.postrm.in >> debian/$PKG_NAME.prerm.debhelper

$DKMS	\$(GENERATED_PKG_FILES) : \$(GENERATED_PKG_FILES:=.in) debian/rules
$DKMS		sed -e 's,@BACKPORT_PACKAGE_NAME@,\$(BACKPORT_PACKAGE_NAME),g' \\
$DKMS		    -e 's,@BACKPORT_PACKAGE_VERSION@,\$(BACKPORT_PACKAGE_VERSION),g' \\
$DKMS		    <\$(@:=.in) >\$@
EOF
