
# Check for building in the kernel source or outside. GMM
ifeq ($(M),)
  SRC_PATH=drivers/scsi/hpdsa
else
  SRC_PATH=./
endif

RS_SRC_PATH=$(SRC_PATH)/hpvsa/
INC_PATH=$(M)/hpvsa/


EXTRA_CFLAGS += -Wno-implicit-function-declaration
## for now skip these warnings
EXTRA_CFLAGS += -Wno-unused-variable
EXTRA_CFLAGS += -Wno-unused-function
EXTRA_CFLAGS += -Wno-declaration-after-statement
## end of warning skip flags
EXTRA_CFLAGS += -c
EXTRA_CFLAGS += -O3
EXTRA_CFLAGS += -g
EXTRA_CFLAGS += -I.
##EXTRA_CFLAGS += -Iinclude/linux

OS_ARCH := $(shell uname -m)
ifeq ($(OS_ARCH),x86_64)
EXTRA_CFLAGS += -DCPU_64_BIT
endif

# Performance
EXTRA_CFLAGS += -DASYNC_COMPLETION
EXTRA_CFLAGS += -DVIRTUAL_PAL
EXTRA_CFLAGS += -DSW_RAID
EXTRA_CFLAGS += -DCPU_LITTLE

OSVENDOR := $(shell \
        if [ -f /etc/os-release ]; \
        then \
                if [ -n "`grep 'Ubuntu' /etc/os-release`" ]; \
                then \
			echo "UBUNTU"; \
		fi; \
	elif [ -x /usr/bin/lsb_release ]; \
	then \
		echo `lsb_release -i | awk '{ print $$3}' | tr '[a-z]' '[A-Z]'`; \
	fi; \
)

ifeq (/usr/src/linux,$(findstring /usr/src/linux,${KERNEL_PATH}))
	KERNEL_VER := $(shell \
		echo $${KERNEL_PATH} | awk -F'-' '{print $$2}' | awk -F '.' '{ print $$1$$2}')
	#EXTRA_CFLAGS += -U${KERNEL_VER} ## debug line
else
	KERNEL_VER := $(shell echo `uname -r` | awk -F'.' '{ print $$1$$2 }')
endif

ifeq ($(KERNEL_VER),314)
	EXTRA_CFLAGS += -Wno-strict-prototypes
	EXTRA_CFLAGS += -DKERNEL$(KERNEL_VER)
	EXTRA_CFLAGS += -DOS_SEMAPHORE_INFO_GET_NEEDS_PORTED
endif

#===============================================
# Check for kernel.org kernels and mostly UBUNTU
#===============================================
USE_NO_STRICT_PROTOTYPES := $(shell \
	if [ ${KERNEL_VER} -gt 32 ]; \
	then \
		echo 1; \
	else \
		echo 0; \
	fi; \
)
ifeq ($(USE_NO_STRICT_PROTOTYPES),1)
	EXTRA_CFLAGS += -Wno-strict-prototypes
	EXTRA_CFLAGS += -DUSE_NEWER_KERNEL_DEFINITIONS
endif

EXTRA_CFLAGS += -D${OSVENDOR}

ifeq (${OSVENDOR},UBUNTU)
	EXTRA_CFLAGS += -DOS_SEMAPHORE_INFO_GET_NEEDS_PORTED
	EXTRA_CFLAGS += -DOS_SEMAPHORE_PRIORITIZE_NEEDS_PORTED
	VERSION_MAJOR := $(shell lsb_release -rs | cut -d. -f1)
	VERSION_MINOR := $(shell lsb_release -rs | cut -d. -f2)
	EXTRA_CFLAGS += -D${OSVENDOR}${VERSION_MAJOR}
	EXTRA_CFLAGS += -D${OSVENDOR}${VERSION_MAJOR}${VERSION_MINOR}
	UBUNTU_MAJOR_GT_13 := $(shell [ ${VERSION_MAJOR} -gt 13 ] && echo true)
	UBUNTU_MAJOR_GT_14 := $(shell [ ${VERSION_MAJOR} -gt 14 ] && echo true)
	UBUNTU_MAJOR_GT_15 := $(shell [ ${VERSION_MAJOR} -gt 15 ] && echo true)
	KERN_GT_318 := $(shell [ ${KERNEL_VER} -gt 318 ] && echo true)
	ifeq ($(UBUNTU_MAJOR_GT_13),true)
		EXTRA_CFLAGS += -DNEWERUBUNTU
	endif
	ifeq ($(UBUNTU_MAJOR_GT_14),true)
		EXTRA_CFLAGS += -Wno-error=date-time
	endif
	ifeq ($(UBUNTU_MAJOR_GT_15),true)
		EXTRA_CFLAGS += -Wno-strict-prototypes
		EXTRA_CFLAGS += -DUSE_NEWER_KERNEL_DEFINITIONS
	endif
	ifeq ($(KERN_GT_318),true)
		EXTRA_CFLAGS += -DUSE_NEWER_SCSI_PROTOTYPES
	endif
endif

ifeq (${OSVENDOR},DEBIAN)
	DEBIAN_VERSION := $(shell echo `lsb_release -r | awk '{print $$2}' | tr -d '.'`)
	EXTRA_CFLAGS += -DOS_SEMAPHORE_INFO_GET_NEEDS_PORTED
	EXTRA_CFLAGS += -DOS_SEMAPHORE_PRIORITIZE_NEEDS_PORTED
	UBUNTU_KERN := ${KERNEL_VER}
	EXTRA_CFLAGS += -Wno-strict-prototypes
endif

ifeq (${DRIVER_NEEDS_TO_PROTECT_CMD_ALLOCATION},1)
EXTRA_CFLAGS += -DPROTECT_CMD_ALLOCATION
endif

all:
	sudo chmod 755 ./build/buildit
	KERNEL_PATH=/lib/modules/${KERNELRELEASE}/build BUILD_TYPE=DKMS ./build/buildit

clean:
	rm -f hpdsa.o hpdsa.ko

obj-m	:= hpdsa.o

hpdsa-objs += hp_dsa.o release/lib.a
