#! /usr/bin/make -f

# This is the debhelper compatability version to use.
export DH_COMPAT=2

# 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)-powerpc
v_patch  := $(realver)-$(minorver)

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

configs := powerpc powerpc-smp powerpc-small power3 power4

subarches := pmac chrp chrp-rs6k prep

build:
	dh_testdir

clean:
	dh_testdir
	rm -f source-unpack-stamp
	for i in $(subarches); do 	\
		rm -f build-$$i-stamp;	\
	done
	rm -rf build-tmp
	dh_clean 

binary-indep:	build
	dh_testdir

binary-patch:	build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs -p$(p_patch)

	install -d debian/$(p_patch)/usr/src/kernel-patches
	cp -a powerpc debian/$(p_patch)/usr/src/kernel-patches/powerpc
	for i in `ls config`; do \
	  cp config/$$i debian/$(p_patch)/usr/src/kernel-patches/powerpc/config.$$i; \
	done

	dh_installdocs -p$(p_patch)
	dh_installchangelogs -p$(p_patch)
	dh_compress -p$(p_patch)
	dh_installdeb -p$(p_patch)
	dh_fixperms -p$(p_patch)
	dh_gencontrol -p$(p_patch)
	dh_md5sums -p$(p_patch)
	dh_builddeb -p$(p_patch)

source-unpack-stamp:
	rm -rf build-tmp
	mkdir build-tmp
	cd build-tmp && tar --bzip2 -xf /usr/src/kernel-source-$(basever).tar.bz2
	cd build-tmp/kernel-source-$(basever) \
		&& /usr/src/kernel-patches/all/$(basever)/apply/debian $(basever)-2
	ln -sf asm-ppc $(kdir)/include/asm
	if [ -f $(kdir)/drivers/usb/mkmap.adb ]; then		\
	  chmod a+x $(kdir)/drivers/usb/mkmap.adb;		\
	fi

	mkdir $(kdir)/debian || true
	touch source-unpack-stamp

kernel-headers: source-unpack-stamp
	set -e;								\
	export PATCH_THE_KERNEL=YES;					\
	export BUILD_DIR=$(shell pwd);					\
	export PATCH_DIR=$(shell pwd)/powerpc;				\
	cp debian/changelog debian/control $(kdir)/debian/;		\
	echo official > $(kdir)/debian/official;			\
	cp config/powerpc $(kdir)/.config;				\
	(cd $(kdir) && make-kpkg kernel_headers);			\
	cp build-tmp/kernel-headers-$(basever)_$(debver)_$(arch).deb ..; \

binary-images-%: source-unpack-stamp
	dh_testdir
	dh_testroot
	set -e;									\
	export PATCH_THE_KERNEL=YES;						\
	export CLEAN_SOURCE=NO;							\
	export BUILD_DIR=$(shell pwd);						\
	export PATCH_DIR=$(shell pwd)/powerpc;					\
	export DELETE_BUILD_LINK=YES;						\
	cp config/$* $(kdir)/.config;						\
	cp debian/changelog debian/control $(kdir)/debian/;			\
	echo official > $(kdir)/debian/official;				\
	( cd $(kdir);								\
	  make-kpkg clean;							\
	  if [ $* = "powerpc-small" ]; then 					\
	    make-kpkg --initrd --subarch=pmac --append_to_version -$*		\
	      kernel_image;							\
	  else									\
	    make-kpkg --subarch=pmac --append_to_version -$* kernel_image;	\
	  fi 									\
	)

	# building kernel modules package
	mkdir -p debian/kernel-modules-$(basever)-$*/DEBIAN
	dpkg-deb -x build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-modules-$(basever)-$*
	rm -rf debian/kernel-modules-$(basever)-$*/boot
	mv debian/kernel-modules-$(basever)-$*/usr/share/doc/kernel-image-$(basever)-$* \
		debian/kernel-modules-$(basever)-$*/usr/share/doc/kernel-modules-$(basever)-$*
	dh_installdocs -pkernel-modules-$(basever)-$*
	dh_installchangelogs -pkernel-modules-$(basever)-$*
	dh_compress -pkernel-modules-$(basever)-$*
	dpkg-gencontrol -pkernel-modules-$(basever)-$* \
	  -Pdebian/kernel-modules-$(basever)-$* -isp
	dh_md5sums -pkernel-modules-$(basever)-$*
	dh_builddeb --package=kernel-modules-$(basever)-$*

	# building pmac kernel-image package
	mkdir -p debian/kernel-image-$(basever)-$*-pmac/DEBIAN
	dpkg-deb -x build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-pmac
	dpkg-deb -e build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-pmac/DEBIAN
	rm -rf debian/kernel-image-$(basever)-$*-pmac/lib
	mv debian/kernel-image-$(basever)-$*-pmac/usr/share/doc/kernel-image-$(basever)-$* \
		debian/kernel-image-$(basever)-$*-pmac/usr/share/doc/kernel-image-$(basever)-$*-pmac
	dh_installdocs -pkernel-image-$(basever)-$*-pmac
	dh_installchangelogs -pkernel-image-$(basever)-$*-pmac
	dh_compress -pkernel-image-$(basever)-$*-pmac
	dpkg-gencontrol -pkernel-image-$(basever)-$*-pmac \
	  -Pdebian/kernel-image-$(basever)-$*-pmac -isp
	dh_md5sums -pkernel-image-$(basever)-$*-pmac
	dh_builddeb --package=kernel-image-$(basever)-$*-pmac
	
	# building chrp kernel-image package
	mkdir -p debian/kernel-image-$(basever)-$*-chrp/DEBIAN
	dpkg-deb -x build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-chrp
	#dpkg-deb -e build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-chrp/DEBIAN;
	rm -rf debian/kernel-image-$(basever)-$*-chrp/lib
	rm -rf debian/kernel-image-$(basever)-$*-chrp/boot/vmlinux*
	mv debian/kernel-image-$(basever)-$*-chrp/usr/share/doc/kernel-image-$(basever)-$* \
		debian/kernel-image-$(basever)-$*-chrp/usr/share/doc/kernel-image-$(basever)-$*-chrp
	install -D -m 644 $(kdir)/arch/ppc/boot/images/zImage.chrp \
	  debian/kernel-image-$(basever)-$*-chrp/boot/vmlinuz-$(basever)-$*
	for s in preinst postinst prerm postrm; do \
		sed -e 's/=V/$(basever)-$*/g' -e 's/=A/powerpc/g' -e 's,=D,/boot,g' \
			-e 's/=L//g' -e 's/=I//g' -e 's@=M@@g' -e 's/=OF/YES/g' \
			-e 's/=B//g' -e 's/=S//g' -e 's/=R//g' -e 's/=K/vmlinuz/g'\
			/usr/share/kernel-package/image.$${s} \
			> debian/kernel-image-$(basever)-$*-chrp/DEBIAN/$${s}; \
		chmod 755 debian/kernel-image-$(basever)-$*-chrp/DEBIAN/$${s}; \
	done
	dh_installdocs -pkernel-image-$(basever)-$*-chrp
	dh_installchangelogs -pkernel-image-$(basever)-$*-chrp
	dh_compress -pkernel-image-$(basever)-$*-chrp
	dpkg-gencontrol -pkernel-image-$(basever)-$*-chrp \
	  -Pdebian/kernel-image-$(basever)-$*-chrp -isp
	dh_md5sums -pkernel-image-$(basever)-$*-chrp
	dh_builddeb --package=kernel-image-$(basever)-$*-chrp

	# building chrp-rs6k kernel-image package
	mkdir -p debian/kernel-image-$(basever)-$*-chrp-rs6k/DEBIAN
	dpkg-deb -x build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-chrp-rs6k
	#dpkg-deb -e build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-chrp-rs6k/DEBIAN
	rm -rf debian/kernel-image-$(basever)-$*-chrp-rs6k/lib
	rm -rf debian/kernel-image-$(basever)-$*-chrp-rs6k/boot/vmlinux*
	mv debian/kernel-image-$(basever)-$*-chrp-rs6k/usr/share/doc/kernel-image-$(basever)-$* \
		debian/kernel-image-$(basever)-$*-chrp-rs6k/usr/share/doc/kernel-image-$(basever)-$*-chrp-rs6k
	install -D -m 644 $(kdir)/arch/ppc/boot/images/zImage.chrp-rs6k \
	  debian/kernel-image-$(basever)-$*-chrp-rs6k/boot/vmlinuz-$(basever)-$*
	for s in preinst postinst prerm postrm; do \
		sed -e 's/=V/$(basever)-$*/g' -e 's/=A/powerpc/g' \
			-e 's/=L//g' -e 's/=I//g' -e 's@=M@@g' -e 's/=OF/YES/g' \
			-e 's/=B//g' -e 's/=S//g' -e 's/=R//g' -e 's/=K/vmlinuz/g'\
			/usr/share/kernel-package/image.$${s} \
			> debian/kernel-image-$(basever)-$*-chrp-rs6k/DEBIAN/$${s}; \
		chmod 755 debian/kernel-image-$(basever)-$*-chrp-rs6k/DEBIAN/$${s}; \
	done
	dh_installdocs -pkernel-image-$(basever)-$*-chrp-rs6k
	dh_installchangelogs -pkernel-image-$(basever)-$*-chrp-rs6k
	dh_compress -pkernel-image-$(basever)-$*-chrp-rs6k
	dpkg-gencontrol -pkernel-image-$(basever)-$*-chrp-rs6k \
	  -Pdebian/kernel-image-$(basever)-$*-chrp-rs6k -isp
	dh_md5sums -pkernel-image-$(basever)-$*-chrp-rs6k
	dh_builddeb --package=kernel-image-$(basever)-$*-chrp-rs6k

	# building prep kernel-image package
	mkdir -p debian/kernel-image-$(basever)-$*-prep/DEBIAN
	dpkg-deb -x build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-prep
	#dpkg-deb -e build-tmp/kernel-image-$(basever)-$*_$(debver)_$(arch).deb \
	  debian/kernel-image-$(basever)-$*-prep/DEBIAN
	rm -rf debian/kernel-image-$(basever)-$*-prep/lib
	rm -rf debian/kernel-image-$(basever)-$*-prep/boot/vmlinux*
	mv debian/kernel-image-$(basever)-$*-prep/usr/share/doc/kernel-image-$(basever)-$* \
		debian/kernel-image-$(basever)-$*-prep/usr/share/doc/kernel-image-$(basever)-$*-prep
	install -D -m 644 $(kdir)/arch/ppc/boot/images/zImage.prep \
	  debian/kernel-image-$(basever)-$*-prep/boot/vmlinuz-$(basever)-$*
	for s in preinst postinst prerm postrm; do \
		sed -e 's/=V/$(basever)-$*/g' -e 's/=A/powerpc/g' \
			-e 's/=L//g' -e 's/=I//g' -e 's@=M@@g' -e 's/=OF/YES/g' \
			-e 's/=B//g' -e 's/=S//g' -e 's/=R//g' -e 's/=K/vmlinuz/g'\
			/usr/share/kernel-package/image.$${s} \
			> debian/kernel-image-$(basever)-$*-prep/DEBIAN/$${s}; \
		chmod 755 debian/kernel-image-$(basever)-$*-prep/DEBIAN/$${s}; \
	done
	dh_installdocs -pkernel-image-$(basever)-$*-prep
	dh_installchangelogs -pkernel-image-$(basever)-$*-prep
	dh_compress -pkernel-image-$(basever)-$*-prep
	dpkg-gencontrol -pkernel-image-$(basever)-$*-prep \
	  -Pdebian/kernel-image-$(basever)-$*-prep -isp
	dh_md5sums -pkernel-image-$(basever)-$*-prep
	dh_builddeb --package=kernel-image-$(basever)-$*-prep

	# building kernel-build package
	mkdir -p debian/kernel-build-$(basever)-$*/DEBIAN
	for d in chrp pmac prep; do rm $(kdir)/arch/ppc/boot/$${d}/image.o; done
	mkdir -p debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*
	cp -a $(kdir)/Rules.make $(kdir)/vmlinux $(kdir)/.config $(kdir)/System.map \
	  debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*
	mkdir -p debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*/lib
	cp -a $(kdir)/lib/lib.a \
	  debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*/lib
	mkdir -p debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*/arch/ppc
	cp -a $(kdir)/arch/ppc/boot \
	  debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*/arch/ppc
	make -C debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*/arch/ppc/boot/images \
	  TOPDIR=$(CURDIR)/$(kdir) clean
	cp debian/build_powerpc_images debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*
	tar -C debian/kernel-build-$(basever)-$*/usr/src \
	  -f debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*.tar.bz2  \
	  --atime-preserve -p -c -j kernel-build-$(basever)-$*
	rm -rf debian/kernel-build-$(basever)-$*/usr/src/kernel-build-$(basever)-$*
	dh_installdocs -pkernel-build-$(basever)-$*
	dh_installchangelogs -pkernel-build-$(basever)-$*
	dh_compress -pkernel-build-$(basever)-$*
	dpkg-gencontrol -pkernel-build-$(basever)-$* \
	  -Pdebian/kernel-build-$(basever)-$* -isp
	dh_md5sums -pkernel-build-$(basever)-$*
	dh_builddeb --package=kernel-build-$(basever)-$*

binary-arch: binary-patch kernel-headers binary-images-powerpc binary-images-powerpc-smp binary-images-powerpc-small binary-images-power3 binary-images-power4
	dpkg-distaddfile kernel-headers-$(basever)_$(debver)_$(arch).deb devel optional
	for c in $(configs); do \
	  for i in $(subarches); do \
	    dpkg-distaddfile kernel-image-$(basever)-$${c}-$${i}_$(debver)_$(arch).deb base optional; \
	  done;	\
	  dpkg-distaddfile kernel-modules-$(basever)-$${c}_$(debver)_$(arch).deb base optional; \
	  dpkg-distaddfile kernel-build-$(basever)-$${c}_$(debver)_$(arch).deb devel optional; \
	done

binary: binary-indep binary-arch

update_configs: $(KSRC)/arch/ppc/Makefile
	for i in $(configs); do					\
	  cp -f config/$$i $(KSRC)/.config;				\
	  (cd $(KSRC) && make oldconfig);				\
	  cp -f $(KSRC)/.config config/new.$$i;				\
	done

.PHONY: binary binary-arch binary-indep clean

# Local Variables:
# mode:Makefile
# End:
