-include $(ROOTDIR)/.config
#CONFIG_PRODUCT=DA-682A
PKG_ARCH=amd64
PKG_VERSION=1.0

#KDIR:=$(ROOTDIR)/$(LINUXDIR)
KDIR:=/lib/modules/`uname -r`/build
KERNEL_VER=`cat $(ROOTDIR)/$(LINUXDIR)/include/config/kernel.release`
#KERNEL_VER=`uname -r`
MOXA_PACKAGE_DIR=fakeroot
TARGET_MODULE = moxa-pled
obj-m += $(TARGET_MODULE).o

# This define just used for logical test. This will disable the hardware.
ifeq ("$(CONFIG_PRODUCT)","DA-682A")
EXTRA_CFLAGS+= -DWATCHDOG_NOWAYOUT=0 -DDA682A
else
ifeq ("$(CONFIG_PRODUCT)","DA-710")
# wade: -DDA710 is necessary
EXTRA_CFLAGS+= -DWATCHDOG_NOWAYOUT=0 -DDA710
else
ifeq ("$(CONFIG_PRODUCT)","V2100")
EXTRA_CFLAGS+= -DWATCHDOG_NOWAYOUT=0 -DV2100
else
ifeq ("$(CONFIG_PRODUCT)","DA-683")
EXTRA_CFLAGS+= -DWATCHDOG_NOWAYOUT=0 -DDA683
else
ifeq ("$(CONFIG_PRODUCT)","DA-820")
EXTRA_CFLAGS+= -DWATCHDOG_NOWAYOUT=0 -DDA820
endif
endif
endif
endif
endif

# Jared, For debugging purpose, define __WDT_TEST__
# EXTRA_CFLAGS+= -D__WDT_TEST__

.PHONY: modules clean romfs

modules: $(TARGET_MODULE).ko

$(TARGET_MODULE).ko: $(TARGET_MODULE).c 
	@echo "Making modules $(TARGET_MODULE).ko ..."
	$(MAKE) -C $(KDIR) M=`pwd` modules

clean:
	$(MAKE) -C $(KDIR) M=`pwd` clean
	rm -rf fakeroot/lib \
	$(CONFIG_PRODUCT)-pled-$(PKG_VERSION)_$(PKG_ARCH).deb

package:
	mkdir -p $(MOXA_PACKAGE_DIR)/lib/modules/$(KERNEL_VER)/kernel/drivers/char/
	cp $(TARGET_MODULE).ko $(MOXA_PACKAGE_DIR)/lib/modules/$(KERNEL_VER)/kernel/drivers/char/
	:> fakeroot/DEBIAN/control
	echo -n "Package: " > fakeroot/DEBIAN/control
	echo "$(CONFIG_PRODUCT)-pled" | tr '[A-Z]' '[a-z]' >> fakeroot/DEBIAN/control
	echo "Version: $(PKG_VERSION)" >> fakeroot/DEBIAN/control
	echo "Section: base" >> fakeroot/DEBIAN/control
	echo "Priority: required" >> fakeroot/DEBIAN/control
	echo "Architecture: $(PKG_ARCH)" >> fakeroot/DEBIAN/control
ifeq ("$(CONFIG_PRODUCT)","DA-820")
	echo "Depends:linux-image-3.14-0.bpo.2-amd64" >> fakeroot/DEBIAN/control
else
	echo "Depends:linux-image-3.2.0-4-amd64" >> fakeroot/DEBIAN/control
endif
	echo "Maintainer: Jared Wu <jared.wu@moxa.com>" >> fakeroot/DEBIAN/control
	echo "Description: Moxa $(CONFIG_PRODUCT) programmable LED device driver" >> fakeroot/DEBIAN/control
	dpkg -b fakeroot $(DPKGDIR)/$(CONFIG_PRODUCT)-pled-$(PKG_VERSION)_$(PKG_ARCH).deb
	rm -rf ../fakeroot/lib/modules/$(KERNEL_VER)
	# Sign the package
	dpkg-sig -v -k F7F3CD9E --sign builder $(DPKGDIR)/$(CONFIG_PRODUCT)-pled-$(PKG_VERSION)_$(PKG_ARCH).deb
	scp $(DPKGDIR)/$(CONFIG_PRODUCT)-pled-$(PKG_VERSION)_$(PKG_ARCH).deb moxa@220.135.161.42:/dev/shm/


romfs:
	mkdir -v -p "$(ROMFSDIR)/lib/modules/$(KERNEL_VER)/kernel/drivers/char"
	$(ROMFSINST) -v $(TARGET_MODULE).ko "/lib/modules/$(KERNEL_VER)/kernel/drivers/char"

install:
	mkdir -v -p "/lib/modules/$(KERNEL_VERSION)/kernel/drivers/char"
	cp -a $(TARGET_MODULE).ko "/lib/modules/$(KERNEL_VERSION)/kernel/drivers/char"
	depmod -a
	if [ -f /etc/modules ]; then \
		if [ "`grep -c $(TARGET_MODULE) /etc/modules`" == "0" ]; then \
			echo "$(TARGET_MODULE).ko" >> /etc/modules; \
		fi \
	elif [ -d /etc/sysconfig/modules ]; then \
		:> /etc/sysconfig/modules/$(TARGET_MODULE).modules; \
		echo "#!/bin/sh" >> /etc/sysconfig/modules/$(TARGET_MODULE).modules; \
		echo "modprobe $(TARGET_MODULE)" >> /etc/sysconfig/modules/$(TARGET_MODULE).modules; \
		chmod a+x /etc/sysconfig/modules/$(TARGET_MODULE).modules; \
	fi

uninstall:
	rm -f /lib/modules/$(KERNEL_VERSION)/kernel/drivers/char/$(TARGET_MODULE).ko \
	/etc/sysconfig/modules/$(TARGET_MODULE).modules
	depmod -a
