MODULENAME ?= blk-snapshot
KERNELDIR  ?= /lib/modules/$(shell uname -r)/build
KERNELRELEASE ?= $(shell uname -r)
$(shell chmod +x ./genextracflags.sh)
GENERATED_EXTRA_CFLAGS ?= $(shell ./genextracflags.sh)

export MODULENAME KERNELDIR KERNELRELEASE KCFLAGS ADDED_EXTRA_CFLAGS DONT_CLOBBER_VERSION_FILE

all: modules

modules: ../include/version.h blksnap-config.h
	$(MAKE) -C $(KERNELDIR) M=$$PWD modules DEBUG_CFLAGS="$(DBG_CFLAGS)" ADDED_EXTRA_CFLAGS="$(GENERATED_EXTRA_CFLAGS)"
	@if ! test -f ../$(MODULENAME).ko; then			\
	    echo "  LN      $(MODULENAME).ko";			\
	    ln -s kernel/$(MODULENAME).ko ../$(MODULENAME).ko;	\
	fi

blksnap-config.h: config-compat/*.c
	config-compat/genconfig.sh "$(GENERATED_EXTRA_CFLAGS)"

install: modules
	$(MAKE) -C $(KERNELDIR) M=$$PWD modules_install

../include/version.h: FORCE
	$(MAKE) -C ../include version.h

debug-all:	DBG_CFLAGS += -DBLKSNAP_DEBUG_ALL
debug-common:	DBG_CFLAGS += -DBLKSNAP_DEBUG_COMMON
debug-bio:	DBG_CFLAGS += -DBLKSNAP_DEBUG_BIO
debug-clstore:	DBG_CFLAGS += -DBLKSNAP_DEBUG_CLSTORE
debug-extents:	DBG_CFLAGS += -DBLKSNAP_DEBUG_EXTENTS
debug-all debug-common debug-bio debug-clstore debug-extents: modules

clean:
	rm -f  ../$(MODULENAME).ko
	$(MAKE) -C $(KERNELDIR) M=$$PWD clean
	$(MAKE) -C ../include clean
	config-compat/genconfig.sh clean

.PHONY: all modules modules_install clean FORCE debug-all	\
	debug-common debug-bio debug-clstore
