#!/usr/bin/make

KVER=
ifeq ($(KVER),)
    KVER=$(shell uname -r)
endif

ifeq ($(shell ls /lib/modules/$(KVER)/build > /dev/null 2>&1 && echo build),)
# SuSE source RPMs
  _KVER=$(shell echo $(KVER) | cut -d "-" -f1,2)
  _KFLA=$(shell echo $(KVER) | cut -d "-" -f3)
  _ARCH=$(shell file -b /lib/modules/$(shell uname -r)/build | cut -d "/" -f5)
  ifeq ($(_ARCH),)
    _ARCH=$(shell uname -m)
  endif
  ifeq ($(shell ls /usr/src/linux-$(_KVER)-obj > /dev/null 2>&1 && echo linux),)
    LINUX=
  else
    LINUX=/usr/src/linux-$(_KVER)-obj/$(_ARCH)/$(_KFLA)
    LINUXSRC=/usr/src/linux-$(_KVER)
  endif
else
  LINUX=/lib/modules/$(KVER)/build
  ifeq ($(shell ls /lib/modules/$(KVER)/source > /dev/null 2>&1 && echo source),)
    LINUXSRC=$(LINUX)
  else
    LINUXSRC=/lib/modules/$(KVER)/source
  endif
endif


ifneq ($(shell ls $(LINUXSRC)/include/linux/version.h > /dev/null 2>&1 && echo version),)
  ifneq ($(shell grep "RHEL" $(LINUXSRC)/include/linux/version.h > /dev/null 2>&1 && echo rhel),)
    MAJVER := $(shell grep "MAJOR" $(LINUXSRC)/include/linux/version.h | sed -e 's/.*MAJOR \([0-9]\)/\1/')
    MINVER := $(shell grep "MINOR" $(LINUXSRC)/include/linux/version.h | sed -e 's/.*MINOR \([0-9]\)/\1/')
    ifeq ($(shell [ $(MAJVER) -eq 5 ] || echo notfound),)
      ifeq ($(shell [ $(MINVER) -gt 3 ] || echo notfound),)
        BCM_ISCSI_BUILD=iscsibuild
        BCM_ISCSI_INSTALL=iscsiinstall
        BCM_ISCSI_CLEAN=iscsiclean
      endif
    endif
    ifeq ($(shell [ $(MAJVER) -eq 6 ] || echo notfound),)
      BCM_ISCSI_BUILD=iscsibuild
      BCM_ISCSI_INSTALL=iscsiinstall
      BCM_ISCSI_CLEAN=iscsiclean
    endif
  else
    ifeq ($(shell grep "SLE" $(LINUXSRC)/include/linux/version.h > /dev/null 2>&1 && echo rhel),)
        BCM_ISCSI_BUILD=iscsibuild
        BCM_ISCSI_INSTALL=iscsiinstall
        BCM_ISCSI_CLEAN=iscsiclean
    endif  
  endif
else
  ifeq ($(shell test -f /etc/redhat-release > /dev/null 2>&1 || echo notfound),)
    MAJVER := $(shell sed -e 's/.*release \([0-9]\).*/\1/' /etc/redhat-release)
    ifeq ($(shell [ $(MAJVER) -eq 5 ] || echo notfound),)
      MINVER := $(shell sed -e 's/.*\.\([0-9]\)*.*/\1/' /etc/redhat-release)
      ifeq ($(shell [ $(MINVER) -gt 3] || echo notfound),)
        BCM_ISCSI_BUILD=iscsibuild
        BCM_ISCSI_INSTALL=iscsiinstall
        BCM_ISCSI_CLEAN=iscsiclean
      endif
    endif
    ifeq ($(shell [ $(MAJVER) -eq 6 ] || echo notfound),)
      BCM_ISCSI_BUILD=iscsibuild
      BCM_ISCSI_INSTALL=iscsiinstall
      BCM_ISCSI_CLEAN=iscsiclean
    endif
  endif
endif

ifeq ($(shell test -f /etc/SuSE-release > /dev/null 2>&1 || echo notfound),)
  MAJVER := $(shell grep VERSION /etc/SuSE-release | sed -e 's/.*= //')
  MINVER := $(shell grep PATCHLEVEL /etc/SuSE-release | sed -e 's/.*= //')
  ifeq ($(shell [ $(MAJVER) -eq 11 -a $(MINVER) -eq 1 ] || echo notfound),)
    BCM_ISCSI_BUILD=iscsibuild
    BCM_ISCSI_INSTALL=iscsiinstall
    BCM_ISCSI_CLEAN=iscsiclean
  endif
endif

PREFIX=

default: build

l2build:
	make -C bnx2/src  KVER=$(KVER) PREFIX=$(PREFIX)
	make -C bnx2x/src KVER=$(KVER) PREFIX=$(PREFIX)

l2install:
	make -C bnx2/src  KVER=$(KVER) PREFIX=$(PREFIX) install
	make -C bnx2x/src KVER=$(KVER) PREFIX=$(PREFIX) install

l2clean:
	make -C bnx2/src  clean
	make -C bnx2x/src clean

iscsibuild:
	[ -e bnx2/src/Module.symvers ] && cp -f bnx2/src/Module.symvers bnx2i/driver || /bin/true
	make -C bnx2i/driver KVER=$(KVER) PREFIX=$(PREFIX)

iscsiinstall:
	make -C bnx2i/driver KVER=$(KVER) PREFIX=$(PREFIX) install

iscsiclean:
	make -C bnx2i/driver clean

build: l2build $(BCM_ISCSI_BUILD)

install: build l2install $(BCM_ISCSI_INSTALL)

clean: l2clean $(BCM_ISCSI_CLEAN)

.PHONEY: all clean install
