#!/usr/bin/make -f
#
# debian/rules for Ubuntu linux
#
# Use this however you want, just give credit where credit is due.
#
# Copyright (c) 2007 Ben Collins <bcollins@ubuntu.com>
#

# dpkg-buildpackage passes options that are incomptatible
# with the kernel build.
unexport CFLAGS
unexport LDFLAGS

# This is the debhelper compatability version to use.
export DH_COMPAT=4
export LC_ALL=C
export SHELL=/bin/bash -e

# Common variables for all architectures
include debian/rules.d/0-common-vars.mk

# Pill in some arch specific stuff
include debian/rules.d/$(arch).mk

# Maintainer targets
include debian/rules.d/1-maintainer.mk

# Debian Build System targets
binary: binary-indep binary-arch

build: build-arch build-indep

clean: debian/control
	dh_testdir
	dh_testroot
	dh_clean

	# d-i stuff
	rm -rf modules kernel-versions package-list
	rm -rf debian/d-i-$(arch)

	# normal build junk
	rm -rf debian/abi/$(release)-$(revision)
	rm -rf $(builddir)
	rm -f $(stampdir)/stamp-*
	rm -rf debian/linux-*

	# This gets rid of the d-i packages in control
	cp -f debian/control.stub debian/control

# Builds the image, arch headers and debug packages
include debian/rules.d/2-binary-arch.mk

# Rules for building the udebs (debian-installer)
include debian/rules.d/5-udebs.mk

# Builds the source, doc and linux-headers indep packages
include debian/rules.d/3-binary-indep.mk

# Various checks to be performed on builds
include debian/rules.d/4-checks.mk

# Custom binary images (universe/unsupported)
include debian/rules.d/6-binary-custom.mk \
	$(patsubst %,debian/binary-custom.d/%/rules,$(custom_flavours))

# Misc stuff
debian/control.stub: debian/d-i/kernel-versions.in	\
		debian/scripts/control-create		\
		debian/control.stub.in			\
		debian/changelog			\
		$(wildcard debian/control.d/*)		\
		$(patsubst %,debian/binary-custom.d/%/vars,$(all_custom_flavours))
	for i in debian/d-i/kernel-versions.in debian/control.stub.in; do \
	  new=`echo $$i | sed 's/\.in$$//'`;					\
	  cat $$i | sed -e 's/PKGVER/$(release)/g' -e 's/ABINUM/$(abinum)/g' > \
		$$new;								\
	done
	flavours="$(wildcard debian/control.d/vars.*) $(patsubst %,debian/binary-custom.d/%/vars,$(all_custom_flavours))";\
	for i in $$flavours; do						\
	  $(SHELL) debian/scripts/control-create $$i |			\
		sed -e 's/PKGVER/$(release)/g' -e 's/ABINUM/$(abinum)/g' >>\
		debian/control.stub;					\
	done
	cp debian/control.stub debian/control

.PHONY: debian/control
debian/control: debian/control.stub
	rm -rf modules kernel-versions package-list
	mkdir -p modules/$(arch)/
	cp debian/d-i/modules/* modules/$(arch)/
	cp debian/d-i/package-list debian/d-i/kernel-versions .
	touch modules/$(arch)/kernel-image

	# Per flavour module lists
	flavour_modules=`ls debian/d-i/modules.$(arch)-* 2>/dev/null`	\
		|| true;						\
	if [ "$$flavour_modules" != "" ]; then				\
	    for flav in $$flavour_modules; do				\
		name=`echo $$flav | sed 's/.*\/modules.$(arch)-//'`;	\
		mkdir modules/$(arch)-$$name;				\
		(cd debian/d-i/modules/; tar cf - `cat ../../../$$flav`) |\
		    (cd modules/$(arch)-$$name/; tar xf -);		\
		touch modules/$(arch)-$$name/kernel-image;		\
	    done;							\
	fi

	# Remove unwanted stuff
	if [ -r "debian/d-i/exclude-modules.$(arch)" ]; then	\
	    (cat debian/d-i/exclude-modules.$(arch);		\
	     ls modules/$(arch)/) | sort | uniq -d |		\
		(cd modules/$(arch)/; xargs rm -f);		\
	fi

	if [ ! -d modules/$(build_arch) ]; then			\
		mkdir -p modules/$(build_arch);			\
		cp modules/$(arch)/* modules/$(build_arch);	\
	fi

	kernel-wedge gen-control > debian/control
