#!/usr/bin/make -f
#
# thomas@linuxmuster.net
# 19.12.2014
# GPL v3
#

export DH_COMPAT=5

CURDIR=$(shell pwd)

LML_URL=http://linuxmuster.de/linbo-build-cache

# linbo version
LVERS=$(shell head -n 1 debian/changelog | awk -F\( '{ print $$2 }' | awk -F\) '{ print $$1 }')

# kernel
VESAMODE=785 # 640x480, 64k colors
#VESAMODE=771 # 800x600, 256 colors
# VESAMODE=0 # VGA16
# VESAMODE=791 # 1024x768, 64k colors # Currently not working
KERNEL_ARCHIVE=$(shell grep " linux-" debian/md5sums.src | awk '{ print $$2 }')
KVERS=$(shell echo $(KERNEL_ARCHIVE) | sed -e 's/linux-//' | sed -e 's/.tar.xz//')
KERNEL_DIR=kernel/linux-$(KVERS)
#KERNEL_URL=http://www.kernel.org/pub/linux/kernel/v3.x
KERNEL_URL=$(LML_URL)

# cloop
CLOOP_ARCHIVE=$(shell grep cloop_ debian/md5sums.src | awk '{ print $$2 }')
CLOOP_DIR=kernel/cloop-$(shell echo $(CLOOP_ARCHIVE) | awk -F_ '{ print $$2 }' | sed -e 's/-[0-9].tar.gz//')
CLOOP_URL=http://debian-knoppix.alioth.debian.org/packages/cloop
#CLOOP_URL=$(LML_URL)

# virtualbox-guest
VBOX_ARCHIVE=$(shell grep virtualbox-guest- debian/md5sums.src | awk '{ print $$2 }')
VBOX_DIR=kernel/$(shell echo $(VBOX_ARCHIVE) | sed -e 's/.tar.bz2//')
VBOX_URL=$(LML_URL)

# backports
BACKPORTS_ARCHIVE=$(shell grep backports- debian/md5sums.src | awk '{ print $$2 }')
BACKPORTS_DIR=kernel/$(shell echo $(BACKPORTS_ARCHIVE) | sed -e 's/.tar.xz//')
BACKPORTS_URL=http://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.13.2

# intel e1000e driver
E1000E_ARCHIVE=$(shell grep e1000e- debian/md5sums.src | awk '{ print $$2 }')
E1000E_DIR=kernel/$(shell echo $(E1000E_ARCHIVE) | sed -e 's/.tar.gz//')
E1000E_URL=http://downloadmirror.intel.com/15817/eng

# qt
QT_ARCHIVE=$(shell grep qt- debian/md5sums.src | awk '{ print $$2 }')
QT_DIR=linbo_gui/$(shell echo $(QT_ARCHIVE) | sed -e 's/.tar.gz//')
QT_URL=http://download.qt-project.org/official_releases/qt/4.8/4.8.5
#QT_URL=$(LML_URL)

# busybox
BB_ARCHIVE=$(shell grep busybox- debian/md5sums.src | awk '{ print $$2 }')
BB_DIR=src/$(shell echo $(BB_ARCHIVE) | sed -e 's/.tar.bz2//')
BB_URL=http://busybox.net/downloads

# chntpw
CHNTPW_ARCHIVE=$(shell grep chntpw- debian/md5sums.src | awk '{ print $$2 }')
CHNTPW_DIR=src/$(shell echo $(CHNTPW_ARCHIVE) | sed -e 's/-source//' | sed -e 's/.zip//')
CHNTPW_URL=http://pogostick.net/~pnh/ntpasswd

# kexec-tools
KEXEC_ARCHIVE=$(shell grep kexec-tools- debian/md5sums.src | awk '{ print $$2 }')
KEXEC_DIR=src/$(shell echo $(KEXEC_ARCHIVE) | sed -e 's/.tar.bz2//')
#KEXEC_DIR=src/$(shell echo $(KEXEC_ARCHIVE) | sed -e 's/.tar.gz//')
#KEXEC_URL=http://ftp.kernel.org/pub/linux/kernel/people/horms/kexec-tools
KEXEC_URL=$(LML_URL)

# grub4dos
GRUB4DOS_ARCHIVE=$(shell grep grub4dos- debian/md5sums.src | awk '{ print $$2 }')
GRUB4DOS_DIR=src/$(shell echo $(GRUB4DOS_ARCHIVE) | sed -e 's/.tar.xz//')
GRUB4DOS_URL=$(LML_URL)/$(GRUB4DOS_ARCHIVE)

# ms-sys
MSSYS_ARCHIVE=$(shell grep ms-sys- debian/md5sums.src | awk '{ print $$2 }')
MSSYS_DIR=src/$(shell echo $(MSSYS_ARCHIVE) | sed -e 's/.tar.gz//')
MSSYS_URL=$(LML_URL)

# ntfs-3g
NTFS3G_ARCHIVE=$(shell grep ntfs-3g_ntfsprogs- debian/md5sums.src | awk '{ print $$2 }')
NTFS3G_DIR=src/$(shell echo $(NTFS3G_ARCHIVE) | sed -e 's/.tgz//')
NTFS3G_URL=http://tuxera.com/opensource

# rsync
RSYNC_ARCHIVE=$(shell grep rsync- debian/md5sums.src | awk '{ print $$2 }')
RSYNC_DIR=src/$(shell echo $(RSYNC_ARCHIVE) | sed -e 's/.tar.gz//')
RSYNC_URL=http://rsync.samba.org/ftp/rsync/src

# ssmtp
SSMTP_ARCHIVE=$(shell grep ssmtp_ debian/md5sums.src | awk '{ print $$2 }')
SSMTP_DIR=src/ssmtp
#SSMTP_URL=http://archive.ubuntu.com/ubuntu/pool/universe/s/ssmtp
SSMTP_URL=$(LML_URL)

# syslinux
SYSLINUX_ARCHIVE=$(shell grep syslinux- debian/md5sums.src | awk '{ print $$2 }')
SYSLINUX_DIR=src/$(shell echo $(SYSLINUX_ARCHIVE) | sed -e 's/.tar.xz//')
#SYSLINUX_URL=http://www.kernel.org/pub/linux/utils/boot/syslinux
SYSLINUX_URL=$(LML_URL)

# ctorrent
CTORRENT_ARCHIVE=$(shell grep ctorrent- debian/md5sums.src | awk '{ print $$2 }')
CTORRENT_DIR=src/$(shell echo $(CTORRENT_ARCHIVE) | sed -e 's/.tar.gz//')
CTORRENT_URL=http://www.rahul.net/dholmes/ctorrent

# compiler flags
export CFLAGS=-m32

configure: configure-stamp
configure-stamp:
	dh_testdir

	# make necessary build dirs
	mkdir -p cache || true
	mkdir -p kernel || true
	mkdir -p src || true

	# download and unpack sources

	# busybox
	-@if [ ! -d $(BB_DIR) ]; then \
		( [ -e cache/$(BB_ARCHIVE) ] || ( cd cache && wget $(BB_URL)/$(BB_ARCHIVE) ) ); \
		( cd cache && grep $(BB_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(BB_ARCHIVE)...[0m" ; \
		tar xf cache/$(BB_ARCHIVE) -C src; \
		cp conf/busybox.conf $(BB_DIR)/.config; \
		ln -sf ../$(BB_DIR) src/busybox; \
	fi

	# grub4dos
	-@if [ ! -d $(GRUB4DOS_DIR) ]; then \
		( [ -e cache/$(GRUB4DOS_ARCHIVE) ] || ( cd cache && wget $(GRUB4DOS_URL) ) ); \
		( cd cache && grep $(GRUB4DOS_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(GRUB4DOS_ARCHIVE)...[0m" ; \
		tar xf cache/$(GRUB4DOS_ARCHIVE) -C src; \
#		echo "[1mPatching grub4dos sources...[0m" ; \
#		( cd $(GRUB4DOS_DIR) && for i in ../../patches/grub4dos/*; do patch -p1 <$$i; done ); \
#		chmod 755 $(GRUB4DOS_DIR)/configure; \
		ln -sf ../$(GRUB4DOS_DIR) src/grub4dos; \
	fi

	# chntpw
	-@if [ ! -d $(CHNTPW_DIR) ]; then \
		( [ -e cache/$(CHNTPW_ARCHIVE) ] || ( cd cache && wget $(CHNTPW_URL)/$(CHNTPW_ARCHIVE) ) ); \
		( cd cache && grep $(CHNTPW_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(CHNTPW_ARCHIVE)...[0m" ; \
		( cd src && unzip ../cache/$(CHNTPW_ARCHIVE) ); \
		ln -sf ../$(CHNTPW_DIR) src/chntpw; \
	fi

	# kexec-tools
	-@if [ ! -d $(KEXEC_DIR) ]; then \
		( [ -e cache/$(KEXEC_ARCHIVE) ] || ( cd cache && wget $(KEXEC_URL)/$(KEXEC_ARCHIVE) ) ); \
		( cd cache && grep $(KEXEC_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(KEXEC_ARCHIVE)...[0m" ; \
		tar xf cache/$(KEXEC_ARCHIVE) -C src; \
		ln -sf ../$(KEXEC_DIR) src/kexec-tools; \
	fi

	# ms-sys
	-@if [ ! -d $(MSSYS_DIR) ]; then \
		( [ -e cache/$(MSSYS_ARCHIVE) ] || ( cd cache && wget $(MSSYS_URL)/$(MSSYS_ARCHIVE) ) ); \
		( cd cache && grep $(MSSYS_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(MSSYS_ARCHIVE)...[0m" ; \
		tar xf cache/$(MSSYS_ARCHIVE) -C src; \
		ln -sf ../$(MSSYS_DIR) src/ms-sys; \
	fi

	# ntfs-3g
	-@if [ ! -d $(NTFS3G_DIR) ]; then \
		( [ -e cache/$(NTFS3G_ARCHIVE) ] || ( cd cache && wget $(NTFS3G_URL)/$(NTFS3G_ARCHIVE) ) ); \
		( cd cache && grep $(NTFS3G_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(NTFS3G_ARCHIVE)...[0m" ; \
		tar xf cache/$(NTFS3G_ARCHIVE) -C src; \
		ln -sf ../$(NTFS3G_DIR) src/ntfs-3g; \
	fi

	# rsync
	-@if [ ! -d $(RSYNC_DIR) ]; then \
		( [ -e cache/$(RSYNC_ARCHIVE) ] || ( cd cache && wget $(RSYNC_URL)/$(RSYNC_ARCHIVE) ) ); \
		( cd cache && grep $(RSYNC_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(RSYNC_ARCHIVE)...[0m" ; \
		tar xf cache/$(RSYNC_ARCHIVE) -C src; \
		echo "[1mPatching rsync sources...[0m" ; \
		( cd $(RSYNC_DIR) && for i in ../../patches/rsync/*; do patch -p1 <$$i; done ); \
		ln -sf ../$(RSYNC_DIR) src/rsync; \
	fi

	# ssmtp
	-@if [ ! -d $(SSMTP_DIR) ]; then \
		( [ -e cache/$(SSMTP_ARCHIVE) ] || ( cd cache && wget $(SSMTP_URL)/$(SSMTP_ARCHIVE) ) ); \
		( cd cache && grep $(SSMTP_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(SSMTP_ARCHIVE)...[0m" ; \
		tar xf cache/$(SSMTP_ARCHIVE) -C src; \
		echo "[1mPatching ssmtp sources...[0m" ; \
		( cd $(SSMTP_DIR) && for i in ../../patches/ssmtp/*; do patch -p1 <$$i; done ); \
	fi

	# syslinux
	-@if [ ! -d $(SYSLINUX_DIR) ]; then \
		( [ -e cache/$(SYSLINUX_ARCHIVE) ] || ( cd cache && wget $(SYSLINUX_URL)/$(SYSLINUX_ARCHIVE) ) ); \
		( cd cache && grep $(SYSLINUX_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(SYSLINUX_ARCHIVE)...[0m" ; \
		tar xf cache/$(SYSLINUX_ARCHIVE) -C src; \
		ln -sf ../$(SYSLINUX_DIR) src/syslinux; \
	fi

	# ctorrent
	-@if [ ! -d $(CTORRENT_DIR) ]; then \
		( [ -e cache/$(CTORRENT_ARCHIVE) ] || ( cd cache && wget $(CTORRENT_URL)/$(CTORRENT_ARCHIVE) ) ); \
		( cd cache && grep $(CTORRENT_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(CTORRENT_ARCHIVE)...[0m" ; \
		tar xf cache/$(CTORRENT_ARCHIVE) -C src; \
		ln -sf ../$(CTORRENT_DIR) src/ctorrent; \
	fi

	# qt
	-@if [ ! -d $(QT_DIR) ]; then \
		( [ -e cache/$(QT_ARCHIVE) ] || ( cd cache && wget $(QT_URL)/$(QT_ARCHIVE) ) ); \
		( cd cache && grep $(QT_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(QT_ARCHIVE)...[0m" ; \
		tar xf cache/$(QT_ARCHIVE) -C linbo_gui; \
	fi

	# e1000e
	-@if [ ! -d $(E1000E_DIR) ]; then \
		( [ -e cache/$(E1000E_ARCHIVE) ] || ( cd cache && wget $(E1000E_URL)/$(E1000E_ARCHIVE) ) ); \
		( cd cache && grep $(E1000E_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(E1000E_ARCHIVE)...[0m" ; \
		tar xf cache/$(E1000E_ARCHIVE) -C kernel; \
		ln -sf ../$(E1000E_DIR) kernel/e1000e; \
	fi

	# cloop
	-@if [ ! -d $(CLOOP_DIR) ]; then \
		( [ -e cache/$(CLOOP_ARCHIVE) ] || ( cd cache && wget $(CLOOP_URL)/$(CLOOP_ARCHIVE) ) ); \
		( cd cache && grep $(CLOOP_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(CLOOP_ARCHIVE)...[0m" ; \
		tar xf cache/$(CLOOP_ARCHIVE) -C kernel; \
		ln -sf ../$(CLOOP_DIR) kernel/cloop; \
	fi

	# cloop with patch
#	-@if [ ! -d $(CLOOP_DIR) ]; then \
#		( [ -e cache/$(CLOOP_ARCHIVE) ] || ( cd cache && wget $(CLOOP_URL)/$(CLOOP_ARCHIVE) ) ); \
#		( cd cache && grep $(CLOOP_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
#		echo "[1mUnpacking $(CLOOP_ARCHIVE)...[0m" ; \
#		tar xf cache/$(CLOOP_ARCHIVE) -C kernel; \
#		echo "[1mPatching cloop sources...[0m" ; \
#		( cd $(CLOOP_DIR) && for i in ../../patches/cloop/*; do patch -p1 <$$i; done ); \
#		ln -sf ../$(CLOOP_DIR) kernel/cloop; \
#	fi

	# vboxguest
	-@if [ ! -d $(VBOX_DIR) ]; then \
		( [ -e cache/$(VBOX_ARCHIVE) ] || ( cd cache && wget $(VBOX_URL)/$(VBOX_ARCHIVE) ) ); \
		( cd cache && grep $(VBOX_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(VBOX_ARCHIVE)...[0m" ; \
		tar xf cache/$(VBOX_ARCHIVE) -C kernel; \
		ln -sf ../$(VBOX_DIR) kernel/virtualbox-guest; \
	fi

	# backports
	-@if [ ! -d $(BACKPORTS_DIR) ]; then \
		( [ -e cache/$(BACKPORTS_ARCHIVE) ] || ( cd cache && wget $(BACKPORTS_URL)/$(BACKPORTS_ARCHIVE) ) ); \
		( cd cache && grep $(BACKPORTS_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(BACKPORTS_ARCHIVE)...[0m" ; \
		tar xf cache/$(BACKPORTS_ARCHIVE) -C kernel; \
		ln -sf ../$(BACKPORTS_DIR) kernel/backports; \
	fi

	# kernel
	-@if [ ! -d $(KERNEL_DIR) ]; then \
		( [ -e cache/$(KERNEL_ARCHIVE) ] || ( cd cache && wget $(KERNEL_URL)/$(KERNEL_ARCHIVE) ) ); \
		( cd cache && grep $(KERNEL_ARCHIVE) ../debian/md5sums.src | md5sum -c ); \
		echo "[1mUnpacking $(KERNEL_ARCHIVE)...[0m" ; \
		tar xf cache/$(KERNEL_ARCHIVE) -C kernel; \
		echo "[1mPatching kernel sources...[0m" ; \
		( cd $(KERNEL_DIR) && for i in ../../patches/kernel/*; do patch -p1 <$$i; done ); \
		cp conf/kernel.conf $(KERNEL_DIR)/.config; \
	fi

	touch configure-stamp

build: build-stamp
build-stamp: configure-stamp
	dh_testdir

	# build src components

	

	# busybox
	-@if [ ! -e $(BB_DIR)/_install/bin/busybox ]; then \
		echo "[1mBuilding busybox...[0m" ; \
		( cd $(BB_DIR) && make install ); \
	fi

	# cloop
	-@if [ ! -e $(CLOOP_DIR)/bin/create_compressed_fs -o ! -e $(CLOOP_DIR)/bin/extract_compressed_fs ]; then \
		echo "[1mBuilding cloop-utils...[0m" ; \
		( cd $(CLOOP_DIR) && rm -rf bin || true && make utils && mkdir -p bin && mv *_compressed_fs bin ); \
	fi

	# grub4dos (binary distribution)
#	-@if [ ! -e $(GRUB4DOS_DIR)/stage2/grub.exe -o ! -e $(GRUB4DOS_DIR)/stage2/grldr -o ! -e $(GRUB4DOS_DIR)/stage2/bootlace.com ]; then \
#		echo "[1mBuilding grub4dos...[0m" ; \
#		( cd $(GRUB4DOS_DIR) && CC=gcc-4.1 CFLAGS=-fno-stack-protector ./configure \
#			--prefix=/usr \
#			--enable-preset-menu=preset_menu.lst \
#			--disable-ffs \
#			--disable-minix \
#			--disable-vstafs \
#                        --disable-jfs \
#			--disable-xfs \
#			--disable-ufs2 \
#			--disable-hercules \
#			--disable-serial && make && strip grub/grub );\
#	fi

	# kexec-tools
	-@if [ ! -e $(KEXEC_DIR)/build/sbin/kexec ]; then \
		echo "[1mBuilding kexec...[0m" ; \
		( cd $(KEXEC_DIR) && ARCH=i386 LDFLAGS=-static ./configure --target=i686-pc-linux-gnu --host=i686-pc-linux-gnu && make && strip build/sbin/kexec ); \
	fi

	# ms-sys
	-@if [ ! -e $(MSSYS_DIR)/bin/ms-sys ]; then \
		echo "[1mBuilding ms-sys...[0m" ; \
		( cd $(MSSYS_DIR) && make && strip bin/ms-sys ); \
	fi

	# chntpw
	-@if [ ! -e $(CHNTPW_DIR)/reged ]; then \
 		echo "[1mBuilding reged...[0m"; \
		( cd $(CHNTPW_DIR) && make reged && strip reged ); \
	fi

	# ntfs-3g
	-@if [ ! -e $(NTFS3G_DIR)/src/ntfs-3g ]; then \
		echo "[1mBuilding ntfs-3g...[0m" ; \
		( cd $(NTFS3G_DIR) && ./configure --enable-really-static --enable-xattr-mappings --enable-posix-acls && make && strip src/ntfs-3g && strip ntfsprogs/mkntfs && strip ntfsprogs/ntfsclone && strip ntfsprogs/ntfslabel && strip ntfsprogs/ntfsresize ); \
	fi

	# rsync
	-@if [ ! -e $(RSYNC_DIR)/rsync ]; then \
		echo "[1mBuilding rsync...[0m" ; \
		( cd $(RSYNC_DIR) && ./configure --prefix=/usr && make && strip rsync ); \
	fi

	# ssmtp
	-@if [ ! -e $(SSMTP_DIR)/ssmtp ]; then \
		echo "[1mBuilding ssmtp...[0m" ; \
		( cd $(SSMTP_DIR) && ./configure --target=i686-pc-linux-gnu --host=i686-pc-linux-gnu --exec-prefix="/usr" --prefix="" --enable-static --with-cflags="-O2 -g -Wall" && make && strip ssmtp ); \
	fi

	# syslinux (binary distribution)
#	-@if [ ! -e $(SYSLINUX_DIR)/gpxe/src/bin/gpxe.lkrn ]; then \
#		echo "[1mBuilding syslinux...[0m" ; \
#		( cd $(SYSLINUX_DIR)/gpxe/src && make bin/gpxe.lkrn ); \
#	fi

	# ctorrent
	-@if [ ! -e $(CTORRENT_DIR)/ctorrent ]; then \
		echo "[1mBuilding ctorrent...[0m" ; \
		( cd $(CTORRENT_DIR) && ./configure --with-ssl=no && make && strip ctorrent ); \
	fi

	# qt
	-@if [ ! -e $(QT_DIR)/bin/moc ]; then \
		echo "[1mBuilding QT...[0m" ; \
		( cd $(CURDIR)/linbo_gui && ./build_qt && rm linbo_gui ); \
	fi

	# linbo_gui
	-@if [ ! -e $(CURDIR)/linbo_gui/linbo_gui ]; then \
		echo "[1mBuilding linbo_gui...[0m" ; \
		( cd $(CURDIR)/linbo_gui && ./build_gui ); \
	fi

	# linbo kernel
	-@if [ ! -e $(KERNEL_DIR)/vmlinux ]; then \
	        echo "ESC[1mBuilding LINBO kernel...ESC[0m" ; \
	        rm -f $(CLOOP_DIR)/cloop.ko || true ; \
	        rm -f $(E1000E_DIR)/src/e1000e.ko || true ; \
	        rm -f $(VBOX_DIR)/vboxguest/vboxguest.ko || true ; \
	        rm -f $(BACKPORTS_DIR)/drivers/net/ethernet/atheros/alx/alx.ko || true ; \
	        rm -rf ../modules/* || true ; \
	        cd $(KERNEL_DIR) ; \
	        ln -snf ../initramfs_kernel.conf . ; \
	        :> ../initramfs_kernel.conf ; \
	        rm -f usr/initramfs_data.cpio.gz || true ; \
	        cat $(CURDIR)/conf/initramfs_kernel.conf > ../initramfs_kernel.conf ; \
	        ARCH=i386 make bzImage modules ; \
	fi

	# cloop module
	-@if [ ! -e $(CLOOP_DIR)/cloop.ko ]; then \
	        echo "ESC[1mBuilding cloop module...ESC[0m" ; \
	        rm -f kernel/modules/lib/modules/*/kernel/drivers/block/cloop.ko || true ; \
	        cd $(CLOOP_DIR) && \
	        ( make KERNEL_DIR=$(CURDIR)/$(KERNEL_DIR) clean ; ARCH=i386 make KERNEL_DIR=$(CURDIR)/$(KERNEL_DIR) cloop.ko ) ; \
	fi

	# e1000e module
	-@if [ ! -e $(E1000E_DIR)/src/e1000e.ko ]; then \
	        echo "ESC[1mBuilding e1000e module...ESC[0m" ; \
	        rm -f kernel/modules/lib/modules/*/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko || true ; \
	        cd $(E1000E_DIR)/src && \
	        ( ARCH=i386 KSRC=$(CURDIR)/$(KERNEL_DIR) make clean ; ARCH=i386 KSRC=$(CURDIR)/$(KERNEL_DIR) make ) ; \
	fi

	# vboxguest modules
	-@if [ ! -e $(VBOX_DIR)/vboxguest/vboxguest.ko ]; then \
	        echo "ESC[1mBuilding virtualbox-guest modules...ESC[0m" ; \
	        rm -f kernel/modules/lib/modules/*/kernel/misc/vboxguest.ko || true ; \
	        cd $(VBOX_DIR) && \
	        ( make -C vboxguest clean ; ARCH=i386 make -C $(CURDIR)/$(KERNEL_DIR) M=$(CURDIR)/$(VBOX_DIR) ) ; \
	fi

	# backports
	-@if [ ! -e $(BACKPORTS_DIR)/drivers/net/ethernet/atheros/alx/alx.ko ]; then \
	        echo "ESC[1mBuilding alx module...ESC[0m" ; \
	        rm -f kernel/modules/lib/modules/*/kernel/drivers/net/atheros/alx || true ; \
	        cd $(BACKPORTS_DIR) && \
	        ( ARCH=i386 KLIB=$(CURDIR)/$(KERNEL_DIR) KLIB_BUILD=$(CURDIR)/$(KERNEL_DIR) make clean ; \
	        ARCH=i386 KLIB=$(CURDIR)/$(KERNEL_DIR) KLIB_BUILD=$(CURDIR)/$(KERNEL_DIR) make defconfig-alx ; \
	        ARCH=i386 KLIB=$(CURDIR)/$(KERNEL_DIR) KLIB_BUILD=$(CURDIR)/$(KERNEL_DIR) make ) ; \
	fi

	touch build-stamp

distclean: clean

	( cd linbo_gui && make clean && rm linbo_gui ) || true
	rm -rf $(QT_DIR) || true
	rm -rf src || true
	rm -rf kernel || true

clean: 
	dh_testdir
	dh_testroot
	rm -f build-stamp configure-stamp
	dh_clean -d

install: build
	dh_testdir
	dh_testroot
	#dh_clean -k
	dh_installdirs
	dh_install
	# kernel
	( cd $(KERNEL_DIR) && mkdir -p ../modules ; ARCH=i386 make INSTALL_MOD_PATH=../modules modules_install )
	@echo "[1mLinking LINBO kernel to /var/linbo/linbo.[0m" ; \
	cp $(KERNEL_DIR)/arch/x86/boot/bzImage $(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbo
    # deprecated
	#printf "[LINBO]\ntimestamp=`date +%Y\%m\%d\%H\%M`\nimagesize=`ls -l $(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbo | awk '{print $$5}'`" >$(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbo.info
	# cloop module
	mkdir -p kernel/modules/lib/modules/$(KVERS)/kernel/drivers/block && \
	cp $(CLOOP_DIR)/cloop.ko kernel/modules/lib/modules/$(KVERS)/kernel/drivers/block/
	# e1000e module
	mkdir -p kernel/modules/lib/modules/$(KVERS)/kernel/drivers/net/ethernet/intel/e1000e && \
	cp $(E1000E_DIR)/src/e1000e.ko kernel/modules/lib/modules/$(KVERS)/kernel/drivers/net/ethernet/intel/e1000e/
	# vboxguest module
	mkdir -p kernel/modules/lib/modules/$(KVERS)/kernel/misc && \
	cp $(VBOX_DIR)/vboxguest/vboxguest.ko kernel/modules/lib/modules/$(KVERS)/kernel/misc/
	# alx module
	mkdir -p kernel/modules/lib/modules/$(KVERS)/kernel/drivers/net/atheros/alx && \
	cp $(BACKPORTS_DIR)/drivers/net/ethernet/atheros/alx/alx.ko kernel/modules/lib/modules/$(KVERS)/kernel/drivers/net/atheros/alx && \
	cp $(BACKPORTS_DIR)/compat/compat.ko kernel/modules/lib/modules/$(KVERS)/kernel/drivers/net/atheros/alx
	-/sbin/depmod -a -b kernel/modules $(KVERS)
	# initrd
	echo "LINBO $(LVERS)" > linbo/etc/linbo-version
	@echo "[1mBuilding LINBOFS...[0m" ; \
	cd $(KERNEL_DIR) ; \
	ln -snf ../initramfs.conf . ; \
	:> ../initramfs.conf ; \
	cat $(CURDIR)/conf/initramfs.conf > ../initramfs.conf ; \
	echo >> ../initramfs.conf ; \
	echo "# udev" >> ../initramfs.conf ; \
	( find /etc/udev -type d -printf "dir %p %m 0 0\n" && find /etc/udev -type f -printf "file %p %p %m 0 0\n" ) | sed -e 's|\./|/|g' >>$(CURDIR)/kernel/initramfs.conf ; \
	( find /lib/udev -type d -printf "dir %p %m 0 0\n" && find /lib/udev -type f -printf "file %p %p %m 0 0\n" ) | sed -e 's|\./|/|g' >>$(CURDIR)/kernel/initramfs.conf ; \
	echo "# modules" >> ../initramfs.conf ; \
	( cd ../modules && find . -type d -printf "dir %p %m 0 0\n" && find . -type f \( -path \*/ide/\* -o -path \*/hid/\* -o -path \*/scsi/\* -o -path \*/ata/\* -o -path \*/net/\* -o -path \*/usb/\* -o -path \*/fs/\* -o -path \*/net/\* -o -path \*/staging/\* -o -path \*/block/\* -o -path \*/firmware/acenic/\* -o -path \*/firmware/bnx2/\* -o -path \*/firmware/bnx2x/\* -o -path \*/firmware/e100/\* -o -path \*/firmware/tigon/\* -o -name cloop.ko -o -name vboxguest.ko -o -name modules.\* \) -printf "file %p .../modules%p %m 0 0\n" ) | sed -e 's|\./|/|g' >>$(CURDIR)/kernel/initramfs.conf ; \
	echo >> ../initramfs.conf ; \
	echo "# busybox applets" >> ../initramfs.conf ; \
	( cd $(CURDIR)/$(BB_DIR)/_install && find . -type d -printf "dir %p %m 0 0\n" && find . -type l -printf "slink %p /bin/busybox 777 0 0\n" ) | sed -e 's|\./|/|g' >>$(CURDIR)/kernel/initramfs.conf ; \
	rm -f initramfs.lz ; ./usr/gen_init_cpio ../initramfs.conf | lzma -zcv > $(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbofs.lz
    # deprecated
	#printf "[LINBOFS]\ntimestamp=`date +%Y\%m\%d\%H\%M`\nimagesize=`ls -l $(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbofs.lz | awk '{print $$5}'`" >$(CURDIR)/debian/linuxmuster-linbo/var/linbo/linbofs.lz.info
	# package files
	# /etc
	install -m 644 debian/default debian/linuxmuster-linbo/etc/default/linuxmuster-linbo
	install -m 644 debian/linbo-bittorrent.default debian/linuxmuster-linbo/etc/default/linbo-bittorrent
	install -m 755 debian/linbo-bittorrent.init debian/linuxmuster-linbo/etc/init.d/linbo-bittorrent
	install -m 755 debian/linbo-multicast debian/linuxmuster-linbo/etc/init.d/
	install -m 600 etc/ssh_config debian/linuxmuster-linbo/etc/linuxmuster/linbo/ssh_config
	install -m 644 etc/start.conf debian/linuxmuster-linbo/etc/linuxmuster/linbo/start.conf.default
	# /var/linbo
	cp -r var/* debian/linuxmuster-linbo/var/linbo
	sed -e 's|@@version@@|$(LVERS)|' -i debian/linuxmuster-linbo/var/linbo/boot.msg
	install -m 644 $(GRUB4DOS_DIR)/stage2/grub.exe debian/linuxmuster-linbo/var/linbo/grub.exe
	install -m 644 linbo/menu.lst debian/linuxmuster-linbo/var/linbo/examples/menu.lst
	install -m 644 $(SYSLINUX_DIR)/core/pxelinux.0 debian/linuxmuster-linbo/var/linbo/pxelinux.0
	install -m 644 $(SYSLINUX_DIR)/com32/menu/menu.c32 debian/linuxmuster-linbo/var/linbo/menu.c32
	install -m 644 $(SYSLINUX_DIR)/com32/menu/vesamenu.c32 debian/linuxmuster-linbo/var/linbo/vesamenu.c32
	install -m 644 $(SYSLINUX_DIR)/memdisk/memdisk debian/linuxmuster-linbo/var/linbo/memdisk
	install -m 644 $(SYSLINUX_DIR)/gpxe/src/bin/gpxe.lkrn debian/linuxmuster-linbo/var/linbo/gpxe.krn
	# /usr/share/linuxmuster-linbo
	cp -r share/* debian/linuxmuster-linbo/usr/share/linuxmuster-linbo/
	install -m 644 linbo_gui/icons/linbo_wallpaper.png debian/linuxmuster-linbo/usr/share/linuxmuster-linbo/linbo_wallpaper.png
	# /usr/lib/linuxmuster-linbo
	install -m 644 $(SYSLINUX_DIR)/core/isolinux.bin debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/isolinux.bin
	install -m 644 $(SYSLINUX_DIR)/core/pxelinux.0 debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/pxelinux.0
	install -m 644 $(SYSLINUX_DIR)/com32/menu/vesamenu.c32 debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/vesamenu.c32
	install -m 644 $(SYSLINUX_DIR)/com32/modules/reboot.c32 debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/reboot.c32
	install -m 644 $(SYSLINUX_DIR)/gpxe/gpxelinux.0 debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/gpxelinux.0
	install -m 755 $(SYSLINUX_DIR)/linux/syslinux debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/syslinux
	install -m 644 $(SYSLINUX_DIR)/memdisk/memdisk debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/memdisk
	install -m 644 $(SYSLINUX_DIR)/win32/syslinux.exe debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/syslinux.exe
	install -m 644 $(SYSLINUX_DIR)/win64/syslinux64.exe debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/syslinux64.exe
	install -m 644 $(SYSLINUX_DIR)/gpxe/src/bin/gpxe.lkrn debian/linuxmuster-linbo/usr/lib/linuxmuster-linbo/gpxe.krn

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installdebconf	
	dh_installdocs
#	dh_installexamples
#	dh_installmenu
	dh_installlogrotate
#	dh_installemacsen
#	dh_installpam
#	dh_installmime
	dh_installdirs
	dh_installcron
#	dh_installman
#	dh_installinfo
#	dh_undocumented
	dh_install
	dh_installchangelogs 
	dh_link
	dh_strip
#	dh_compress
	dh_fixperms
#	dh_makeshlibs
	dh_installdeb
#	dh_perl
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb

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