595 lines
24 KiB
Bash
595 lines
24 KiB
Bash
## @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
|