SYNO_FLASHCACHE=1
SYSTEMD_UNIT_DIR=/usr/lib/systemd/system
MULTI_USER_TARGET_WANTS=multi-user.target.wants
SYSLOGCONF_FOLDER = /etc/syslog-ng/patterndb.d
SYSLOGCONF_NOT2KERN_FOLDER = $(SYSLOGCONF_FOLDER)/include/not2kern
SYSLOGCONF_NOT2MSG_FOLDER = $(SYSLOGCONF_FOLDER)/include/not2msg
LOGROTATE_CONF_FOLDER = /etc/logrotate.d
ifeq ($(SYNO_FLASHCACHE), 1)
EXTRA_CFLAGS += -DTIME="\"$(TIME)\""
export SYNO_FLASHCACHE
export BIN_PATH=usr/bin
export SYNO_CONTROL_DRIVER_DIR=syno-flashcache-control-driver
export SYNO_CONTROL_DRIVER_NAME=syno_flashcache_control
export SYNO_NEW_MODE_DIR=syno-mem-saving-driver
export SYNO_NEW_MODE_DRIVER_NAME=flashcache_syno
export SYNO_KERNEL_FUNCTIONS=syno_kernel_functions
TIME := $(shell date +%Y-%m-%d-%H:%M)
export TIME
endif
COMMIT_REV := $(shell git describe  --always --abbrev=12)
KERNEL_TREE ?= /lib/modules/$(shell uname -r)/build
export COMMIT_REV
export SUPPORT_4K_CACHE


all:
	if [ "$(SYNO_FLASHCACHE)" = "1" ] ; then \
	$(MAKE) -C $(SYNO_CONTROL_DRIVER_DIR) KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/$(SYNO_CONTROL_DRIVER_DIR) all ;\
	cp -f $(SYNO_CONTROL_DRIVER_DIR)/Module.symvers src/Module.symvers ;\
	cp -f $(SYNO_CONTROL_DRIVER_DIR)/Module.symvers $(SYNO_NEW_MODE_DIR)/Module.symvers ;\
	$(MAKE) -C $(SYNO_NEW_MODE_DIR) KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/$(SYNO_NEW_MODE_DIR) all ;\
	fi
	if [ ! -e src/$(SYNO_KERNEL_FUNCTIONS).c ] ; then ln -s `readlink -f $(SYNO_NEW_MODE_DIR)/$(SYNO_KERNEL_FUNCTIONS).c` src/$(SYNO_KERNEL_FUNCTIONS).c ; fi
	if [ ! -e src/$(SYNO_KERNEL_FUNCTIONS).h ] ; then ln -s `readlink -f $(SYNO_NEW_MODE_DIR)/$(SYNO_KERNEL_FUNCTIONS).h` src/$(SYNO_KERNEL_FUNCTIONS).h ; fi
	$(MAKE) -C src KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/src all

install:
	$(MAKE) -C src KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/src install

install-dev:
	[ -d $(DESTDIR)/$(PREFIX)/include/flashcache ] || install -d $(DESTDIR)/$(PREFIX)/include/flashcache
	install -D -m644 $(SYNO_NEW_MODE_DIR)/flashcache_ioctl.h $(DESTDIR)/$(PREFIX)/include/flashcache
	install -D -m644 $(SYNO_NEW_MODE_DIR)/flashcache_pin_file.h $(DESTDIR)/$(PREFIX)/include/flashcache

clean:
	if [ "$(SYNO_FLASHCACHE)" = "1" ] ; then \
	$(MAKE) -C $(SYNO_CONTROL_DRIVER_DIR) KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/$(SYNO_CONTROL_DRIVER_DIR) clean ;\
	$(MAKE) -C $(SYNO_NEW_MODE_DIR) KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/$(SYNO_NEW_MODE_DIR) clean ;\
	fi
	$(MAKE) -C src KERNEL_TREE=$(KERNEL_TREE) PWD=$(shell pwd)/src clean

# SYNO
remoteinstall:
	[ -d $(DESTDIR)/lib/modules ] || install -d $(DESTDIR)/lib/modules
	[ -f src/flashcache.ko ] && install -m644 src/flashcache.ko $(DESTDIR)/lib/modules || true
	install -m644 $(SYNO_CONTROL_DRIVER_DIR)/$(SYNO_CONTROL_DRIVER_NAME).ko $(DESTDIR)/lib/modules
	install -m644 $(SYNO_NEW_MODE_DIR)/$(SYNO_NEW_MODE_DRIVER_NAME).ko $(DESTDIR)/lib/modules

	rm -f __tmp_flashcache.conf
	if [ -f $(DESTDIR)/lib/modules/flashcache.ko ]; then\
		echo flashcache > __tmp_flashcache.conf;\
	fi
	echo $(SYNO_NEW_MODE_DRIVER_NAME) >> __tmp_flashcache.conf
	install -Dm644 __tmp_flashcache.conf $(DESTDIR)/lib/modules-load.d/70-flashcache.conf

	[ -d $(DESTDIR)/$(BIN_PATH) ] || install -d $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_load $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_destroy $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_create $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_expand $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_rescue $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_enable $(DESTDIR)/$(BIN_PATH)
	install -m755 src/utils/flashcache_disable $(DESTDIR)/$(BIN_PATH)
ifndef NOSTRIP
	if [ -f $(DESTDIR)/lib/modules/flashcache.ko ]; then\
		${STRIP} -d $(DESTDIR)/lib/modules/flashcache.ko;\
	fi
	${STRIP} -d $(DESTDIR)/lib/modules/$(SYNO_CONTROL_DRIVER_NAME).ko
	${STRIP} -d $(DESTDIR)/lib/modules/$(SYNO_NEW_MODE_DRIVER_NAME).ko
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_create
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_load
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_destroy
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_expand
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_rescue
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_enable
	${STRIP} $(DESTDIR)/$(BIN_PATH)/flashcache_disable
endif

	[ -d $(DESTDIR)$(SYSLOGCONF_FOLDER) ] || mkdir -p $(DESTDIR)$(SYSLOGCONF_FOLDER)
	[ -d $(DESTDIR)$(SYSLOGCONF_NOT2KERN_FOLDER) ] || mkdir -p $(DESTDIR)$(SYSLOGCONF_NOT2KERN_FOLDER)
	[ -d $(DESTDIR)$(SYSLOGCONF_NOT2MSG_FOLDER) ] || mkdir -p $(DESTDIR)$(SYSLOGCONF_NOT2MSG_FOLDER)
	[ -d $(DESTDIR)$(LOGROTATE_CONF_FOLDER) ] || mkdir -p $(DESTDIR)$(LOGROTATE_CONF_FOLDER)
	install -m 644 config/flashcache.syslog-ng $(DESTDIR)$(SYSLOGCONF_FOLDER)/flashcache.conf
	install -m 644 config/flashcache.logrotate $(DESTDIR)$(LOGROTATE_CONF_FOLDER)/flashcache
	install -m 644 config/flashcache.not2kern $(DESTDIR)$(SYSLOGCONF_NOT2KERN_FOLDER)/flashcache.conf
	install -m 644 config/flashcache.not2msg $(DESTDIR)$(SYSLOGCONF_NOT2MSG_FOLDER)/flashcache.conf

# SYNO
