ifneq ($(KERNELRELEASE),)
obj-m += bdcachedev.o
bdcachedev-objs := \
	bdcachedev_main.o \
	bdcachedev_dm_block.o

obj-m += cachedev.o
cachedev-objs := \
	bdcachedev_cachedev.o \
	bdcachedev_sysfs.o \
	bdcachedev_common.o \
	bdcachedev_mem.o \
	bdcachedev_dm_cache.o \
	bdcachedev_mgt.o \
	bdcachedev_io.o \
	bdcachedev_seq.o \
	bdcachedev_log.o \
	bdcachedev_device.o \
	bdcachedev_file.o \
	bdcachedev_index.o \
	bdcachedev_dispatch.o \
	bdcachedev_qos.o \
	bdcachedev_qos_common.o \
	bdcachedev_qos_check.o \
	bdcachedev_qos_whitelist.o \
	bdcachedev_qos_version.o \
	bdcachedev_qos_block.o \
	bdcachedev_qos_util.o \
	bdcachedev_qos_cgroup_base.o \
	bdcachedev_qos_cgroup_apply.o

obj-m += bdcache-tools/

else

KERNEL_SOURCE_VERSION ?= $(shell uname -r)
KERNEL_TREE ?= /lib/modules/$(KERNEL_SOURCE_VERSION)/build

EXTRA_CFLAGS += -O2 -Wall

ifeq ($(DEBUG), 1)
EXTRA_FLAGS = CONFIG_DEBUG_INFO=1 CONFIG_PROC_KCORE=1
else
EXTRA_FLAGS =
endif

obj-m += bdcachedev.o
bdcachedev-objs := \
	bdcachedev_main.o \
	bdcachedev_dm_block.o

obj-m += cachedev.o
cachedev-objs := \
	bdcachedev_cachedev.o \
	bdcachedev_sysfs.o \
	bdcachedev_common.o \
	bdcachedev_mem.o \
	bdcachedev_dm_cache.o \
	bdcachedev_mgt.o \
	bdcachedev_io.o \
	bdcachedev_log.o \
	bdcachedev_device.o \
	bdcachedev_file.o \
	bdcachedev_index.o \
	bdcachedev_dispatch.o \
	bdcachedev_qos.o \
	bdcachedev_qos_common.o \
	bdcachedev_qos_check.o \
	bdcachedev_qos_whitelist.o \
	bdcachedev_qos_version.o \
	bdcachedev_qos_block.o \
	bdcachedev_qos_util.o \
	bdcachedev_qos_cgroup_base.o \
	bdcachedev_qos_cgroup_apply.o

obj-m += bdcache-tools/

.PHONY: all
all: modules

.PHONY: modules
modules:
	$(MAKE) -C $(KERNEL_TREE) M=$(PWD) modules $(EXTRA_FLAGS)

.PHONY: clean
clean:
	$(MAKE) -C $(KERNEL_TREE) M=$(PWD) clean
	rm -rf Module.markers modules.order Module.symvers

endif
