#
# SliffDriver - Compilation script
# 
CONFIG_MODULE_SIG=n
CONFIG_MODULE_SIG_ALL=n

obj-m += sliff.o
sliff-y = SliffDriver.o \

KVERSION = $(shell uname -r)
FACTORY_MODE = 1

IMPLICIT_FALL_WARNING := $(shell gcc -v --help 2>&1 | grep -e '-Wimplicit-fallthrough' > /dev/null;echo $$?)

ifeq ($(LLVM),1)
   GCC_TOOLCHAIN=2
else
   GCC_TOOLCHAIN := $(shell $(CC) -v --help 2>&1 | grep -e 'gcc version ' > /dev/null;echo $$?)
endif

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

KVER_MAJ=$(shell echo $(KVER) | cut -d "." -f1)

__ARCH=$(shell uname -m)
BCM_DRV = sliff.ko
# PREFIX may be set by the RPM build to set the effective root.
PREFIX=

ifeq ($(BCMMODDIR),)
  ifeq ($(shell ls /lib/modules/$(KVER)/updates > /dev/null 2>&1 && echo 1),1)
    BCMMODDIR=/lib/modules/$(KVER)/updates
  else
    ifeq ($(shell grep -q "search.*[[:space:]]updates" /etc/depmod.conf > /dev/null 2>&1 && echo 1),1)
      BCMMODDIR=/lib/modules/$(KVER)/updates
    else
      ifeq ($(shell grep -q "search.*[[:space:]]updates" /etc/depmod.d/* > /dev/null 2>&1 && echo 1),1)
        BCMMODDIR=/lib/modules/$(KVER)/updates
      else
        ifeq ($(shell expr $(KVER_MAJ) \>= 3), 1)
          BCMMODDIR=/lib/modules/$(KVER)/updates
        else
          BCMMODDIR=/lib/modules/$(KVER)/kernel/drivers/net
        endif
      endif
    endif
  endif
endif

LINUXSRC = /lib/modules/$(KVERSION)/build

KDIR ?= $(srctree)
ifneq ($(KDIR),)
  LINUX=$(KDIR)
  LINUXSRC=$(LINUX)
endif

ifeq ($(GCC_TOOLCHAIN),0)
   ifeq ($(IMPLICIT_FALL_WARNING),0)
      EXTRA_CFLAGS := -Wimplicit-fallthrough=3
   endif
endif

EXTRA_CFLAGS += -DDRIVER_SUPPORT_NIC=1

ifeq ($(FACTORY_MODE), 1)
EXTRA_CFLAGS += -DFACTORY_MODE_SUPPORT=1
endif

#
# Detect the architecture
#

UNAME_P := $(shell uname -p)
ifeq ($(UNAME_P), aarch64)
EXTRA_CFLAGS += -D ARM
endif

# Commented for common build for both Thor2 and previous generation cards
#ifeq ($(FPGA_SUPPORT),1)
#EXTRA_CFLAGS  += -DFPGA_SUPPORT=1
#else
#EXTRA_CFLAGS  += -DFPGA_SUPPORT=0
#endif

default:
ifeq ($(CROSS_COMPILE),)
	make -C $(LINUXSRC) M=$(shell pwd) modules
else ifneq ($(CROSS_COMPILE),)
	make -C $(LINUXSRC) M=$(shell pwd) CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH)
endif

modules_install:
	$(MAKE) -C $(LINUXSRC) M=$(shell pwd) modules_install

install:
	@if [ "$(KDIR)" != "" ]; then \
	echo "Cannot use install with KDIR option"; exit 2;\
	fi
	mkdir -p $(PREFIX)$(BCMMODDIR);
	@if [ -f "$(BCM_DRV)" ]; then install -v -m 444 $(BCM_DRV) $(PREFIX)$(BCMMODDIR);\
	else make ;\
	fi
	@if [ "$(PREFIX)" = "" ]; then /sbin/depmod -a ;\
	else echo " *** Run '/sbin/depmod -a' to update the module database.";\
	fi

clean:
	make -C $(LINUXSRC) M=$(shell pwd) clean

.PHONEY: all clean install
