#!/usr/bin/make -f

# Flavours of the kernel we build for
ifeq ($(DEB_BUILD_ARCH),i386)
	flavours := 386 generic openvz rt server virtual
else
	# amd64
	flavours := generic openvz rt server
endif
# Current kernel version (from linux-headers-Build-Depends)
KERNEL := $(shell grep -m 1 '^Build-Depends' debian/control | grep -oE 'linux-headers-([^ ,]+)' | head -n 1 | cut -d- -f3,4)

build_vboxdrv:
	# Build the vboxdrv module:
	for i in $(flavours) ; do \
		mkdir $(CURDIR)/debian/build-$$i ; \
		tar jxfC /usr/src/virtualbox-ose.tar.bz2 $(CURDIR)/debian/build-$$i;\
		export KERN_DIR=/usr/src/linux-headers-$(KERNEL)-$$i; \
		$(MAKE) -C $(CURDIR)/debian/build-$$i/modules/virtualbox-ose; \
	done
build_vboxadd:
	# Build the guest modules:
	for i in $(flavours) ; do \
		mkdir $(CURDIR)/debian/build-guest-$$i ; \
		tar jxfC /usr/src/virtualbox-ose-guest.tar.bz2 $(CURDIR)/debian/build-guest-$$i;\
		export KERN_DIR=/usr/src/linux-headers-$(KERNEL)-$$i; \
		$(MAKE) -C $(CURDIR)/debian/build-guest-$$i/modules/virtualbox-ose-guest/vboxadd; \
	done
build_i386: build_vboxdrv build_vboxadd
build_amd64: build_vboxdrv

build: build-stamp
build-stamp: build_$(DEB_BUILD_ARCH)
	touch $@

install_vboxdrv:
	for i in $(flavours) ; do \
		mkdir -p debian/virtualbox-ose-modules-$(KERNEL)-$$i/lib/modules/$(KERNEL)-$$i/misc; \
		cp $(CURDIR)/debian/build-$$i/modules/virtualbox-ose/vboxdrv.ko debian/virtualbox-ose-modules-$(KERNEL)-$$i/lib/modules/$(KERNEL)-$$i/misc; \
		cp debian/vboxdrv.postinst \
			debian/virtualbox-ose-modules-$(KERNEL)-$$i.postinst; \
	done
install_vboxadd:
	for i in $(flavours) ; do \
		mkdir -p debian/virtualbox-ose-guest-modules-$(KERNEL)-$$i/lib/modules/$(KERNEL)-$$i/misc; \
		cp $(CURDIR)/debian/build-guest-$$i/modules/virtualbox-ose-guest/vboxadd/vboxadd.ko debian/virtualbox-ose-guest-modules-$(KERNEL)-$$i/lib/modules/$(KERNEL)-$$i/misc; \
		cp debian/vboxadd.postinst \
			debian/virtualbox-ose-guest-modules-$(KERNEL)-$$i.postinst; \
	done
install_i386: install_vboxdrv install_vboxadd
install_amd64: install_vboxdrv

install: install-stamp install_amd64 install_i386
install-stamp:
	touch $@

binary-indep:
	# nothing to do

binary-arch: build install
	dh_installdocs -a
	dh_installchangelogs -a
	dh_compress -a
	dh_fixperms -a
	dh_installdeb -a
	dh_gencontrol -s
	dh_md5sums -a
	dh_builddeb -s

clean:
	$(RM) -r $(CURDIR)/debian/virtualbox-ose-modules-*
	$(RM) -r $(CURDIR)/debian/virtualbox-ose-guest-modules-*
	$(RM) -r $(CURDIR)/debian/build-*
	$(RM) debian/virtualbox-ose-modules-$(KERNEL)-*.postinst
	$(RM) *-stamp
	dh_clean

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

