#
#  Makefile for the kernel part of iSCSI-SCST.
#
#  Copyright (C) 2007 - 2018 Vladislav Bolkhovitin
#  Copyright (C) 2007 - 2018 Western Digital Corporation
#
#  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, version 2
#  of the License.
#
#  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.

KBUILD_EXTRA_SYMBOLS = $(src)/../../scst/src/Module.symvers

ccflags-y += -I$(src)/../include -I$(src)/../../scst/include
ccflags-y += $(CONFTEST_CFLAGS)
#ccflags-y += -DCONFIG_SCST_ISCSI_DEBUG_DIGEST_FAILURES

obj-m		+= iscsi-scst.o
iscsi-scst-objs	:= iscsi.o nthread.o config.o digest.o \
	conn.o session.o target.o event.o param.o \
	iscsit_transport.o

