#!/bin/sh
#
#	Output a RPM spec file to generate intel-i915 binary package
#

PKG_NAME="intel-i915"
PKG_VER="1.0"
REL_NAME="1"
REL_TYPE=""
KREL=""
KLIB_BUILD=""
KLIB_BUILD_BASE=""
KLIB_BUILD_DIR=""
KLIB_BUILD_DIR_BASE=""
DRM_CONFIG="drm"
BUILD_TYPE=""
CUSTOM_KERN_ID=""
UTS_RELEASE=""
NODRM=

helpFunction()
{
	echo ""
	echo "Usage: $0 -n packagename -v packageversion -r releaseversion -p prerelease/opensource -s buildversion -k KLIB_BUILD Path -a uts release"
	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-s buildversion"
	echo -e "\t-k KLIB_BUILD Path"
	echo -e "\t-a UTS RELEASE"
	echo -e "\t-t custom kernel id"
	exit 1
}

while getopts "n:v:r:p:s:k:a: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" ;;
		k )
			KLIB_BUILD="$OPTARG"
			KLIB_BUILD_BASE=`basename $KLIB_BUILD`
			KLIB_BUILD_DIR=`dirname $KLIB_BUILD`
			KLIB_BUILD_DIR_BASE=`basename $KLIB_BUILD_DIR`
			;;
		a ) UTS_RELEASE="$OPTARG" ;;
		t ) CUSTOM_KERN_ID="$OPTARG" ;;
		? ) helpFunction ;; # Print helpFunction
	esac
done

if [ "$BUILD_TYPE" = "nodrm" ]; then
	DRM_CONFIG="i915_only"
	NODRM=DEL
fi

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
	%define package_name $PKG_NAME
	%define version $PKG_VER
	%define release $REL_NAME

	%define _krel $KREL
	%define kernel_module_directory /lib/modules
	%define kernel_module_package_moddir updates

	Summary: I915 Backports Kernel Module Package
	Name: %{package_name}
	Version: %{version}
	Release: %{release}
	License: GPL
	Group: System Environment/Base
	BuildArch: x86_64
	Vendor: Intel
	Provides: %{package_name}
	Packager: linux-graphics@intel.com
	Requires: intel-dmabuf
	Conflicts: intel-i915-dkms intel-dmabuf-dkms
	Source0: %{package_name}-%{version}-src.tar.gz
	BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root/

	%description
	Out of tree prebuilt intel GPU driver modules.

	%global debug_package %{nil}
	%global _build_id_links none

	%prep
	%setup -q -c
	cp defconfigs/$DRM_CONFIG .config

	%build
	export LEX=flex
	export YACC=bison
	np=`nproc`
	npc=\$(( \$np > 64 ? 64 : \$np ))
$ST_HDR make KLIB=%{kernel_module_directory}/%{_krel} olddefconfig
$ST_HDR make -j\$npc KLIB=%{kernel_module_directory}/%{_krel} BUILD_CONFIG=$BUILD_TYPE CUSTOM_KERN_ID=$CUSTOM_KERN_ID
$LC_HDR make KLIB=$KLIB_BUILD KLIB_BUILD=$KLIB_BUILD olddefconfig
$LC_HDR make -j\$npc KLIB=$KLIB_BUILD KLIB_BUILD=$KLIB_BUILD BUILD_CONFIG=$BUILD_TYPE CUSTOM_KERN_ID=$CUSTOM_KERN_ID

	%install
	if [ "%{buildroot}" != "/" ]; then
		rm -rf %{buildroot}
	fi
	mkdir -p %{buildroot}%{kernel_module_directory}/%{_krel}/%{kernel_module_package_moddir}/%{name}
	find . -name "*.ko" -exec strip -g {} \;
	find . -name "*.ko" -exec xz -z {} \;
	find . -name "*.ko.xz" -exec install -m 0500 {} %{buildroot}%{kernel_module_directory}/%{_krel}/%{kernel_module_package_moddir}/%{name} \;


$NODRM	%package -n intel-dmabuf
$NODRM	Summary: DMA-BUF Backports Kernel Module Package
$NODRM	Group: System Environment/Base
$NODRM	%description -n intel-dmabuf
$NODRM	Out of tree prebuilt dmabuf driver modules

	%files
	%defattr(644,root,root)
$NODRM	%exclude %{kernel_module_directory}/%{_krel}/%{kernel_module_package_moddir}/%{name}/dmabuf*
	%{kernel_module_directory}/%{_krel}/%{kernel_module_package_moddir}/%{name}/

$NODRM	%files -n intel-dmabuf
$NODRM	%defattr(644,root,root)
$NODRM	%{kernel_module_directory}/%{_krel}/%{kernel_module_package_moddir}/%{name}/dmabuf*

	%clean
	if [ "%{buildroot}" != "/" ]; then
		rm -rf %{buildroot}
	echo "clean"
	fi

	%post
	echo "Post Installation"
	depmod -a

	%postun
	echo "Post Uninstalling"
	depmod -a

EOF
