EXTRA_CFLAGS += -Wall -DLINUX26_SUPPORT
EXTRA_CFLAGS += -DUSE_TRYTOFREEZE
EXTRA_CFLAGS += -DUSE_CLASS
EXTRA_CFLAGS += -DON_OPEN_SUPPORT
EXTRA_CFLAGS += -DTRUSTED_APPLICATION_SUPPORT
#
# WARNING: using WITH_LOCAL_DPATH is dangerous for SMP kernels,
#          see README.linux26 and patch_dpath.diff (kernel);
#          detect if the kernel exports __dpath function or not
#
#EXTRA_CFLAGS += -DWITH_LOCAL_DPATH
#
RM ?= rm -f
obj-m += dazuko.o
dazuko-objs := dazuko_core.o dazuko_transport.o dazuko_linux26_lsm.o dazuko_linux26.o

KERNEL_SOURCE ?= /lib/modules/`uname -r`/build
LSM_API_HEADER = $(KERNEL_SOURCE)/include/linux/security.h
#
# Detect whether -DWITH_LOCAL_DPATH is required or not.
#
DCACHE_FILE   = $(shell test -f $(KERNEL_SOURCE)/fs/dcache.c && \
                echo $(KERNEL_SOURCE)/fs/dcache.c || echo \
                $(subst /build/f,/source/f,$(KERNEL_SOURCE)/fs/dcache.c))
EXTRA_CFLAGS += $(shell grep -qs 'EXPORT_SYMBOL(__d_path)' \
                $(DCACHE_FILE) || echo -DWITH_LOCAL_DPATH)

dummy_rule: dazuko_linux26_lsm_def.h
	@echo "Using EXTRA_CFLAGS" $(EXTRA_CFLAGS)
	$(MAKE) -C $(KERNEL_SOURCE) SUBDIRS=`pwd` modules
	@touch dummy_rule

test: dummy_rule
	@test `id -u` -eq 0 || { echo "!! you must be root !!" ; false ; }
	/sbin/insmod ./dazuko.ko
	/sbin/rmmod dazuko
	@echo "--> test successful :)"

dazuko_linux26_lsm_def.h:
	if [ ! -f $(LSM_API_HEADER) ] ; then \
	    ./linux_lsm_conf $(subst /build/i,/source/i,$(LSM_API_HEADER)) ;\
	else \
	    ./linux_lsm_conf $(LSM_API_HEADER) ;\
	fi

dazuko:
	@echo Just type \"make\", not \"make dazuko\"


dazuko-smp:
	@echo Just type \"make\", not \"make dazuko-smp\"

clean:
	$(RM) -f .*.cmd *.cmd *.o dazuko.ko dazuko.mod.c dummy_rule

.PHONY: modules install clean modules_add

install : modules_add

modules modules_add: dazuko_linux26_lsm_def.h
	@echo "Using EXTRA_CFLAGS" $(EXTRA_CFLAGS)
	$(MAKE) -C $(KERNEL_SOURCE) $@ SUBDIRS=$(CURDIR)

