blob: fcdd12459c7b2ed7ab1cf5c9e0e6c1b0f878c70b [file] [log] [blame]
#!/usr/bin/make
# Makefile for building Linux Broadcom Gigabit L5 driver as a module.
# $id$
KVER=
ifeq ($(KVER),)
KVER=$(shell uname -r)
endif
# PREFIX may be set by the RPM build to set the effective root.
PREFIX=
ifeq ($(FC2_INCLUDE),)
# Obtain the current working directory. $(PWD) doesn't work because this
# makefile cannot override the $(PWD) definition of the parent makefile.
BCMPWD = $(shell pwd)
ifeq ($(shell test -e $(BCMPWD)/../../fclibs/include > /dev/null 2>&1 || echo notfound),)
FC2_INCLUDE := $(BCMPWD)/../../fclibs/include
else
$(error fclibs package not found. $(BCMPWD))
endif
export FC2_INCLUDE
endif
ifeq ($(shell grep scsi_get_resid $(LINUXSRC)/include/scsi/*.h > /dev/null 2>&1 && echo resid_defined),)
BRCM_FLAGS += -D_DEFINE_SCSI_GET_RESID
endif
ifeq ($(shell grep scsi_set_resid $(LINUXSRC)/include/scsi/*.h > /dev/null 2>&1 && echo resid_defined),)
BRCM_FLAGS += -D_DEFINE_SCSI_SET_RESID
endif
# check if 2.4 kernel or 2.5+ kernel
BCM_KVER:=$(shell echo $(KVER) | cut -c1-3 | sed 's/2\.[56]/2\.6/')
ifeq ($(shell [ "$(BCM_KVER)" = "2.6" ] || [ "$(BCM_KVER)" = "3.0" ]),)
BCM_DRV = bnx2fc.ko
ARCH:=$(shell uname -m)
# Check distro/kernel compatibility
ifeq ($(INCDIR),)
INCDIR:=$(CURDIR)
endif
include $(INCDIR)/version.mk
DISTRO_COMPATIBLE="no"
ifeq ($(DISTRO), "RHEL")
ifeq ($(shell [ "$(MAJVER)" = "6" ] || echo notfound),)
ifeq ($(shell [ "$(MINVER)" = "1" ] || echo notfound),)
DISTRO_COMPATIBLE="yes"
endif
ifeq ($(shell [ "$(MINVER)" = "2" ] || echo notfound),)
DISTRO_COMPATIBLE="yes"
BNX2FC_SUP = -D__BNX2FC_RHEL62__
export BNX2FC_SUP
endif
endif
endif
ifeq ($(DISTRO), "SLES")
ifeq ($(shell [ "$(MAJVER)" = "11" ] || echo notfound),)
ifeq ($(shell [ "$(MINVER)" = "1" ] || echo notfound),)
DISTRO_COMPATIBLE="yes"
# In the future we might need to look at MINVER before setting this
BNX2FC_SUP = -D__BNX2FC_SLES11SP1__ -I$(FC2_INCLUDE)
export BNX2FC_SUP
endif
ifeq ($(shell [ "$(MINVER)" = "2" ] || echo notfound),)
DISTRO_COMPATIBLE="yes"
# In the future we might need to look at MINVER before setting this
BNX2FC_SUP = -D__BNX2FC_SLES11SP2__
export BNX2FC_SUP
endif
endif
endif
# For upstream there is no distro info. So RHEL or SLES is not detected. Set it
# based on the environment variable. Run "BNX2FC_KERNEL_OVERRIDE=1 make"
ifeq ($(shell [ "$(DISTRO_COMPATIBLE)" = "no" ] || echo notfound),)
ifeq ($(shell [ "$(BNX2FC_KERNEL_OVERRIDE)" = "1" ] || echo notfound),)
DISTRO_COMPATIBLE="yes"
else
$(warning "Cannot compile bnx2fc on $(DISTRO) $(KVER)")
endif
endif
ifeq ($(DISTRO_COMPATIBLE)$(KERNEL_COMPATIBLE), "yes""yes")
BCM_BNX2FC_PFC=bnx2fc_pfc
BCM_BNX2FC_BUILD=bnx2fc_build
BCM_BNX2FC_CLEAN=bnx2fc_clean
BCM_BNX2FC_INSTALL=bnx2fc_install
endif
default: build
ifneq ($(KERNELRELEASE),)
bnx2fc-objs := bnx2fc_fcoe.o bnx2fc_hwi.o bnx2fc_io.o bnx2fc_tgt.o bnx2fc_els.o
obj-m += bnx2fc.o
EXTRA_CFLAGS += ${BRCM_FLAGS} ${BNX2FC_SUP}
else # ($(KERNELRELEASE),)
bnx2fc_build:
make -C $(LINUX) SUBDIRS=$(shell pwd) modules INCDIR=$(INCDIR)
endif
else # ifeq ($(BCM_KVER),2.6)
$(error bnx2fc is not supported on 2.4 kernel)
endif # ifeq ($(BCM_KVER),2.6)
bnx2fc_pfc:
$(MAKE) PFC=1
bnx2fc_install:
mkdir -p $(PREFIX)/lib/modules/$(KVER)/kernel/drivers/scsi;
install -m 444 $(BCM_DRV) $(PREFIX)/lib/modules/$(KVER)/updates;
@if [ "$(PREFIX)" = "" ]; then /sbin/depmod -a ;\
else echo " *** Run '/sbin/depmod -a' to update the module database.";\
fi
.PHONY: all clean install
bnx2fc_clean:
rm -f bnx2fc.o bnx2fc.mod.[co] bnx2fc_fcoe.o bnx2fc_fcoe.mod.[co]
rm -rf .*.swp
rm -rf bnx2fc_hwi.o bnx2fc_hwi.mod.[co]
rm -rf bnx2fc_els.o bnx2fc_els.mod.[co]
rm -rf bnx2fc_tgt.o bnx2fc_tgt.mod.[co]
rm -rf bnx2fc_io.o bnx2fc_io.mod.[co]
rm -f *.ko .*.cmd
pfc: $(BCM_BNX2FC_PFC)
build: $(BCM_BNX2FC_BUILD)
clean: $(BCM_BNX2FC_CLEAN)
install: build $(BCM_BNX2FC_INSTALL)
cscope:
find . -name "*.[ch]" > cscope.files
cscope -bp3
tags:
ctags -R