# Adaptec aacraid_esx30
AAC_FLAGS := $(shell if [ ! -d ${TOPDIR}/drivers/scsi/aacraid_esx30 ] ; then \
	echo --error_Please_build_this_driver_in_the_Linux_Kernel_tree ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/pci.h ] ; then \
	if $(TC_GREP) shutdown ${TOPDIR}/include/linux/pci.h >/dev/null 2>/dev/null ; then \
		echo -DPCI_HAS_SHUTDOWN ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/drivers/scsi/hosts.h ] ; then \
	if $(TC_GREP) vary_io ${TOPDIR}/drivers/scsi/hosts.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_VARY_IO ; \
	fi ; \
fi)
# This option does some dangerous things that don't work on the COS. PR139831, 162462:
ifndef CONFIG_VMNIX
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/drivers/scsi/hosts.c ] ; then \
	if $(TC_GREP) scsi_in_detection ${TOPDIR}/drivers/scsi/hosts.c >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_SCSI_IN_DETECTION ; \
	fi ; \
fi)
endif
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/drivers/scsi/scsi_syms.c ] ; then \
	if $(TC_GREP) scsi_in_detection ${TOPDIR}/drivers/scsi/scsi_syms.c >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_SCSI_SCAN_HOST ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/delay.h ] ; then \
	if $(TC_GREP) ssleep ${TOPDIR}/include/linux/delay.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_SSLEEP ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/scsi/scsi_device.h ] ; then \
	if $(TC_GREP) scsi_device_online ${TOPDIR}/include/scsi/scsi_device.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_SCSI_DEVICE_ONLINE ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/scsi/scsi_host.h ] ; then \
	if $(TC_GREP) dump_poll ${TOPDIR}/include/scsi/scsi_host.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_DUMP ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/scsi/scsi_host.h ] ; then \
	if $(TC_GREP) dump_sanity_check ${TOPDIR}/include/scsi/scsi_host.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_DUMP_SANITY_CHECK ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/drivers/scsi/scsi_dump.h ] ; then \
	echo -DSCSI_HAS_DUMP -DSCSI_HAS_DUMP_SANITY_CHECK ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/scsi/scsi_host.h ] ; then \
	if $(TC_GREP) my_devices ${TOPDIR}/include/scsi/scsi_host.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_MY_DEVICES ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/scsi/scsi_host.h ] ; then \
	if $(TC_GREP) "enum.*shost_state" ${TOPDIR}/include/scsi/scsi_host.h >/dev/null 2>/dev/null ; then \
		echo -DSCSI_HAS_SHOST_STATE_ENUM ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/types.h ] ; then \
	if $(TC_GREP) __bitwise ${TOPDIR}/include/linux/types.h >/dev/null 2>/dev/null ; then \
		echo -DHAS_BITWISE_TYPE ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/delay.h ] ; then \
	if $(TC_GREP) msleep ${TOPDIR}/include/linux/delay.h >/dev/null 2>/dev/null ; then \
		echo -DHAS_MSLEEP ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/sched.h ] ; then \
	if $(TC_GREP) "static inline.*find_task_by_pid" ${TOPDIR}/include/linux/sched.h >/dev/null 2>/dev/null ; then \
		echo -DHAS_FIND_TASK_BY_PID ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/include/linux/modules/ksyms.ver ] ; then \
	if $(TC_GREP) find_task_by_pid ${TOPDIR}/include/linux/modules/ksyms.ver >/dev/null 2>/dev/null ; then \
		echo -DHAS_FIND_TASK_BY_PID ; \
	fi ; \
fi)
AAC_FLAGS += $(shell if [ -s ${TOPDIR}/Module.symvers ] ; then \
	if $(TC_GREP) find_task_by_pid ${TOPDIR}/Module.symvers >/dev/null 2>/dev/null ; then \
		echo -DHAS_FIND_TASK_BY_PID ; \
	fi ; \
fi)
ifeq (${VERSION},2) # 2.x.x
ifeq (${PATCHLEVEL},2) # 2.2.x

ifeq ($(shell $(TC_GREP) AAC_DRIVER_BRANCH.*dkms ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/aacraid.h >/dev/null 2>/dev/null ; echo $?),0)
CONFIG_SCSI_AACRAID_ESX30 := m
endif

CFILES_DRIVER=linit.c aachba.c commctrl.c comminit.c commsup.c \
	dpcsup.c rx.c sa.c rkt.c fwdebug.c csmi.c

IFILES_DRIVER=aacraid.h compat.h

ALL_SOURCE=${CFILES_DRIVER} ${IFILES_DRIVER} 

TARGET_OFILES=${CFILES_DRIVER:.c=.o}

INCS=-I. -I.. -I../../../include
INCS=-nostdinc -I. -I..

WARNINGS= -w -Wall -Wno-unused -Wno-switch -Wno-missing-prototypes -Wno-implicit

COMMON_FLAGS=\
	-D__KERNEL__=1 -DUNIX -DCVLOCK_USE_SPINLOCK -DLINUX \
	-Wall -Wstrict-prototypes \
	${INCS} \
	${WARNINGS} \
	-O2 -fomit-frame-pointer

AACFLAGS=${COMMON_FLAGS} ${CFLAGS} ${EXTRA_FLAGS} ${AAC_FLAGS}
COMPILE.c=${CC} ${AACFLAGS} ${TARGET_ARCH} -c

.SUFFIXES:
.SUFFIXES: .c .o .h .a

all: source ${TARGET_OFILES} aacraid_esx30.o

modules: all

source: ${ALL_SOURCE}

clean:
	$(TC_RM) *.o

aacraid_esx30.o: source ${TARGET_OFILES}
	$(LD) -r -o $@ $(TARGET_OFILES)
	$(TC_CP) -r aacraid_esx30.o ../

endif # 2.2.x
ifeq (${PATCHLEVEL},4) # 2.4.x

EXTRA_CFLAGS	+= -I$(TOPDIR)/drivers/scsi ${EXTRA_FLAGS} ${AAC_FLAGS}

O_TARGET	:= aacraid_esx30.o
obj-m		:= $(O_TARGET)

obj-y		:= linit.o aachba.o commctrl.o comminit.o commsup.o \
		   dpcsup.o rx.o sa.o rkt.o fwdebug.o csmi.o

ifeq ($(shell $(TC_GREP) AAC_DRIVER_BRANCH.*dkms ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/aacraid.h >/dev/null 2>/dev/null ; echo $?),0)
CONFIG_SCSI_AACRAID_ESX30 := m
endif

include $(TOPDIR)/Rules.make

endif # 2.4.x
ifeq (${PATCHLEVEL},6) # 2.6.x

ifeq ($(shell $(TC_GREP) AAC_DRIVER_BRANCH.*dkms ${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/aacraid.h >/dev/null 2>/dev/null ; echo $?),0)
obj-m := aacraid_esx30.o
else
obj-$(CONFIG_SCSI_AACRAID_ESX30) := aacraid_esx30.o
endif

aacraid_esx30-objs	:= linit.o aachba.o commctrl.o comminit.o commsup.o \
		   dpcsup.o rx.o sa.o rkt.o fwdebug.o csmi.o

EXTRA_CFLAGS	:= -Idrivers/scsi ${EXTRA_FLAGS} ${AAC_FLAGS}
endif # 2.6.x
endif # 2.x.x
