#!/usr/bin/make

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

PREFIX=

ifeq ($(shell type ofed_info >/dev/null 2>&1 && echo 1),1)
OFED_VERSION=$(shell ofed_info | grep -oP '(?<=OFED-|OFED-internal-)[0-9]+\.[0-9]+' | sort | uniq)
ifneq ($(OFED_VERSION), )
$(warning Using OFED version $(OFED_VERSION))
OFA_BUILD_PATH = /usr/src/ofa_kernel/x86_64/$(shell uname -r)/
OFA_KERNEL_PATH = /usr/src/ofa_kernel/x86_64/$(shell uname -r)/
endif
else
ifeq ($(KERNELRELEASE),)
OFA_BUILD_PATH =/lib/modules/`uname -r`/build/
OFA_KERNEL_PATH=/lib/modules/`uname -r`/source/
else
OFA_BUILD_PATH =/lib/modules/$(KERNELRELEASE)/build/
OFA_KERNEL_PATH=/lib/modules/$(KERNELRELEASE)/source/
endif
endif

default: build

peermembuild:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	echo "Kernel stack supports peer mem APIs. Ignoring Broadcom peer mem module"
else
	make -C peer_mem KVER=$(KVER) PREFIX=$(PREFIX);
endif


peermeminstall:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	echo "Kernel stack supports peer mem APIs. Ignoring Broadcom peer mem installation"
else
	make -C peer_mem KVER=$(KVER) PREFIX=$(PREFIX) install
endif


peermemclean:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	echo "Kernel stack supports peer mem APIs. Ignoring Broadcom peer mem Cleanup"
else
	make -C peer_mem clean
endif


l2build:
	make -C bnxt_en KVER=$(KVER) PREFIX=$(PREFIX)

l2install:
	make -C bnxt_en KVER=$(KVER) PREFIX=$(PREFIX) install

l2clean:
	make -C bnxt_en clean

rocebuild:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	make -C bnxt_re KVER=$(KVER) PREFIX=$(PREFIX)
else
	export BNXT_PEER_MEM_INC=`pwd`/peer_mem/; make -C bnxt_re KVER=$(KVER) PREFIX=$(PREFIX)
endif

roceinstall:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	make -C bnxt_re KVER=$(KVER) PREFIX=$(PREFIX) install
else
	export BNXT_PEER_MEM_INC=`pwd`/peer_mem/; make -C bnxt_re KVER=$(KVER) PREFIX=$(PREFIX) install
endif

roceclean:
ifneq ($(shell grep -o "ib_umem_get_peer" $(OFA_BUILD_PATH)/include/rdma/ib_umem.h),)
	make -C bnxt_re clean
else
	export BNXT_PEER_MEM_INC=`pwd`/peer_mem/; make -C bnxt_re clean
endif

build: peermembuild l2build rocebuild

install: build peermeminstall l2install roceinstall

clean: peermemclean l2clean roceclean

.PHONEY: all clean install
                                         
