#!/usr/bin/make -f
#
# kernel-image and -header package builder 
#
# Copyright (c) 1999 Hartmut Koptein <koptein@debian.org>
#
# This is free software under the GNU General Public License.
#
# Feb. 1999: initial version
# Dez. 1999: changed to kernel-image

Arch      := $(shell dpkg --print-architecture)
Package   := $(shell perl -e 'print <> =~ /(\S*)\s/' debian/changelog)
PKG_VER   := $(shell perl -e 'print <> =~ /\((.*)\)/' debian/changelog)
PKG_UPVER := $(shell perl -e 'print <> =~ /\((.*)-[^-]*\)/' debian/changelog)
Version   := $(shell head -1 debian/changelog | sed 's/^kernel-image-\(.*\)-powerpc-apus.*$$/\1/')

DDIR      := $(shell pwd)/debian
KDIR      := $(shell pwd)/kernel-source-$(Version)
KIMG      := kernel-image-$(Version)
KHEAD     := kernel-headers-$(Version)-apus

Subarchs  = apus # chrp pmac prep common mbx

#
#
build: build-stamp
build-stamp:
	$(checkdir)
	@echo -n "Uncompressing the kernel source tarball : ... "
	@if [ -r /usr/src/kernel-source-$(Version).tar.bz2 ] ; then	\
		tar jxf /usr/src/kernel-source-$(Version).tar.bz2 ;	\
		echo "done."; \
	elif [ -r /usr/src/kernel-source-$(Version).tar.gz ] ; then	\
		tar zxf /usr/src/kernel-source-$(Version).tar.gz ;	\
		echo "done."; \
	fi 
	@echo "Applying the Linux/APUS patch : ... "
	@if [ -r linux-$(Version).diff.gz ] ; then \
                zcat linux-$(Version).diff.gz | patch -d kernel-source-$(Version) -l -s -p0 &>linux-$(Version).log; \
                echo "Removing empty files after patching" ; \
                find . -type f -size 0 -exec rm {} \; -print; \
		echo "done."; \
        fi
	touch build-stamp

#
# The clean target
#
clean:
	$(checkdir)
	-rm -rf debian/tmp debian/files* debian/control.new debian/substvars
	-rm -rf kernel-source-$(Version)
	-rm -f *-stamp core *-$(Version).log
	-rm -rf debian/kernel-image* debian/kernel-headers*

#
#
binary-indep: checkroot build
binary-arch: checkroot build
	$(checkdir)
	cp -f debian/control.head debian/control.new

	for subarch in $(Subarchs) ; do                                    \
		subarch=$$(basename $$subarch) ;                           \
		mkdir -p $(DDIR)/$(KIMG)-$$subarch/boot ;   \
		mkdir -p $(DDIR)/$(KIMG)-$$subarch/usr/share/doc/$(KIMG)-$$subarch ; \
		cat debian/confs/control.$$subarch >> debian/control.new ; \
	done

	for subarch in $(Subarchs) ; do                                    \
	    subarch=$$(basename $$subarch) ;                               \
	    cp config/$$subarch kernel-source-$(Version)/.config ;         \
	    case $$subarch in						   \
		apus)							   \
		    ( cd $(KDIR); $(MAKE) clean; $(MAKE) oldconfig; $(MAKE) dep;   \
			$(MAKE) vmapus.gz; $(MAKE) modules ) ;             \
		    ;;                                                     \
		*)							   \
		    ( cd $(KDIR); $(MAKE) clean; $(MAKE) oldconfig; $(MAKE) dep;   \
			$(MAKE) zImage; $(MAKE) modules ) ;                \
		    ;;                                                     \
	    esac;							   \
	    cp $(KDIR)/.config $(DDIR)/$(KIMG)-$$subarch/boot/config-$(Version)        ; \
	    cp $(KDIR)/System.map $(DDIR)/$(KIMG)-$$subarch/boot/System.map-$(Version) ; \
	    case $$subarch in                                              \
		apus)                                                      \
		    cp $(KDIR)/vmapus.gz                                   \
		       $(DDIR)/$(KIMG)-apus/boot/vmlinuz-$(Version)        \
		    ;;                                                     \
	        chrp)                                                      \
		    cp $(KDIR)/arch/ppc/chrpboot/zImage                    \
		       $(DDIR)/$(KIMG)-chrp/boot/vmlinuz-$(Version);       \
		    cp addons/QuikDefault                                  \
		       $(DDIR)/$(KIMG)-chrp/usr/share/doc/$(KIMG)-chrp     \
		    ;;                                                     \
	    	common)                                                    \
		    cp $(KDIR)/arch/ppc/boot/zImage                        \
		       $(DDIR)/$(KIMG)-common/boot/vmlinuz-$(Version)      \
		    ;;                                                     \
	    	mbx)                                                       \
		    cp $(KDIR)/arch/ppc/boot/zImage                        \
		       $(DDIR)/$(KIMG)-mbx/boot/vmlinuz-$(Version)         \
		    ;;                                                     \
	    	pmac)                                                      \
		    cp $(KDIR)/arch/ppc/coffboot/vmlinux.coff              \
			$(DDIR)/$(KIMG)-pmac/boot/vmlinux.coff-$(Version); \
		    cp $(KDIR)/vmlinux                                     \
			$(DDIR)/$(KIMG)-pmac/boot/vmlinux-$(Version);      \
		    cp addons/QuikDefault                                  \
			$(DDIR)/$(KIMG)-pmac/usr/share/doc/$(KIMG)-pmac    \
		    ;;                                                     \
	    	prep)                                                      \
		    cp $(KDIR)/arch/ppc/boot/zImage                        \
			$(DDIR)/$(KIMG)-prep/boot/vmlinuz-$(Version)       \
		    ;;                                                     \
	    esac;                                                          \
	    (cd $(KDIR) ; \
	        $(MAKE) INSTALL_MOD_PATH=$(DDIR)/$(KIMG)-$$subarch modules_install; \
	    ) ; \
	    touch build-$$subarch-stamp; \
	done

	sed -e 's/=V/$(Version)/g' debian/control.new > debian/control

	mkdir -p debian/$(KHEAD)/usr/src/$(KHEAD)/include
	mkdir -p debian/$(KHEAD)/usr/share/doc/$(KHEAD)
	mkdir debian/$(KHEAD)/DEBIAN
	sed -e 's/=V/$(Version)/g' debian/header.postinst > debian/$(KHEAD)/DEBIAN/postinst
	sed -e 's/=V/$(Version)/g' debian/header.postrm > debian/$(KHEAD)/DEBIAN/postrm
	chmod 755 debian/$(KHEAD)/DEBIAN/post*
	cp -rfd $(KDIR)/include/* \
		debian/$(KHEAD)/usr/src/$(KHEAD)/include
	cp addons/LinkPolicy debian/copyright \
		debian/$(KHEAD)/usr/share/doc/$(KHEAD)
	gzip -cv9 debian/changelog > debian/$(KHEAD)/usr/share/doc/$(KHEAD)/changelog.Debian.gz

	for subarch in $(Subarchs) ; do                                            \
		subarch=$$(basename $$subarch) ;                                   \
		chmod 644 debian/$(KIMG)-$$subarch/boot/*;                         \
		mkdir debian/$(KIMG)-$$subarch/DEBIAN ;                            \
		sed -e 's/=V/$(Version)/g' debian/image.postinst > debian/$(KIMG)-$$subarch/DEBIAN/postinst ; \
		sed -e 's/=V/$(Version)/g' debian/image.postrm > debian/$(KIMG)-$$subarch/DEBIAN/postrm ; \
		sed -e 's/=V/$(Version)/g' debian/image.preinst > debian/$(KIMG)-$$subarch/DEBIAN/preinst ; \
		sed -e 's/=V/$(Version)/g' debian/image.prerm > debian/$(KIMG)-$$subarch/DEBIAN/prerm ; \
		chmod 755 debian/$(KIMG)-$$subarch/DEBIAN/{pre*,post*} ;           \
		cp debian/copyright                                                \
			debian/$(KIMG)-$$subarch/usr/share/doc/$(KIMG)-$$subarch ; \
		gzip -cv9 debian/changelog >                                       \
			debian/$(KIMG)-$$subarch/usr/share/doc/$(KIMG)-$$subarch/changelog.Debian.gz ; \
		chown -R root.root debian/$(KIMG)-$$subarch ;                      \
		dpkg-gencontrol -p$(KIMG)-$$subarch -Pdebian/$(KIMG)-$$subarch ;   \
		dpkg --build debian/$(KIMG)-$$subarch .. ;                         \
	done
	dpkg-gencontrol -p$(KHEAD) -Pdebian/$(KHEAD)
	dpkg --build debian/$(KHEAD) ..
	dpkg-genchanges > ../$(KIMG)-powerpc-apus_$(PKG_VER)_powerpc.changes


define checkdir
	test -f debian/rules
endef

checkroot:
	$(checkdir)
	test root = "`whoami`"


binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary unpack
