2c0f4e57d7
Why I did it XGS saibcm-modules 8.4 is needed. #14471 Work item tracking Microsoft ADO (number only): 24917414 How I did it Copy files from xgs SDK 8.4 repo and modify makefiles to build the image. Upgrade version to 8.4.0.2 in saibcm-modules.mk. How to verify it Build a private image and run full qualification with it: https://elastictest.org/scheduler/testplan/650419cb71f60aa92c456a2b
148 lines
4.6 KiB
Makefile
148 lines
4.6 KiB
Makefile
#
|
|
# Copyright 2007-2020 Broadcom Inc. All rights reserved.
|
|
#
|
|
# Permission is granted to use, copy, modify and/or distribute this
|
|
# software under either one of the licenses below.
|
|
#
|
|
# License Option 1: GPL
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License, version 2, as
|
|
# published by the Free Software Foundation (the "GPL").
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# General Public License version 2 (GPLv2) for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# version 2 (GPLv2) along with this source code.
|
|
#
|
|
#
|
|
# License Option 2: Broadcom Open Network Switch APIs (OpenNSA) license
|
|
#
|
|
# This software is governed by the Broadcom Open Network Switch APIs license:
|
|
# https://www.broadcom.com/products/ethernet-connectivity/software/opennsa
|
|
#
|
|
# -*- Makefile -*-
|
|
# $Id: Makefile,v 1.18 Broadcom SDK $
|
|
# $Copyright: (c) 2005 Broadcom Corp.
|
|
# All Rights Reserved.$
|
|
#
|
|
# Makefile for Linux kernel BDE
|
|
#
|
|
LOCALDIR = systems/bde/linux/kernel
|
|
|
|
# Make sure we build for the kernel if this is a user-mode build
|
|
ifneq ($(platform), )
|
|
override-target=linux-$(platform)
|
|
endif
|
|
|
|
include $(SDK)/make/Make.config
|
|
|
|
LIBS = $(LIBDIR)/libkern.a
|
|
|
|
# need to add vpath sources
|
|
VPATH = ../shared
|
|
|
|
# Add the srcs to be found by vpath
|
|
LSRCS += mpool.c
|
|
|
|
# Add shared BDE sources
|
|
VPATH += ../../shared
|
|
LSRCS += shbde_pci.c shbde_iproc.c shbde_mdio.c
|
|
CFLAGS += -I../../shared/include
|
|
|
|
LHDRS += mpool.h
|
|
LOBJS = $(addsuffix .o, $(basename $(LSRCS)))
|
|
BOBJS = $(addprefix $(BLDDIR)/,$(LOBJS))
|
|
#
|
|
# For 'NO_PRECOMPILED_MODULE', the first kernel compilation is done
|
|
# in systems/bde/linux/kernel (and not in systems/bde/linux/kernel/kernel_module,
|
|
# which is not even created).
|
|
# All the definitions above are for the first cycle of module compilation
|
|
#
|
|
PWD := $(shell pwd)
|
|
|
|
KERNEL_MODULE_DIR = kernel_module
|
|
|
|
THIS_MOD_NAME := linux-kernel-bde
|
|
MODULE = $(LIBDIR)/$(THIS_MOD_NAME).o
|
|
KMODULE = $(LIBDIR)/$(THIS_MOD_NAME).ko
|
|
|
|
build: $(KMODULE)
|
|
|
|
ifeq (1,$(NO_PRECOMPILED_MODULE))
|
|
# {
|
|
#
|
|
# These are the objects which need to be compiled, in the kernel, to
|
|
# created the module object file.
|
|
#
|
|
SRCS_COMPOSING = linux_shbde.c linux_dma.c ../shared/mpool.o $(THIS_MOD_NAME).c ../../shared/shbde_pci.o ../../shared/shbde_iproc.o ../../shared/shbde_mdio.o ../../../linux/kernel/modules/shared/gmodule.o
|
|
OBJECTS_COMPOSING = "linux_shbde.o linux_dma.o mpool.o $(THIS_MOD_NAME)-file.o shbde_pci.o shbde_iproc.o shbde_mdio.o gmodule.o"
|
|
|
|
module: $(KMODULE)
|
|
|
|
#
|
|
# Note that for NO_PRECOMPILED_MODULE, the subdirectory 'systems/bde/linux/kernel/kernel_module'
|
|
# is not created and all action is done in systems/bde/linux/kernel
|
|
#
|
|
$(KMODULE): $(SRCS_COMPOSING)
|
|
rm -fr $(BLDDIR)/$(KERNEL_MODULE_DIR)
|
|
rm -f $(BLDDIR)/*.c
|
|
rm -f $(BLDDIR)/*.o
|
|
rm -f $(BLDDIR)/*.ko
|
|
cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/Makefile
|
|
#
|
|
# Here we copy all source files, which are required for the
|
|
# compilation of the module, into one directory. It seems that
|
|
# specifying path for 'remote' files is not acceptable for
|
|
# the module-creation mechanism in the kernel.
|
|
#
|
|
cp ./*.c $(BLDDIR)/
|
|
cp ./*.h $(BLDDIR)/
|
|
cp ../shared/*.c $(BLDDIR)/
|
|
cp ../../shared/*.c $(BLDDIR)/
|
|
cp ../../../linux/kernel/modules/shared/*.c $(BLDDIR)/
|
|
#
|
|
# We change here the name of the 'base' file since, it seems, the module-creation
|
|
# mechanism does not add symbols when the name of one of the files is the same as
|
|
# the name of the module itself.
|
|
#
|
|
mv $(BLDDIR)/$(THIS_MOD_NAME).c $(BLDDIR)/$(THIS_MOD_NAME)-file.c
|
|
MOD_OBJS=$(OBJECTS_COMPOSING) MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR) $(THIS_MOD_NAME).ko LOC_BLDDIR=$(BLDDIR) LOC_SRCDIR=$(PWD)
|
|
# }
|
|
else
|
|
# {
|
|
module: $(MODULE)
|
|
#
|
|
# This is for the compilation of the 'precompiled' object. We keep it
|
|
# here for compatibility.
|
|
#
|
|
$(MODULE): $(BLDDIR)/.tree $(BOBJS) kernel_libs
|
|
mkdir -p $(@D)
|
|
$(LD) $(MODULE_LDFLAGS) -r -d $(BOBJS) $(LIBS) -o $@
|
|
$(KMODULE): $(MODULE)
|
|
rm -fr $(BLDDIR)/$(KERNEL_MODULE_DIR)
|
|
mkdir $(BLDDIR)/$(KERNEL_MODULE_DIR)
|
|
cp ${SDK}/make/Makefile.linux-kmodule $(BLDDIR)/$(KERNEL_MODULE_DIR)/Makefile
|
|
MOD_NAME=$(THIS_MOD_NAME) $(MAKE) -C $(BLDDIR)/$(KERNEL_MODULE_DIR) $(THIS_MOD_NAME).ko
|
|
# }
|
|
endif
|
|
|
|
kernel_libs:
|
|
$(MAKE) -C $(SDK)/systems/linux/kernel/modules/shared
|
|
|
|
include $(SDK)/make/Make.depend
|
|
|
|
# Make.depend is before clean:: so that Make.depend's clean:: runs first.
|
|
|
|
clean::
|
|
$(MAKE) -C $(SDK)/systems/linux/kernel/modules/shared $@
|
|
$(RM) $(BOBJS) $(MODULE)
|
|
$(RM) $(BLDDIR)/$(KERNEL_MODULE_DIR)
|
|
|
|
distclean::
|
|
|
|
.PHONY: build kernel_libs
|