@REM @REM Copyright (c) 2013 Intel Corporation. @REM @REM Redistribution and use in source and binary forms, with or without @REM modification, are permitted provided that the following conditions @REM are met: @REM @REM * Redistributions of source code must retain the above copyright @REM notice, this list of conditions and the following disclaimer. @REM * Redistributions in binary form must reproduce the above copyright @REM notice, this list of conditions and the following disclaimer in @REM the documentation and/or other materials provided with the @REM distribution. @REM * Neither the name of Intel Corporation nor the names of its @REM contributors may be used to endorse or promote products derived @REM from this software without specific prior written permission. @REM @REM THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS @REM "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @REM LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @REM A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT @REM OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, @REM SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT @REM LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, @REM DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY @REM THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT @REM (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE @REM OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @REM @echo off @REM Make sure you fully understand (the lack of) delayedexpansion @REM in batch files before you try to use error reporting set MY_ERROR_LVL=0 @if /I "%1"=="" goto Usage @if /I "%1"=="-h" goto Usage @if /I "%1"=="-clean" goto Clean @if /I "%2"=="" goto Usage @if /I "%3"=="" goto Usage @REM @REM Windows build environment traditionally has problems with long path names. @REM most notably the MAX_PATH limit. @REM Substitute the source code root to avoid these problems. @REM set CURRENTDIR=%~dp0 set CURRENTDIR=%CURRENTDIR:~0,-1% set CURRENTDRIVE=%~d1 set SUBSTDRIVE=%2: subst /d %SUBSTDRIVE% subst %SUBSTDRIVE% %CURRENTDIR% %SUBSTDRIVE% @REM ########################################################################### @REM ######################## PreSetup-processing ###################### @REM ########################################################################### if NOT exist %SUBSTDRIVE%\Conf ( mkdir %SUBSTDRIVE%\Conf ) if NOT exist %SUBSTDRIVE%\Conf\tools_def.txt ( echo copying ... tools_def.template to %SUBSTDRIVE%\Conf\tools_def.txt copy /Y %SUBSTDRIVE%\QuarkPlatformPkg\Override\BaseTools\Conf\tools_def.template %SUBSTDRIVE%\Conf\tools_def.txt > nul ) if NOT exist %SUBSTDRIVE%\Conf\build_rule.txt ( echo copying ... build_rule.template to %SUBSTDRIVE%\Conf\build_rule.txt copy /Y %SUBSTDRIVE%QuarkPlatformPkg\Override\BaseTools\Conf\build_rule.template %SUBSTDRIVE%\Conf\build_rule.txt > nul ) @if not defined WORKSPACE ( call %SUBSTDRIVE%\edksetup.bat ) @echo off if /I "%1"=="-r32" ( set TARGET=RELEASE set DEBUG_PRINT_ERROR_LEVEL=-DDEBUG_PRINT_ERROR_LEVEL=0x80000000 set DEBUG_PROPERTY_MASK=-DDEBUG_PROPERTY_MASK=0x23 goto CheckParameter3 ) if /I "%1"=="-d32" ( set TARGET=DEBUG set DEBUG_PRINT_ERROR_LEVEL=-DDEBUG_PRINT_ERROR_LEVEL=0x80000042 set DEBUG_PROPERTY_MASK=-DDEBUG_PROPERTY_MASK=0x27 goto CheckParameter3 ) else ( goto Usage ) :CheckParameter3 set PLATFORM=%3 goto BuildAll :Clean echo Removing Build/Conf directories ... if exist Build rmdir Build /s /q if exist Conf rmdir Conf /s /q if exist *.log del *.log /q /f set WORKSPACE= set EDK_TOOLS_PATH= goto End :BuildAll @echo off @REM Add all arguments after the 3rd to the EDK_PARAMS variable @REM tokens=1-3 puts the 1st, 2nd and 3rd arguments in %%a, %%b and %%c @REM All remaining arguments are in %%d for /f "tokens=1-3*" %%a in ("%*") do ( set EDK_PARAMS=%%d ) if NOT exist %WORKSPACE%\BaseTools ( echo Error: SVN directories missing - please run svn update to download goto End ) if exist %WORKSPACE%\QuarkSocPkg\QuarkNorthCluster\Binary\QuarkMicrocode\RMU.bin goto GotCMC echo Trying to fetch Chipset Microcode... %WORKSPACE%\fetchCMCBinary.py if %ERRORLEVEL% NEQ 0 ( set MY_ERROR_LVL=%ERRORLEVEL% echo Error: Chipset Microcode is missing goto End ) :GotCMC @REM ########################################################################### @REM ######################## PreBuild-processing ###################### @REM ########################################################################### if NOT exist %WORKSPACE%\Conf ( echo Error: Missing folder %WORKSPACE%\Conf\ goto End ) @if not exist Build\%PLATFORM%\%TARGET%_%VS_VERSION%%VS_X86%\IA32 ( mkdir Build\%PLATFORM%\%TARGET%_%VS_VERSION%%VS_X86%\IA32 ) @REM #################################################################################################################### @REM ###### Perform the actual build ############# @REM ###### Warning: parameters here are supposed to override any corresponding value in Conf/target.txt ############# @REM #################################################################################################################### build -p %PLATFORM%Pkg\%PLATFORM%Pkg.dsc -b %TARGET% -a IA32 -n 4 -t %VS_VERSION%%VS_X86% -y Report.log %EDK_PARAMS% %DEBUG_PRINT_ERROR_LEVEL% %DEBUG_PROPERTY_MASK% if %ERRORLEVEL% NEQ 0 ( set MY_ERROR_LVL=%ERRORLEVEL% & Goto End ) @REM ############################################################################### @REM ######################## PostBuild-processing ##################### @REM ############################################################################### .\QuarkPlatformPkg\Tools\QuarkSpiFixup\QuarkSpiFixup.py %PLATFORM% %TARGET% %VS_VERSION%%VS_X86% @REM #################################################################################################################### @REM ###### Perform EDKII build again after QuarkSpiFixup so that output .fd file usable. ############# @REM ###### Warning: parameters here are supposed to override any corresponding value in Conf/target.txt ############# @REM #################################################################################################################### build -p %PLATFORM%Pkg\%PLATFORM%Pkg.dsc -b %TARGET% -a IA32 -n 4 -t %VS_VERSION%%VS_X86% -y Report.log %EDK_PARAMS% %DEBUG_PRINT_ERROR_LEVEL% %DEBUG_PROPERTY_MASK% if %ERRORLEVEL% NEQ 0 ( set MY_ERROR_LVL=%ERRORLEVEL% & Goto End ) set OutputModulesDir=%WORKSPACE%\Build\%PLATFORM%\%TARGET%_%VS_VERSION%%VS_X86%\FV @REM Copy build output .fd file int0 FlashModules directory. @REM Use similar name to full Quark Spi Flash tools but emphasise only EDKII assets in bin file. copy /Y %OutputModulesDir%\QUARK.fd %OutputModulesDir%\FlashModules\Flash-EDKII-missingPDAT.bin @REM ############################################################################### @REM ######################## Image signing stage #################### @REM ######################## (dummy signing) #################### @REM ############################################################################### %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_BOOT_STAGE1_IMAGE1.Fv %OutputModulesDir%\EDKII_BOOT_STAGE1_IMAGE1.Fv.signed %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_BOOT_STAGE1_IMAGE2.Fv %OutputModulesDir%\EDKII_BOOT_STAGE1_IMAGE2.Fv.signed %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_BOOT_STAGE2_RECOVERY.Fv %OutputModulesDir%\EDKII_BOOT_STAGE2_RECOVERY.Fv.signed %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_BOOT_STAGE2_COMPACT.Fv %OutputModulesDir%\EDKII_BOOT_STAGE2_COMPACT.Fv.signed %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_BOOT_STAGE2.Fv %OutputModulesDir%\EDKII_BOOT_STAGE2.Fv.signed %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %OutputModulesDir%\FlashModules\EDKII_RECOVERY_IMAGE1.Fv %OutputModulesDir%\EDKII_RECOVERY_IMAGE1.Fv.signed @REM ############################################################################### @REM #################### Capsule creation stage ################ @REM #################### (Recovery and Update capsules) ################ @REM ############################################################################### set CapsuleConfigFile=%WORKSPACE%\%PLATFORM%Pkg\Tools\CapsuleCreate\%PLATFORM%PkgCapsuleComponents.inf set CapsuleOutputFileReset=%OutputModulesDir%\%PLATFORM%PkgReset.Cap @REM CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000 @REM CAPSULE_FLAGS_INITIATE_RESET 0x00040000 set CapsuleFlagsReset=0x00050000 %WORKSPACE%\QuarkPlatformPkg\Tools\CapsuleCreate\CapsuleCreate.exe %CapsuleConfigFile% %OutputModulesDir% %CapsuleOutputFileReset% %CapsuleFlagsReset% %WORKSPACE%\QuarkPlatformPkg\Tools\SignTool\DummySignTool.exe %CapsuleOutputFileReset% %CapsuleOutputFileReset%.signed copy /b /Y %OutputModulesDir%\EDKII_BOOT_STAGE2_RECOVERY.Fv.signed + %CapsuleOutputFileReset%.signed %OutputModulesDir%\FVMAIN.fv > nul @REM ############################################################################### @REM ################ Create useful output directories ################ @REM ############################################################################### @if not exist %OutputModulesDir%\RemediationModules ( mkdir %OutputModulesDir%\RemediationModules ) @REM Copy the 'Recovery Capsule' and 'Update Capsules' to the RemediationModules directory @REM Use same/similar names in stand-alone builds compared to full Quark Spi Flash tools. copy /Y %OutputModulesDir%\FVMAIN.fv %OutputModulesDir%\RemediationModules\. copy /Y %CapsuleOutputFileReset%.signed %OutputModulesDir%\RemediationModules\Flash-EDKII.cap copy /Y %WORKSPACE%\QuarkPlatformPkg\Applications\CapsuleApp.efi %OutputModulesDir%\RemediationModules\. @if not exist %OutputModulesDir%\Tools ( mkdir %OutputModulesDir%\Tools ) @REM Copy the 'CapsuleCreate.exe' tool to the Tools directory copy /Y %WORKSPACE%\QuarkPlatformPkg\Tools\CapsuleCreate\CapsuleCreate.exe %OutputModulesDir%\Tools\. @if not exist %OutputModulesDir%\Applications ( mkdir %OutputModulesDir%\Applications ) @REM Copy the 'CapsuleApp.efi' application to the Applications directory copy /Y %WORKSPACE%\QuarkPlatformPkg\Applications\CapsuleApp.efi %OutputModulesDir%\Applications\. copy Report.log Build\%PLATFORM%\%TARGET%_%VS_VERSION%%VS_X86%\ > nul if ERRORLEVEL 1 exit /b 1 goto End :Usage echo. echo Usage: "%0 [-h | -r32 | -d32 | -clean] [subst drive letter] [PlatformName] [-DSECURE_LD(optional)] [-DSECURE_BOOT(optional)]" echo. :End %CURRENTDRIVE% subst /d %SUBSTDRIVE% echo. exit /b %MY_ERROR_LVL%