#! /usr/bin/make -f

# User configurable piece.
epoch	 := 0

arch     := $(shell dpkg --print-architecture)

# The package version should be UPSTREAM-MINOR
# For instance:
#  2.2.15pre16-1
# Just one '-' should be present.
realver := $(shell dpkg-parsechangelog | awk -F' ' '/^Version:/ {print $$2}' | awk -F- '{print $$1}')
minorver  := $(shell dpkg-parsechangelog | awk -F- '/^Version:/ {print $$2}')

# The hypothetical kernel version - the unpatched source tree in use.
# The changelog should refer to kernel-patch-$(basever)-$(arch)
basever  := $(shell dpkg-parsechangelog | awk -F- '/^Source:/ {print $$3}')

# The debian revision of the image packages.
debver   := $(realver)-$(minorver)

ifneq ($(epoch),0)
 packver := $(epoch):$(debver)
else
 packver := $(debver)
endif

p_patch  := kernel-patch-$(basever)-mips
v_patch  := $(realver)-$(minorver)

p_tools  := mips-tools

kdir := build-tmp/kernel-source-$(basever)

ifeq ($(arch),mips)
  subarches := r4k-ip22 r5k-ip22
else
  subarches := r4k-kn04 r3k-kn02
endif

build: build-stamp
build-stamp:
	dh_testdir
	rm -rf build-tmp
	mkdir build-tmp
	# build the mips-tools
	if [ -f  /usr/src/kernel-source-$(basever).tar.bz2 ]; then			\
	  cd build-tmp && tar --bzip2 -xf /usr/src/kernel-source-$(basever).tar.bz2;	\
	else										\
	  cd build-tmp && tar xzf /usr/src/kernel-source-$(basever).tar.gz;		\
	fi

	ln -sf asm-mips $(kdir)/include/asm
	if [ -f $(kdir)/drivers/usb/mkmap.adb ]; then		\
	  chmod a+x $(kdir)/drivers/usb/mkmap.adb;		\
	fi

	export PATCH_THE_KERNEL=YES;					\
	export PATCH_DIR=$(shell pwd)/mips;				\
	(cd $(kdir) && make-kpkg debian)
	( cd build-tmp/kernel-source-$(basever)/arch/mips/boot	&& 	\
		gcc -Wall -pipe -O2 -o addinitrd addinitrd.c	&& 	\
		gcc -Wall -pipe -O2 -o elf2ecoff elf2ecoff.c )
	touch build-stamp

clean:
	dh_testdir
	rm -rf build-tmp
	dh_clean
	rm -f build-stamp

install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs -p$(p_patch) -p$(p_tools)

	# install files for kernel-patch package
	cp -a mips debian/tmp/usr/src/kernel-patches/mips
	for i in `ls config`; do \
	  cp config/$$i debian/tmp/usr/src/kernel-patches/mips/config.$$i; \
	done
	# and for mips-tools package
	install -s $(kdir)/arch/mips/boot/elf2ecoff debian/$(p_tools)/usr/bin

binary-indep: build
	dh_testdir

binary-images: build install
	dh_testdir
	dh_testroot
	rm -rf build-tmp
	mkdir build-tmp
	if [ -f  /usr/src/kernel-source-$(basever).tar.bz2 ]; then			\
	  cd build-tmp && tar --bzip2 -xf /usr/src/kernel-source-$(basever).tar.bz2;	\
	else										\
	  cd build-tmp && tar xzf /usr/src/kernel-source-$(basever).tar.gz;		\
	fi

	ln -sf asm-mips $(kdir)/include/asm
	if [ -f $(kdir)/drivers/usb/mkmap.adb ]; then		\
	  chmod a+x $(kdir)/drivers/usb/mkmap.adb;		\
	fi
	# Messes up version detection with kernel-package - but that's good
	export PATCH_THE_KERNEL=YES;					\
	export PATCH_DIR=$(shell pwd)/mips;				\
	for i in $(subarches); do					\
	    name=kernel-image-$(basever)-$${i};				\
	  cp config/$$i $(kdir)/.config;				\
	  if [ -f ../$${name}_$(debver)_$(arch).deb ];			\
	  then :;							\
	  else								\
	    mkdir $(kdir)/debian;					\
	    cp debian/changelog debian/control $(kdir)/debian/;		\
	    echo official > $(kdir)/debian/official;			\
	      (cd $(kdir) && make-kpkg --subarch $$i 			\
	      	--append-to-version=-$$i kernel_image);			\
	    (cd $(kdir) && make-kpkg clean);				\
	    cp build-tmp/$${name}_$(debver)_$(arch).deb			\
		 ..;							\
	  fi;								\
	done;								\
	mkdir $(kdir)/debian;						\
	cp debian/changelog debian/control $(kdir)/debian/;		\
	echo official > $(kdir)/debian/official;			\
	(cd $(kdir) && make-kpkg kernel_headers);			\
	cp build-tmp/kernel-headers-$(basever)_$(debver)_$(arch).deb ..;

binary-arch: binary-images
	dh_testdir
	dh_testroot
	dh_installdocs -p$(p_tools) -p$(p_patch)
	dh_installchangelogs -p$(p_tools) -p$(p_patch)
	dh_installman -p$(p_tools)

	dh_compress -p$(p_tools) -p$(p_patch)
	dh_installdeb -p$(p_tools) -p$(p_patch)
	dh_fixperms -p$(p_tools) -p$(p_patch)
	dh_gencontrol -p$(p_tools) -p$(p_patch)
	dh_md5sums -p$(p_tools) -p$(p_patch)
	dh_builddeb -p$(p_tools) -p$(p_patch)
	# finally add the kernel images and headers
	for i in $(subarches); do							 	\
	    dpkg-distaddfile kernel-image-$(basever)-$${i}_$(debver)_$(arch).deb base optional; \
	done
	dpkg-distaddfile kernel-headers-$(basever)_$(debver)_$(arch).deb devel optional

binary: binary-arch binary-indep

.PHONY: binary binary-arch binary-indep binary-images clean install

# Local Variables:
# mode:Makefile
# End:
