#!/usr/bin/make -f

# Overridden by make-kpkg
KSRC	?= /usr/src/linux
KDREV	?= "0test"
MODDIR	?= ..

KPKG_DEST_DIR = ..

# In case this is not make-kpkg

ifeq ($(strip $(KVERS)),)
ifeq ($(strip $(KSRC)),)
$(error Error. I do not know how to determine the kernel version)
else
kversion :=$(shell egrep '^VERSION +=' $(KSRC)/Makefile 2>/dev/null | \
                 sed -e 's/[^0-9]*\([0-9]*\)/\1/')
kplevel  :=$(shell egrep '^PATCHLEVEL +=' $(KSRC)/Makefile 2>/dev/null | \
                    sed -e 's/[^0-9]*\([0-9]*\)/\1/')
ksublevel:=$(shell egrep '^SUBLEVEL +=' $(KSRC)/Makefile 2>/dev/null | \
                  sed -e 's/[^0-9]*\([0-9]*\)/\1/')
EXTRA_VERSION:=$(shell egrep '^EXTRAVERSION +=' $(KSRC)/Makefile 2>/dev/null | \
                 sed -e 's/EXTRAVERSION[\t ]*=[\t ]*\(.*\)/\1/')
kextra:=$(strip $(EXTRA_VERSION))
HAVE_NEW_MODLIB:=$(shell egrep '\(INSTALL_MOD_PATH\)' \
                            $(KSRC)/Makefile 2>/dev/null )
FLAVOUR:=$(shell grep ^FLAVOUR $(KSRC)/Makefile 2>/dev/null | \
                  perl -ple 's/FLAVOUR[\s:=]+//g')

ifneq ($(strip $(FLAVOUR)),)
INT_FLAV := -$(FLAVOUR)
FLAV_ARG := FLAVOUR=$(FLAVOUR)
else
INT_FLAV :=
FLAV_ARG :=
endif

ifneq ($(strip $(APPEND_TO_VERSION)),)
iatv := $(strip $(APPEND_TO_VERSION))
EXTRAV_ARG := EXTRAVERSION=${EXTRA_VERSION}${iatv}
else
iatv :=
EXTRAV_ARG :=
endif

KVERS = $(kversion).$(kplevel).$(ksublevel)$(kextra)$(iatv)$(INT_FLAV)

endif
else
ifneq ($(KPKG_EXTRAV_ARG),)
EXTRAV_ARG=$(KPKG_EXTRAV_ARG)
else
# XXX: Ugly hack.
EXTRAV_ARG := KERNELRELEASE=$(KVERS)
endif
endif

non_epoch_version=$(shell echo $(KVERS)$(EXTRAVERSION) | perl -pe 's/^\d+://')
epoch=$(shell echo $(KVERS) | perl -ne 'm/^(\d+:)/ && print $$1')

# We also need the package version
pversion	= $(shell sed -ne '1s/.*\((.*)\).*/\1/' debian/changelog)
pversion	= $(shell sed -ne '1s/.*(\(.*\)).*/\1/p' debian/changelog)

pmodules = misdn-modules-$(non_epoch_version)

pwd := $(shell pwd)

ifdef CONCURRENCY_LEVEL
parallel = -j$(CONCURRENCY_LEVEL)
endif

include $(KSRC)/.config

#ifeq ($(CONFIG_PPC64),y)
#ARCH = powerpc
#export ARCH
#endif

EXTRA_CFLAGS = -I$(pwd)/include

export EXTRA_CFLAGS

#CONFIG_MISDN_DRV=m
#ifneq ($(CONFIG_PPC64),y)
#CONFIG_MISDN_AVM_FRITZ=y
#endif
#CONFIG_MISDN_HFCPCI=y
#CONFIG_MISDN_HFCUSB=y
#CONFIG_MISDN_SPEEDFAX=y
#CONFIG_MISDN_W6692=y
#CONFIG_MISDN_HFCMULTI=y
#CONFIG_MISDN_NETJET=y
#CONFIG_MISDN_NETDEV=y
#CONFIG_I4L_CAPI_LAYER=y


CONFIG_MISDN_DRV=m
CONFIG_MISDN_DSP=m 
CONFIG_MISDN_HFCMULTI=m
CONFIG_MISDN_HFCPCI=m
CONFIG_MISDN_HFCUSB=m
CONFIG_MISDN_XHFC=m
CONFIG_MISDN_HFCMINI=m
CONFIG_MISDN_W6692=m
CONFIG_MISDN_SPEEDFAX=m
CONFIG_MISDN_AVM_FRITZ=m
CONFIG_MISDN_NETJET=m
CONFIG_MISDN_DEBUGTOOL=m

export CONFIG_MISDN_DRV CONFIG_MISDN_DSP CONFIG_MISDN_AVM_FRITZ CONFIG_MISDN_HFCPCI
export CONFIG_MISDN_HFCUSB CONFIG_MISDN_SPEEDFAX CONFIG_MISDN_W6692
export CONFIG_MISDN_HFCMULTI CONFIG_MISDN_NETJET CONFIG_MISDN_NETDEV
export CONFIG_I4L_CAPI_LAYER CONFIG_MISDN_XHFC CONFIG_MISDN_HFCMINI CONFIG_MISDN_DEBUGTOOL

kdist: kdist_clean kdist_config kdist_image

kdist_config:

kdist_image:
	$(MAKE) $(MFLAGS) -f debian/rules $(EXTRAV_ARG) binary-modules
	$(MAKE) $(MFLAGS) -f debian/rules clean

kdist_clean: debian/control
	$(MAKE) -C $(KSRC) M=$(pwd) $(EXTRAV_ARG) clean
	dh_clean
	$(RM) debian/*.substvars
	$(RM) debian/control

M ?= $(pwd)

build-modules: debian/control
	dh_testdir
	$(MAKE) -C $(KSRC) \
	  M=$M \
	  $(parallel) \
	  $(EXTRAV_ARG) \
	  modules

binary-modules: build-modules
	dh_testdir
	dh_testroot
	dh_clean -k
	$(MAKE) -C $(KSRC) M=$M $(EXTRAV_ARG) \
	  INSTALL_MOD_PATH=$(pwd)/debian/$(pmodules) \
	  modules_install
	dh_installdebconf
	dh_installdocs
	dh_installchangelogs
	dh_fixperms
	dh_compress
	dh_installmodules
	dh_installdeb
	dh_gencontrol -- -v$(epoch)$(pversion)
	dh_md5sums
	dh_builddeb --destdir=$(KPKG_DEST_DIR)

clean: kdist_clean

debian/control: debian/control.in
	sed -e 's/@@Kernel\-Version@@/$(non_epoch_version)/' \
	    debian/control.in > debian/control

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure binary-modules kdist kdist_config kdist_image kdist_clean
