@REM @file @REM @REM @copyright @REM INTEL CONFIDENTIAL @REM Copyright 2018 - 2021 Intel Corporation. @REM @REM The source code contained or described herein and all documents related to the @REM source code ("Material") are owned by Intel Corporation or its suppliers or @REM licensors. Title to the Material remains with Intel Corporation or its suppliers @REM and licensors. The Material may contain trade secrets and proprietary and @REM confidential information of Intel Corporation and its suppliers and licensors, @REM and is protected by worldwide copyright and trade secret laws and treaty @REM provisions. No part of the Material may be used, copied, reproduced, modified, @REM published, uploaded, posted, transmitted, distributed, or disclosed in any way @REM without Intel's prior express written permission. @REM @REM No license under any patent, copyright, trade secret or other intellectual @REM property right is granted to or conferred upon you by disclosure or delivery @REM of the Materials, either expressly, by implication, inducement, estoppel or @REM otherwise. Any license under such intellectual property rights must be @REM express and approved by Intel in writing. @REM @REM Unless otherwise agreed by Intel in writing, you may not remove or alter @REM this notice or any other notice embedded in Materials by Intel or @REM Intel's suppliers or licensors in any way. @REM @REM This file contains a 'Sample Driver' and is licensed as such under the terms @REM of your license agreement with Intel or your vendor. This file may be modified @REM by the user, subject to the additional terms of the license agreement. @REM @REM @par Specification Reference: @REM :: Useage: bld [/s] [/f ] [/r] :: :: For a given build command, 3 options may be passed into this batch file via command prompt: :: 1) /s = Redirects all output to a file called EDK2.log(Prep.log must be existed), which will be located at the root. :: 2) /f = Defines the passing in of a single override to a feature PCD that is used in the platform :: DSC file. If this parameter is used, it is to be followed immediately after by both the feature :: pcd name and value. FeaturePcd is the full PCD name, like gMinPlatformPkgTokenSpaceGuid.PcdOptimizeCompilerEnable :: 3) /r = Useful for faster rebuilds when no changes have been made to .inf files. Passes -u to :: build.exe to skip the generation of makefiles. :: 4) rom = Build Bios.rom only and building SPIs will be skipped. :: @set BLDTIMESTAMP=%time% @if not defined PYTHON_COMMAND ( set PYTHON_COMMAND=py -3 ) @set FLASHMAP_FDF= @if %RESILIENCY_BUILD% EQU TRUE ( @set FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapIncludeRes.fdf ) else ( @if %EMBEDDED_BUILD% EQU TRUE ( @set FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapEmbeddedInclude.fdf ) else ( @if %FSPBGCC_BUILD% EQU TRUE ( @set FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapIncludeGcc.fdf ) else ( @if %ADLP_BUILD% EQU TRUE ( @set FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapInclude.fdf ) else ( @set FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapInclude.fdf ) ) ) ) ) @REM @REM Generating Flashmap FDF for Extended BIOS Region @REM Note : the flashmap is being generated based on the default flashmap specificed by build option @REM @if %EXTENDEDREGION_BUILD% NEQ TRUE @goto NoExtendedBiosRegionGeneration @set EXTENDEDREGION_TEMPLATE_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapIncludeExtended.fdf.template @set EXTENDEDREGION_FLASHMAP_FDF=%WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapIncludeExtended_autogen.fdf @%PYTHON_COMMAND% %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Tools\GenFlashmap\GenFlashmap.py ^ -b %FLASHMAP_FDF% ^ -t %EXTENDEDREGION_TEMPLATE_FDF% ^ -o %EXTENDEDREGION_FLASHMAP_FDF% ^ extended @if %ERRORLEVEL% NEQ 0 ( @echo ERROR: Failure in generating %EXTENDEDREGION_FLASHMAP_FDF% set SCRIPT_ERROR=1 goto :BldFail ) @set FLASHMAP_FDF=%EXTENDEDREGION_FLASHMAP_FDF% :NoExtendedBiosRegionGeneration @echo. @echo Call this script to padd each Microcode patch under AlderLakeBoardPkg\Binaries\Microcode\ @echo And also create MicrocodeVersion.data @echo. py -3 microcode_padding.py --opt padding --fw-version %FW_VERSION% --lsv %LSV% --fw-version-string %FW_VERSION_STRING% --slotsize %SLOT_SIZE% @if %ERRORLEVEL% NEQ 0 ( @echo !!! ERROR: microcode_padding.py execute failure !!! @echo py -3 microcode_padding.py --opt padding --fw-version %FW_VERSION% --lsv %LSV% --fw-version-string %FW_VERSION_STRING% --slotsize %SLOT_SIZE% set SCRIPT_ERROR=1 goto :BldFail ) @echo *********************************** @echo. @echo Parsing FlashMapInclude FDFs and checking if all offset and size requirements are met @echo. @REM ACM alignment check @call %PYTHON_COMMAND% %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Tools\FvAlignment\FvAlignment.py --flashmap %FLASHMAP_FDF% -cl all acm_alignment_check @if %ERRORLEVEL% NEQ 0 goto :BldFail @REM FSP build @set BB_CHECK=TRUE @set TOPSWAP_LIMIT=0x00400000 @set FIRST_MAP_PARAM= @if %FSPBGCC_BUILD% EQU TRUE ( @set BB_CHECK=FALSE ) @if %BB_CHECK% EQU TRUE ( @if /I "%TARGET%" == "DEBUG" @if %RESILIENCY_BUILD% EQU FALSE ( @set TOPSWAP_LIMIT=0x00440000 @set FIRST_MAP_PARAM=--firstmap ) @call %PYTHON_COMMAND% %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Tools\FvAlignment\FvAlignment.py --flashmap %FLASHMAP_FDF% --topswap_size %TOPSWAP_LIMIT% -cl all fv_alignment_check %FIRST_MAP_PARAM% ) @if %ERRORLEVEL% NEQ 0 goto :BldFail @echo. @echo PASS all flash map quick check successfully! @echo *********************************** @echo on @echo ******************************************************************** @echo ****************** BLD.BAT *********************************** @echo ******************************************************************** @rem cd %WORKSPACE% @echo %CD% @SET SILENT_MODE=FALSE @SET REBUILD_MODE= @SET BUILD_ROM_ONLY= @if not defined PYTHON_COMMAND ( set PYTHON_COMMAND=py -3 ) :: Loop through arguements until all are processed :BUILD_FLAGS_LOOP @if "%~1" == "" goto BUILD_FLAGS_LOOP_DONE @if "%~1" == "/f" ( shift goto BUILD_FLAGS_LOOP ) @if "%~1" == "/s" ( SET SILENT_MODE=TRUE @if exist %WORKSPACE%\Build.log del %WORKSPACE%\Build.log shift goto BUILD_FLAGS_LOOP ) @if "%~1" == "/r" ( SET REBUILD_MODE=-u shift goto BUILD_FLAGS_LOOP ) @if "%~1" == "rom" ( SET BUILD_ROM_ONLY=rom shift goto BUILD_FLAGS_LOOP ) :: Unknown build flag. shift goto BUILD_FLAGS_LOOP :BUILD_FLAGS_LOOP_DONE :: Output the build variables the user has selected. @echo. @echo User Selected build options: @echo SILENT_MODE = %SILENT_MODE% @echo REBUILD_MODE = %REBUILD_MODE% @echo BUILD_ROM_ONLY = %BUILD_ROM_ONLY% @echo. :: Start the FSP build process @echo FSP_BINARY_BUILD=%FSP_BINARY_BUILD% @REM @echo Build FSP Binary @REM @if not defined FSP_BINARY_BUILD goto :SkipFspBinaryBuild @if %FSP_BINARY_BUILD% EQU FALSE goto :SkipFspBinaryBuild @set FSP_BUILD_PARAMETER=/d @set FSP_PKG_NAME=AlderLakeFspPkg @if /I "%TARGET%" == "RELEASE" ( @if "%FSP_TEST_RELEASE%"=="TRUE" ( set FSP_BUILD_PARAMETER=/tr ) else ( set FSP_BUILD_PARAMETER=/r ) @if "%FSP_PDB_RELEASE%"=="TRUE" ( set FSP_BUILD_PARAMETER=/rp ) ) @if /I "%NOTIMESTAMP%" == "1" ( set FSP_BUILD_PARAMETER=%FSP_BUILD_PARAMETER% notimestamp ) set WORKSPACE_FSP_BIN=%WORKSPACE%\Intel @echo %CD% @rem @rem By Default Build for ADL @rem @set FspTargetOption=AlderLake @if /I "%ADLP_BUILD%" EQU "TRUE" ( @set FspTargetOption=AlderLakeP ) @if not "%FspTargetOption%" == "" ( @echo FSP build target is %FspTargetOption% ) else ( @echo FSP build target is not specified. @goto :BldFail ) @set FSPBINARYTIMESTAMP=%time% @if %SILENT_MODE% EQU TRUE goto FspSilent call %WORKSPACE_COMMON%\ClientOneSiliconPkg\Fsp\BuildFsp.cmd %TARGET_PLATFORM% %FspTargetOption% %FSP_BUILD_PARAMETER% @goto FspBuildEnd :FspSilent call %WORKSPACE_COMMON%\ClientOneSiliconPkg\Fsp\BuildFsp.cmd %TARGET_PLATFORM% %FspTargetOption% %FSP_BUILD_PARAMETER% 1>> %WORKSPACE%\Build.log 2>&1 :FspBuildEnd @if %ERRORLEVEL% NEQ 0 ( @echo !!! ERROR:FSP build Failed !!! @echo %WORKSPACE_COMMON%\ClientOneSiliconPkg\Fsp\BuildFsp.cmd %TARGET_PLATFORM% %FspTargetOption% %FSP_BUILD_PARAMETER% set SCRIPT_ERROR=1 goto :BldFail ) else ( @echo FSP build has succeeded @echo FSP build has succeeded >> %WORKSPACE%\Build.log 2>&1 @set FSPBINARYTIMESTAMP=%FSPBINARYTIMESTAMP% -%time% ) @if %FSP_BINARY_BUILD_ONLY% EQU TRUE goto :EndPreBuild :SkipFspBinaryBuild @if %FSP_BINARY_BUILD_ONLY% EQU TRUE goto :SkipPatchFspBinFvsBaseAddress del /f %WORKSPACE_SILICON%\%PLATFORM_FSP_BIN_PACKAGE%\Fsp_Rebased*.fd cd %WORKSPACE% @echo %CD% @echo ********************* BLD.BAT ***************************** @echo WORKSPACE_PLATFORM = %WORKSPACE_PLATFORM% @echo WORKSPACE_SILICON = %WORKSPACE_SILICON% @echo PROJECT = %PROJECT% @echo PLATFORM_PACKAGE = %PLATFORM_PACKAGE% @echo PLATFORM_BOARD_PACKAGE = %PLATFORM_BOARD_PACKAGE% @echo WORKSPACE_FSP_BIN = %WORKSPACE_FSP_BIN% @if exist %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\BoardPkgPcd.dsc attrib -r %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\BoardPkgPcd.dsc @echo . @if %ADL_BUILD% EQU TRUE ( @REM Remove unwanted lines in FDF according to build target. @if %FSPBGCC_BUILD% EQU TRUE ( @call %PYTHON_COMMAND% %WORKSPACE_CORE_PLATFORM%\%PLATFORM_PACKAGE%\Tools\Fsp\RebaseFspBinBaseAddress.py %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Include\Fdf\FlashMapIncludeGcc.fdf %WORKSPACE_FSP_BIN%\AlderLakeFspBinPkg Fsp.fd 0x0 ) else ( @call %PYTHON_COMMAND% %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Tools\StripFlashmap.py "%TARGET%" %FLASHMAP_FDF% %WORKSPACE%\FlashMapInclude_Temp.fdf @call %PYTHON_COMMAND% %WORKSPACE_CORE_PLATFORM%\%PLATFORM_PACKAGE%\Tools\Fsp\RebaseFspBinBaseAddress.py %WORKSPACE%\FlashMapInclude_Temp.fdf %WORKSPACE_FSP_BIN%\AlderLakeFspBinPkg Fsp.fd 0x0 @del %WORKSPACE_ROOT%\FlashMapInclude_Temp.fdf ) ) @echo . @if %ERRORLEVEL% NEQ 0 ( @echo !!! ERROR:RebaseFspBinBaseAddress failed!!! set SCRIPT_ERROR=1 goto :BldFail ) @REM FSP binary size check if defined FSPM_SIZE_LIMIT ( @call %PYTHON_COMMAND% %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\Tools\FvAlignment\FvAlignment.py --fsp_bin_pkg %WORKSPACE_FSP_BIN%\AlderLakeFspBinPkg --fspm_size_limit %FSPM_SIZE_LIMIT% -cl all fsp_size_check ) @if %ERRORLEVEL% NEQ 0 goto :BldFail cd %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE% copy /y /b %WORKSPACE_SILICON%\%PLATFORM_FSP_BIN_PACKAGE%\Fsp_Rebased_S.fd+%WORKSPACE_SILICON%\%PLATFORM_FSP_BIN_PACKAGE%\Fsp_Rebased_M.fd+%WORKSPACE_SILICON%\%PLATFORM_FSP_BIN_PACKAGE%\Fsp_Rebased_T.fd %WORKSPACE_SILICON%\%PLATFORM_FSP_BIN_PACKAGE%\Fsp_Rebased.fd :SkipPatchFspBinFvsBaseAddress @echo Current Directory = %CD% @echo ********************* BLD.BAT ***************************** @echo SILENT_MODE = %SILENT_MODE% @echo NUMBER_OF_PROCESSORS = %NUMBER_OF_PROCESSORS% @echo REBUILD_MODE = %REBUILD_MODE% @echo EXT_BUILD_FLAGS = %EXT_BUILD_FLAGS% @if %SILENT_MODE% EQU TRUE goto BldSilent @set BUILDTIMESTAMP=%time% call build %SI_BUILD_OPTION_PCD% %BUILD_OPTION_PCD% -n %NUMBER_OF_PROCESSORS% %REBUILD_MODE% %EXT_BUILD_FLAGS% @echo %CD% @echo ********************* BLD.BAT ***************************** @echo ERRORLEVEL=%ERRORLEVEL% @if %ERRORLEVEL% NEQ 0 goto BldFail @set BUILDTIMESTAMP=%BUILDTIMESTAMP% -%time% @set POSTBUILDTIMESTAMP=%time% @echo. @echo Running postbuild.bat to complete the build process. @echo. call %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\postbuild.bat %BUILD_ROM_ONLY% echo Errorlevel= %errorlevel% echo SCRIPT_ERROR= %SCRIPT_ERROR% @if %SCRIPT_ERROR% NEQ 0 goto BldFail @if %errorlevel% NEQ 0 goto BldFail @set POSTBUILDTIMESTAMP=%POSTBUILDTIMESTAMP% -%time% @goto BldSuccess :BldSilent @echo. @echo ******************************************************************** @echo *********** Build is launched here ********** @echo ******************************************************************** @echo. @set BUILDTIMESTAMP=%time% call build %SI_BUILD_OPTION_PCD% %BUILD_OPTION_PCD% -n %NUMBER_OF_PROCESSORS% %REBUILD_MODE% %EXT_BUILD_FLAGS% 1>>%WORKSPACE%\Build.log 2>&1 @echo ERRORLEVEL=%ERRORLEVEL% 1>>%WORKSPACE%\Build.log 2>&1 @if %ERRORLEVEL% NEQ 0 goto BldFail @set BUILDTIMESTAMP=%BUILDTIMESTAMP% -%time% @set POSTBUILDTIMESTAMP=%time% @echo. >>%WORKSPACE%\Build.log @echo Running postbuild.bat to complete the build process. >> %WORKSPACE%\Build.log @echo. >>%WORKSPACE%\Build.log call %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE%\postbuild.bat %BUILD_ROM_ONLY% 1>>%WORKSPACE%\Build.log 2>&1 echo Errorlevel= %errorlevel% echo SCRIPT_ERROR= %SCRIPT_ERROR% @If %SCRIPT_ERROR% NEQ 0 goto BldFail @if %errorlevel% NEQ 0 goto BldFail @set POSTBUILDTIMESTAMP=%POSTBUILDTIMESTAMP% -%time% :BldSuccess @echo. @echo TARGET: %TARGET% @echo TOOL_CHAIN_TAG: %TOOL_CHAIN_TAG% @echo BIOS location: %BUILD_DIR%\FV @echo ROM Images location: %WORKSPACE%\RomImages @echo. @echo The BIOS build has successfully completed! @echo. @REM @goto BldEnd :BldFail cd %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE% @echo. @echo ---------------- @findstr "ACTIVE_PLATFORM" %WORKSPACE%\Conf\target.txt @echo ACTIVE FLASH MAP FDF = %FLASHMAP_FDF% @echo ---------------- @echo. @echo. @echo The BIOS Build has failed! @echo. @exit /b 1 :BldEnd @if %SILENT_MODE% EQU TRUE ( @if exist EDK2.log del EDK2.log @if exist Prep.log if exist Build.log copy Prep.log+Build.log EDK2.log ) @set BLDTIMESTAMP=%BLDTIMESTAMP% -%time% @echo -- timestamp ------------------------ @echo prep %PREPTIMESTAMP% @echo bld %BLDTIMESTAMP% @echo - fsp binary %FSPBINARYTIMESTAMP% @echo - build %BUILDTIMESTAMP% @echo - postbuild %POSTBUILDTIMESTAMP% @echo ------------------------------------- cd %WORKSPACE_PLATFORM%\%PLATFORM_BOARD_PACKAGE% py -3 microcode_padding.py --opt revert