#!/bin/sh
#
# Creates a dkms.conf file

PKG_NAME="intel-i915-dkms-prerelease"
PKG_VER="1.0"
REL_NAME="1"
REL_TYPE=""

helpFunction()
{
	echo ""
	echo "Usage: $0 -n packagename -v packageversion -r releaseversion -p prerelease/opensource"
	echo -e "\t-n packagename"
	echo -e "\t-v packageversion"
	echo -e "\t-r releaseversion"
	echo -e "\t-p prerelease/opensource"
	echo -e "\t-s buildversion"
	echo -e "\t-t custom kernel id"
	exit 1
}

while getopts "n:v:r:p:s:t:" opt
do
	case "$opt" in
		n ) PKG_NAME="$OPTARG" ;;
		v ) PKG_VER="$OPTARG" ;;
		r ) REL_NAME="$OPTARG" ;;
		p ) REL_TYPE="$OPTARG" ;;
		s ) BUILD_TYPE="$OPTARG" ;;
		t ) CUSTOM_KERN_ID="$OPTARG" ;;
		? ) helpFunction ;;
	esac
done

# We can label the here-doc lines for conditional output to the conf file
#
# Labels:
#  $ST: this line is added only when selftest is enabled
#
sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
	PACKAGE_NAME=$PKG_NAME
	PACKAGE_VERSION=$PKG_VER-$REL_NAME
	AUTOINSTALL="yes"

	BUILT_MODULE_NAME[0]="compat"
	BUILT_MODULE_LOCATION[0]="compat"
	DEST_MODULE_LOCATION[0]="/updates"

	BUILT_MODULE_NAME[1]="i915"
	BUILT_MODULE_LOCATION[1]="drivers/gpu/drm/i915"
	DEST_MODULE_LOCATION[1]="/updates"

	BUILT_MODULE_NAME[2]="i915_spi"
	BUILT_MODULE_LOCATION[2]="drivers/gpu/drm/i915"
	DEST_MODULE_LOCATION[2]="/updates"

	BUILT_MODULE_NAME[3]="iaf"
	BUILT_MODULE_LOCATION[3]="drivers/gpu/drm/i915/fabric"
	DEST_MODULE_LOCATION[3]="/updates"

	BUILT_MODULE_NAME[4]="mei"
	BUILT_MODULE_LOCATION[4]="drivers/misc/mei/"
	DEST_MODULE_LOCATION[4]="/updates"

	BUILT_MODULE_NAME[5]="mei-me"
	BUILT_MODULE_LOCATION[5]="drivers/misc/mei/"
	DEST_MODULE_LOCATION[5]="/updates"

	BUILT_MODULE_NAME[6]="mei-gsc"
	BUILT_MODULE_LOCATION[6]="drivers/misc/mei/"
	DEST_MODULE_LOCATION[6]="/updates"

	BUILT_MODULE_NAME[7]="mei_wdt"
	BUILT_MODULE_LOCATION[7]="drivers/watchdog/"
	DEST_MODULE_LOCATION[7]="/updates"

	BUILT_MODULE_NAME[8]="mei_hdcp"
	BUILT_MODULE_LOCATION[8]="drivers/misc/mei/hdcp/"
	DEST_MODULE_LOCATION[8]="/updates"

	BUILT_MODULE_NAME[9]="mei_pxp"
	BUILT_MODULE_LOCATION[9]="drivers/misc/mei/pxp/"
	DEST_MODULE_LOCATION[9]="/updates"

	BUILT_MODULE_NAME[10]="mei_iaf"
	BUILT_MODULE_LOCATION[10]="drivers/misc/mei/iaf/"
	DEST_MODULE_LOCATION[10]="/updates"

	BUILT_MODULE_NAME[11]="intel_vsec"
	BUILT_MODULE_LOCATION[11]="drivers/platform/x86/intel"
	DEST_MODULE_LOCATION[11]="/updates"

	BUILT_MODULE_NAME[12]="pmt_class"
	BUILT_MODULE_LOCATION[12]="drivers/platform/x86/intel/pmt"
	DEST_MODULE_LOCATION[12]="/updates"

	BUILT_MODULE_NAME[13]="pmt_telemetry"
	BUILT_MODULE_LOCATION[13]="drivers/platform/x86/intel/pmt"
	DEST_MODULE_LOCATION[13]="/updates"

	BUILT_MODULE_NAME[14]="pmt_crashlog"
	BUILT_MODULE_LOCATION[14]="drivers/platform/x86/intel/pmt"
	DEST_MODULE_LOCATION[14]="/updates"

	# Find out how many CPU cores can be use if we pass appropriate -j option to make.
	# DKMS could use all cores on multicore systems to build the kernel module.
	num_cpu_cores()
	{
		if [ -x /usr/bin/nproc ]; then
			np=`nproc`
			if [ "\$np" -le "64" ]; then
				echo "\$np"
			else
				echo "64"
			fi
		else
			echo "1"
		fi
	}

	if [ "$BUILD_TYPE" == "CUSTOM_KERN_1" ]; then
	MAKE="export LEX=flex; export YACC=bison; cp defconfigs/i915 .config; 'make' -j\$(num_cpu_cores) KLIB=/lib/modules/\$kernelver olddefconfig; 'make' -j\$(num_cpu_cores) KLIB=/lib/modules/\$kernelver BUILD_CONFIG=$BUILD_TYPE CUSTOM_KERN_ID=$CUSTOM_KERN_ID"
	else
	MAKE="export LEX=flex; export YACC=bison; cp defconfigs/i915 .config; 'make' -j\$(num_cpu_cores) KLIB=/lib/modules/\$kernelver olddefconfig; 'make' -j\$(num_cpu_cores) KLIB=/lib/modules/\$kernelver"
	fi
	CLEAN="export LEX=flex; 'make' clean"
EOF
