## @file # @copyright # INTEL CONFIDENTIAL # Copyright 2008 - 2021 Intel Corporation. # # The source code contained or described herein and all documents related to the # source code ("Material") are owned by Intel Corporation or its suppliers or # licensors. Title to the Material remains with Intel Corporation or its suppliers # and licensors. The Material may contain trade secrets and proprietary and # confidential information of Intel Corporation and its suppliers and licensors, # and is protected by worldwide copyright and trade secret laws and treaty # provisions. No part of the Material may be used, copied, reproduced, modified, # published, uploaded, posted, transmitted, distributed, or disclosed in any way # without Intel's prior express written permission. # # No license under any patent, copyright, trade secret or other intellectual # property right is granted to or conferred upon you by disclosure or delivery # of the Materials, either expressly, by implication, inducement, estoppel or # otherwise. Any license under such intellectual property rights must be # express and approved by Intel in writing. # # Unless otherwise agreed by Intel in writing, you may not remove or alter # this notice or any other notice embedded in Materials by Intel or # Intel's suppliers or licensors in any way. # # This file contains an 'Intel Peripheral Driver' and is uniquely identified as # "Intel Reference Module" and is licensed for Intel CPUs and chipsets under # the terms of your license agreement with Intel or your vendor. This file may # be modified by the user, subject to additional terms of the license agreement. # # @par Specification ## #!/bin/sh FSP_PKG_NAME=AlderLakeFspPkg FSP_BIN_PKG_NAME=AlderLakeFspBinPkg PLATFORM_SI_PACKAGE=ClientOneSiliconPkg FSP_T_UPD_GUID=34686CA3-34F9-4901-B82A-BA630F0714C6 FSP_M_UPD_GUID=39A250DB-E465-4DD1-A2AC-E2BD3C0E2385 FSP_S_UPD_GUID=CAE3605B-5B34-4C85-B3D7-27D54273C40F ErrorCode=0 function USAGE() { echo echo "$0 \[AlderLakeS \| AlderLakeP\(Optional\)\] \[GCC \| CLANG\] \[-h \| -? \| -r32 \| -tr32 \| -d32 \| -clean\] \[-header\]" echo return 1 } function Clean(){ echo "Build Clean from FspPkg Start" if [ -d $WORKSPACE/Build ]; then rm -r $WORKSPACE/Build fi if [ -d $WORKSPACE/Conf ]; then rm -r $WORKSPACE/Conf fi if [ -f *.log ]; then rm *.log fi rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/*.fd if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/*.bsf ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/*.bsf fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FirmwareVersionInfo.h ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FirmwareVersionInfo.h fi for UPD_HEADER in $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/Fsp*Upd.h ; do rm -f $UPD_HEADER done if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/HobUsageDataHob.h ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/HobUsageDataHob.h fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/MemInfoHob.h ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/MemInfoHob.h fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosCacheInfoHob.h ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosCacheInfoHob.h fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosProcessorInfoHob.h ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosProcessorInfoHob.h fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/FspPkgPcdShare.dsc ]; then rm -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/FspPkgPcdShare.dsc fi for UPD_HEADER in $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/Fsp*Upd.h ; do rm -f $UPD_HEADER done if [ -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/MemInfoHob.h ]; then rm -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/MemInfoHob.h fi WORKSPACE= EDK_TOOLS_PATH= echo "Build Clean from FspPkg End" return 0 } function PreBuildFail(){ if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h ] then rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h ] then rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h ] then rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h ] then rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h fi #/q /f return 0 } function PreBuild(){ cp $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Pch/Include/GpioConfig.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/GpioConfig.h cp $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/SystemAgent/Include/MemInfoHob.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/MemInfoHob.h cp $WORKSPACE_SILICON/$FSP_PKG_NAME/FspPkgPcdShare.dsc $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/FspPkgPcdShare.dsc cp $WORKSPACE_COMMON/$PLATFORM_SI_PACKAGE/Include/SmbiosCacheInfoHob.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosCacheInfoHob.h cp $WORKSPACE_COMMON/$PLATFORM_SI_PACKAGE/Include/SmbiosProcessorInfoHob.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/SmbiosProcessorInfoHob.h cp $WORKSPACE_COMMON/$PLATFORM_SI_PACKAGE/Include/HobUsageDataHob.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/HobUsageDataHob.h cp $WORKSPACE_CORE_SILICON/IntelSiliconPkg/Include/IndustryStandard/FirmwareVersionInfo.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FirmwareVersionInfo.h python Edk2/IntelFsp2Pkg/Tools/GenCfgOpt.py UPDTXT \ $WORKSPACE_SILICON/$FSP_PKG_NAME/$FSP_PKG_NAME.dsc \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ $BD_MACRO $FSP_BUILD_OPTION_PCD error=$? if [ $error -eq "256" ] then echo DSC is not changed, no need to recreate MAP and BIN file else if [ $error -eq "1" ] then echo Error in generating UPD TXT file return 1 fi echo UPD TXT file was generated successfully ! echo Generate VPD Header File ... rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_T_UPD_GUID.bin \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_T_UPD_GUID.map #2>nul rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_M_UPD_GUID.bin \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_M_UPD_GUID.map #2>nul rm $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_S_UPD_GUID.bin \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_S_UPD_GUID.map #2>nul BPDG -o $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_T_UPD_GUID.bin \ -m $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_T_UPD_GUID.map \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_T_UPD_GUID.txt if [ $? -eq "1" ] then return 1 fi BPDG -o $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_M_UPD_GUID.bin \ -m $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_M_UPD_GUID.map \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_M_UPD_GUID.txt if [ $? -eq "1" ] then return 1 fi BPDG -o $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_S_UPD_GUID.bin \ -m $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_S_UPD_GUID.map \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/$FSP_S_UPD_GUID.txt if [ $? -eq "1" ] then return 1 fi fi python Edk2/IntelFsp2Pkg/Tools/GenCfgOpt.py HEADER \ $WORKSPACE_SILICON/$FSP_PKG_NAME/$FSP_PKG_NAME.dsc \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/BootLoaderPlatformData.h \ $BD_MACRO $FSP_BUILD_OPTION_PCD error=$? if [ $error -eq "256" ] then echo # No need to recreate header file else if [ $error -eq "1" ] then echo Error in generating Header file return 1 fi echo Vpd header file was generated successfully ! echo Generate BSF File ... python Edk2/IntelFsp2Pkg/Tools/GenCfgOpt.py GENBSF \ $WORKSPACE_SILICON/$FSP_PKG_NAME/$FSP_PKG_NAME.dsc \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.bsf \ $BD_MACRO $FSP_BUILD_OPTION_PCD if [ $? -eq "1" ] then echo Error in generating BSF file return 1 fi echo BSF file was generated successfully ! if [ -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspUpd.h ] then chmod +w $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspUpd.h fi if [ -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FsptUpd.h ] then chmod +w $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FsptUpd.h fi if [ -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspmUpd.h ] then chmod +w $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspmUpd.h fi if [ -f $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspsUpd.h ] then chmod +w $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspsUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FsptUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspmUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h $WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/Fsp/Include/FspsUpd.h fi fi } function PostBuild(){ echo Start of PostBuild ... echo Get UTC time as build time. ORIGINAL_PATH=$PWD cd $WORKSPACE_CORE/BaseTools/Scripts if [ "$NOTIMESTAMP" = "1" ];then YYYY=0 MMDD=0 HHMM=0 else YYYY=$(python GetUtcDateTime.py --year) MMDD=$(python GetUtcDateTime.py --date) HHMM=$(python GetUtcDateTime.py --time) fi echo $YYYY echo $MMDD echo $HHMM cd $ORIGINAL_PATH echo Patch FSP-T Image ... # # @todo Change FSP.fd to Fsp.fd # python $WORKSPACE_CORE/IntelFsp2Pkg/Tools/PatchFv.py \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ FSP-T:FSP \ "0x0000, _BASE_FSP-T_, @Temporary Base" \ "<[0x0000]>+0x00AC, [<[0x0000]>+0x0020], @FSP-T Size" \ "<[0x0000]>+0x00B0, [0x0000], @FSP-T Base" \ "<[0x0000]>+0x00B4, ([<[0x0000]>+0x00B4] & 0xFFFFFFFF) | 0x0001, @FSP-T Image Attribute" \ "<[0x0000]>+0x00B6, ([<[0x0000]>+0x00B6] & 0xFFFF0FFC) | 0x1000 | $FSP_BUILD_TYPE | $FSP_RELEASE_TYPE, @FSP-T Component Attribute" \ "<[0x0000]>+0x00B8, 70BCF6A5-FFB1-47D8-B1AE-EFE5508E23EA:0x1C - <[0x0000]>, @FSP-T CFG Offset" \ "<[0x0000]>+0x00BC, [70BCF6A5-FFB1-47D8-B1AE-EFE5508E23EA:0x14] & 0xFFFFFF - 0x001C, @FSP-T CFG Size" \ "<[0x0000]>+0x00C4, FspSecCoreT:_TempRamInitApi - [0x0000], @TempRamInit API" \ "<[0x0000]>+0x0104, 0x$YYYY, @BuildTimeStamp" \ "<[0x0000]>+0x0108, 0x$MMDD, @BuildTimeStamp" \ "<[0x0000]>+0x010C, 0x$HHMM, @BuildTimeStamp" \ "0x0000, 0x00000000, @Restore the value" \ "FspSecCoreT:_FspInfoHeaderRelativeOff, FspSecCoreT:_AsmGetFspInfoHeader - {912740BE-2284-4734-B971-84B027353F0C:0x1C}, @FSP-T Header Offset" \ "FspSecCoreT:_SiFspInfoHeaderRelativeOff, FspSecCoreT:_SiAsmGetFspInfoHeader - {912740BE-2284-4734-B971-84B027353F0C:0x1C}, @FSP-T Header Offset" if [ $? -ne 0 ] then PreBuildFail exit 1 fi echo Patch FSP-M Image ... # # @todo Change FSP.fd to Fsp.fd # python $WORKSPACE_CORE/IntelFsp2Pkg/Tools/PatchFv.py \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ FSP-M:FSP \ "0x0000, _BASE_FSP-M_, @Temporary Base" \ "<[0x0000]>+0x00AC, [<[0x0000]>+0x0020], @FSP-M Size" \ "<[0x0000]>+0x00B0, [0x0000], @FSP-M Base" \ "<[0x0000]>+0x00B4, ([<[0x0000]>+0x00B4] & 0xFFFFFFFF) | 0x0001, @FSP-M Image Attribute" \ "<[0x0000]>+0x00B6, ([<[0x0000]>+0x00B6] & 0xFFFF0FFC) | 0x2000 | $FSP_BUILD_TYPE | $FSP_RELEASE_TYPE, @FSP-M Component Attribute" \ "<[0x0000]>+0x00B8, D5B86AEA-6AF7-40D4-8014-982301BC3D89:0x1C - <[0x0000]>, @FSP-M CFG Offset" \ "<[0x0000]>+0x00BC, [D5B86AEA-6AF7-40D4-8014-982301BC3D89:0x14] & 0xFFFFFF - 0x001C, @FSP-M CFG Size" \ "<[0x0000]>+0x00D0, FspSecCoreM:_FspMemoryInitApi - [0x0000], @MemoryInitApi API" \ "<[0x0000]>+0x00D4, FspSecCoreM:_TempRamExitApi - [0x0000], @TempRamExit API" \ "<[0x0000]>+0x0104, 0x$YYYY, @BuildTimeStamp" \ "<[0x0000]>+0x0108, 0x$MMDD, @BuildTimeStamp" \ "<[0x0000]>+0x010C, 0x$HHMM, @BuildTimeStamp" \ "FspSecCoreM:_FspPeiCoreEntryOff, PeiCore:__ModuleEntryPoint - [0x0000], @PeiCore Entry" \ "0x0000, 0x00000000, @Restore the value" \ "FspSecCoreM:_FspInfoHeaderRelativeOff, FspSecCoreM:_AsmGetFspInfoHeader - {912740BE-2284-4734-B971-84B027353F0C:0x1C}, @FSP-M Header Offset" \ "FspGlobalDataInitPei:_FspInfoHeaderRelativeOff, FspGlobalDataInitPei:_AsmGetFspInfoHeader - {912740BE-2284-4734-B971-84B027353F0C:0x1C}, @FSP-M Header Offset" if [ $? -ne 0 ] then PreBuildFail exit 1 fi echo Patch FSP-S Image ... # # @todo Change FSP.fd to Fsp.fd # python $WORKSPACE_CORE/IntelFsp2Pkg/Tools/PatchFv.py \ $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV \ FSP-S:FSP \ "0x0000, _BASE_FSP-S_, @Temporary Base" \ "<[0x0000]>+0x00AC, [<[0x0000]>+0x0020], @FSP-S Size" \ "<[0x0000]>+0x00B0, [0x0000], @FSP-S Base" \ "<[0x0000]>+0x00B4, ([<[0x0000]>+0x00B4] & 0xFFFFFFFF) | 0x0001, @FSP-S Image Attribute" \ "<[0x0000]>+0x00B6, ([<[0x0000]>+0x00B6] & 0xFFFF0FFC) | 0x3000 | $FSP_BUILD_TYPE | $FSP_RELEASE_TYPE, @FSP-S Component Attribute" \ "<[0x0000]>+0x00B8, E3CD9B18-998C-4F76-B65E-98B154E5446F:0x1C - <[0x0000]>, @FSP-S CFG Offset" \ "<[0x0000]>+0x00BC, [E3CD9B18-998C-4F76-B65E-98B154E5446F:0x14] & 0xFFFFFF - 0x001C, @FSP-S CFG Size" \ "<[0x0000]>+0x00D8, Fsp22SecCoreS:_FspSiliconInitApi - [0x0000], @SiliconInit API" \ "<[0x0000]>+0x00CC, Fsp22SecCoreS:_NotifyPhaseApi - [0x0000], @NotifyPhase API" \ "<[0x0000]>+0x00DC, Fsp22SecCoreS:_FspMultiPhaseSiInitApi - [0x0000], @FspMultiPhaseSiInitApi API" \ "<[0x0000]>+0x0104, 0x$YYYY, @BuildTimeStamp" \ "<[0x0000]>+0x0108, 0x$MMDD, @BuildTimeStamp" \ "<[0x0000]>+0x010C, 0x$HHMM, @BuildTimeStamp" \ "0x0000, 0x00000000, @Restore the value" \ "Fsp22SecCoreS:_FspInfoHeaderRelativeOff, Fsp22SecCoreS:_AsmGetFspInfoHeader - {912740BE-2284-4734-B971-84B027353F0C:0x1C}, @FSP-S Header Offset" if [ $? -ne 0 ] then PreBuildFail exit 1 fi } function Build32(){ make -C $WORKSPACE_CORE/BaseTools/Source/C chmod +w $WORKSPACE_SILICON/$FSP_PKG_NAME/$FSP_PKG_NAME.dsc PreBuild $* if [ $? -eq 1 ] then exit 1 fi if [ "$BuildHeaderOnly" == "TRUE" ]; then exit 0 fi build $BD_ARGS $FSP_BUILD_OPTION_PCD if [ $? -ne 0 ] then exit 1 fi PostBuild if [ $? -ne 0 ] then exit 1 fi } function ReleaseTypeTest32(){ BD_TARGET=RELEASE BD_MACRO="-D TARGET="$BD_TARGET" -D CFG_OUTDIR="$OUT_DIR" "$EXT_BUILD_FLAGS DSCFILE="-p "$FSP_PKG_NAME/$FSP_PKG_NAME.dsc #" -y ReleaseBuild32Log.log" BD_ARGS=$DSCFILE" -b RELEASE "$BD_MACRO" -a IA32 -a X64 -n 1 -t "$TOOL_CHAIN FSP_BUILD_TYPE=0x0001 FSP_RELEASE_TYPE=0x0000 Build32 $* } function ReleaseBuild32(){ BD_TARGET=RELEASE BD_MACRO="-D TARGET="$BD_TARGET" -D CFG_OUTDIR="$OUT_DIR" "$EXT_BUILD_FLAGS DSCFILE="-p "$FSP_PKG_NAME/$FSP_PKG_NAME.dsc #" -y ReleaseBuild32Log.log" BD_ARGS=$DSCFILE" -b RELEASE "$BD_MACRO" -a IA32 -a X64 -n 1 -t "$TOOL_CHAIN FSP_BUILD_TYPE=0x0001 FSP_RELEASE_TYPE=0x0002 Build32 $* } function DebugBuild32(){ BD_TARGET=DEBUG BD_MACRO="-D TARGET="$BD_TARGET" -D CFG_DEBUG=1 -D DEBUG_BIOS_ENABLE=TRUE -D CFG_OUTDIR="$OUT_DIR" "$EXT_BUILD_FLAGS DSCFILE="-p "$FSP_PKG_NAME/$FSP_PKG_NAME.dsc #" -y DebugBuild32Log.log" #echo $DSCFILE BD_ARGS=$DSCFILE" -b DEBUG "$BD_MACRO" -a IA32 -a X64 -n 1 -t "$TOOL_CHAIN FSP_BUILD_TYPE=0x0000 FSP_RELEASE_TYPE=0x0000 Build32 $* } function CopyFspBinaryToBinPkg(){ echo Copy FSP binary to $FSP_BIN_PKG_NAME if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.bsf ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.bsf fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.fd ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.fd fi cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FSP.fd $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Fsp.fd if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspUpd.h ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspUpd.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FsptUpd.h ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FsptUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FsptUpd.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspmUpd.h ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspmUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspmUpd.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include fi if [ -f $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspsUpd.h ] then chmod +w $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include/FspsUpd.h fi if [ -f $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h ] then cp $OUT_DIR/$FSP_PKG_NAME/$BD_TARGET"_"$TOOL_CHAIN/FV/FspsUpd.h $WORKSPACE_SILICON/$FSP_BIN_PKG_NAME/Include fi } cd $WORKSPACE OUT_DIR=$WORKSPACE/Build for ((i=0 ; i <= $# ; i++)); do if [ "${!i}" = "-clean" ]; then Clean exit 0 fi done # # Add $WORKSPACE/Silicon and $WORKSPACE_CORE in PACKAGES_PATH # export WORKSPACE_CORE_SILICON=$WORKSPACE/Edk2Platforms/Silicon/Intel export PACKAGES_PATH=$WORKSPACE_CORE_SILICON:$WORKSPACE_CORE:$WORKSPACE_COMMON:$WORKSPACE_SILICON echo "Current PACKAGES_PATH is : $PACKAGES_PATH" # # SKU PCH + CPU Information # if [ "$1" = "AlderLake" ]; then echo Default AlderLake build echo Target CPU is AlderLake. Build on $FSP_PKG_NAME echo Target PCH is AlderLake. Build on $FSP_PKG_NAME shift elif [ "$1" = "AlderLakeP" ]; then echo Default AlderLakeP build echo Target CPU is AlderLake. Build on $FSP_PKG_NAME echo Target PCH is AlderLakeP. Build on $FSP_PKG_NAME export FSP_BUILD_OPTION_PCD="$FSP_BUILD_OPTION_PCD --pcd gSiPkgTokenSpaceGuid.PcdAdlLpSupport=TRUE" shift elif [ "$1" = "AlderLakeS" ]; then echo Default AlderLakeS build echo Target CPU is AlderLake. Build on $FSP_PKG_NAME echo Target PCH is AlderLakeS. Build on $FSP_PKG_NAME export FSP_BUILD_OPTION_PCD="$FSP_BUILD_OPTION_PCD --pcd gSiPkgTokenSpaceGuid.PcdAdlLpSupport=FALSE" shift else echo Default AlderLakeS build echo Target CPU is AlderLake. Build on $FSP_PKG_NAME echo Target PCH is AlderLakeS. Build on $FSP_PKG_NAME fi # # SiPkg DEC file check # SIPKG_DEC=$WORKSPACE_SILICON/$PLATFORM_SI_PACKAGE/SiPkg.dec if [ ! -e $SIPKG_DEC ]; then echo "Error: $SIPKG_DEC does not exists" exit 1 fi if [ "$1" = "GCC" ]; then # # Detect GCC Tool Chain Version # GCC_VERSION=$(gcc -dumpversion|sed 's/^\([0-9]\.[0-9]\).*/\1/') if [ "$GCC_VERSION" = "4.5" ]; then export TOOL_CHAIN=GCC45 elif [ "$GCC_VERSION" = "4.6" ]; then export TOOL_CHAIN=GCC46 elif [ "$GCC_VERSION" = "4.7" ]; then export TOOL_CHAIN=GCC47 elif [ "$GCC_VERSION" = "4.8" ]; then export TOOL_CHAIN=GCC48 elif [ "$GCC_VERSION" = "4.9" ]; then export TOOL_CHAIN=GCC49 elif [ "$GCC_VERSION" = "5.3" ]; then export TOOL_CHAIN=GCC5 elif [ "$GCC_VERSION" = "5.4" ]; then export TOOL_CHAIN=GCC5 elif [ "$GCC_VERSION" = "5.5" ]; then export TOOL_CHAIN=GCC5 else echo "Unsupported GCC version!" exit 1 fi # # Toolchain information # gcc -v fi if [ "$1" = "CLANG" ]; then CLANG_VERSION=$($CLANG_BIN"clang" --version | awk '{print $3}' | head -c 5 | sed 's/\.[0-9]*\.[0-9]*$//g') if [ "$CLANG_VERSION" = "" ]; then echo "Can't find CLANGPDB directory, please assign it by defining CLANG_BIN" exit 1 elif [ "$CLANG_VERSION" -ge "9" ]; then export TOOL_CHAIN=CLANGPDB else echo "Unsupported CLANG version!" exit 1 fi fi if [ -z "${TOOL_CHAIN}" ]; then export TOOL_CHAIN=$1 fi if [ "$3" = "-header" ]; then export BuildHeaderOnly="TRUE" else export BuildHeaderOnly="FALSE" fi if [ "$2" = "-r32" ] then ReleaseBuild32 CopyFspBinaryToBinPkg elif [ "$2" = "-tr32" ] then ReleaseTypeTest32 CopyFspBinaryToBinPkg elif [ "$2" = "-d32" ] then DebugBuild32 CopyFspBinaryToBinPkg elif [ -z "$2" ] then DebugBuild32 CopyFspBinaryToBinPkg else echo echo ERROR: $2 is not valid parameter. USAGE fi