#-------------------------------------------------------------------------------
#   Makefile for MOXA UPort series drvier
#-------------------------------------------------------------------------------
KVER	 := $(shell uname -r)
KDISVER  := $(shell uname -a)
KDIR	 := /lib/modules/$(KVER)/build
PWD	 := $(shell pwd)
TARGET	 := mxuport

INSTALL_DIR := /lib/modules/$(KVER)/kernel/drivers/usb/serial
MISC_DIR    := /lib/modules/$(KVER)/misc

# Detect the system's module compression format (.xz or .zst)
MOD_EXT	 := $(shell find /lib/modules/$(KVER)/kernel -name '*.ko.*' | head -n 1 | sed -n 's/.*\.ko\(\..*\)/\1/p')

# Determine the compression command and file extension
ifeq ($(MOD_EXT),.xz)
    COMPRESS_CMD := xz -f
    OUTPUT_EXT   := .ko.xz
else ifeq ($(MOD_EXT),.zst)
    COMPRESS_CMD := zstd --rm -f
    OUTPUT_EXT   := .ko.zst
else
    COMPRESS_CMD :=
    OUTPUT_EXT   := .ko
endif

#DBG_CFLAGS := -g -DDEBUG
MXPARM += ${DBG_CFLAGS}
CC += ${DBG_CFLAGS}
ccflags-y += ${DBG_CFLAGS}

all:	module compress

install: module compress
	@mkdir -p $(INSTALL_DIR)
	@mkdir -p $(MISC_DIR)
	@cp -f ./$(TARGET)$(OUTPUT_EXT) $(INSTALL_DIR)
	@cp -f ./$(TARGET)$(OUTPUT_EXT) $(MISC_DIR)
	@depmod -a

ifneq ($(KERNELRELEASE),)
obj-m := $(TARGET).o
$(TARGET)-objs := mx-uport.o
else
module:
	KCPPFLAGS="$(KERNEL_FLAGS)" $(MAKE) EXTRA_CFLAGS="$(MXPARM)" -C $(KDIR) M=$(PWD) modules
endif

# Compression step after build
compress:
	@if [ -n "$(COMPRESS_CMD)" ]; then \
		$(COMPRESS_CMD) $(TARGET).ko; \
	fi

remove:
	@echo;echo -n "Removing drivers, please wait..."
	@rm -f $(INSTALL_DIR)/$(TARGET)$(OUTPUT_EXT)
	@rm -f $(MISC_DIR)/$(TARGET)$(OUTPUT_EXT)
	@if ls $(INSTALL_DIR) | grep -q $(TARGET)$(OUTPUT_EXT).bak ; then \
		mv $(INSTALL_DIR)/$(TARGET)$(OUTPUT_EXT).bak $(INSTALL_DIR)/$(TARGET)$(OUTPUT_EXT); \
	fi
	@if lsmod | grep -q $(TARGET) ; then rmmod $(TARGET); fi
	@depmod -a

clean: 
	@rm -f compile-msg *.o .*.o .*.o.cmd *.symvers *.order $(TARGET).mod* \
		.$(TARGET)* $(TARGET).ko $(TARGET)$(OUTPUT_EXT) \
		.Module.symvers.cmd .modules.order.cmd *.dwo
	@rm -rf ./.tmp_versions

