1*14b24e2bSVaishali Kulkarni# Makefile for building ecore as a module. 2*14b24e2bSVaishali KulkarniAT?=@ 3*14b24e2bSVaishali Kulkarniexport AT 4*14b24e2bSVaishali Kulkarni 5*14b24e2bSVaishali KulkarniKVER = 6*14b24e2bSVaishali Kulkarniifeq ($(KVER),) 7*14b24e2bSVaishali Kulkarni KVER = $(shell uname -r) 8*14b24e2bSVaishali Kulkarniendif 9*14b24e2bSVaishali Kulkarni 10*14b24e2bSVaishali Kulkarni__ARCH=$(shell uname -m) 11*14b24e2bSVaishali Kulkarni 12*14b24e2bSVaishali Kulkarni# PREFIX may be set by the RPM build to set the effective root. 13*14b24e2bSVaishali KulkarniPREFIX = 14*14b24e2bSVaishali Kulkarniifeq ($(shell ls /lib/modules/$(KVER)/build > /dev/null 2>&1 && echo build),) 15*14b24e2bSVaishali Kulkarni# SuSE source RPMs 16*14b24e2bSVaishali Kulkarni _KVER=$(shell echo $(KVER) | cut -d "-" -f1,2) 17*14b24e2bSVaishali Kulkarni _KFLA=$(shell echo $(KVER) | cut -d "-" -f3) 18*14b24e2bSVaishali Kulkarni _ARCH=$(shell file -b /lib/modules/$(shell uname -r)/build | cut -d "/" -f5) 19*14b24e2bSVaishali Kulkarni ifeq ($(_ARCH),) 20*14b24e2bSVaishali Kulkarni _ARCH=$(__ARCH) 21*14b24e2bSVaishali Kulkarni endif 22*14b24e2bSVaishali Kulkarni ifeq ($(shell ls /usr/src/linux-$(_KVER)-obj > /dev/null 2>&1 && echo linux),) 23*14b24e2bSVaishali Kulkarni ifeq ($(shell ls /usr/src/kernels/$(KVER)-$(__ARCH) > /dev/null 2>&1 && echo linux),) 24*14b24e2bSVaishali Kulkarni LINUX= 25*14b24e2bSVaishali Kulkarni else 26*14b24e2bSVaishali Kulkarni LINUX=/usr/src/kernels/$(KVER)-$(__ARCH) 27*14b24e2bSVaishali Kulkarni LINUXSRC=$(LINUX) 28*14b24e2bSVaishali Kulkarni ifeq ($(KERNEL_DIR),) 29*14b24e2bSVaishali Kulkarni KERNEL_DIR=$(LINUX) 30*14b24e2bSVaishali Kulkarni endif 31*14b24e2bSVaishali Kulkarni endif 32*14b24e2bSVaishali Kulkarni else 33*14b24e2bSVaishali Kulkarni ifeq ($(KERNEL_DIR),) 34*14b24e2bSVaishali Kulkarni KERNEL_DIR=/usr/src/linux-$(_KVER)-obj/$(_ARCH)/$(_KFLA) 35*14b24e2bSVaishali Kulkarni endif 36*14b24e2bSVaishali Kulkarni LINUXSRC=/usr/src/linux-$(_KVER) 37*14b24e2bSVaishali Kulkarni endif 38*14b24e2bSVaishali Kulkarnielse 39*14b24e2bSVaishali Kulkarni BCMPROC := $(__ARCH) 40*14b24e2bSVaishali Kulkarni BCMCFGS := /lib/modules/$(KVER)/build \ 41*14b24e2bSVaishali Kulkarni /usr/src/kernels/$(KVER)-$(BCMPROC) \ 42*14b24e2bSVaishali Kulkarni /usr/src/linux-$(shell echo $(KVER) | sed "s|\(.*\)-\([a-z]*\)|\1-obj/$(BCMPROC)/\2|") \ 43*14b24e2bSVaishali Kulkarni /usr/src/linux 44*14b24e2bSVaishali Kulkarni 45*14b24e2bSVaishali Kulkarni # Delete any entries that do not exist. 46*14b24e2bSVaishali Kulkarni BCMTSTDIR = $(shell if ls $(DIR) > /dev/null 2>&1; then echo $(DIR); fi) 47*14b24e2bSVaishali Kulkarni BCMCFGS := $(foreach DIR, $(BCMCFGS), $(BCMTSTDIR)) 48*14b24e2bSVaishali Kulkarni 49*14b24e2bSVaishali Kulkarni ifeq ($(BCMCFGS),) 50*14b24e2bSVaishali Kulkarni $(error Linux kernel config directory not found) 51*14b24e2bSVaishali Kulkarni else 52*14b24e2bSVaishali Kulkarni ifeq ($(KERNEL_DIR),) 53*14b24e2bSVaishali Kulkarni KERNEL_DIR := $(firstword $(BCMCFGS)) 54*14b24e2bSVaishali Kulkarni ifeq ($(LINUXSRC),) 55*14b24e2bSVaishali Kulkarni ifneq ($(shell ls /lib/modules/$(KVER)/source > /dev/null 2>&1 && echo source),) 56*14b24e2bSVaishali Kulkarni LINUXSRC=/lib/modules/$(KVER)/source 57*14b24e2bSVaishali Kulkarni endif 58*14b24e2bSVaishali Kulkarni endif 59*14b24e2bSVaishali Kulkarni endif 60*14b24e2bSVaishali Kulkarni endif 61*14b24e2bSVaishali Kulkarniendif 62*14b24e2bSVaishali Kulkarni 63*14b24e2bSVaishali Kulkarniifeq ($(LINUXSRC),) 64*14b24e2bSVaishali Kulkarni LINUXSRC=$(KERNEL_DIR) 65*14b24e2bSVaishali Kulkarniendif 66*14b24e2bSVaishali Kulkarni 67*14b24e2bSVaishali Kulkarni# paths 68*14b24e2bSVaishali Kulkarniifeq ($(shell ls /lib/modules/$(KVER)/updates > /dev/null 2>&1 && echo 1),1) 69*14b24e2bSVaishali Kulkarni DRV_DIR = updates 70*14b24e2bSVaishali Kulkarnielse 71*14b24e2bSVaishali Kulkarni ifeq ($(shell grep -q "search.*[[:space:]]updates" /etc/depmod.conf > /dev/null 2>&1 && echo 1),1) 72*14b24e2bSVaishali Kulkarni DRV_DIR = updates 73*14b24e2bSVaishali Kulkarni else 74*14b24e2bSVaishali Kulkarni ifeq ($(shell grep -q "search.*[[:space:]]updates" /etc/depmod.d/* > /dev/null 2>&1 && echo 1),1) 75*14b24e2bSVaishali Kulkarni DRV_DIR = updates 76*14b24e2bSVaishali Kulkarni else 77*14b24e2bSVaishali Kulkarni DRV_DIR = kernel/drivers/net 78*14b24e2bSVaishali Kulkarni endif 79*14b24e2bSVaishali Kulkarni endif 80*14b24e2bSVaishali Kulkarniendif 81*14b24e2bSVaishali Kulkarni 82*14b24e2bSVaishali Kulkarnisles_distro := $(wildcard /etc/SuSE-release) 83*14b24e2bSVaishali Kulkarniifneq ($(sles_distro),) 84*14b24e2bSVaishali KulkarniSLES_VERSION = $(shell cat /etc/SuSE-release | grep VERSION | grep -o -P [0-9]+) 85*14b24e2bSVaishali KulkarniSLES_PATCHLEVEL = $(shell cat /etc/SuSE-release | grep PATCHLEVEL | grep -o -P [0-9]+) 86*14b24e2bSVaishali KulkarniPADDED_PATCHLEVEL = $(shell if [ 10 -gt $(SLES_PATCHLEVEL) ]; then echo 0$(SLES_PATCHLEVEL); else echo $(SLES_PATCHLEVEL); fi) 87*14b24e2bSVaishali KulkarniSLES_DISTRO_VER = "0x$(SLES_VERSION)$(PADDED_PATCHLEVEL)" 88*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DSLES_DISTRO=$(SLES_DISTRO_VER) 89*14b24e2bSVaishali Kulkarniendif 90*14b24e2bSVaishali Kulkarni 91*14b24e2bSVaishali KulkarniSOURCES = ecore_chain.c ecore_cxt.c ecore_dev.c ecore_dbg_fw_funcs.c ecore_user_dbg_fw_funcs.c ecore_hw.c ecore_init_fw_funcs.c ecore_init_ops.c ecore_int.c ecore_mcp.c ecore_sp_commands.c ecore_spq.c ecore_dcbx.c ecore_phy.c ecore_selftest.c ecore_mng_tlv.c 92*14b24e2bSVaishali KulkarniHEADERS_LL2 = ecore_ll2_api.h ecore_ll2.h 93*14b24e2bSVaishali KulkarniHEADERS_HSI = ecore_hsi_common.h ecore_hsi_iscsi.h ecore_hsi_roce.h ecore_hsi_rdma.h ecore_hsi_iwarp.h ecore_hsi_fcoe.h ecore_hsi_toe.h ecore_hsi_debug_tools.h ecore_hsi_init_func.h ecore_hsi_init_tool.h ../common/include/common_hsi.h ../common/include/eth_common.h ../common/include/fcoe_common.h ../common/include/iscsi_common.h ../common/include/roce_common.h ../common/include/rdma_common.h ../common/include/storage_common.h ../common/include/tcp_common.h ../common/include/iwarp_common.h 94*14b24e2bSVaishali KulkarniHEADERS = ecore_chain.h ecore_cxt_api.h ecore_cxt.h ecore_dbg_fw_funcs.h ecore_user_dbg_fw_funcs.h ecore_dbg_values.h ecore_dbg_values_user.h ecore_dev_api.h ecore_gtt_reg_addr.h ecore_gtt_values.h ecore.h ecore_hw_defs.h ecore_hw.h ecore_init_fw_funcs.h ecore_init_ops.h ecore_init_values.h ecore_init_values_zipped.h ecore_int_api.h ecore_int.h ecore_iro.h ecore_iro_values.h ecore_mcp.h ecore_phy_api.h ecore_mcp_api.h ecore_proto_if.h ecore_rt_defs.h ecore_sp_api.h ecore_sp_commands.h ecore_spq.h ecore_status.h ecore_utils.h ecore_dcbx.h ecore_dcbx_api.h ecore_selftest_api.h include/bcm_osal.h ../../hsi/hw/pcics_reg_driver.h ../../hsi/hw/reg_addr.h ../../hsi/mcp/nvm_cfg.h ../../hsi/mcp/mcp_public.h ../../hsi/mcp/spad_layout.h ../../hsi/mfw_hsi.h ../../hsi/mcp/nvm_map.h ecore_tcp_ip.h 95*14b24e2bSVaishali KulkarniMODULE_NAME = ecore 96*14b24e2bSVaishali Kulkarniobj-m += $(MODULE_NAME).o 97*14b24e2bSVaishali Kulkarniecore-objs = ecore_cxt.o ecore_dev.o ecore_dbg_fw_funcs.o ecore_user_dbg_fw_funcs.o ecore_hw.o ecore_init_fw_funcs.o ecore_init_ops.o ecore_int.o ecore_mcp.o ecore_phy.o ecore_sp_commands.o ecore_spq.o ecore_dcbx.o ecore_selftest.o ecore_chain.o ecore_mng_tlv.o 98*14b24e2bSVaishali Kulkarni 99*14b24e2bSVaishali Kulkarni#TODO - we need all HSI [e.g., ecore_cxt.c needs to know the size of all contexts. 100*14b24e2bSVaishali Kulkarni#Either need to carefully revise this, or everyone will need all the HSI files. 101*14b24e2bSVaishali Kulkarni#since both L2 and LL2 require ecore_hsi_eth.h, every flavour needs it 102*14b24e2bSVaishali KulkarniHEADERS += $(HEADERS_HSI) ecore_hsi_eth.h 103*14b24e2bSVaishali Kulkarni 104*14b24e2bSVaishali Kulkarni# Determine the content of the ecore compilation - on default do everything 105*14b24e2bSVaishali Kulkarniifneq ($(L2), 1) 106*14b24e2bSVaishali Kulkarniifneq ($(ROCE), 1) 107*14b24e2bSVaishali Kulkarniifneq ($(FCOE), 1) 108*14b24e2bSVaishali Kulkarniifneq ($(ISCSI), 1) 109*14b24e2bSVaishali Kulkarniifneq ($(PTP), 1) 110*14b24e2bSVaishali Kulkarniifneq ($(IWARP), 1) 111*14b24e2bSVaishali KulkarniL2 = 1 112*14b24e2bSVaishali KulkarniROCE = 1 113*14b24e2bSVaishali KulkarniFCOE = 1 114*14b24e2bSVaishali KulkarniISCSI = 1 115*14b24e2bSVaishali KulkarniPTP = 1 116*14b24e2bSVaishali KulkarniIWARP = 1 117*14b24e2bSVaishali Kulkarniendif 118*14b24e2bSVaishali Kulkarniendif 119*14b24e2bSVaishali Kulkarniendif 120*14b24e2bSVaishali Kulkarniendif 121*14b24e2bSVaishali Kulkarniendif 122*14b24e2bSVaishali Kulkarniendif 123*14b24e2bSVaishali Kulkarni 124*14b24e2bSVaishali KulkarniHEADERS += ecore_l2_api.h ecore_l2.h 125*14b24e2bSVaishali KulkarniHEADERS += ecore_roce.h ecore_roce_api.h ecore_hsi_roce.h ecore_hsi_rdma.h 126*14b24e2bSVaishali KulkarniHEADERS += ecore_fcoe_api.h ecore_fcoe.h ecore_hsi_fcoe.h 127*14b24e2bSVaishali KulkarniHEADERS += ecore_hsi_iscsi.h ecore_iscsi_api.h ecore_iscsi.h ecore_ooo.h 128*14b24e2bSVaishali KulkarniHEADERS += $(HEADERS_LL2) 129*14b24e2bSVaishali KulkarniHEADERS += ecore_iov_api.h ecore_sriov.h ecore_vf_api.h ecore_vf.h ecore_vfpf_if.h 130*14b24e2bSVaishali KulkarniHEADERS += ecore_ptp_api.h 131*14b24e2bSVaishali Kulkarni 132*14b24e2bSVaishali Kulkarniifeq ($(L2), 1) 133*14b24e2bSVaishali KulkarniSRIOV ?= 1 134*14b24e2bSVaishali Kulkarniecore-objs += ecore_l2.o 135*14b24e2bSVaishali KulkarniSOURCES += ecore_l2.c 136*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_L2 137*14b24e2bSVaishali Kulkarniendif 138*14b24e2bSVaishali Kulkarniifeq ($(ROCE), 1) 139*14b24e2bSVaishali KulkarniLL2 = 1 140*14b24e2bSVaishali KulkarniSOURCES += ecore_roce.c 141*14b24e2bSVaishali Kulkarniecore-objs += ecore_roce.o 142*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_ROCE 143*14b24e2bSVaishali Kulkarniendif 144*14b24e2bSVaishali Kulkarniifeq ($(FCOE), 1) 145*14b24e2bSVaishali KulkarniLL2 = 1 146*14b24e2bSVaishali KulkarniSOURCES += ecore_fcoe.c 147*14b24e2bSVaishali Kulkarniecore-objs += ecore_fcoe.o 148*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_FCOE 149*14b24e2bSVaishali Kulkarniendif 150*14b24e2bSVaishali Kulkarniifeq ($(ISCSI), 1) 151*14b24e2bSVaishali KulkarniLL2 = 1 152*14b24e2bSVaishali KulkarniSOURCES += ecore_iscsi.c ecore_ooo.c 153*14b24e2bSVaishali Kulkarniecore-objs += ecore_iscsi.o ecore_ooo.o 154*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_ISCSI 155*14b24e2bSVaishali Kulkarniendif 156*14b24e2bSVaishali Kulkarniifeq ($(IWARP), 1) 157*14b24e2bSVaishali KulkarniLL2 = 1 158*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_IWARP 159*14b24e2bSVaishali Kulkarniendif 160*14b24e2bSVaishali Kulkarni 161*14b24e2bSVaishali Kulkarni 162*14b24e2bSVaishali Kulkarni#Derivatives 163*14b24e2bSVaishali Kulkarniifeq ($(LL2), 1) 164*14b24e2bSVaishali KulkarniSOURCES += ecore_ll2.c 165*14b24e2bSVaishali Kulkarniecore-objs += ecore_ll2.o 166*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_LL2 167*14b24e2bSVaishali Kulkarniendif 168*14b24e2bSVaishali Kulkarniifeq ($(SRIOV), 1) 169*14b24e2bSVaishali Kulkarniecore-objs += ecore_sriov.o ecore_vf.o 170*14b24e2bSVaishali KulkarniSOURCES += ecore_sriov.c ecore_vf.c 171*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_SRIOV 172*14b24e2bSVaishali Kulkarniendif 173*14b24e2bSVaishali Kulkarniifeq ($(PTP), 1) 174*14b24e2bSVaishali Kulkarniecore-objs += ecore_ptp.o 175*14b24e2bSVaishali KulkarniSOURCES += ecore_ptp.c 176*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DCONFIG_ECORE_PTP 177*14b24e2bSVaishali Kulkarniendif 178*14b24e2bSVaishali Kulkarni 179*14b24e2bSVaishali Kulkarni#Add include subdir for both user/module flavours 180*14b24e2bSVaishali KulkarniEXTRA_CFLAGS += -DECORE_PACKAGE -I$(src)/include -I./include -I$(src)/../common/include/ -I./../common/include/ -I$(src)/../../hsi/hw/ -I./../../hsi/hw -I$(src)/../../hsi/mcp/ -I./../../hsi/mcp -I$(src)/../../hsi/ -I../../hsi/ 181*14b24e2bSVaishali Kulkarni 182*14b24e2bSVaishali Kulkarniall default: $(obj-m) 183*14b24e2bSVaishali Kulkarni 184*14b24e2bSVaishali Kulkarniclean: 185*14b24e2bSVaishali Kulkarni rm -rf *.o *.ko .*.cmd *.mod.c Module.symvers modules.order 186*14b24e2bSVaishali Kulkarni 187*14b24e2bSVaishali Kulkarni$(obj-m): $(SOURCES) 188*14b24e2bSVaishali Kulkarni $(MAKE) -C $(KERNEL_DIR) M=`pwd` modules 189*14b24e2bSVaishali Kulkarni 190*14b24e2bSVaishali Kulkarniuser: $(SOURCES) 191*14b24e2bSVaishali Kulkarni $(CC) -c $(SOURCES) $(EXTRA_CFLAGS) 192*14b24e2bSVaishali Kulkarni 193*14b24e2bSVaishali Kulkarnitar: $(SOURCES) $(HEADERS) 194*14b24e2bSVaishali Kulkarni rm -rf /tmp/ecore.tar.gz 195*14b24e2bSVaishali Kulkarni rm -rf /tmp/ecore* 196*14b24e2bSVaishali Kulkarni mkdir /tmp/ecore 197*14b24e2bSVaishali Kulkarni cp -r $(SOURCES) $(HEADERS) release.txt /tmp/ecore/ 198*14b24e2bSVaishali Kulkarni echo "L2 = $(L2)" >> /tmp/ecore/Makefile 199*14b24e2bSVaishali Kulkarni echo "FCOE = $(FCOE)" >> /tmp/ecore/Makefile 200*14b24e2bSVaishali Kulkarni echo "ISCSI = $(ISCSI)" >> /tmp/ecore/Makefile 201*14b24e2bSVaishali Kulkarni echo "ROCE = $(ROCE)" >> /tmp/ecore/Makefile 202*14b24e2bSVaishali Kulkarni echo "SRIOV = $(SRIOV)" >> /tmp/ecore/Makefile 203*14b24e2bSVaishali Kulkarni cat Makefile >> /tmp/ecore/Makefile 204*14b24e2bSVaishali Kulkarni tar czvf /tmp/ecore.tar.gz -C /tmp ecore 205*14b24e2bSVaishali Kulkarni rm -rf /tmp/ecore 206