#
# Makefile usbcanII
#
# 
#                 Copyright 2012 by Kvaser AB, Mlndal, Sweden
#                         http://www.kvaser.com
# 
#  This software is dual licensed under the following two licenses:
#  BSD-new and GPLv2. You may use either one. See the included
#  COPYING file for details.
# 
#  License: BSD-new
#  ===============================================================================
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#      * Redistributions of source code must retain the above copyright
#        notice, this list of conditions and the following disclaimer.
#      * Redistributions in binary form must reproduce the above copyright
#        notice, this list of conditions and the following disclaimer in the
#        documentation and/or other materials provided with the distribution.
#      * Neither the name of the <organization> nor the
#        names of its contributors may be used to endorse or promote products
#        derived from this software without specific prior written permission.
# 
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
#  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#  DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
#  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
#  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
#  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
#  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# 
#  License: GPLv2
#  ===============================================================================
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
# 
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
# 
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
# 
#  ---------------------------------------------------------------------------
# 

distdir = dkms-kvasercan-5.8.0

DESTDIR     ?=
DESTPREFIX  ?= /usr


# module name
MOD_INSTALL_DIR := kvasercan
MOD_NAME := usbcanII
MOD_DIR :=  $(CURDIR)

INCLUDES ?=  ${CURDIR}/./include
COMMONS  ?=  ./common

KERNEL_VERSION ?= $(shell echo `uname -r`)

KERNEL_SOURCE_DIR=/lib/modules/${KERNEL_VERSION}/build

# source files
MOD_SRCS := usbcanHWIf.c
MOD_SRCS += ${COMMONS}/VCanOsIf.c
MOD_SRCS += ${COMMONS}/osif_functions_kernel.c
MOD_SRCS += ${COMMONS}/objbuf.c 
MOD_SRCS += ${COMMONS}/queue.c

# obj files
MOD_OBJS := $(patsubst %.c,%.o,$(MOD_SRCS))

#export to second lap
EXTRA_CFLAGS := -DLINUX=1 -D_LINUX=1 -I${INCLUDES} -D_DEBUG=0 -DDEBUG=0 -DLINUX_3

export EXTRA_CFLAGS
export INCLUDES

ifneq ($(KERNELRELEASE),)
    ${MOD_NAME}-objs := ${MOD_OBJS}
    obj-m := ${MOD_NAME}.o
endif

.PHONY: all clean module_make install uninstall dist-gzip

all: ${MOD_NAME}.ko

${MOD_NAME}.ko:
	make -C $(KERNEL_SOURCE_DIR) SUBDIRS=${MOD_DIR} modules

install: all
	install -D -m 700 ${MOD_NAME}.ko ${DESTDIR}/lib/modules/${KERNEL_VERSION}/kernel/drivers/usb/misc/${MOD_NAME}.ko/
	install -d ${DESTDIR}/etc/udev/rules.d/
	install -m 700 ${MOD_NAME}.sh ${DESTDIR}/sbin/
	install -m 644 10-kvaser.rules ${DESTDIR}/etc/udev/rules.d

uninstall:
	${DESTDIR}/lib/modules/${KERNEL_VERSION}/kernel/drivers/usb/misc/${MOD_NAME}.ko
	rm -rf ${DESTDIR}/etc/hotplug/${MOD_NAME}.usermap ${DESTDIR}/etc/hotplug/usb/${MOD_NAME} \
	${DESTDIR}/sbin/${MOD_NAME}.sh ${DESTDIR}/etc/udev/rules.d/10-kvaser.rules

clean:
	rm -rf *.d *.o *.ko *.mod.c *.mod.o *.mod.c. .*.cmd .*.o.d Module.symvers modules.order .tmp_versions
	rm -f ./common/.osif_* ./common/*.d ./common/*.o ./common/*.o.cmd
	rm -f $(distdir).tar.gz

$(distdir).tar.gz: clean
	$(shell rm -rf $(distdir); \
	tar czf /tmp/$(distdir).tgz --exclude=.svn --dereference ./; \
	mkdir $(distdir); \
	pushd  $(distdir) > /dev/null; \
	tar xzf /tmp/$(distdir).tgz; \
	popd > /dev/null; \
	rm /tmp/$(distdir).tgz; \
	tar czf $(distdir).tar.gz $(distdir); \
	rm -rf $(distdir))

dist-gzip: $(distdir).tar.gz

# module name
#KV_MODULE_NAME = usbcanII

# Includes
#INCLUDES := $(src)/../include/

# source files
#SRCS :=           usbcanHWIf.c 
#SRCS += ../common/VCanOsIf.c 
#SRCS += ../common/objbuf.c 
#SRCS += ../common/osif_functions_kernel.c
#SRCS += ../common/queue.c

#ifneq ($(KERNELRELEASE),)
#	RUNDIR := $(src)
#else
#	RUNDIR := $(PWD)
#endif
#
#include $(RUNDIR)/../config.mak
