_SRC := $(if $(src),$(src),.)
include $(_SRC)/Makefile.vars # AKMOD can be annoying so preventing his silent context change

DKMS_ROOT_PATH  := /usr/src/msi_ec-$(VERSION)

KERNELRELEASE := $(shell uname -r)

KMOD_DIR        := /lib/modules/$(KERNELRELEASE)/updates/drivers/platform/x86

ccflags-y := -std=gnu11 -Wno-declaration-after-statement

obj-m += $(MODNAME).o

all: modules

modules:
	@$(MAKE) -C /lib/modules/$(KERNELRELEASE)/build M=$(CURDIR) modules

clean:
	@$(MAKE) -C /lib/modules/$(KERNELRELEASE)/build M=$(CURDIR) clean

load:
	insmod msi-ec.ko

load-debug:
	insmod msi-ec.ko debug=1

unload:
	-rmmod msi-ec

reload: unload load

reload-debug: unload load-debug

install:
	mkdir -p $(KMOD_DIR)
	cp msi-ec.ko $(KMOD_DIR)
	depmod -a
	echo msi-ec > /etc/modules-load.d/msi-ec.conf
	modprobe -v msi-ec

uninstall:
	-modprobe -rv msi-ec
	rm -f $(KMOD_DIR)/msi-ec.ko
	-rmdir -p $(KMOD_DIR) > /dev/null 2>&1
	depmod -a
	rm -f /etc/modules-load.d/msi-ec.conf

dkms-install:
	@dkms --version
	mkdir -p $(DKMS_ROOT_PATH)
	cp $(CURDIR)/dkms.conf $(DKMS_ROOT_PATH)
	cp $(CURDIR)/Makefile $(DKMS_ROOT_PATH)
	cp $(CURDIR)/Makefile.vars $(DKMS_ROOT_PATH)
	cp $(CURDIR)/msi-ec.c $(DKMS_ROOT_PATH)
	cp $(CURDIR)/ec_memory_configuration.h $(DKMS_ROOT_PATH)

	sed -e "s/@VERSION@/$(VERSION)/" \
	    -i $(DKMS_ROOT_PATH)/dkms.conf

	dkms add msi_ec/$(VERSION)
	dkms build msi_ec/$(VERSION)
	dkms install msi_ec/$(VERSION)
	echo msi-ec > /etc/modules-load.d/msi-ec.conf

dkms-uninstall:
	bash universalDKMSModuleUninstaller.sh
	rm -rf $(DKMS_ROOT_PATH)
	rm -f /etc/modules-load.d/msi-ec.conf

dkms-update: dkms-uninstall dkms-install

dev: modules unload load

rpm:
	$(MAKE) -C packaging/rpm-akmod/ srpm
