ifneq ($(KERNELRELEASE),)
# call from kernel build system

obj-m := shfs.o

shfs-objs := dcache.o dir.o fcache.o file.o inode.o proc.o proto.o symlink.o

EXTRA_CFLAGS += -DVERSION=\"0.3\" -DDEBUG_LEVEL=5

else
# external module build

ifndef MODULESDIR
MODULESDIR=${ROOT}/lib/modules/$(shell uname -r)
endif

ifndef KERNEL_SOURCES
KERNEL_SOURCES=${MODULESDIR}/build
endif

ifndef DEBUG
DEBUG=0
endif

KERNEL := linux-$(shell uname -r)
PWD := $(shell pwd)

default:
	$(MAKE) -C $(KERNEL_SOURCES) SUBDIRS=$(PWD) modules

clean: patch-clean
	rm -f *.o *.ko *.mod.c .*o.cmd

install: shfs.ko
	rm -f ${MODULESDIR}/kernel/fs/shfs/shfs.ko
	install -m644 -b -D shfs.ko ${MODULESDIR}/kernel/fs/shfs/shfs.ko
	if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi

uninstall:
	rm -rf ${MODULESDIR}/kernel/fs/shfs
	if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi

patch:
	rm -rf ${KERNEL} ${KERNEL}.orig; mkdir ${KERNEL};
	mkdir -p ${KERNEL}/fs/shfs;
	cp ${KERNEL_SOURCES}/fs/{Makefile,Kconfig} ${KERNEL}/fs
	cp -r ${KERNEL} ${KERNEL}.orig
	cp ../../Changelog Makefile *.c *.h ${KERNEL}/fs/shfs/
	(cd ${KERNEL}; patch -p1 <../kernel-config.diff)
	find . -type f -name "*.orig" -print | xargs rm -f
	diff -urN ${KERNEL}.orig ${KERNEL} >${KERNEL}.diff; true

patch-clean:
	rm -rf ${KERNEL} ${KERNEL}.orig;
	rm -f ${KERNEL}.diff
	
endif

.PHONY : all tidy clean install uninstall patch patch-clean
