#!/usr/bin/make -f

# alsa-driver's debian/rules.
# Substanially rewritten by Steve Kowalik <stevenk@debian.org>
# Substanially rewritten by Thomas Hood <jdthood@yahoo.co.uk>

export DH_VERBOSE=1

SHELL := /bin/bash
# Bwahaha, let's play "Fool dpatch"
PACKAGE := ALSA

SRC_DIR := debian/alsa-source/usr/src/modules/alsa-driver
INSTALL_UAG := -o root -g audio

include /usr/share/dpatch/dpatch.make

clean: unpatch
	dh_testdir
	dh_testroot
	debconf-updatepo
	-$(RM) build-stamp
	-$(RM) include/isapnp.h
	-$(RM) -r debian/patched
	-$(RM) debian/files
	-$(RM) debian/OSS-module-list_cleaned
	-$(RM) debian/ALSA-module-list_cleaned
	-$(RM) debian/ALSA-card-list_cleaned
	-$(RM) debian/ALSA-card-list_cleaned_nobrackets
	-$(RM) debian/ALSA-card-list_cleaned_nodescriptions
	-$(RM) debian/ALSA-card-list_needingpostinstall
	-$(RM) debian/ALSA-card-list_modem
	-$(RM) debian/ALSA-card-list_tv
	dh_clean -k

configure: patch configure-stamp
configure-stamp:
	dh_testdir
	touch configure-stamp

build: configure build-stamp
build-stamp:
	touch build-stamp

binary: binary-indep binary-arch

binary-indep: DH_OPTIONS=-i
binary-indep: build-stamp build-source
	dh_testdir
	dh_testroot
	dh_installdirs
	install $(INSTALL_UAG) -m755 debian/alsa-base.modprobe-post-install \
		debian/alsa-base/lib/alsa/modprobe-post-install
	install $(INSTALL_UAG) -m755 debian/alsa-base.apm \
		debian/alsa-base/etc/apm/scripts.d/alsa
	install $(INSTALL_UAG) -m755 snddevices \
		debian/alsa-base/usr/share/alsa-base/snddevices
	install $(INSTALL_UAG) -m755 debian/alsa-base.init \
		debian/alsa-base/etc/init.d/alsa
	install $(INSTALL_UAG) -m644 debian/alsa-base.defaultfile \
		debian/alsa-base/usr/share/alsa-base/alsa.default
	install $(INSTALL_UAG) -m644 debian/alsa-source.conf \
		debian/alsa-source/usr/share/alsa-source/alsa-source.conf
	install $(INSTALL_UAG) -m755 debian/program-wrapper \
		debian/alsa-base/usr/share/alsa-base
	### Generate lists
	cat debian/OSS-module-list \
		| sed -e 's/^[[:space:]]*//' -e 's/#.*//' -e '/^$$/d' \
		> debian/OSS-module-list_cleaned
	cat debian/ALSA-module-list \
		| sed -e 's/^[[:space:]]*//' -e 's/#.*//' -e '/^$$/d' \
		> debian/ALSA-module-list_cleaned
	cat debian/ALSA-card-list \
		| sed -e 's/^[[:space:]]*//' -e 's/#.*//' -e 's/,//' -e '/^$$/d' \
		> debian/ALSA-card-list_cleaned
	cat debian/ALSA-card-list_cleaned \
		| sed -e 's/ \[[^]]*\]//' \
		> debian/ALSA-card-list_cleaned_nobrackets
	cat debian/ALSA-card-list_cleaned \
		| sed -e 's/ .*$$//' \
		> debian/ALSA-card-list_cleaned_nodescriptions
	cat debian/ALSA-card-list_cleaned \
		| sed -e '/MODEM/d' \
		      -e '/TV/d' \
		      -e '/UNREAL/d' \
		      -e '/NOPOSTINSTALL/d' \
		> debian/ALSA-card-list_needingpostinstall
	cat debian/ALSA-card-list_cleaned \
		| grep -e 'MODEM' \
		> debian/ALSA-card-list_modem
	cat debian/ALSA-card-list_cleaned \
		| grep -e 'TV' \
		> debian/ALSA-card-list_tv
	### Generate alsa-source.templates
	cp -p debian/alsa-source.templates debian/alsa-source.templates_BAK
	cat debian/alsa-source.templates_BAK \
		| sed "s%_CARDS_WITH_DESCRIPTIONS_%$$(echo $$(sed -e '$$!s/$$/, /' debian/ALSA-card-list_cleaned_nobrackets))%" \
		| sed "s%_CARDS_WITHOUT_DESCRIPTIONS_%$$(echo $$(sed -e '$$!s/$$/, /' debian/ALSA-card-list_cleaned_nodescriptions))%" \
		> debian/alsa-source.templates
	### Install blacklists and related
	install $(INSTALL_UAG) -m644 debian/OSS-module-list_cleaned \
		debian/linux-sound-base/usr/share/linux-sound-base/OSS-module-list
	install $(INSTALL_UAG) -m644 debian/OSS-module-list_cleaned \
		debian/linux-sound-base/lib/linux-sound-base/noOSS.hotplug.blacklist
	install $(INSTALL_UAG) -m644 debian/ALSA-module-list_cleaned \
		debian/linux-sound-base/usr/share/linux-sound-base/ALSA-module-list
	install $(INSTALL_UAG) -m644 debian/ALSA-module-list_cleaned \
		debian/linux-sound-base/lib/linux-sound-base/noALSA.hotplug.blacklist
	cat debian/OSS-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/skip /' \
		> debian/linux-sound-base/lib/linux-sound-base/noOSS.discover1.conf
	cat debian/ALSA-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/skip /' \
		> debian/linux-sound-base/lib/linux-sound-base/noALSA.discover1.conf
	cat debian/OSS-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/alias /' -e 's/$$/ off/' \
		> debian/linux-sound-base/lib/linux-sound-base/noOSS.modutils.conf
	cat debian/ALSA-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/alias /' -e 's/$$/ off/' \
		> debian/linux-sound-base/lib/linux-sound-base/noALSA.modutils.conf
	cat debian/OSS-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/blacklist /' \
		> debian/linux-sound-base/lib/linux-sound-base/noOSS.modprobe.conf
	cat debian/ALSA-module-list_cleaned \
		| sed -e 's/[[:space:]].*//' -e 's/^/blacklist /' \
		> debian/linux-sound-base/lib/linux-sound-base/noALSA.modprobe.conf
	echo '# Uncomment these entries in order to blacklist unwanted modem drivers' \
		> debian/alsa-base/etc/hotplug/blacklist.d/alsa-base
	cat debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's/^/# snd-/' \
		>> debian/alsa-base/etc/hotplug/blacklist.d/alsa-base
	echo '# Uncomment these entries in order to blacklist unwanted modem drivers' \
		> debian/alsa-base/etc/discover.d/alsa-base
	cat debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's/^/# skip snd-/' \
		>> debian/alsa-base/etc/discover.d/alsa-base
	echo '# Uncomment these entries in order to blacklist unwanted modem drivers' \
		> debian/alsa-base/etc/modutils/alsa-base-blacklist
	cat debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's/^/# alias snd-/' -e 's/$$/ off/' \
		>> debian/alsa-base/etc/modutils/alsa-base-blacklist
	echo '# Uncomment these entries in order to blacklist unwanted modem drivers' \
		> debian/alsa-base/etc/modprobe.d/alsa-base-blacklist
	cat debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's/^/# blacklist snd-/' \
		>> debian/alsa-base/etc/modprobe.d/alsa-base-blacklist
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.OSS.discover2.conf \
		debian/linux-sound-base/lib/linux-sound-base/OSS.discover2.conf
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.OSS.discover2.list.xml \
		debian/linux-sound-base/lib/discover/linux-sound-base.OSS.list.xml
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.OSS.discover2.pci-device.xml \
		debian/linux-sound-base/lib/discover/linux-sound-base.OSS.pci-device.xml
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.ALSA.discover2.conf \
		debian/linux-sound-base/lib/linux-sound-base/ALSA.discover2.conf
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.ALSA.discover2.list.xml \
		debian/linux-sound-base/lib/discover/linux-sound-base.ALSA.list.xml
	install $(INSTALL_UAG) -m644 debian/linux-sound-base.ALSA.discover2.pci-device.xml \
		debian/linux-sound-base/lib/discover/linux-sound-base.ALSA.pci-device.xml
	### Install module loader configuration files
	install $(INSTALL_UAG) -m644 debian/alsa-base.modutils \
		debian/alsa-base/etc/modutils/alsa-base
	echo "# Cause a script to be run after card driver module initialization" \
		>> debian/alsa-base/etc/modutils/alsa-base
	cat debian/ALSA-card-list_needingpostinstall \
		| sed -e 's/[[:space:]].*//' -e 's%\(.*\)%post-install snd-\1 /lib/alsa/modprobe-post-install snd-\1%' \
		>> debian/alsa-base/etc/modutils/alsa-base
	# The default index of these drivers is -2 as of ALSA 1.0.9
	echo "# Prevent abnormal drivers from grabbing index 0" \
		>> debian/alsa-base/etc/modutils/alsa-base
	cat debian/ALSA-card-list_tv debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's%\(.*\)%options snd-\1 index=-2%' \
		>> debian/alsa-base/etc/modutils/alsa-base
	install $(INSTALL_UAG) -m644 debian/alsa-base.modprobe \
		debian/alsa-base/etc/modprobe.d/alsa-base
	echo "# Cause a script to be run after card driver module initialization" \
		>> debian/alsa-base/etc/modprobe.d/alsa-base
	cat debian/ALSA-card-list_needingpostinstall \
		| sed -e 's/[[:space:]].*//' -e 's%\(.*\)%install snd-\1 /sbin/modprobe --ignore-install snd-\1 $$CMDLINE_OPTS \&\& /lib/alsa/modprobe-post-install snd-\1%' \
		>> debian/alsa-base/etc/modprobe.d/alsa-base
	# The default index of these drivers is -2 as of ALSA 1.0.9
	echo "# Prevent abnormal drivers from grabbing index 0" \
		>> debian/alsa-base/etc/modprobe.d/alsa-base
	cat debian/ALSA-card-list_tv debian/ALSA-card-list_modem \
		| sed -e 's/[[:space:]].*//' -e 's%\(.*\)%options snd-\1 index=-2%' \
		>> debian/alsa-base/etc/modprobe.d/alsa-base
	### Install debconf templates
	dh_installdebconf
	cp -p debian/alsa-source.templates_BAK debian/alsa-source.templates && rm -f debian/alsa-source.templates_BAK
	for i in `ls debian/*.lintian-overrides`; do \
		install -p -m 0644 -o root -g root $$i \
		debian/`basename $$i .lintian-overrides`/usr/share/lintian/overrides/`basename $$i .lintian-overrides`; \
	done
	install -p -m 0644 -o root -g root debian/alsa-base.bug.presubj \
		debian/alsa-base/usr/share/bug/alsa-base/presubj
	install -p -m 0644 -o root -g root debian/alsa-source.bug.presubj \
		debian/alsa-source/usr/share/bug/alsa-source/presubj
	install -p -m 0644 -o root -g root debian/alsa-base.bug.control \
		debian/alsa-base/usr/share/bug/alsa-base/control
	install -p -m 0644 -o root -g root debian/alsa-source.bug.control \
		debian/alsa-source/usr/share/bug/alsa-source/control
	install -p -m 0755 -o root -g root debian/alsa-base.bug.script \
		debian/alsa-base/usr/share/bug/alsa-base/script
	install -p -m 0755 -o root -g root debian/alsa-source.bug.script \
		debian/alsa-source/usr/share/bug/alsa-source/script
	dh_installdocs
	dh_installman
	dh_installchangelogs -i
	dh_installchangelogs -palsa-source -palsa-base debian/changelog.ALSA
	dh_installdocs -p alsa-base debian/changelog-old.Debian
	mv debian/alsa-source/usr/share/doc/alsa-source/patch-stamp \
		debian/alsa-source/usr/share/doc/alsa-source/PATCHES.Debian
	mkdir debian/alsa-base/usr/share/doc/alsa-base/driver
	mv debian/alsa-base/usr/share/doc/alsa-base/Documentation/*.txt \
		debian/alsa-base/usr/share/doc/alsa-base/driver
	mv debian/alsa-base/usr/share/doc/alsa-base/Documentation/*.html \
		debian/alsa-base/usr/share/doc/alsa-base/driver
	rm -rf debian/alsa-base/usr/share/doc/alsa-base/Documentation
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

# Nothing to do 
binary-arch:

build-source:
	mkdir -p $(SRC_DIR)/debian/bug
	find . \( -path './debian' -o -name 'CVS' -o -name '.cvsignore'  -o -name '*-stamp' \) -prune -o -print | cpio -admp $(SRC_DIR)
	#Can't use upstream's makefiles because we don't run configure
	#-$(MAKE) -C $(SRC_DIR) clean
	chown -R root:src debian/alsa-source/usr/src
	# alsa-source/debian/*
	install -m755 debian/alsa-source.rules $(SRC_DIR)/debian/rules
	install -m644 debian/alsa-source.control $(SRC_DIR)/debian/control
	install -m644 debian/copyright $(SRC_DIR)/debian/copyright
	install -m644 debian/changelog $(SRC_DIR)/debian/changelog
	install -m644 debian/changelog.ALSA $(SRC_DIR)/debian/changelog.ALSA
	install -m644 debian/compat $(SRC_DIR)/debian/compat
	# And fix perms on the directory ...
	find debian/alsa-source -type d -exec chmod 775 {} \;
	find debian/alsa-source/usr/src/modules -type d -exec chmod 2775 {} \;
	# As much as I hate automatically generated stuff, automatically generate
	# files.
	major_ver="$(shell head -n 1 debian/changelog | cut -d\( -f2 | cut -d\) -f1 | cut -d. -f1-2)"; \
	for i in {pre,post}{inst,rm} ; do \
		if [ -f debian/alsa-modules.$$i ] ; then \
			cat debian/alsa-modules.$$i | sed -e "s/_MAJORVERSION_/$$major_ver/g" > $(SRC_DIR)/debian/$$i; \
		fi \
	done
	install -m644 debian/alsa-modules.bug.control $(SRC_DIR)/debian/bug/control
	# Build the tarball, debian/* mess over.
	cd debian/alsa-source/usr/src && tar cf alsa-driver.tar modules
	$(RM) -r debian/alsa-source/usr/src/modules
	bzip2 -9 debian/alsa-source/usr/src/alsa-driver.tar

.PHONY: binary binary-arch binary-indep build-source clean patch unpatch

