############################################################################# # (c)2010-2011 Broadcom Corporation # # This program is the proprietary software of Broadcom Corporation and/or its licensors, # and may only be used, duplicated, modified or distributed pursuant to the terms and # conditions of a separate, written license agreement executed between you and Broadcom # (an "Authorized License"). Except as set forth in an Authorized License, Broadcom grants # no license (express or implied), right to use, or waiver of any kind with respect to the # Software, and Broadcom expressly reserves all rights in and to the Software and all # intellectual property rights therein. IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU # HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY # NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE. # # Except as expressly set forth in the Authorized License, # # 1. This program, including its structure, sequence and organization, constitutes the valuable trade # secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof, # and to use this information only in connection with your use of Broadcom integrated circuit products. # # 2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" # AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR # WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO # THE SOFTWARE. BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES # OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, # LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION # OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF # USE OR PERFORMANCE OF THE SOFTWARE. # # 3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS # LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR # EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR # USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF # THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT # ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE # LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF # ANY LIMITED REMEDY. # # $brcm_Workfile: Makefile $ # $brcm_Revision: 1 $ # $brcm_Date: 10/5/11 9:38a $ # # Module Description: # # Revision History: # # $brcm_Log: /nexus/modules/security/7400/Makefile $ # # 1 10/5/11 9:38a cdisc # SW7425-1114: checking in libnexus_security # # 2 9/15/10 12:17p cdisc # SW35230-1352: adding HSM to security library # # 1 9/14/10 12:30p cdisc # SW35230-1352: adding Makefile for nexus security library # ############################################################################# NEXUS_TOP := $(shell cd ../../../../nexus; pwd) MAGNUM_TOP := $(shell cd ../../../../magnum; pwd) # Include nexus definitions include $(NEXUS_TOP)/build/nexus_defs.inc include $(NEXUS_TOP)/platforms/$(NEXUS_PLATFORM)/build/nexus_platforms.inc BCHP_VER_LOWER := $(shell awk 'BEGIN{print tolower("$(BCHP_VER)")}') # Add in includes for Nexus Security module include $(NEXUS_TOP)/modules/security/$(BCHP_CHIP)/security.inc # Convert include paths into single variable NEXUS_APP_INCLUDE_PATHS := $(foreach module, $(NEXUS_MODULES), $(NEXUS_$(module)_PUBLIC_INCLUDES)) NEXUS_APP_INCLUDE_PATHS += $(foreach module, $(NEXUS_MODULES), $(NEXUS_$(module)_PRIVATE_INCLUDES)) NEXUS_APP_DEFINES := $(foreach module, $(NEXUS_MODULES), $(NEXUS_$(module)_DEFINES)) NEXUS_APP_DEFINES += $(foreach module, $(NEXUS_MODULES),NEXUS_HAS_$(module)) # Add in magnum base module paths also include $(MAGNUM_TOP)/basemodules/kni/bkni.inc include $(MAGNUM_TOP)/basemodules/std/bstd.inc include $(MAGNUM_TOP)/basemodules/dbg/bdbg.inc include $(MAGNUM_TOP)/basemodules/chp/bchp.inc include $(MAGNUM_TOP)/basemodules/reg/breg.inc include $(MAGNUM_TOP)/basemodules/err/berr.inc include $(MAGNUM_TOP)/basemodules/int/bint.inc include $(MAGNUM_TOP)/basemodules/tmr/btmr.inc include $(MAGNUM_TOP)/basemodules/mem/bmem.inc include $(MAGNUM_TOP)/commonutils/lst/blst.inc include $(MAGNUM_TOP)/commonutils/avc/bavc.inc include $(MAGNUM_TOP)/commonutils/sur/bsur.inc include $(MAGNUM_TOP)/commonutils/pxl/bpxl.inc include $(MAGNUM_TOP)/commonutils/fmt/bfmt.inc include $(MAGNUM_TOP)/commonutils/mrc/bmrc.inc # Add in includes for Nexus Security Magnum modules (HSM PI) include $(NEXUS_SECURITY_MAGNUM_MODULES) # Convert magnum includes into the same variable NEXUS_APP_INCLUDE_PATHS += $(foreach module, $(MAGNUM_MODULES), $($(module)_INCLUDES)) NEXUS_APP_DEFINES += $(foreach module, $(MAGNUM_MODULES), $($(module)_DEFINES)) # Custom include paths CFLAGS += -I./include CFLAGS += -I./src CFLAGS += -I$(NEXUS_TOP)/modules/core/$(BCHP_CHIP)/include CFLAGS += -I$(NEXUS_TOP)/platforms/$(PLATFORM)/bin/syncthunk/ CFLAGS += -I$(NEXUS_TOP)/base/include CFLAGS += -I$(NEXUS_TOP)/base/include/linuxuser CFLAGS += -I$(NEXUS_TOP)/platforms/$(PLATFORM)/include CPPFLAGS += $(addprefix -I, ${NEXUS_APP_INCLUDE_PATHS}) # add Nexus flags CFLAGS += ${NEXUS_CFLAGS} CFLAGS += $(addprefix -D, ${NEXUS_APP_DEFINES}) CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) CFLAGS += -DBCHP_VER=$(BCHP_VER_LOWER) CFLAGS += -DPIC -fpic ############################################################################ # #vvvv#####################vvvvvvvvvvvvvvvvvvvvvvv#####################vvvv## LIB_BASENAME := nexus_security D_ALL_MODULE_DIR := $(filter-out include%, $(shell find . -maxdepth 2 -type d)) ############ # Set F_SRC_EXCLUDES to the basenames of C/C++ files you would like to # exclude from compilation. By default, all *.c and *.cpp files will # be compiled. ##### F_SRC_EXCLUDES += ############ # Set F_PUBLIC_INCS to the basenames of include files that are to be # used by other libraries or applications. These files will be # installed into .../${BCHP_VER}/include/ ##### F_PUBLIC_INCS += $(sort $(notdir $(shell find ${D_ALL_MODULE_DIR} -name '*.h'))) ############ # If your library depends on another shared lib, you should add that # lib here (and any additional lib directories to search). ##### LDFLAGS += ############ # Directory where to install the headers ##### D_FOR_INC_INSTALL := ############ # You probably shouldn't have to modify the text below this point. ##### F_PUBLIC_LIBS += lib${LIB_BASENAME}.a lib${LIB_BASENAME}.so D_FOR_LIB_INSTALL := $(NEXUS_TOP)/bin F_SRCS := $(NEXUS_SECURITY_SOURCES) F_SRCS += $(BHSM_SOURCES) F_SRCS_GPG := $(notdir $(wildcard src/be_loader/*/src/*.gpg)) F_PREBUILT_OBJS := $(patsubst %.gpg,%.o,${F_SRCS_GPG}) F_OBJS := $(patsubst %.c,%.o, ${F_SRCS}) ${F_PREBUILT_OBJS} F_INSTALLED_LIBS := $(addprefix ${D_FOR_LIB_INSTALL}/, ${F_PUBLIC_LIBS}) #^^^^#####################^^^^^^^^^^^^^^^^^^^^^^^#####################^^^^## ############################################################################ # MAIN TARGETS #vvvv#####################vvvvvvvvvvvvvvvvvvvvvvv#####################vvvv## all: ${F_PUBLIC_LIBS} clean: find -name '*.d' -o -name '*.o' | xargs rm -f ls *.a | xargs rm -f ls *.so | xargs rm -f rm -f ${F_OBJS} rm -f ${F_INSTALLED_LIBS} #^^^^#####################^^^^^^^^^^^^^^^^^^^^^^^#####################^^^^## ############################################################################ # BUILD RULES #vvvv#####################vvvvvvvvvvvvvvvvvvvvvvv#####################vvvv## lib${LIB_BASENAME}.so: ${F_OBJS} ${CC} -shared -o $@ ${LDFLAGS} $^ -Wl,-dy ${STRIP_COMMAND} lib${LIB_BASENAME}.a: ${F_OBJS} ${AR} rc $@ $^ ${STRIP_COMMAND} idirs: @ [ -d ${D_FOR_LIB_INSTALL} ] || mkdir -p ${D_FOR_LIB_INSTALL} install: all idirs ${F_INSTALLED_LIBS} ${D_FOR_LIB_INSTALL}/%.a : %.a install -m 0755 $< $@ ${D_FOR_LIB_INSTALL}/%.so : %.so install -m 0755 $< $@ ${F_PREBUILT_OBJS} : %.o : %.obj ${BDVD_PPRINT.cp} @cp $^ $@