MODULENAME ?= sockbd
KERNELDIR  ?= /lib/modules/$(shell uname -r)/build
SOCKBDGEN  ?= $$PWD/SOCKBD-GEN
TESTDIR    ?= tests

export MODULENAME KERNELDIR KCFLAGS DONT_CLOBBER_VERSION_FILE

all: modules

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

../kernel/blksnap-config.h: ../kernel/config-compat/*.c
	../kernel/config-compat/genconfig.sh

test: modules
	$(MAKE) -C $(TESTDIR) run

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

sockbd-version.h: FORCE
	$(SOCKBDGEN)

debug-all:	DBG_CFLAGS += -DSOCKBD_DEBUG_ALL
debug-common:	DBG_CFLAGS += -DSOCKBD_DEBUG_COMMON
debug-bio:	DBG_CFLAGS += -DSOCKBD_DEBUG_BIO
debug-socket:	DBG_CFLAGS += -DSOCKBD_DEBUG_SOCKET
debug-block:	DBG_CFLAGS += -DSOCKBD_DEBUG_BLOCK
debug-all debug-common debug-bio debug-socket debug-block: modules

clean:
	rm -f  ../$(MODULENAME).ko
	$(MAKE) -C $(KERNELDIR) M=$$PWD clean
	$(MAKE) -C $(TESTDIR) clean
	rm -f sockbd-version.h
	../kernel/config-compat/genconfig.sh clean

.PHONY: all modules modules_install clean FORCE debug-all	\
	debug-common debug-bio debug-socket debug-block test
