MXVER:=5.0
KERVER    := $(shell uname -r)
KERNELDIR := /lib/modules/$(KERVER)/build
PWD       := $(shell pwd)
TOPDIR    := $(PWD)
LVER      :=$(shell uname -r)
MOD_DIR   := /lib/modules/$(LVER)/kernel/drivers/char/

TARGET_DRIVER1:=mxcanctrl
TARGET_DRIVER2:=mxcandrv
TARGET_DRIVER3:=mxcandrv2

DISTRI		:= $(shell grep "^ID=" /etc/os-release | cut -d '=' -f 2- | tr -d '"')
K_RELEASE	:= $(shell uname -r)
K_SUFFIX	:= $(shell echo "$(K_RELEASE)" | cut -d '-' -f 2)
DISTRI_VERSION	:= $(shell echo "$(K_SUFFIX)" | grep -o -E '[0-9]+' | head -n 1)

# Set distribution version to 0 if it doesn's exist
ifeq ($(DISTRI_VERSION),)
	DISTRI_VERSION := 0
endif

# Add build flag for Red Hat distribution family
ifneq ($(filter centos rhel rocky almalinux,$(DISTRI)),)
    EXTRA_CFLAGS += -DREDHAT_BASE
endif

# Add distribution version into build flags
EXTRA_CFLAGS += -DDISTRI_VERSION=$(DISTRI_VERSION)

ifeq ($(KERNELRELEASE),)

all: clean modules

modules clean:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) $@ TOPDIR=$(TOPDIR) 
	
install: modules modules_install

modules_install:
#	$(MAKE) -C $(KERNELDIR) M=$(PWD) $@ TOPDIR=$(TOPDIR)
	@mkdir -p /lib/modules/$(LVER)/misc/
	@echo "[INSTALL] $(TARGET_DRIVER1).ko"
	@cp -f ./$(TARGET_DRIVER1).ko /lib/modules/$(LVER)/misc/
	@if [ -f ./$(TARGET_DRIVER2).ko ]; then \
		echo "[INSTALL] $(TARGET_DRIVER2).ko"; \
		cp -f ./$(TARGET_DRIVER2).ko /lib/modules/$(LVER)/misc/; \
	else \
		echo "[SKIP] $(TARGET_DRIVER2).ko not built (likely CONFIG_CAN_SJA1000 disabled)"; \
	fi
	@echo "[INSTALL] $(TARGET_DRIVER3).ko"
	@cp -f ./$(TARGET_DRIVER3).ko /lib/modules/$(LVER)/misc/
	@depmod -a
	@echo "**********************************************************************"
	@echo " MOXA CAN Family Device Driver ver $(MXVER)"
	@echo " Installed successfully."
	@echo "**********************************************************************"

uninstall:
	@if lsmod | grep -q '^$(TARGET_DRIVER3)' ; then \
		rmmod $(TARGET_DRIVER3); \
	 fi
	@if lsmod | grep -q '^$(TARGET_DRIVER2)' ; then \
		rmmod $(TARGET_DRIVER2); \
	 fi
	@if lsmod | grep -q '^$(TARGET_DRIVER1)' ; then \
		rmmod $(TARGET_DRIVER1); \
	 fi
	@rm -f /lib/modules/$(LVER)/misc/$(TARGET_DRIVER1).ko
	@rm -f /lib/modules/$(LVER)/misc/$(TARGET_DRIVER2).ko
	@rm -f /lib/modules/$(LVER)/misc/$(TARGET_DRIVER3).ko
	@depmod -a
	@echo "**********************************************************************"
	@echo " MOXA CAN Family Device Driver ver $(MXVER)"
	@echo " Removed successfully."
	@echo "**********************************************************************"
	
else

ifneq ($(KBUILD_EXTMOD),)

ifneq ($(CONFIG_CAN_CALC_BITTIMING),n)
EXTRA_CFLAGS += -DCONFIG_CAN_CALC_BITTIMING
endif

ifeq ($(CONFIG_CAN_DEBUG_DEVICES),y)
EXTRA_CFLAGS += -DCONFIG_CAN_DEBUG_DEVICES -DDEBUG
endif

endif

mxcanctrl-y := moxa_can_main.o can_lib.o can_linux_hal.o
obj-m += mxcanctrl.o
obj-m += mxcandrv2.o
obj-$(CONFIG_CAN_SJA1000) += mxcandrv.o

endif
